<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>Statistics-ExtendedQueueStats</Name>
    <Version>11.1.1</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-06-26 16:06:40" Version="11.1.1">Initial Release on OTOBO 11.1.</ChangeLog>
    <Description Lang="en">The Statistics-ExtendedQueueStats package.</Description>
    <Description Lang="de">Das Statistics-ExtendedQueueStats Paket.</Description>
    <Description Lang="hu">A kiterjesztett jegystatisztikák csomag.</Description>
    <Framework>11.1.x</Framework>
    <IntroInstall Lang="en" Title="Install Information" Type="pre">
        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to install the OTOBO package Statistics-ExtendedQueueStats.&lt;br/&gt;
        &lt;br/&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 Statistics-ExtendedQueueStats zu installieren.&lt;br/&gt;
        &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="pre">
        &lt;br/&gt;
        &lt;strong&gt;ÜDVÖZÖLJÜK&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Ön az Statistics-ExtendedQueueStats OTOBO csomag telepítésére készül.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;
    </IntroInstall>
    <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 Statistics-ExtendedQueueStats.&lt;br/&gt;
        &lt;br/&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 Statistics-ExtendedQueueStats zu aktualisieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;
    </IntroUpgrade>
    <IntroUpgrade Lang="hu" Title="Frissítési információk" Type="pre">
        &lt;br/&gt;
        &lt;strong&gt;ÜDVÖZÖLJÜK&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Ön az Statistics-ExtendedQueueStats OTOBO csomag frissítésére készül.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;
    </IntroUpgrade>
    <PackageMerge Name="OTRSStatsResponseStatistic" TargetVersion="1.3.3"></PackageMerge>
    <PackageMerge Name="OTOBOExtendedTicketStats" TargetVersion="10.1.1"></PackageMerge>
    <CodeInstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::StatisticsExtendedQueueStats';

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeInstall();
    </CodeInstall>
    <CodeUpgrade Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::StatisticsExtendedQueueStats';

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgrade();
    </CodeUpgrade>
    <CodeUninstall Type="pre">

        # create the package name
        my $CodeModule = 'var::packagesetup::StatisticsExtendedQueueStats';

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstall();
    </CodeUninstall>
    <CodeReinstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::StatisticsExtendedQueueStats';

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeReinstall();
    </CodeReinstall>
    <BuildCommitID>c15df9643e6eb93375f5fe4b5323b61f0ad0957e</BuildCommitID>
    <BuildDate>2026-06-26 16:06:43</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Kernel/Config/Files/XML/Statistics-ExtendedQueueStats.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDwhLS0gUXVldWVSZXN0aW5nVGltZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjUXVldWVSZXN0aW5nVGltZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgc3RhdGlzdGljcyBhYm91dCB0aWNrZXQgZHVyYXRpb24gb2Ygc3RheSBpbiBxdWV1ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdGF0czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6UXVldWVSZXN0aW5nVGltZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJRdWV1ZVJlc3RpbmdUaW1lOjpIaXN0b3J5U2VhcmNoTGltaXQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBzZXR0aW5nIGRlZmluZXMgYSBsaW1pdCBmb3IgcXVlcnkgcmVzdWx0cyBvbiB0aWNrZXQgaGlzdG9yeSB0YWJsZSBmb3IgUXVldWVSZXN0aW5nVGltZSBzdGF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3RhdHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjUwMDAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIFF1ZXVlV29ya2luZ1RpbWUgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJTdGF0czo6RHluYW1pY09iamVjdFJlZ2lzdHJhdGlvbiMjI1F1ZXVlV29ya2luZ1RpbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBtb2RpZmllZCB0aWNrZXQgbGlzdCBzdGF0aXN0aWMgdG8gZGlzcGxheSB0aGUgd29ya2luZyB0aW1lIHBlciBxdWV1ZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpRdWV1ZVdvcmtpbmdUaW1lPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Language/de_StatisticsExtendedQueueStats.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX1N0YXRpc3RpY3NFeHRlbmRlZFF1ZXVlU3RhdHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvT1RPQk9TdGF0c1F1ZXVlUmVzdGluZ1RpbWUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcG9ydGluZyBUaW1lc2xvdCd9ID0gJ0JlcmljaHRlLVplaXRzcGFubmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IElEJ30gPSAnVGlja2V0LU51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBqb2luIHRpbWUnfSA9ICdRdWV1ZSBFaW5nYW5nc3plaXRwdW5rdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBsZWZ0IHRpbWUnfSA9ICdRdWV1ZSBBdXNnYW5nc3plaXRwdW5rdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN0aW5nIHRpbWUgKHNlY29uZHMpJ30gPSAnVmVyd2VpbGRhdWVyIChTZWt1bmRlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdGluZyB0aW1lIChISDpNTTpTUyknfSA9ICdWZXJ3ZWlsZGF1ZXIgKEhIOk1NOlNTKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN0aW5nIHRpbWUgKFdvcmtpbmcgaG91cnMsIHNlY29uZHMpJ30gPSAnVmVyd2VpbGRhdWVyIChBcmJlaXRzemVpdCwgU2VrdW5kZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3RpbmcgdGltZSAoV29ya2luZyBob3VycywgSEg6TU06U1MpJ30gPSAnVmVyd2VpbGRhdWVyIChBcmJlaXRzemVpdCwgSEg6TU06U1MpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL1N0YXRpYy9PVE9CT1N0YXRzUmVzcG9uc2VTdGF0aXN0aWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IERheSd9ID0gJ1N0YXJ0LVRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBNb250aCd9ID0gJ1N0YXJ0LU1vbmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IFllYXInfSA9ICdTdGFydC1KYWhyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBEYXknfSA9ICdFbmQtVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBNb250aCd9ID0gJ0VuZC1Nb25hdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgWWVhcid9ID0gJ0VuZC1KYWhyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlczogQWxsJ30gPSAnUXVldWVzOiBBbGxlJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2RpZmllZCB0aWNrZXQgbGlzdCBzdGF0aXN0aWMgdG8gZGlzcGxheSB0aGUgd29ya2luZyB0aW1lIHBlciBxdWV1ZS4nfSA9CiAgICAgICAgJ0VpbmUgYW5nZXBhc3N0ZSBUaWNrZXRMaXN0LVN0YXRpc3RpaywgdW0gZGllIEFyYmVpdHN6ZWl0IHBybyBRdWV1ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgc3RhdGlzdGljcyBhYm91dCB0aWNrZXQgZHVyYXRpb24gb2Ygc3RheSBpbiBxdWV1ZXMuJ30gPQogICAgICAgICdNb2R1bCB6dW0gRXJzdGVsbGVuIHZvbiBTdGF0aXN0aWtlbiDDvGJlciBkaWUgVmVyd2VpbGRhdWVyIHZvbiBUaWNrZXRzIGluIFF1ZXVlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgYSBsaW1pdCBmb3IgcXVlcnkgcmVzdWx0cyBvbiB0aWNrZXQgaGlzdG9yeSB0YWJsZSBmb3IgT1RPQk9TdGF0c1F1ZXVlUmVzdGluZ1RpbWUgc3RhdC4nfSA9CiAgICAgICAgJ0RpZXNlIEVpbnN0ZWxsdW5nIGRlZmluaWVydCBlaW5lIExpbWl0aWVydW5nIHZvbiBTdWNoZXJnZWJuaXNzZW4gZGVyIFRpY2tldC1IaXN0b3JpZSBmw7xyIGRpZSBTdGF0aXN0aWsgT1RPQk9TdGF0c1F1ZXVlUmVzdGluZ1RpbWUuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hu_StatisticsExtendedQueueStats.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X1N0YXRpc3RpY3NFeHRlbmRlZFF1ZXVlU3RhdHM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvT1RPQk9TdGF0c1F1ZXVlUmVzdGluZ1RpbWUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcG9ydGluZyBUaW1lc2xvdCd9ID0gJ0plbGVudMOpc2vDqXN6w610w6lzIGlkxZFyw6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgSUQnfSA9ICdKZWd5YXpvbm9zw610w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgam9pbiB0aW1lJ30gPSAnVsOhcsOzbGlzdGEtYmVsw6lww6lzaSBpZMWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGxlZnQgdGltZSd9ID0gJ1bDoXLDs2xpc3RhLWVsaGFnecOhc2kgaWTFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN0aW5nIHRpbWUgKHNlY29uZHMpJ30gPSAnUGloZW7DqXNpIGlkxZEgKG3DoXNvZHBlcmMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3RpbmcgdGltZSAoSEg6TU06U1MpJ30gPSAnUGloZW7DqXNpIGlkxZEgKMOTw5M6UFA6TU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3RpbmcgdGltZSAoV29ya2luZyBob3Vycywgc2Vjb25kcyknfSA9ICdQaWhlbsOpc2kgaWTFkSAobXVua2FpZMWRLCBtw6Fzb2RwZXJjKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN0aW5nIHRpbWUgKFdvcmtpbmcgaG91cnMsIEhIOk1NOlNTKSd9ID0gJ1BpaGVuw6lzaSBpZMWRIChtdW5rYWlkxZEsIMOTw5M6UFA6TU0pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL1N0YXRpYy9PVE9CT1N0YXRzUmVzcG9uc2VTdGF0aXN0aWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IERheSd9ID0gJ0tlemTDqXMgbmFwamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgTW9udGgnfSA9ICdLZXpkw6lzIGjDs25hcGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IFllYXInfSA9ICdLZXpkw6lzIMOpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIERheSd9ID0gJ0JlZmVqZXrDqXMgbmFwamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIE1vbnRoJ30gPSAnQmVmZWplesOpcyBow7NuYXBqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgWWVhcid9ID0gJ0JlZmVqZXrDqXMgw6l2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZXM6IEFsbCd9ID0gJ1bDoXLDs2xpc3TDoWs6IMO2c3N6ZXMnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZGlmaWVkIHRpY2tldCBsaXN0IHN0YXRpc3RpYyB0byBkaXNwbGF5IHRoZSB3b3JraW5nIHRpbWUgcGVyIHF1ZXVlLid9ID0KICAgICAgICAnRWd5IG3Ds2Rvc8OtdG90dCBqZWd5bGlzdGEgc3RhdGlzenRpa2EgYSB2w6Fyw7NsaXN0w6Fua8OpbnRpIG11bmthaWTFkSBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgc3RhdGlzdGljcyBhYm91dCB0aWNrZXQgZHVyYXRpb24gb2Ygc3RheSBpbiBxdWV1ZXMuJ30gPQogICAgICAgICdFZ3kgbW9kdWwgc3RhdGlzenRpa8OhayBlbMWRw6FsbMOtdMOhc8OhaG96IGFycsOzbCwgaG9neSBlZ3kgamVneSBtZW5ueWkgaWTFkXQgdMO2bHTDtnR0IGEgdsOhcsOzbGlzdMOha2Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgYSBsaW1pdCBmb3IgcXVlcnkgcmVzdWx0cyBvbiB0aWNrZXQgaGlzdG9yeSB0YWJsZSBmb3IgT1RPQk9TdGF0c1F1ZXVlUmVzdGluZ1RpbWUgc3RhdC4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIG1lZ2hhdMOhcm96emEgYSBsZWvDqXJkZXrDqXNpIGVyZWRtw6lueWVrIGtvcmzDoXRqw6F0IGEgamVneWVsxZF6bcOpbnllayB0w6FibMOhbsOhbCBhIHbDoXLDs2xpc3TDoWtiYW4gZWx0w7ZsdMO2dHQgcGloZW7DqXNpIGlkxZEgc3RhdGlzenRpa8OhaG96Lic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/System/Stats/Dynamic/QueueRestingTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6UXVldWVSZXN0aW5nVGltZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KCBmaXJzdCApOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6UHJpb3JpdHknLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRpY2tldCBvYmplY3QKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBHZXRPYmplY3ROYW1lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdRdWV1ZVJlc3RpbmdUaW1lJzsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBHZXRPYmplY3RBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRWYWxpZEFnZW50ID0gMDsKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRDb25maWdPYmplY3QtPkdldCgnU3RhdHM6OlVzZUludmFsaWRBZ2VudEluU3RhdHMnKQogICAgICAgICYmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6VXNlSW52YWxpZEFnZW50SW5TdGF0cycpID09IDAgKQogICAgICAgICkKICAgIHsKICAgICAgICAkVmFsaWRBZ2VudCA9IDE7CiAgICB9CgogICAgIyBnZXQgdXNlciBsaXN0CiAgICBteSAlVXNlckxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gJFZhbGlkQWdlbnQsCiAgICApOwoKICAgICMgZ2V0IHF1ZXVlIGxpc3QKICAgIG15ICVRdWV1ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+R2V0QWxsUXVldWVzKCk7CgogICAgbXkgJVRpY2tldEF0dHJpYnV0ZXMgPSAleyAkU2VsZi0+X1RpY2tldEF0dHJpYnV0ZXMoKSB9OwogICAgbXkgJU9yZGVyQnkgICAgICAgICAgPSBtYXAgeyAkXyA9PiAkVGlja2V0QXR0cmlidXRlc3skX30gfSBncmVwIHsgJF8gbmUgJ051bWJlcicgfSBrZXlzICVUaWNrZXRBdHRyaWJ1dGVzOwoKICAgICMgcmVtb3ZlIG5vbiBzb3J0YWJsZSAoYW5kIG9yZGVyYWJsZSkgRHluYW1pYyBGaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgY2hlY2sgaWYgZHluYW1pYyBmaWVsZCBpcyBzb3J0YWJsZQogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgZHluYW1pYyBmaWVsZHMgZnJvbSB0aGUgbGlzdCBpZiBpcyBub3Qgc29ydGFibGUKICAgICAgICBpZiAoICEkSXNTb3J0YWJsZSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcmRlckJ5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVNvcnRTZXF1ZW5jZSA9ICgKICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnYXNjZW5kaW5nJyksCiAgICAgICAgRG93biA9PiBUcmFuc2xhdGFibGUoJ2Rlc2NlbmRpbmcnKSwKICAgICk7CgogICAgbXkgQE9iamVjdEF0dHJpYnV0ZXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGVzIHRvIGJlIHByaW50ZWQnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgICAgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uICAgICAgICAgPT4gMCwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICAgICAgICAgID0+ICdUaWNrZXRBdHRyaWJ1dGVzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgICAgICAgICA9PiBcJVRpY2tldEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIFNvcnQgICAgICAgICAgICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsICAgICAgICAgICA9PiAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKSwKICAgICAgICAgICAgRGlzYWJsZURlZmF1bHRSZXN1bHRTb3J0ID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTb3J0IHNlcXVlbmNlJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDAsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1NvcnRTZXF1ZW5jZScsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1NlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU29ydFNlcXVlbmNlLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVldWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnUXVldWVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAwLAogICAgICAgICAgICBUcmVlVmlldyAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVRdWV1ZUxpc3QsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdSZXBvcnRpbmcgVGltZXNsb3QnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnUmVwb3J0aW5nVGltZXNsb3QnLAogICAgICAgICAgICBUaW1lUGVyaW9kRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLCAgICAgICAgICAgICAgICAgICAgIyAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnUmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdSZXBvcnRpbmdUaW1lc2xvdE5ld2VyRGF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICkgewoKICAgICAgICAjIGdldCB0aWNrZXQgdHlwZSBsaXN0CiAgICAgICAgbXkgJVR5cGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJU9iamVjdEF0dHJpYnV0ZTEgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUeXBlJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1R5cGVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAwLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlVHlwZSwKICAgICAgICApOwoKICAgICAgICB1bnNoaWZ0IEBPYmplY3RBdHRyaWJ1dGVzLCBcJU9iamVjdEF0dHJpYnV0ZTE7CiAgICB9CgogICAgcmV0dXJuIEBPYmplY3RBdHRyaWJ1dGVzOwp9CgpzdWIgR2V0U3RhdFRhYmxlUHJldmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+R2V0U3RhdFRhYmxlKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmV2aWV3ID0+IDEsCiAgICApOwp9CgpzdWIgR2V0U3RhdFRhYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlVGlja2V0QXR0cmlidXRlcyAgICA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17WFZhbHVlfS0+e1NlbGVjdGVkVmFsdWVzfSB9OwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15ICRQcmV2aWV3ICAgICAgICAgICAgID0gJFBhcmFte1ByZXZpZXd9OwoKICAgICMgY2hlY2sgaWYgYSBlbnVtZXJhdGlvbiBpcyByZXF1ZXN0ZWQKICAgIG15ICRBZGRFbnVtZXJhdGlvbiA9IDA7CiAgICBpZiAoICRUaWNrZXRBdHRyaWJ1dGVze051bWJlcn0gKSB7CiAgICAgICAgJEFkZEVudW1lcmF0aW9uID0gMTsKICAgICAgICBkZWxldGUgJFRpY2tldEF0dHJpYnV0ZXN7TnVtYmVyfTsKICAgIH0KCiAgICBteSAkU29ydFJlZiA9IGZpcnN0IHsgJF8tPntFbGVtZW50fSBlcSAnU29ydFNlcXVlbmNlJyB9IEB7ICRQYXJhbXtWYWx1ZVNlcmllc30gfTsKCiAgICBteSAkU29ydCA9ICRTb3J0UmVmID8gJFNvcnRSZWYtPntTZWxlY3RlZFZhbHVlc30tPlswXSA6ICdVcCc7CgogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CgogICAgIyBnZXQgYWxsIHF1ZXVlcwogICAgbXkgJVF1ZXVlTGlzdCA9ICRRdWV1ZU9iamVjdC0+R2V0QWxsUXVldWVzKCk7CiAgICBmb3IgbXkgJFF1ZXVlICggc29ydCBrZXlzICVRdWV1ZUxpc3QgKSB7CgogICAgICAgIG15ICVRdWV1ZURhdGEgPSAkUXVldWVPYmplY3QtPlF1ZXVlR2V0KAogICAgICAgICAgICBJRCA9PiAkUXVldWUsCiAgICAgICAgKTsKICAgICAgICAkUXVldWVMaXN0eyRRdWV1ZX0gPSBcJVF1ZXVlRGF0YTsKICAgIH0KCiAgICBteSAkU3RhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKCiAgICAjIGdldCBhbGwgcmVsZXZhbnQgc3RhdGVzIChleGNsdWRpbmcgbWVyZ2VkIGFuZCByZW1vdmVkIHN0YXRlIHR5cGVzKQogICAgbXkgJVN0YXRlVHlwZUxpc3QgPSAkU3RhdGVPYmplY3QtPlN0YXRlVHlwZUxpc3QoIFVzZXJJRCA9PiAxICk7CiAgICBteSBAT3BlblN0YXRlVHlwZXM7CiAgICBteSBAQ2xvc2VkU3RhdGVUeXBlcyA9ICgnY2xvc2VkJyk7CiAgICBTVEFURVRZUEU6CiAgICBmb3IgbXkgJFN0YXRlVHlwZSAoIHNvcnQgdmFsdWVzICVTdGF0ZVR5cGVMaXN0ICkgewogICAgICAgIG5leHQgU1RBVEVUWVBFIGlmICRTdGF0ZVR5cGUgZXEgJ21lcmdlZCc7CiAgICAgICAgbmV4dCBTVEFURVRZUEUgaWYgJFN0YXRlVHlwZSBlcSAncmVtb3ZlZCc7CiAgICAgICAgbmV4dCBTVEFURVRZUEUgaWYgJFN0YXRlVHlwZSBlcSAnY2xvc2VkJzsKICAgICAgICBwdXNoIEBPcGVuU3RhdGVUeXBlcywgJFN0YXRlVHlwZTsKICAgIH0KICAgIG15ICVTdGF0ZUxpc3QgID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUxpc3QoIFVzZXJJRCA9PiAxICk7CiAgICBteSBAT3BlblN0YXRlcyA9ICRTdGF0ZU9iamVjdC0+U3RhdGVHZXRTdGF0ZXNCeVR5cGUoCiAgICAgICAgU3RhdGVUeXBlID0+IFxAT3BlblN0YXRlVHlwZXMsCiAgICAgICAgUmVzdWx0ICAgID0+ICdJRCcsCiAgICApOwogICAgQE9wZW5TdGF0ZXMgPSBncmVwIHsgJFN0YXRlTGlzdHskX30gfSBAT3BlblN0YXRlczsKICAgIG15IEBDbG9zZWRTdGF0ZXMgPSAkU3RhdGVPYmplY3QtPlN0YXRlR2V0U3RhdGVzQnlUeXBlKAogICAgICAgIFN0YXRlVHlwZSA9PiBcQENsb3NlZFN0YXRlVHlwZXMsCiAgICAgICAgUmVzdWx0ICAgID0+ICdJRCcsCiAgICApOwogICAgQENsb3NlZFN0YXRlcyA9IGdyZXAgeyAkU3RhdGVMaXN0eyRffSB9IEBDbG9zZWRTdGF0ZXM7CgogICAgIyBnZXQgcmVsZXZhbnQgdGlja2V0IHR5cGVzCiAgICBteSBAVGlja2V0VHlwZUlEczsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1R5cGVJRHN9ICkgKSB7CiAgICAgICAgcHVzaCBAVGlja2V0VHlwZUlEcywgQHsgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntUeXBlSURzfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgQFRpY2tldFR5cGVJRHMgPSBzb3J0IGtleXMgJVRpY2tldFR5cGVzOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRTUUxUaWNrZXRUeXBlSURzID0gJyc7CiAgICBpZiAoQFRpY2tldFR5cGVJRHMpIHsKCiAgICAgICAgbXkgJFNRTFRpY2tldFR5cGVJREluQ29uZGl0aW9uID0gJERCT2JqZWN0LT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ3QudHlwZV9pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiBcQFRpY2tldFR5cGVJRHMsCiAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgIEJpbmRNb2RlICA9PiAwLAogICAgICAgICk7CgogICAgICAgICRTUUxUaWNrZXRUeXBlSURzID0gJ0FORCAnIC4gJFNRTFRpY2tldFR5cGVJREluQ29uZGl0aW9uOwogICAgfQoKICAgICMgZ2V0IGhpc3RvcnkgdHlwZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgICAgICBGUk9NIHRpY2tldF9oaXN0b3J5X3R5cGUnLAogICAgICAgIExpbWl0ID0+IDEwMCwKICAgICk7CgogICAgbXkgJUhpc3RvcnlUeXBlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRIaXN0b3J5VHlwZUxpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CiAgICBteSAlSGlzdG9yeVR5cGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJUhpc3RvcnlUeXBlTGlzdDsKCiAgICAjIGdldCBhIGxpbWl0IGZvciBxdWVyeSByZXN1bHRzIG9uIHRpY2tldCBoaXN0b3J5CiAgICBteSAkVGlja2V0SGlzdG9yeUxpbWl0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdRdWV1ZVJlc3RpbmdUaW1lOjpIaXN0b3J5U2VhcmNoTGltaXQnKSB8fCA1MDAwMDsKCiAgICBpZiAoJFByZXZpZXcpIHsKICAgICAgICAkVGlja2V0SGlzdG9yeUxpbWl0ID0gMjA7CiAgICB9CgogICAgIyBnZXQgYWxsIGhpc3RvcnkgZW50cmllcwogICAgIyAtIGhpc3RvcnkgZW50cmllcyBvZiB0eXBlIE1vdmUgdG8gY3JlYXRlIHRoZSBjc3YgZW50cmllcwogICAgIyAtIGhpc3RvcnkgZW50cmllcyBvZiB0eXBlIE5ld1RpY2tldCB0byBzcGVjaWZ5IHRoZSByZXNpZGVuY2UgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBxdWV1ZQogICAgIyAtIGhpc3RvcnkgZW50cmllcyBvZiB0eXBlIFN0YXRlVXBkYXRlIHRvIHNwZWNpZnkgdGhlIGVuZCBvZiByZXNpZGVuY2Ugb2YgYSBxdWV1ZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHRoLnRpY2tldF9pZCwgdGgubmFtZSwgdGguaGlzdG9yeV90eXBlX2lkLCB0aC5jcmVhdGVfdGltZSwgdGgucXVldWVfaWQsIHRoLnN0YXRlX2lkCiAgICAgICAgICAgIEZST00gdGlja2V0X2hpc3RvcnkgdGgsIHRpY2tldCB0CiAgICAgICAgICAgIFdIRVJFIHQuaWQgPSB0aC50aWNrZXRfaWQKICAgICAgICAgICAgICAgICcgLiAkU1FMVGlja2V0VHlwZUlEcyAuICcKICAgICAgICAgICAgICAgIEFORCB0aC5jcmVhdGVfdGltZSA+PSA/CiAgICAgICAgICAgICAgICBBTkQgdGguY3JlYXRlX3RpbWUgPD0gPwogICAgICAgICAgICAgICAgQU5EIHRoLmhpc3RvcnlfdHlwZV9pZCBJTiAoPyw/LD8pCiAgICAgICAgICAgICAgICBBTkQgdGguc3RhdGVfaWQgSU4gKCcgLiBqb2luKCAnLCcsIEBPcGVuU3RhdGVzLCBAQ2xvc2VkU3RhdGVzICkgLiAnKQogICAgICAgICAgICBPUkRFUiBCWSB0aC5jcmVhdGVfdGltZSBBU0MnLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1Jlc3RyaWN0aW9uc30tPntSZXBvcnRpbmdUaW1lc2xvdE9sZGVyRGF0ZX0sCiAgICAgICAgICAgIFwkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1JlcG9ydGluZ1RpbWVzbG90TmV3ZXJEYXRlfSwKICAgICAgICAgICAgXCRIaXN0b3J5VHlwZUxpc3RSZXZlcnNle05ld1RpY2tldH0sCiAgICAgICAgICAgIFwkSGlzdG9yeVR5cGVMaXN0UmV2ZXJzZXtNb3ZlfSwKICAgICAgICAgICAgXCRIaXN0b3J5VHlwZUxpc3RSZXZlcnNle1N0YXRlVXBkYXRlfSwKICAgICAgICBdLAogICAgICAgIExpbWl0ID0+ICRUaWNrZXRIaXN0b3J5TGltaXQsCiAgICApOwoKICAgIG15ICVUaWNrZXRMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFNlbGYtPl9QcmVwYXJlVGlja2V0TGlzdCgKICAgICAgICAgICAgVGlja2V0TGlzdCAgICAgID0+IFwlVGlja2V0TGlzdCwKICAgICAgICAgICAgU1FMUm93ICAgICAgICAgID0+IFxAUm93LAogICAgICAgICAgICBIaXN0b3J5VHlwZUxpc3QgPT4gXCVIaXN0b3J5VHlwZUxpc3QsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggISRQcmV2aWV3ICkgewoKICAgICAgICAjIGdldCB0aGUgdGlja2V0IGhpc3RvcnkgZW50cmllcyB0aGF0IGFyZSByZWxldmFudCBmb3IgdGhlIGNhbGN1bGF0aW9uCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiCiAgICAgICAgICAgIFNFTEVDVCBNSU4odGguaWQpCiAgICAgICAgICAgIEZST00gdGlja2V0X2hpc3RvcnkgdGgKICAgICAgICAgICAgV0hFUkUgdGguY3JlYXRlX3RpbWUgPD0gPwogICAgICAgICAgICAgICAgQU5EIHRoLnN0YXRlX2lkIElOICgiIC4gam9pbiggJywnLCBAT3BlblN0YXRlcywgQENsb3NlZFN0YXRlcyApIC4gIikKICAgICAgICAgICAgICAgIEFORCB0aC5oaXN0b3J5X3R5cGVfaWQgSU4gKAogICAgICAgICAgICAgICAgICAgICciIC4gJEhpc3RvcnlUeXBlTGlzdFJldmVyc2V7TmV3VGlja2V0fSAuICInLAogICAgICAgICAgICAgICAgICAgICciIC4gJEhpc3RvcnlUeXBlTGlzdFJldmVyc2V7U3RhdGVVcGRhdGV9IC4gIicKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBBTkQgdGguY3JlYXRlX3RpbWUgPSAoCiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIE1BWCh0aDIuY3JlYXRlX3RpbWUpCiAgICAgICAgICAgICAgICAgICAgRlJPTSB0aWNrZXRfaGlzdG9yeSB0aDIKICAgICAgICAgICAgICAgICAgICBXSEVSRSB0aDIudGlja2V0X2lkID0gdGgudGlja2V0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCB0aDIuY3JlYXRlX3RpbWUgPD0gPwogICAgICAgICAgICAgICAgICAgICAgICBBTkQgdGgyLmhpc3RvcnlfdHlwZV9pZCBJTiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIiAuICRIaXN0b3J5VHlwZUxpc3RSZXZlcnNle05ld1RpY2tldH0gLiAiJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICciIC4gJEhpc3RvcnlUeXBlTGlzdFJldmVyc2V7U3RhdGVVcGRhdGV9IC4gIicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIEdST1VQIEJZIHRoLnRpY2tldF9pZCIsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRQYXJhbXtSZXN0cmljdGlvbnN9LT57UmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGV9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtSZXN0cmljdGlvbnN9LT57UmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGV9LAogICAgICAgICAgICBdLAogICAgICAgICk7CgogICAgICAgIG15IEBUaWNrZXRIaXN0b3J5SURzOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBwdXNoIEBUaWNrZXRIaXN0b3J5SURzLCAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNRTFRpY2tldEhpc3RvcnlJRHMgPSAnJzsKICAgICAgICBpZiAoQFRpY2tldEhpc3RvcnlJRHMpIHsKCiAgICAgICAgICAgIG15ICRTUUxUaWNrZXRIaXN0b3J5SURJbkNvbmRpdGlvbiA9ICREQk9iamVjdC0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAndGguaWQnLAogICAgICAgICAgICAgICAgVmFsdWVzICAgID0+IFxAVGlja2V0SGlzdG9yeUlEcywKICAgICAgICAgICAgICAgIFF1b3RlVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNRTFRpY2tldEhpc3RvcnlJRHMgPSAnIEFORCAnIC4gJFNRTFRpY2tldEhpc3RvcnlJREluQ29uZGl0aW9uOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNRTE9sZGVyID0gJwogICAgICAgICAgICBTRUxFQ1QgdGgudGlja2V0X2lkLCB0aC5uYW1lLCB0aC5oaXN0b3J5X3R5cGVfaWQsIHRoLmNyZWF0ZV90aW1lLCB0aC5xdWV1ZV9pZCwgdGguc3RhdGVfaWQsIHRoLmlkCiAgICAgICAgICAgIEZST00gdGlja2V0X2hpc3RvcnkgdGgsIHRpY2tldCB0CiAgICAgICAgICAgIFdIRVJFIHQuaWQgPSB0aC50aWNrZXRfaWQKICAgICAgICAgICAgJyAuICRTUUxUaWNrZXRUeXBlSURzIC4gJwogICAgICAgICAgICAnIC4gJFNRTFRpY2tldEhpc3RvcnlJRHM7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgICA9PiAkU1FMT2xkZXIsCiAgICAgICAgICAgIExpbWl0ID0+ICRUaWNrZXRIaXN0b3J5TGltaXQsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRTZWxmLT5fUHJlcGFyZVRpY2tldExpc3QoCiAgICAgICAgICAgICAgICBUaWNrZXRMaXN0ICAgICAgPT4gXCVUaWNrZXRMaXN0LAogICAgICAgICAgICAgICAgU1FMUm93ICAgICAgICAgID0+IFxAUm93LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVMaXN0ID0+IFwlSGlzdG9yeVR5cGVMaXN0LAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15IEBTdGF0QXJyYXk7CiAgICBUSUNLRVQ6CiAgICBmb3IgbXkgJFRpY2tldElEICggc29ydCBrZXlzICVUaWNrZXRMaXN0ICkgewogICAgICAgIG15ICRUaWNrZXQgPSAkVGlja2V0TGlzdHskVGlja2V0SUR9OwoKICAgICAgICAjIHNvcnQgZW50cmllcyBmb3Igc2FmZXR5CiAgICAgICAgQHsgJFRpY2tldC0+e1N0YXRlc30gfSA9IHNvcnQgeyAkYS0+e0NyZWF0ZVRpbWV9IGNtcCAkYi0+e0NyZWF0ZVRpbWV9IH0gQHsgJFRpY2tldC0+e1N0YXRlc30gfTsKICAgICAgICBAeyAkVGlja2V0LT57UXVldWVzfSB9ID0gc29ydCB7ICRhLT57UXVldWVKb2luVGltZX0gY21wICRiLT57UXVldWVKb2luVGltZX0gfSBAeyAkVGlja2V0LT57UXVldWVzfSB9OwoKICAgICAgICAjIHNldCBkZWZhdWx0IGNyZWF0ZSB0aW1lCiAgICAgICAgaWYgKCAkVGlja2V0LT57Q3JlYXRlVGltZX0gZXEgJycgKSB7CiAgICAgICAgICAgICRUaWNrZXQtPntDcmVhdGVUaW1lfSA9ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57UmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGV9OwoKICAgICAgICAgICAgIyBnZXQgbGFzdCBzdGF0ZSBvZiB0aWNrZXQKICAgICAgICAgICAgbXkgJExhc3RTdGF0ZUhpc3RvcnkgPSAkVGlja2V0LT57U3RhdGVzfS0+Wy0xXTsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkTGFzdFN0YXRlSGlzdG9yeSkgKSB7CgogICAgICAgICAgICAgICAgIyBpZiB3ZSBqdXN0IGhhdmUgdGhlIGxhc3Qgc3RhdGUgb2YgdGhlIHRpY2tldCBpbiB0aGUgcGFzdCAob2xkIHRpY2tldHMpCiAgICAgICAgICAgICAgICAjIHRoZW4gd2UgaGF2ZSB0byB0YWtlIDEgc3RhdGUgYmVmb3JlIHRoZSBjdXJyZW50IHN0YXRlCiAgICAgICAgICAgICAgICAkVGlja2V0LT57Q3JlYXRlU3RhdGV9ID0gJExhc3RTdGF0ZUhpc3RvcnktPntTdGF0ZUZyb219OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGZpcnN0IHdlIGdldCB0aGUgaGlzdG9yeSB0aWNrZXQgZGF0YSBhdCB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUgdGlja2V0CiAgICAgICAgbXkgKAogICAgICAgICAgICAkQ3JlYXRlRGF0ZVllYXIsICRDcmVhdGVEYXRlTW9udGgsICAkQ3JlYXRlRGF0ZURheSwKICAgICAgICAgICAgJENyZWF0ZURhdGVIb3VyLCAkQ3JlYXRlRGF0ZU1pbnV0ZSwgJENyZWF0ZURhdGVTZWNvbmQKICAgICAgICApID0gJFRpY2tldC0+e0NyZWF0ZVRpbWV9CiAgICAgICAgICAgID1+IG17IChcZCspLShcZCspLShcZCspIFxzKyAoXGQrKVw6KFxkKylcOihcZCspIH14bXM7CgogICAgICAgIG15ICVIaXN0b3J5RGF0YUNyZWF0ZURhdGUgPSAkVGlja2V0T2JqZWN0LT5IaXN0b3J5VGlja2V0R2V0KAogICAgICAgICAgICBTdG9wWWVhciAgID0+ICRDcmVhdGVEYXRlWWVhciwKICAgICAgICAgICAgU3RvcE1vbnRoICA9PiAkQ3JlYXRlRGF0ZU1vbnRoLAogICAgICAgICAgICBTdG9wRGF5ICAgID0+ICRDcmVhdGVEYXRlRGF5LAogICAgICAgICAgICBTdG9wSG91ciAgID0+ICRDcmVhdGVEYXRlSG91ciwKICAgICAgICAgICAgU3RvcE1pbnV0ZSA9PiAkQ3JlYXRlRGF0ZU1pbnV0ZSwKICAgICAgICAgICAgU3RvcFNlY29uZCA9PiAkQ3JlYXRlRGF0ZVNlY29uZCwKICAgICAgICAgICAgVGlja2V0SUQgICA9PiAkVGlja2V0SUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldENyZWF0ZVRpbWUgPSAkVGlja2V0LT57Q3JlYXRlVGltZX07CgogICAgICAgICMgYWRkIGZpcnN0IHF1ZXVlIHJlc2lkZW5jZSBvZiB0aWNrZXQKICAgICAgICBteSAkSGlzdG9yeURhdGFGaXJzdFF1ZXVlID0gewogICAgICAgICAgICBRdWV1ZUpvaW5UaW1lID0+ICRUaWNrZXRDcmVhdGVUaW1lLAogICAgICAgICAgICBRdWV1ZUxlZnRUaW1lID0+ICcnLAogICAgICAgICAgICBRdWV1ZUZyb20gICAgID0+ICcnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgID0+ICRIaXN0b3J5RGF0YUNyZWF0ZURhdGV7UXVldWVJRH0sCiAgICAgICAgfTsKICAgICAgICB1bnNoaWZ0IEB7ICRUaWNrZXQtPntRdWV1ZXN9IH0sICRIaXN0b3J5RGF0YUZpcnN0UXVldWU7CgogICAgICAgICMgaWYgd2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmlyc3Qgc3RhdGUgKE5ld1RpY2tldCkgb2YgdGhlIHRpY2tldAogICAgICAgICMgd2UgY3JlYXRlIHRoZSBmaXJzdCBzdGF0ZSB3aXRoIHRoZSBpbmZvcm1hdGlvbiB3ZSBoYXZlCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNBcnJheVJlZldpdGhEYXRhKCAkVGlja2V0LT57U3RhdGVzfSApCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFRpY2tldC0+e1N0YXRlc30gKQogICAgICAgICAgICAgICAgJiYgIWV4aXN0cyAkVGlja2V0LT57U3RhdGVzfS0+WzBdLT57TmV3VGlja2V0fQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGFkZCBmaXJzdCBzdGF0ZSBvZiB0aWNrZXQKICAgICAgICAgICAgbXkgJEhpc3RvcnlEYXRhRmlyc3RTdGF0ZSA9IHsKICAgICAgICAgICAgICAgIENyZWF0ZVRpbWUgPT4gJFRpY2tldENyZWF0ZVRpbWUsCiAgICAgICAgICAgICAgICBTdGF0ZUZyb20gID0+ICcnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICA9PiAkVGlja2V0LT57Q3JlYXRlU3RhdGV9LAogICAgICAgICAgICB9OwogICAgICAgICAgICB1bnNoaWZ0IEB7ICRUaWNrZXQtPntTdGF0ZXN9IH0sICRIaXN0b3J5RGF0YUZpcnN0U3RhdGU7CiAgICAgICAgfQoKICAgICAgICAjIFNUQVJUIGRlZmluaXRpb24gb2YgdGhlIGNsb3NlIHRpbWUgZm9yIHRoZSBsYXN0IHF1ZXVlIGluIHRoZSB0aWNrZXQgY2FzY2FkZSBvZiB0aWNrZXQgY2xvc2UgdGltZQogICAgICAgICMgLSB0YWtlIGNsb3NlIHRpbWUgb2YgY3JlYXRpb24gb2YgdGhlIHRpY2tldCwgaWYgaXRzIGRpcmVjdGx5IGNsb3NlZCBvbiBjcmVhdGlvbgogICAgICAgICMgLSBnZXQgbGFzdCBzdGF0ZSBvZiB0aGUgdGlja2V0IChpbiBjb25maWd1cmVkIHRpbWUgcGVyaW9kKSwgaWYgaXRzIGNsb3NlZCBzZXQgdGhpcyBkYXRlCiAgICAgICAgIyAtIHVzZSB0aGUgZGF0ZSBvZiBjb25maWd1cmVkIFJlcG9ydGluZ1RpbWVzbG90TmV3ZXJEYXRlIChlbmQgb2YgcmVwb3J0IHRpbWUgcGVyaW9kKQogICAgICAgICMgZ2V0IGxhc3Qgc3RhdGUgb2YgdGlja2V0CiAgICAgICAgbXkgJExhc3RTdGF0ZUhpc3RvcnkgPSAkVGlja2V0LT57U3RhdGVzfS0+Wy0xXTsKCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkTGFzdFN0YXRlSGlzdG9yeSkgJiYgJExhc3RTdGF0ZUhpc3RvcnktPntTdGF0ZX0gPX4gbXtjbG9zZWR9eG1zICkgewoKICAgICAgICAgICAgIyB1c2UgY3JlYXRpb24gdGltZSBvZiBsYXN0IGNsb3NlIHN0YXRlCiAgICAgICAgICAgICRUaWNrZXQtPntDbG9zZVRpbWV9ID0gJExhc3RTdGF0ZUhpc3RvcnktPntDcmVhdGVUaW1lfTsKICAgICAgICB9CgogICAgICAgICMgRU5EIGRlZmluaXRpb24gb2YgdGhlIGNsb3NlIHRpbWUgZm9yIHRoZSBsYXN0IHF1ZXVlIGluIHRoZSB0aWNrZXQKCiAgICAgICAgbXkgJFRpY2tldENsb3NlVGltZSAgICAgID0gJFRpY2tldC0+e0Nsb3NlVGltZX07CiAgICAgICAgbXkgJFRpY2tldENsb3NlVGltZXN0YW1wID0gJyc7CiAgICAgICAgaWYgKCRUaWNrZXRDbG9zZVRpbWUpIHsKICAgICAgICAgICAgJFRpY2tldENsb3NlVGltZXN0YW1wID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goIFRpbWVTdGFtcCA9PiAkVGlja2V0Q2xvc2VUaW1lICk7CiAgICAgICAgfQoKICAgICAgICAjIGRvbid0IGFsbG93IHRpY2tldHMgd2hpY2ggYSBsYXN0IGNsb3NlIHRpbWUgYmVmb3JlIHJlcG9ydGluZyB0aW1lIHN0YW1wCiAgICAgICAgbXkgJFJlcG9ydGluZ1RpbWVzbG90T2xkZXJUaW1lc3RhbXAgPSAkU2VsZi0+X1RpbWVTdGFtcDJFcG9jaCgKICAgICAgICAgICAgVGltZVN0YW1wID0+ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57UmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGV9LAogICAgICAgICk7CgogICAgICAgIGlmICggJFRpY2tldENsb3NlVGltZXN0YW1wICYmICRUaWNrZXRDbG9zZVRpbWVzdGFtcCA8ICRSZXBvcnRpbmdUaW1lc2xvdE9sZGVyVGltZXN0YW1wICkgewogICAgICAgICAgICBuZXh0IFRJQ0tFVDsKICAgICAgICB9CgogICAgICAgICMgaW4gdGhpcyBsb29wCiAgICAgICAgIyB3ZSdyZSBjYWxjdWxhdGluZyB0aGUgbGVmdCB0aW1lIG9mIGVhY2ggcXVldWUKCiAgICAgICAgbXkgJExhc3RRdWV1ZUluZGV4OwogICAgICAgIG15ICRRdWV1ZUluZGV4ID0gMDsKICAgICAgICB3aGlsZSAoICRRdWV1ZUluZGV4IDw9ICQjeyAkVGlja2V0LT57UXVldWVzfSB9ICkgewoKICAgICAgICAgICAgbXkgJUN1cnJlbnRRdWV1ZUhpc3RvcnkgPSAleyAkVGlja2V0LT57UXVldWVzfS0+WyRRdWV1ZUluZGV4XSB9OwoKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRMYXN0UXVldWVJbmRleCApIHsKCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgZW5kIG9mIHJlc2lkZW5jZSBmb3IgdGhlIGxhc3QgdGlja2V0CiAgICAgICAgICAgICAgICAkVGlja2V0LT57UXVldWVzfS0+WyRMYXN0UXVldWVJbmRleF0tPntRdWV1ZUxlZnRUaW1lfSA9ICRDdXJyZW50UXVldWVIaXN0b3J5e1F1ZXVlSm9pblRpbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXN0UXVldWVJbmRleCA9ICRRdWV1ZUluZGV4OwoKICAgICAgICAgICAgJFF1ZXVlSW5kZXgrKzsKICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgcXVldWUgbW92ZSBkb2VzIG5vdCBoYXZlIGEgbGVmdCB0aW1lCiAgICAgICAgIyBzbyB3ZSB1c2UgdGhlIGNsb3NlIHRpbWUgb2YgdGhlIHRpY2tldAogICAgICAgIG15ICRMYXN0UXVldWVKb2luVGltZXN0YW1wID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkVGlja2V0LT57UXVldWVzfS0+Wy0xXS0+e1F1ZXVlSm9pblRpbWV9CiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkVGlja2V0Q2xvc2VUaW1lc3RhbXAgJiYgJExhc3RRdWV1ZUpvaW5UaW1lc3RhbXAgPiAkVGlja2V0Q2xvc2VUaW1lc3RhbXAgKSB7CgogICAgICAgICAgICAjIGlmIHRoZSB0aWNrZXQgbW92ZXMgd2l0aCBzdGF0ZSBjbG9zZWQgdG8gYSBhbm90aGVyIHF1ZXVlCiAgICAgICAgICAgICMgd2UgbmVlZCB0aGUgdGltZSBvZiB0aGUgcXVldWUgbW92ZQogICAgICAgICAgICAkVGlja2V0LT57UXVldWVzfS0+Wy0xXS0+e1F1ZXVlTGVmdFRpbWV9ID0gJFRpY2tldC0+e1F1ZXVlc30tPlstMV0tPntRdWV1ZUpvaW5UaW1lfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRUaWNrZXRDbG9zZVRpbWVzdGFtcCkgewoKICAgICAgICAgICAgIyB1c2UgY2xvc2UgdGltZSBvZiB0aGUgdGlja2V0CiAgICAgICAgICAgICRUaWNrZXQtPntRdWV1ZXN9LT5bLTFdLT57UXVldWVMZWZ0VGltZX0gPSAkVGlja2V0Q2xvc2VUaW1lOwogICAgICAgIH0KCiAgICAgICAgIyBpbiB0aGlzIGxvb3AKICAgICAgICAjIHdlJ3JlIGNhbGN1bGF0aW5nIHRoZSBvcGVuIHRpbWVzIG9mIHRoZSBzdGF0ZXMKICAgICAgICBteSAkTGFzdFN0YXRlSW5kZXg7CiAgICAgICAgbXkgJFN0YXRlSW5kZXggPSAwOwogICAgICAgIHdoaWxlICggJFN0YXRlSW5kZXggPD0gJCN7ICRUaWNrZXQtPntTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBteSAlQ3VycmVudFN0YXRlSGlzdG9yeSA9ICV7ICRUaWNrZXQtPntTdGF0ZXN9LT5bJFN0YXRlSW5kZXhdIH07CgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJExhc3RTdGF0ZUluZGV4ICYmIElzSGFzaFJlZldpdGhEYXRhKCBcJUN1cnJlbnRTdGF0ZUhpc3RvcnkgKSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRpY2tldCBvcGVuZWQgYmV0d2VlbiB0byBzdGF0ZXMKICAgICAgICAgICAgICAgICMgdGhlbiB3ZSBjYWxjdWxhdGUgdGhlIG9wZW4gdGltZSBmb3IgdGhpcyB0aWNrZXQKICAgICAgICAgICAgICAgICMgZS5nLgogICAgICAgICAgICAgICAgIyB0cnVlCiAgICAgICAgICAgICAgICAjIDEwOjUwOjAwIE9wZW4KICAgICAgICAgICAgICAgICMgMTY6MDA6MDAgQ2xvc2VkCiAgICAgICAgICAgICAgICAjIGZhbHNlCiAgICAgICAgICAgICAgICAjIDEwOjAwIENsb3NlZAogICAgICAgICAgICAgICAgIyAxNTowMCBvcGVuCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEN1cnJlbnRTdGF0ZUhpc3Rvcnl7U3RhdGVGcm9tfSAgICAhfiBte2Nsb3NlZH14bXMKICAgICAgICAgICAgICAgICAgICAmJiAkQ3VycmVudFN0YXRlSGlzdG9yeXtTdGF0ZX0gICAgICF+IG17Y2xvc2VkfXhtcwogICAgICAgICAgICAgICAgICAgIHx8ICRDdXJyZW50U3RhdGVIaXN0b3J5e1N0YXRlRnJvbX0gIX4gbXtjbG9zZWR9eG1zCiAgICAgICAgICAgICAgICAgICAgJiYgJEN1cnJlbnRTdGF0ZUhpc3Rvcnl7U3RhdGV9ICAgICA9fiBte2Nsb3NlZH14bXMKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkVGlja2V0LT57T3BlblRpbWVQZXJpb2RzfSB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0VGltZSA9PiAkVGlja2V0LT57U3RhdGVzfS0+WyRMYXN0U3RhdGVJbmRleF0tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRW5kVGltZSAgID0+ICRDdXJyZW50U3RhdGVIaXN0b3J5e0NyZWF0ZVRpbWV9LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCB0aGUgbGFzdCB0aWNrZXQgaW5kZXgKICAgICAgICAgICAgJExhc3RTdGF0ZUluZGV4ID0gJFN0YXRlSW5kZXg7CgogICAgICAgICAgICAkU3RhdGVJbmRleCsrOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBhIHRpY2tldCBpcyBjcmVhdGVkIHdpdGhvdXQgYSBjbG9zZSBzdGF0ZQogICAgICAgICMgaW4gdGltZSBwZXJpb2Qgb2YgdGhlIHJlcG9ydCB0aGVuCiAgICAgICAgIyB3ZSBjYWxjdWxhdGUgdGhlIG9wZW4gdGltZSBmb3IgdGhlIGxhc3Qgc3RhdGUKICAgICAgICBteSAkU3RhdGVDcmVhdGVUaW1lc3RhbXAgPSAkU2VsZi0+X1RpbWVTdGFtcDJFcG9jaCgKICAgICAgICAgICAgVGltZVN0YW1wID0+ICRUaWNrZXQtPntTdGF0ZXN9LT5bLTFdLT57Q3JlYXRlVGltZX0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICRUaWNrZXQtPntTdGF0ZXN9LT5bLTFdLT57U3RhdGV9ICF+IG17Y2xvc2VkfXhtcyApIHsKICAgICAgICAgICAgcHVzaCBAeyAkVGlja2V0LT57T3BlblRpbWVQZXJpb2RzfSB9LCB7CiAgICAgICAgICAgICAgICBTdGFydFRpbWUgPT4gJFRpY2tldC0+e1N0YXRlc30tPlstMV0tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgIEVuZFRpbWUgICA9PiAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1JlcG9ydGluZ1RpbWVzbG90TmV3ZXJEYXRlfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgbm93IHdlIG5lZWQgdGhlIGNhbGN1bGF0ZSB0aGUgb3BlbiB0aW1lcyBmb3IKICAgICAgICAjIHRoZSBhbGwgdGhlIHF1ZXVlcyB0aGUgdGlja2V0IGhhZCByZXNpZGVuY2UgaW4KICAgICAgICAjIHRoaXMgY2FsY3VsYXRpb25zIGFyZSBiYXNlZCBvbiB0aGUgam9pbiBhbmQgbGVmdCB0aW1lCiAgICAgICAgIyBvZiB0aGUgdGlja2V0IGluIHRoZSBxdWV1ZQogICAgICAgICRRdWV1ZUluZGV4ID0gMDsKICAgICAgICB3aGlsZSAoICRRdWV1ZUluZGV4IDw9ICQjeyAkVGlja2V0LT57UXVldWVzfSB9ICkgewoKICAgICAgICAgICAgbXkgJFF1ZXVlICAgICAgICAgICAgICA9ICRUaWNrZXQtPntRdWV1ZXN9LT5bJFF1ZXVlSW5kZXhdOwogICAgICAgICAgICBteSAkUXVldWVKb2luVGltZXN0YW1wID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFF1ZXVlLT57UXVldWVKb2luVGltZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRRdWV1ZUxlZnRUaW1lc3RhbXAgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUXVldWUtPntRdWV1ZUxlZnRUaW1lfSApIHsKICAgICAgICAgICAgICAgICRRdWV1ZUxlZnRUaW1lc3RhbXAgPSAkU2VsZi0+X1RpbWVTdGFtcDJFcG9jaCgKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFF1ZXVlLT57UXVldWVMZWZ0VGltZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkUXVldWUtPntPcGVuVGltZVBlcmlvZHN9ID0gW107CgogICAgICAgICAgICAjIGdldCBvcGVuIHRpbWVzIG9mIHRoZSB0aWNrZXQKICAgICAgICAgICAgbXkgQFF1ZXVlT3BlblRpbWVQZXJpb2RzID0gQHsgJFRpY2tldC0+e09wZW5UaW1lUGVyaW9kc30gfTsKCiAgICAgICAgICAgICMgZ2V0IGFsbCBvcGVuIHRpbWUgcGVyaW9kcyBvZiB0aGUgdGlja2V0CiAgICAgICAgICAgIG15ICRWYWxpZE1pbjsKICAgICAgICAgICAgbXkgJFZhbGlkTWF4OwogICAgICAgICAgICBPUEVOUEVSSU9EOgogICAgICAgICAgICBmb3IgbXkgJE9wZW5QZXJpb2QgKEBRdWV1ZU9wZW5UaW1lUGVyaW9kcykgewoKICAgICAgICAgICAgICAgIG15ICRPcGVuU3RhcnQgPSAkU2VsZi0+X1RpbWVTdGFtcDJFcG9jaCggVGltZVN0YW1wID0+ICRPcGVuUGVyaW9kLT57U3RhcnRUaW1lfSApOwogICAgICAgICAgICAgICAgbXkgJE9wZW5FbmQgICA9ICRTZWxmLT5fVGltZVN0YW1wMkVwb2NoKCBUaW1lU3RhbXAgPT4gJE9wZW5QZXJpb2QtPntFbmRUaW1lfSApOwoKICAgICAgICAgICAgICAgICMgaWYgb3BlbiB0aW1lIHBlcmlvZCBpbiB0aGUgdGltZSBwZXJpb2QKICAgICAgICAgICAgICAgICMgb2YgdGhlIHRpY2tldCBpbiBxdWV1ZQogICAgICAgICAgICAgICAgIyB0aGVuIHdlIGFkZCB0aGUgcGVyaW9kIHRvIG9wZW4gdGltZSBwZXJpb2RzCiAgICAgICAgICAgICAgICAjIG9mIHRoZSBxdWV1ZQogICAgICAgICAgICAgICAgJFF1ZXVlTGVmdFRpbWVzdGFtcCB8fD0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57UmVwb3J0aW5nVGltZXNsb3ROZXdlckRhdGV9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBPUEVOUEVSSU9EIGlmICRRdWV1ZUxlZnRUaW1lc3RhbXAgJiYgJE9wZW5TdGFydCA+ICRRdWV1ZUxlZnRUaW1lc3RhbXA7CiAgICAgICAgICAgICAgICBuZXh0IE9QRU5QRVJJT0QgaWYgJE9wZW5FbmQgPCAkUXVldWVKb2luVGltZXN0YW1wOwoKICAgICAgICAgICAgICAgIG15ICRTdGFydCAgICAgPSAkT3BlblN0YXJ0ID4gJFF1ZXVlSm9pblRpbWVzdGFtcCA/ICRPcGVuU3RhcnQgOiAkUXVldWVKb2luVGltZXN0YW1wOwogICAgICAgICAgICAgICAgbXkgJFN0YXJ0VGltZSA9ICRTZWxmLT5fRXBvY2gyVGltZVN0YW1wKAogICAgICAgICAgICAgICAgICAgIEVwb2NoID0+ICRTdGFydCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSAkRW5kICAgICA9ICRRdWV1ZUxlZnRUaW1lc3RhbXAgPiAkT3BlbkVuZCA/ICRPcGVuRW5kIDogJFF1ZXVlTGVmdFRpbWVzdGFtcDsKICAgICAgICAgICAgICAgIG15ICRFbmRUaW1lID0gJFNlbGYtPl9FcG9jaDJUaW1lU3RhbXAoCiAgICAgICAgICAgICAgICAgICAgRXBvY2ggPT4gJEVuZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZW1lbWJlciB2YWxpZCBtaW4gYW5kIG1heCB0aW1lcwogICAgICAgICAgICAgICAgaWYgKCAhJFZhbGlkTWluIHx8ICRWYWxpZE1pbiA+ICRTdGFydCApIHsKICAgICAgICAgICAgICAgICAgICAkVmFsaWRNaW4gPSAkU3RhcnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICEkVmFsaWRNYXggfHwgJFZhbGlkTWF4IDwgJEVuZCApIHsKICAgICAgICAgICAgICAgICAgICAkVmFsaWRNYXggPSAkRW5kOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRpbWUgcGVyaW9kIGZvciBxdWV1ZSBiYXNlZCBvbgogICAgICAgICAgICAgICAgIyB0aGUgcGVyaW9kIHRpbWUgd2hlcmUgdGhpcyB0aWNrZXQgdG9vayByZXNpZGVuY2UgaW4gdGhpcyBxdWV1ZQogICAgICAgICAgICAgICAgcHVzaCBAeyAkUXVldWUtPntPcGVuVGltZVBlcmlvZHN9IH0sIHsKICAgICAgICAgICAgICAgICAgICBTdGFydFRpbWUgPT4gJFN0YXJ0VGltZSwKICAgICAgICAgICAgICAgICAgICBFbmRUaW1lICAgPT4gJEVuZFRpbWUsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlc3RyaWN0IGlmIGpvaW4gYW5kIGxlZnQgdGltZXMgdG8gdmFsaWQgYm91bmRhcmllcwogICAgICAgICAgICBpZiAoICRWYWxpZE1pbiAmJiAkVmFsaWRNaW4gPiAkUXVldWVKb2luVGltZXN0YW1wICkgewogICAgICAgICAgICAgICAgJFF1ZXVlLT57UXVldWVKb2luVGltZX0gPSAkU2VsZi0+X0Vwb2NoMlRpbWVTdGFtcCgKICAgICAgICAgICAgICAgICAgICBFcG9jaCA9PiAkVmFsaWRNaW4sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJFZhbGlkTWF4ICYmICRWYWxpZE1heCA8ICRRdWV1ZUxlZnRUaW1lc3RhbXAgKSB7CiAgICAgICAgICAgICAgICAkUXVldWUtPntRdWV1ZUxlZnRUaW1lfSA9ICRTZWxmLT5fRXBvY2gyVGltZVN0YW1wKAogICAgICAgICAgICAgICAgICAgIEVwb2NoID0+ICRWYWxpZE1heCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2Vjb25kIHN0ZXAgaXMgdG8gY2FsY3VsYXRlIGEgdGltZS1zdGFtcAogICAgICAgICAgICAjIGJhc2VkIG9uIHRoZSBvcGVuIHRpbWVzIG9mIHRpY2tldCBpbiB0aGlzIHF1ZXVlCiAgICAgICAgICAgICRRdWV1ZS0+e1Jlc3RpbmdUaW1lU2Vjb25kc30gICAgICAgICAgICAgID0gMDsKICAgICAgICAgICAgJFF1ZXVlLT57UmVzdGluZ1RpbWVXb3JraW5nUGVyaW9kU2Vjb25kc30gPSAwOwoKICAgICAgICAgICAgZm9yIG15ICRPcGVuUGVyaW9kICggQHsgJFF1ZXVlLT57T3BlblRpbWVQZXJpb2RzfSB9ICkgewoKICAgICAgICAgICAgICAgIG15ICRPcGVuU3RhcnQgPSAkU2VsZi0+X1RpbWVTdGFtcDJFcG9jaCggVGltZVN0YW1wID0+ICRPcGVuUGVyaW9kLT57U3RhcnRUaW1lfSApOwogICAgICAgICAgICAgICAgbXkgJE9wZW5FbmQgICA9ICRTZWxmLT5fVGltZVN0YW1wMkVwb2NoKCBUaW1lU3RhbXAgPT4gJE9wZW5QZXJpb2QtPntFbmRUaW1lfSApOwoKICAgICAgICAgICAgICAgICMgcmVzdGluZyB0aW1lCiAgICAgICAgICAgICAgICAkUXVldWUtPntSZXN0aW5nVGltZVNlY29uZHN9ICs9ICRPcGVuRW5kIC0gJE9wZW5TdGFydDsKCiAgICAgICAgICAgICAgICBpZiAoICRRdWV1ZUxpc3R7ICRRdWV1ZS0+e1F1ZXVlfSB9LT57Q2FsZW5kYXJ9IG5lICcnICkgewoKICAgICAgICAgICAgICAgICAgICAjIGNhbGN1bGF0ZSBvcGVuIHRpbWVzIHdpdGggd29yayBob3VyIGNhbGVuZGVyCiAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgcXVldWUKICAgICAgICAgICAgICAgICAgICAkUXVldWUtPntSZXN0aW5nVGltZVdvcmtpbmdQZXJpb2RTZWNvbmRzfSArPSAkU2VsZi0+X1dvcmtpbmdUaW1lKAogICAgICAgICAgICAgICAgICAgICAgICBTdGFydFRpbWUgPT4gJE9wZW5TdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcFRpbWUgID0+ICRPcGVuRW5kLAogICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhciAgPT4gJFF1ZXVlTGlzdHsgJFF1ZXVlLT57UXVldWV9IH0tPntDYWxlbmRhcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmb3JtYXQgcmVzdGluZyB0aW1lcwogICAgICAgICAgICAkUXVldWUtPntSZXN0aW5nVGltZUhSfSAgICAgICAgICAgICAgPSAkU2VsZi0+X1RpbWVzdGFtcFRvRHVyYXRpb24oIFRpbWVzdGFtcCA9PiAkUXVldWUtPntSZXN0aW5nVGltZVNlY29uZHN9ICk7CiAgICAgICAgICAgICRRdWV1ZS0+e1Jlc3RpbmdUaW1lV29ya2luZ1BlcmlvZEhSfSA9ICRTZWxmLT5fVGltZXN0YW1wVG9EdXJhdGlvbigKICAgICAgICAgICAgICAgIFRpbWVzdGFtcCA9PiAkUXVldWUtPntSZXN0aW5nVGltZVdvcmtpbmdQZXJpb2RTZWNvbmRzfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFF1ZXVlSW5kZXgrKzsKICAgICAgICB9CgogICAgICAgICMgc29tZSBvZiB0aGUgdGlja2V0IGF0dHJpYnV0ZXMgY2FuJ3QgYmUgcmVzdG9yZWQgZnJvbSB0aGUKICAgICAgICAjIGhpc3RvcnkgKGUuZy4gVGl0bGUpLCBzbyB3ZSB1c2UgdGhlIGN1cnJlbnQgZGF0YSB0byBhdm9pZAogICAgICAgICMgYmxhbmsgc3BhY2VzIGluIHRoZSByZXN1bHQKICAgICAgICBteSAlQWN0dWFsVGlja2V0RGF0YSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICBFeHRlbmRlZCAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgUVVFUlk6CiAgICAgICAgZm9yIG15ICRRdWV1ZUVudHJ5ICggQHsgJFRpY2tldC0+e1F1ZXVlc30gfSApIHsKCiAgICAgICAgICAgICMgb25seSBvdXRwdXQgY29uZmlndXJlZCBxdWV1ZXMKICAgICAgICAgICAgbmV4dCBRVUVSWSBpZiAhZ3JlcCB7ICRfID09ICRRdWV1ZUVudHJ5LT57UXVldWV9IH0gQHsgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntRdWV1ZUlEc30gfTsKCiAgICAgICAgICAgICRRdWV1ZUVudHJ5LT57VGlja2V0TnVtYmVyfSA9ICRIaXN0b3J5RGF0YUNyZWF0ZURhdGV7VGlja2V0TnVtYmVyfTsKICAgICAgICAgICAgJFF1ZXVlRW50cnktPntRdWV1ZX0gICAgICAgID0gJFF1ZXVlTGlzdHsgJFF1ZXVlRW50cnktPntRdWV1ZX0gfS0+e05hbWV9OwoKICAgICAgICAgICAgbXkgQFJlc3VsdFJvdzsKICAgICAgICAgICAgQVRUUklCVVRFOgogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRUaWNrZXRBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwoKICAgICAgICAgICAgICAgIG15ICRSZXN1bHRWYWx1ZSA9IGRlZmluZWQgJFF1ZXVlRW50cnktPnskQXR0cmlidXRlfSA/ICRRdWV1ZUVudHJ5LT57JEF0dHJpYnV0ZX0gOiAnJzsKICAgICAgICAgICAgICAgIGlmICggJFJlc3VsdFZhbHVlIGVxICcnICYmICRBY3R1YWxUaWNrZXREYXRheyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXN1bHRWYWx1ZSA9ICRBY3R1YWxUaWNrZXREYXRheyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCBAUmVzdWx0Um93LCAkUmVzdWx0VmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAU3RhdEFycmF5LCBcQFJlc3VsdFJvdzsKICAgICAgICB9CiAgICB9CgogICAgIyBzb3J0IGJ5IHRpY2tldCBudW1iZXIKICAgIG15ICRUaWNrZXROdW1iZXJLZXkgID0gMDsKICAgIG15ICRUaWNrZXRJREtleSAgICAgID0gMDsKICAgIG15ICRRdWV1ZUpvaW5UaW1lS2V5ID0gMDsKICAgIEFUVFJJQlVURToKICAgIGZvciBteSAkQXR0cmlidXRlICggQHskU29ydGVkQXR0cmlidXRlc1JlZn0gKSB7CiAgICAgICAgaWYgKCAkVGlja2V0QXR0cmlidXRlc3skQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgJFRpY2tldE51bWJlcktleSsrOwogICAgICAgIH0KICAgICAgICBsYXN0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdUaWNrZXROdW1iZXInOwogICAgfQoKICAgICMgcmVwbGFjZSB0aWNrZXQgbnVtYmVyIHdpdGggdGlja2V0IGlkIGlmIHRpY2tldCBudW1iZXIgaXMgbm90IGNvbmZpZ3VyZWQKICAgIGlmICggISRUaWNrZXROdW1iZXJLZXkgKSB7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggQHskU29ydGVkQXR0cmlidXRlc1JlZn0gKSB7CiAgICAgICAgICAgIGlmICggJFRpY2tldEF0dHJpYnV0ZXN7JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkVGlja2V0TnVtYmVyS2V5Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEUgaWYgJEF0dHJpYnV0ZSBlcSAnVGlja2V0SUQnOwoKICAgICAgICB9CiAgICB9CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBAeyRTb3J0ZWRBdHRyaWJ1dGVzUmVmfSApIHsKICAgICAgICBpZiAoICRUaWNrZXRBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkUXVldWVKb2luVGltZUtleSsrOwogICAgICAgIH0KICAgICAgICBsYXN0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdRdWV1ZUpvaW5UaW1lJzsKICAgIH0KCiAgICAjIHJlbW92ZSAxIGJlY2F1c2UgYXJyYXkgaW5kZXggc3RhcnRzIGF0IDAKICAgICRUaWNrZXROdW1iZXJLZXktLTsKICAgICRRdWV1ZUpvaW5UaW1lS2V5LS07CgogICAgIyBzb3J0IGJ5IHRpY2tldCBudW1iZXIgYXNjIG9yIGRlc2MKICAgICMgc2Vjb25kYXJ5IHNvcnQgYnkgcXVldWUgam9pbiB0aW1lCiAgICBAU3RhdEFycmF5ID0gc29ydCB7CiAgICAgICAgaWYgKCAkYS0+WyRUaWNrZXROdW1iZXJLZXldIGVxICRiLT5bJFRpY2tldE51bWJlcktleV0gKSB7CiAgICAgICAgICAgIG15ICRBUXVldWVKb2luVGltZSA9ICRTZWxmLT5fVGltZVN0YW1wMkVwb2NoKAogICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRhLT5bJFF1ZXVlSm9pblRpbWVLZXldLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQlF1ZXVlSm9pblRpbWUgPSAkU2VsZi0+X1RpbWVTdGFtcDJFcG9jaCgKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkYi0+WyRRdWV1ZUpvaW5UaW1lS2V5XSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRBUXVldWVKb2luVGltZSA8PT4gJEJRdWV1ZUpvaW5UaW1lOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKCAkU29ydCBlcSAnVXAnICkKICAgICAgICAgICAgPyAkYS0+WyRUaWNrZXROdW1iZXJLZXldIDw9PiAkYi0+WyRUaWNrZXROdW1iZXJLZXldCiAgICAgICAgICAgIDogJGItPlskVGlja2V0TnVtYmVyS2V5XSA8PT4gJGEtPlskVGlja2V0TnVtYmVyS2V5XTsKICAgIH0gQFN0YXRBcnJheTsKCiAgICAjIGFkZCBhIGVudW1lcmF0aW9uIGluIGZyb250IG9mIGVhY2ggcm93CiAgICBpZiAoJEFkZEVudW1lcmF0aW9uKSB7CiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIGZvciBteSAkUm93IChAU3RhdEFycmF5KSB7CiAgICAgICAgICAgIHVuc2hpZnQgQHskUm93fSwgKyskQ291bnRlcjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBTdGF0QXJyYXk7Cn0KCnN1YiBHZXRIZWFkZXJMaW5lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlU2VsZWN0ZWRBdHRyaWJ1dGVzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtYVmFsdWV9LT57U2VsZWN0ZWRWYWx1ZXN9IH07CgogICAgbXkgJFRpY2tldEF0dHJpYnV0ZXMgICAgPSAkU2VsZi0+X1RpY2tldEF0dHJpYnV0ZXMoKTsKICAgIG15ICRTb3J0ZWRBdHRyaWJ1dGVzUmVmID0gJFNlbGYtPl9Tb3J0ZWRBdHRyaWJ1dGVzKCk7CiAgICBteSBASGVhZGVyTGluZTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkU2VsZWN0ZWRBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwogICAgICAgIHB1c2ggQEhlYWRlckxpbmUsICRUaWNrZXRBdHRyaWJ1dGVzLT57JEF0dHJpYnV0ZX07CiAgICB9CiAgICByZXR1cm4gXEBIZWFkZXJMaW5lOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVXNlck9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJFF1ZXVlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkU3RhdGVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwoKICAgICMgd3JhcCBpZHMgdG8gdXNlZCBzcGVsbGluZwogICAgZm9yIG15ICRVc2UgKHF3KFVzZUFzVmFsdWVTZXJpZXMgVXNlQXNSZXN0cmljdGlvbiBVc2VBc1h2YWx1ZSkpIHsKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRQYXJhbXskVXNlfSB9ICkgewogICAgICAgICAgICBuZXh0IEVMRU1FTlQgaWYgISRFbGVtZW50IHx8ICEkRWxlbWVudC0+e1NlbGVjdGVkVmFsdWVzfTsKICAgICAgICAgICAgbXkgJEVsZW1lbnROYW1lID0gJEVsZW1lbnQtPntFbGVtZW50fTsKICAgICAgICAgICAgbXkgJFZhbHVlcyAgICAgID0gJEVsZW1lbnQtPntTZWxlY3RlZFZhbHVlc307CgogICAgICAgICAgICBpZiAoICRFbGVtZW50TmFtZSBlcSAnUXVldWVJRHMnIHx8ICRFbGVtZW50TmFtZSBlcSAnQ3JlYXRlZFF1ZXVlSURzJyApIHsKICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwogICAgICAgICAgICAgICAgICAgICRJRC0+e0NvbnRlbnR9ID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCggUXVldWVJRCA9PiAkSUQtPntDb250ZW50fSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEVsZW1lbnROYW1lIGVxICdTdGF0ZUlEcycgfHwgJEVsZW1lbnROYW1lIGVxICdDcmVhdGVkU3RhdGVJRHMnICkgewogICAgICAgICAgICAgICAgbXkgJVN0YXRlTGlzdCA9ICRTdGF0ZU9iamVjdC0+U3RhdGVMaXN0KCBVc2VySUQgPT4gMSApOwogICAgICAgICAgICAgICAgSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggQHskVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElEIGlmICEkSUQ7CiAgICAgICAgICAgICAgICAgICAgJElELT57Q29udGVudH0gPSAkU3RhdGVMaXN0eyAkSUQtPntDb250ZW50fSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEVsZW1lbnROYW1lIGVxICdQcmlvcml0eUlEcycgfHwgJEVsZW1lbnROYW1lIGVxICdDcmVhdGVkUHJpb3JpdHlJRHMnICkgewogICAgICAgICAgICAgICAgbXkgJVByaW9yaXR5TGlzdCA9ICRQcmlvcml0eU9iamVjdC0+UHJpb3JpdHlMaXN0KCBVc2VySUQgPT4gMSApOwogICAgICAgICAgICAgICAgSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggQHskVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElEIGlmICEkSUQ7CiAgICAgICAgICAgICAgICAgICAgJElELT57Q29udGVudH0gPSAkUHJpb3JpdHlMaXN0eyAkSUQtPntDb250ZW50fSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRFbGVtZW50TmFtZSBlcSAnT3duZXJJRHMnCiAgICAgICAgICAgICAgICB8fCAkRWxlbWVudE5hbWUgZXEgJ0NyZWF0ZWRVc2VySURzJwogICAgICAgICAgICAgICAgfHwgJEVsZW1lbnROYW1lIGVxICdSZXNwb25zaWJsZUlEcycKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggQHskVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElEIGlmICEkSUQ7CiAgICAgICAgICAgICAgICAgICAgJElELT57Q29udGVudH0gPSAkVXNlck9iamVjdC0+VXNlckxvb2t1cCggVXNlcklEID0+ICRJRC0+e0NvbnRlbnR9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTG9ja3MgYW5kIHN0YXR1c3R5cGUgZG9uJ3QgaGF2ZSB0byB3cmFwIGJlY2F1c2UgdGhleSBhcmUgbmV2ZXIgZGlmZmVyZW50CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIFwlUGFyYW07Cn0KCnN1YiBJbXBvcnRXcmFwcGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRVc2VyT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CiAgICBteSAkUXVldWVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgIG15ICRTdGF0ZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpOwogICAgbXkgJFByaW9yaXR5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5Jyk7CgogICAgIyB3cmFwIHVzZWQgc3BlbGxpbmcgdG8gaWRzCiAgICBmb3IgbXkgJFVzZSAocXcoVXNlQXNWYWx1ZVNlcmllcyBVc2VBc1Jlc3RyaWN0aW9uIFVzZUFzWHZhbHVlKSkgewogICAgICAgIEVMRU1FTlQ6CiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggQHsgJFBhcmFteyRVc2V9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhJEVsZW1lbnQgfHwgISRFbGVtZW50LT57U2VsZWN0ZWRWYWx1ZXN9OwogICAgICAgICAgICBteSAkRWxlbWVudE5hbWUgPSAkRWxlbWVudC0+e0VsZW1lbnR9OwogICAgICAgICAgICBteSAkVmFsdWVzICAgICAgPSAkRWxlbWVudC0+e1NlbGVjdGVkVmFsdWVzfTsKCiAgICAgICAgICAgIGlmICggJEVsZW1lbnROYW1lIGVxICdRdWV1ZUlEcycgfHwgJEVsZW1lbnROYW1lIGVxICdDcmVhdGVkUXVldWVJRHMnICkgewogICAgICAgICAgICAgICAgSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggQHskVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElEIGlmICEkSUQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkSUQtPntDb250ZW50fSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSUQtPntDb250ZW50fSA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoIFF1ZXVlID0+ICRJRC0+e0NvbnRlbnR9ICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW1wb3J0OiBDYW4nIGZpbmQgdGhlIHF1ZXVlICRJRC0+e0NvbnRlbnR9ISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJElEID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEVsZW1lbnROYW1lIGVxICdTdGF0ZUlEcycgfHwgJEVsZW1lbnROYW1lIGVxICdDcmVhdGVkU3RhdGVJRHMnICkgewogICAgICAgICAgICAgICAgSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggQHskVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElEIGlmICEkSUQ7CgogICAgICAgICAgICAgICAgICAgIG15ICVTdGF0ZSA9ICRTdGF0ZU9iamVjdC0+U3RhdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRJRC0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBDYWNoZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU3RhdGV7SUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSUQtPntDb250ZW50fSA9ICRTdGF0ZXtJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW1wb3J0OiBDYW4nIGZpbmQgc3RhdGUgJElELT57Q29udGVudH0hIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkSUQgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRWxlbWVudE5hbWUgZXEgJ1ByaW9yaXR5SURzJyB8fCAkRWxlbWVudE5hbWUgZXEgJ0NyZWF0ZWRQcmlvcml0eUlEcycgKSB7CiAgICAgICAgICAgICAgICBteSAlUHJpb3JpdHlMaXN0ID0gJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxpc3QoIFVzZXJJRCA9PiAxICk7CiAgICAgICAgICAgICAgICBteSAlUHJpb3JpdHlJRHM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlUHJpb3JpdHlMaXN0ICkgewogICAgICAgICAgICAgICAgICAgICRQcmlvcml0eUlEc3sgJFByaW9yaXR5TGlzdHskS2V5fSB9ID0gJEtleTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRQcmlvcml0eUlEc3sgJElELT57Q29udGVudH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJElELT57Q29udGVudH0gPSAkUHJpb3JpdHlJRHN7ICRJRC0+e0NvbnRlbnR9IH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW1wb3J0OiBDYW4nIGZpbmQgcHJpb3JpdHkgJElELT57Q29udGVudH0hIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkSUQgPSB1bmRlZjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgJEVsZW1lbnROYW1lIGVxICdPd25lcklEcycKICAgICAgICAgICAgICAgIHx8ICRFbGVtZW50TmFtZSBlcSAnQ3JlYXRlZFVzZXJJRHMnCiAgICAgICAgICAgICAgICB8fCAkRWxlbWVudE5hbWUgZXEgJ1Jlc3BvbnNpYmxlSURzJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBAeyRWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISRJRDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkVXNlck9iamVjdC0+VXNlckxvb2t1cCggVXNlckxvZ2luID0+ICRJRC0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRJRC0+e0NvbnRlbnR9ID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJElELT57Q29udGVudH0KICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbXBvcnQ6IENhbicgZmluZCB1c2VyICRJRC0+e0NvbnRlbnR9ISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJElEID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIExvY2tzIGFuZCBzdGF0dXN0eXBlIGRvbid0IGhhdmUgdG8gd3JhcCBiZWNhdXNlIHRoZXkgYXJlIG5ldmVyIGRpZmZlcmVudAogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgX1RpY2tldEF0dHJpYnV0ZXMgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAlVGlja2V0QXR0cmlidXRlcyA9ICgKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTnVtYmVyJyksCiAgICAgICAgVGlja2V0TnVtYmVyICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6SG9vaycpLAogICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUaWNrZXQgSUQnKSwKICAgICAgICBDcmVhdGVkICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCcpLAogICAgICAgIENoYW5nZWQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDaGFuZ2VkJyksCiAgICAgICAgQ2xvc2VkICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Nsb3NlIFRpbWUnKSwKICAgICAgICBTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU3RhdGUnKSwKICAgICAgICBRdWV1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVldWUnKSwKICAgICAgICBRdWV1ZUpvaW5UaW1lICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVldWUgam9pbiB0aW1lJyksCiAgICAgICAgUXVldWVMZWZ0VGltZSAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1F1ZXVlIGxlZnQgdGltZScpLAogICAgICAgIFJlc3RpbmdUaW1lU2Vjb25kcyAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdSZXN0aW5nIHRpbWUgKHNlY29uZHMpJyksCiAgICAgICAgUmVzdGluZ1RpbWVIUiAgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1Jlc3RpbmcgdGltZSAoSEg6TU06U1MpJyksCiAgICAgICAgUmVzdGluZ1RpbWVXb3JraW5nUGVyaW9kU2Vjb25kcyA9PiBUcmFuc2xhdGFibGUoJ1Jlc3RpbmcgdGltZSAoV29ya2luZyBob3Vycywgc2Vjb25kcyknKSwKICAgICAgICBSZXN0aW5nVGltZVdvcmtpbmdQZXJpb2RIUiAgICAgID0+IFRyYW5zbGF0YWJsZSgnUmVzdGluZyB0aW1lIChXb3JraW5nIGhvdXJzLCBISDpNTTpTUyknKSwKICAgICk7CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICkgewogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVze1R5cGV9ID0gJ1R5cGUnOwogICAgfQoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICB9CgogICAgcmV0dXJuIFwlVGlja2V0QXR0cmlidXRlczsKfQoKc3ViIF9QcmVwYXJlVGlja2V0TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRUaWNrZXRMaXN0ID0gJFBhcmFte1RpY2tldExpc3R9OwogICAgbXkgQFJvdyAgICAgICAgPSBAeyAkUGFyYW17U1FMUm93fSB9OwoKICAgIG15ICRUaWNrZXRJRCAgICAgICAgICAgICA9ICRSb3dbMF07CiAgICBteSAkSGlzdG9yeVJhd0RhdGEgICAgICAgPSAkUm93WzFdOwogICAgbXkgJEhpc3RvcnlUeXBlICAgICAgICAgID0gJFBhcmFte0hpc3RvcnlUeXBlTGlzdH0tPnsgJFJvd1syXSB9OwogICAgbXkgJEhpc3RvcnlDcmVhdGVUaW1lICAgID0gJFJvd1szXTsKICAgIG15ICRRdWV1ZUlEICAgICAgICAgICAgICA9ICRSb3dbNF07CiAgICBteSAkSGlzdG9yeUNyZWF0ZVN0YXRlSUQgPSAkUm93WzVdOwoKICAgIG15IEBIaXN0b3J5VG1wID0gc3BsaXQoICclJScsICRIaXN0b3J5UmF3RGF0YSApOwogICAgbXkgJVN0YXRlTGlzdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKS0+U3RhdGVMaXN0KCBVc2VySUQgPT4gMSApOwoKICAgIG15ICRIaXN0b3J5RGF0YSA9IHt9OwoKICAgIG15ICRSZXBvcnRpbmdUaW1lc2xvdE9sZGVyVGltZXN0YW1wID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgVGltZVN0YW1wID0+ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57UmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGV9LAogICAgKTsKICAgIG15ICRIaXN0b3J5Q3JlYXRlVGltZXN0YW1wID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgVGltZVN0YW1wID0+ICRIaXN0b3J5Q3JlYXRlVGltZSwKICAgICk7CgogICAgIyBkZWZhdWx0IHN0cnVjdHVyZSBvZiBhIHRpY2tldAogICAgaWYgKCAhZXhpc3RzICRUaWNrZXRMaXN0LT57JFRpY2tldElEfSApIHsKICAgICAgICAkVGlja2V0TGlzdC0+eyRUaWNrZXRJRH0gPSB7CiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgID0+IFtdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICAgPT4gJycsCiAgICAgICAgICAgIENyZWF0ZVN0YXRlICAgICA9PiAnJywKICAgICAgICAgICAgQ2xvc2VUaW1lICAgICAgID0+ICcnLAogICAgICAgICAgICBPcGVuVGltZVBlcmlvZHMgPT4gW10sCiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICRIaXN0b3J5VHlwZSBlcSAnTW92ZScgKSB7CgogICAgICAgICMgYWRkIHF1ZXVlIGRhdGEgb2YgdGlja2V0CiAgICAgICAgbXkgJFF1ZXVlICAgICA9ICRIaXN0b3J5VG1wWzJdOwogICAgICAgIG15ICRRdWV1ZUZyb20gPSAkSGlzdG9yeVRtcFs0XTsKCiAgICAgICAgJEhpc3RvcnlEYXRhID0gewogICAgICAgICAgICBRdWV1ZUpvaW5UaW1lID0+ICRIaXN0b3J5Q3JlYXRlVGltZSwKICAgICAgICAgICAgUXVldWVMZWZ0VGltZSA9PiAnJywKICAgICAgICAgICAgUXVldWVGcm9tICAgICA9PiAkUXVldWVGcm9tLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgID0+ICRRdWV1ZSwKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRUaWNrZXRMaXN0LT57JFRpY2tldElEfS0+e1F1ZXVlc30gfSwgJEhpc3RvcnlEYXRhOwogICAgfQogICAgZWxzaWYgKCAkSGlzdG9yeVR5cGUgZXEgJ05ld1RpY2tldCcgKSB7CgogICAgICAgICMgYWRkIGNyZWF0aW9uIHRpbWUgb2YgdGlja2V0CiAgICAgICAgJFRpY2tldExpc3QtPnskVGlja2V0SUR9LT57Q3JlYXRlVGltZX0gID0gJEhpc3RvcnlDcmVhdGVUaW1lOwogICAgICAgICRUaWNrZXRMaXN0LT57JFRpY2tldElEfS0+e0NyZWF0ZVN0YXRlfSA9ICRTdGF0ZUxpc3R7JEhpc3RvcnlDcmVhdGVTdGF0ZUlEfTsKCiAgICAgICAgIyBhZGQgZmlyc3Qgc3RhdGUgb2YgdGhlIHRpY2tldAogICAgICAgICRIaXN0b3J5RGF0YSA9IHsKICAgICAgICAgICAgQ3JlYXRlVGltZSA9PiAkSGlzdG9yeUNyZWF0ZVRpbWUsCiAgICAgICAgICAgIFN0YXRlRnJvbSAgPT4gJycsCiAgICAgICAgICAgIFN0YXRlICAgICAgPT4gJFN0YXRlTGlzdHskSGlzdG9yeUNyZWF0ZVN0YXRlSUR9LAogICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZUlELAogICAgICAgICAgICBOZXdUaWNrZXQgID0+IDEsCiAgICAgICAgfTsKCiAgICAgICAgcHVzaCBAeyAkVGlja2V0TGlzdC0+eyRUaWNrZXRJRH0tPntTdGF0ZXN9IH0sICRIaXN0b3J5RGF0YTsKICAgIH0KICAgIGVsc2lmICggJEhpc3RvcnlUeXBlIGVxICdTdGF0ZVVwZGF0ZScgKSB7CgogICAgICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgc3RhdGVzIG9mIGEgdGlja2V0CiAgICAgICAgbXkgJEZyb21TdGF0ZSA9ICRIaXN0b3J5VG1wWzFdOwogICAgICAgIG15ICRUb1N0YXRlICAgPSAkSGlzdG9yeVRtcFsyXTsKCiAgICAgICAgJEhpc3RvcnlEYXRhID0gewogICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRIaXN0b3J5Q3JlYXRlVGltZSwKICAgICAgICAgICAgU3RhdGVGcm9tICA9PiAkRnJvbVN0YXRlLAogICAgICAgICAgICBTdGF0ZSAgICAgID0+ICRUb1N0YXRlLAogICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZUlELAogICAgICAgIH07CgogICAgICAgIHB1c2ggQHsgJFRpY2tldExpc3QtPnskVGlja2V0SUR9LT57U3RhdGVzfSB9LCAkSGlzdG9yeURhdGE7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfVGltZXN0YW1wVG9EdXJhdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciAocXcoVGltZXN0YW1wKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIl9UaW1lc3RhbXBUb0R1cmF0aW9uOiBOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSG91cnMgICA9IDA7CiAgICBteSAkTWludXRlcyA9IDA7CiAgICBteSAkU2Vjb25kcyA9IDA7CiAgICBpZiAoICRQYXJhbXtUaW1lc3RhbXB9ID4gMCApIHsKICAgICAgICAkSG91cnMgPSBpbnQoICRQYXJhbXtUaW1lc3RhbXB9IC8gMzYwMCApOwogICAgICAgICRQYXJhbXtUaW1lc3RhbXB9IC09ICRIb3VycyAqIDM2MDA7CgogICAgICAgICRNaW51dGVzID0gaW50KCAkUGFyYW17VGltZXN0YW1wfSAvIDYwICk7CiAgICAgICAgJFNlY29uZHMgPSAkUGFyYW17VGltZXN0YW1wfSAlIDYwOwogICAgfQogICAgcmV0dXJuCiAgICAgICAgc3ByaW50ZiggIiUwMmQiLCAkSG91cnMgKSAuICI6IgogICAgICAgIC4gc3ByaW50ZiggIiUwMmQiLCAkTWludXRlcyApIC4gIjoiCiAgICAgICAgLiBzcHJpbnRmKCAiJTAyZCIsICRTZWNvbmRzICk7Cn0KCnN1YiBfU29ydGVkQXR0cmlidXRlcyB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIG15IEBTb3J0ZWRBdHRyaWJ1dGVzID0gcXcoCiAgICAgICAgTnVtYmVyCiAgICAgICAgVGlja2V0TnVtYmVyCiAgICAgICAgVGlja2V0SUQKICAgICAgICBDcmVhdGVkCiAgICAgICAgQ2hhbmdlZAogICAgICAgIENsb3NlZAogICAgICAgIFN0YXRlCiAgICAgICAgVHlwZQogICAgICAgIFF1ZXVlCiAgICAgICAgUXVldWVKb2luVGltZQogICAgICAgIFF1ZXVlTGVmdFRpbWUKICAgICAgICBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICBSZXN0aW5nVGltZUhSCiAgICAgICAgUmVzdGluZ1RpbWVXb3JraW5nUGVyaW9kU2Vjb25kcwogICAgICAgIFJlc3RpbmdUaW1lV29ya2luZ1BlcmlvZEhSCiAgICApOwoKICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgRHluYW1pYyBGaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlCiAgICAgICAgcHVzaCBAU29ydGVkQXR0cmlidXRlcywgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgfQoKICAgIHJldHVybiBcQFNvcnRlZEF0dHJpYnV0ZXM7Cn0KCnN1YiBfVGltZVN0YW1wMkVwb2NoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSwgKSA9IEBfOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtUaW1lU3RhbXB9LAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPlRvRXBvY2goKSBpZiAkRGF0ZVRpbWVPYmplY3Q7CiAgICByZXR1cm47Cn0KCnN1YiBfRXBvY2gyVGltZVN0YW1wIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSwgKSA9IEBfOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgRXBvY2ggPT4gJFBhcmFte0Vwb2NofSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJERhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpIGlmICREYXRlVGltZU9iamVjdDsKICAgIHJldHVybjsKfQoKc3ViIF9Xb3JraW5nVGltZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0sICkgPSBAXzsKCiAgICBteSAkU3RhcnRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBFcG9jaCA9PiAkUGFyYW17U3RhcnRUaW1lfSwKICAgICAgICB9LAogICAgKTsKICAgIG15ICRTdG9wVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgRXBvY2ggPT4gJFBhcmFte1N0b3BUaW1lfSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkRGVsdGEgPSAkU3RhcnRUaW1lLT5EZWx0YSgKICAgICAgICBEYXRlVGltZU9iamVjdCA9PiAkU3RvcFRpbWUsCiAgICAgICAgQ2FsZW5kYXIgICAgICAgPT4gJFBhcmFte0NhbGVuZGFyfSwKICAgICAgICBGb3JXb3JraW5nVGltZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJERlbHRhLT57QWJzb2x1dGVTZWNvbmRzfSB8fCAwOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Stats/Dynamic/QueueWorkingTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6UXVldWVXb3JraW5nVGltZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KCBmaXJzdCApOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvY2snLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNMQScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlR5cGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aWNrZXQgb2JqZWN0CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgIyBnZXQgYSBsb2NhbCBxdWV1ZSBvYmplY3QKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwoKICAgICMgZ2V0IGFsbCBxdWV1ZXMKICAgICRTZWxmLT57UXVldWVMaXN0fSA9IHsgJFF1ZXVlT2JqZWN0LT5HZXRBbGxRdWV1ZXMoKSB9OwogICAgZm9yIG15ICRRdWV1ZSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e1F1ZXVlTGlzdH0gfSApIHsKCiAgICAgICAgbXkgJVF1ZXVlRGF0YSA9ICRRdWV1ZU9iamVjdC0+UXVldWVHZXQoCiAgICAgICAgICAgIElEID0+ICRRdWV1ZSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57UXVldWVMaXN0fS0+eyRRdWV1ZX0gPSBcJVF1ZXVlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBHZXRPYmplY3ROYW1lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdRdWV1ZVdvcmtpbmdUaW1lJzsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBHZXRPYmplY3RBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJFF1ZXVlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkVGlja2V0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkU3RhdGVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwogICAgbXkgJExvY2tPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvY2snKTsKCiAgICBteSAkVmFsaWRBZ2VudCA9IDA7CiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N0YXRzOjpVc2VJbnZhbGlkQWdlbnRJblN0YXRzJykKICAgICAgICAmJiAoICRDb25maWdPYmplY3QtPkdldCgnU3RhdHM6OlVzZUludmFsaWRBZ2VudEluU3RhdHMnKSA9PSAwICkKICAgICAgICApCiAgICB7CiAgICAgICAgJFZhbGlkQWdlbnQgPSAxOwogICAgfQoKICAgICMgR2V0IHVzZXIgbGlzdCB3aXRob3V0IHRoZSBvdXQgb2Ygb2ZmaWNlIG1lc3NhZ2UsIGJlY2F1c2Ugb2YgdGhlIGNhY2hpbmcgaW4gdGhlIHN0YXRpc3RpY3MKICAgICMgICBhbmQgbm90IG1lYW5pbmdmdWwgd2l0aCBhIGRhdGUgc2VsZWN0aW9uLgogICAgbXkgJVVzZXJMaXN0ID0gJFVzZXJPYmplY3QtPlVzZXJMaXN0KAogICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0xvbmcnLAogICAgICAgIFZhbGlkICAgICAgICAgPT4gJFZhbGlkQWdlbnQsCiAgICAgICAgTm9PdXRPZk9mZmljZSA9PiAxLAogICAgKTsKCiAgICAjIGdldCBzdGF0ZSBsaXN0CiAgICBteSAlU3RhdGVMaXN0ID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHN0YXRlIHR5cGUgbGlzdAogICAgbXkgJVN0YXRlVHlwZUxpc3QgPSAkU3RhdGVPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHF1ZXVlIGxpc3QKICAgIG15ICVRdWV1ZUxpc3QgPSAkUXVldWVPYmplY3QtPkdldEFsbFF1ZXVlcygpOwoKICAgICMgZ2V0IHByaW9yaXR5IGxpc3QKICAgIG15ICVQcmlvcml0eUxpc3QgPSAkUHJpb3JpdHlPYmplY3QtPlByaW9yaXR5TGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBnZXQgbG9jayBsaXN0CiAgICBteSAlTG9ja0xpc3QgPSAkTG9ja09iamVjdC0+TG9ja0xpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIG15ICVMaW1pdCA9ICgKICAgICAgICA1ICAgICAgICAgPT4gNSwKICAgICAgICAxMCAgICAgICAgPT4gMTAsCiAgICAgICAgMjAgICAgICAgID0+IDIwLAogICAgICAgIDUwICAgICAgICA9PiA1MCwKICAgICAgICAxMDAgICAgICAgPT4gMTAwLAogICAgICAgIHVubGltaXRlZCA9PiBUcmFuc2xhdGFibGUoJ3VubGltaXRlZCcpLAogICAgKTsKCiAgICBteSAlVGlja2V0QXR0cmlidXRlcyA9ICV7ICRTZWxmLT5fVGlja2V0QXR0cmlidXRlcygpIH07CiAgICBteSAlT3JkZXJCeSAgICAgICAgICA9IG1hcCB7ICRfID0+ICRUaWNrZXRBdHRyaWJ1dGVzeyRffSB9IGdyZXAgeyAkXyBuZSAnTnVtYmVyJyB9IGtleXMgJVRpY2tldEF0dHJpYnV0ZXM7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyByZW1vdmUgbm9uIHNvcnRhYmxlIChhbmQgb3JkZXJhYmxlKSBEeW5hbWljIEZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBjaGVjayBpZiBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlCiAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIGR5bmFtaWMgZmllbGRzIGZyb20gdGhlIGxpc3QgaWYgaXMgbm90IHNvcnRhYmxlCiAgICAgICAgaWYgKCAhJElzU29ydGFibGUgKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkT3JkZXJCeXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgfQogICAgfQoKICAgIG15ICVTb3J0U2VxdWVuY2UgPSAoCiAgICAgICAgVXAgICA9PiBUcmFuc2xhdGFibGUoJ2FzY2VuZGluZycpLAogICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdkZXNjZW5kaW5nJyksCiAgICApOwoKICAgIG15IEBPYmplY3RBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZXMgdG8gYmUgcHJpbnRlZCcpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAwLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdUaWNrZXRBdHRyaWJ1dGVzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVRpY2tldEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIFNvcnQgICAgICAgICAgICAgPT4gJ0luZGl2aWR1YWxLZXknLAogICAgICAgICAgICBTb3J0SW5kaXZpZHVhbCAgID0+ICRTZWxmLT5fU29ydGVkQXR0cmlidXRlcygpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnT3JkZXIgYnknKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMCwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnT3JkZXJCeScsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1NlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlT3JkZXJCeSwKICAgICAgICAgICAgU29ydCAgICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsICAgPT4gJFNlbGYtPl9Tb3J0ZWRBdHRyaWJ1dGVzKCksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTb3J0IHNlcXVlbmNlJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDAsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1NvcnRTZXF1ZW5jZScsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1NlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU29ydFNlcXVlbmNlLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTGltaXQnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnTGltaXQnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJUxpbWl0LAogICAgICAgICAgICBTb3J0ICAgICAgICAgICAgID0+ICdJbmRpdmlkdWFsS2V5JywKICAgICAgICAgICAgU29ydEluZGl2aWR1YWwgICA9PiBbICc1JywgJzEwJywgJzIwJywgJzUwJywgJzEwMCcsICd1bmxpbWl0ZWQnLCBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVldWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnUXVldWVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAwLAogICAgICAgICAgICBUcmVlVmlldyAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVRdWV1ZUxpc3QsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdGF0ZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU3RhdGUgSGlzdG9yaWMnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnU3RhdGVJRHNIaXN0b3JpYycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU3RhdGUgVHlwZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTdGF0ZVR5cGVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVN0YXRlVHlwZUxpc3QsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdGF0ZSBUeXBlIEhpc3RvcmljJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1N0YXRlVHlwZUlEc0hpc3RvcmljJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVTdGF0ZVR5cGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUHJpb3JpdHknKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnUHJpb3JpdHlJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVByaW9yaXR5TGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgaW4gUXVldWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3JlYXRlZFF1ZXVlSURzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMCwKICAgICAgICAgICAgVHJlZVZpZXcgICAgICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlUXVldWVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBQcmlvcml0eScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDcmVhdGVkUHJpb3JpdHlJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVByaW9yaXR5TGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgU3RhdGUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3JlYXRlZFN0YXRlSURzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVTdGF0ZUxpc3QsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMb2NrJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0xvY2tJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJUxvY2tMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVGl0bGUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Zyb20nKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnTUlNRUJhc2VfRnJvbScsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVG8nKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnTUlNRUJhc2VfVG8nLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NjJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ01JTUVCYXNlX0NjJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdWJqZWN0JyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ01JTUVCYXNlX1N1YmplY3QnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RleHQnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnTUlNRUJhc2VfQm9keScsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlIFRpbWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3JlYXRlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsICAgICAgICAgICAgICMgJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldENyZWF0ZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdUaWNrZXRDcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xhc3QgY2hhbmdlZCB0aW1lcycpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdMYXN0Q2hhbmdlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsICAgICAgICAgICAgICAgICAgICAjICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdUaWNrZXRMYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ1RpY2tldExhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NoYW5nZSB0aW1lcycpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywgICAgICAgICAgICAgICMgJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldENoYW5nZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdUaWNrZXRDaGFuZ2VUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1BlbmRpbmcgdW50aWwgdGltZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdQZW5kaW5nVW50aWxUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywgICAgICAgICAgICAgICAgICAgICMgJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldFBlbmRpbmdUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnVGlja2V0UGVuZGluZ1RpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ2xvc2UgVGltZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDbG9zZVRpbWUnLAogICAgICAgICAgICBUaW1lUGVyaW9kRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLCAgICAgICAgICAgICMgJ0RhdGVJbnB1dEZvcm1hdExvbmcnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldENsb3NlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ1RpY2tldENsb3NlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdIaXN0b3JpYyBUaW1lIFJhbmdlJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0hpc3RvcmljVGltZVJhbmdlJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywgICAgICAgICAgICAgICAgICAgICAjICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdIaXN0b3JpY1RpbWVSYW5nZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdIaXN0b3JpY1RpbWVSYW5nZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXNjYWxhdGlvbicpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdFc2NhbGF0aW9uVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdExvbmcnLCAgICAgICAgIyAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdUaWNrZXRFc2NhbGF0aW9uVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ1RpY2tldEVzY2FsYXRpb25UaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0VzY2FsYXRpb24gLSBGaXJzdCBSZXNwb25zZSBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnLAogICAgICAgICAgICBUaW1lUGVyaW9kRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdUaWNrZXRFc2NhbGF0aW9uUmVzcG9uc2VUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0VzY2FsYXRpb24gLSBVcGRhdGUgVGltZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdFc2NhbGF0aW9uVXBkYXRlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdExvbmcnLCAgICAgICAgICAgICAgICAgICAgICAjICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldEVzY2FsYXRpb25VcGRhdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXNjYWxhdGlvbiAtIFNvbHV0aW9uIFRpbWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnRXNjYWxhdGlvblNvbHV0aW9uVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdExvbmcnLCAgICAgICAgICAgICAgICAgICAgICAgICMgJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ1RpY2tldEVzY2FsYXRpb25Tb2x1dGlvblRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBnZXQgc2VydmljZSBsaXN0CiAgICAgICAgbXkgJVNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgS2VlcENoaWxkcmVuID0+ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpTZXJ2aWNlOjpLZWVwQ2hpbGRyZW4nKSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2xhIGxpc3QKICAgICAgICBteSAlU0xBID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpLT5TTEFMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSBAT2JqZWN0QXR0cmlidXRlQWRkID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2VydmljZScpLAogICAgICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnU2VydmljZUlEcycsCiAgICAgICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVTZXJ2aWNlLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU0xBJyksCiAgICAgICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTTEFJRHMnLAogICAgICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU0xBLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHVuc2hpZnQgQE9iamVjdEF0dHJpYnV0ZXMsIEBPYmplY3RBdHRyaWJ1dGVBZGQ7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICkgewoKICAgICAgICAjIGdldCB0aWNrZXQgdHlwZSBsaXN0CiAgICAgICAgbXkgJVR5cGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJU9iamVjdEF0dHJpYnV0ZTEgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdUeXBlJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1R5cGVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAwLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlVHlwZSwKICAgICAgICApOwoKICAgICAgICB1bnNoaWZ0IEBPYmplY3RBdHRyaWJ1dGVzLCBcJU9iamVjdEF0dHJpYnV0ZTE7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N0YXRzOjpVc2VBZ2VudEVsZW1lbnRJblN0YXRzJykgKSB7CgogICAgICAgIG15IEBPYmplY3RBdHRyaWJ1dGVBZGQgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBZ2VudC9Pd25lcicpLAogICAgICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnT3duZXJJRHMnLAogICAgICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlVXNlckxpc3QsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIGJ5IEFnZW50L093bmVyJyksCiAgICAgICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDcmVhdGVkVXNlcklEcycsCiAgICAgICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVVc2VyTGlzdCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1Jlc3BvbnNpYmxlJyksCiAgICAgICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdSZXNwb25zaWJsZUlEcycsCiAgICAgICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVVc2VyTGlzdCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RBdHRyaWJ1dGVzLCBAT2JqZWN0QXR0cmlidXRlQWRkOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6Q3VzdG9tZXJJREFzTXVsdGlTZWxlY3QnKSApIHsKCiAgICAgICAgIyBHZXQgQ3VzdG9tZXJJRAogICAgICAgICMgKFRoaXMgd2F5IGFsc28gY2FuIGJlIHRoZSBzb2x1dGlvbiBmb3IgdGhlIEN1c3RvbWVyVXNlcklEKQogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgRElTVElOQ1QgY3VzdG9tZXJfaWQgRlJPTSB0aWNrZXQiLAogICAgICAgICk7CgogICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgIG15ICVDdXN0b21lcklEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBpZiAoICRSb3dbMF0gKSB7CiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJJRHsgJFJvd1swXSB9ID0gJFJvd1swXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJU9iamVjdEF0dHJpYnV0ZSA9ICgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0N1c3RvbWVyIElEJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0N1c3RvbWVySUQnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJUN1c3RvbWVySUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAT2JqZWN0QXR0cmlidXRlcywgXCVPYmplY3RBdHRyaWJ1dGU7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgbXkgQEN1c3RvbWVySURBdHRyaWJ1dGVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3VzdG9tZXJJRCAoY29tcGxleCBzZWFyY2gpJyksCiAgICAgICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDdXN0b21lcklEJywKICAgICAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3VzdG9tZXJJRCAoZXhhY3QgbWF0Y2gpJyksCiAgICAgICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDdXN0b21lcklEUmF3JywKICAgICAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHB1c2ggQE9iamVjdEF0dHJpYnV0ZXMsIEBDdXN0b21lcklEQXR0cmlidXRlczsKICAgIH0KCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3RhdHM6OkN1c3RvbWVyVXNlckxvZ2luc0FzTXVsdGlTZWxlY3QnKSApIHsKCiAgICAgICAgIyBHZXQgYWxsIEN1c3RvbWVyVXNlckxvZ2lucyB3aGljaCBhcmUgcmVsYXRlZCB0byBhIHRpa2V0LgogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgRElTVElOQ1QgY3VzdG9tZXJfdXNlcl9pZCBGUk9NIHRpY2tldCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJUN1c3RvbWVyVXNlcklEczsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgaWYgKCAkUm93WzBdICkgewogICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcklEc3sgJFJvd1swXSB9ID0gJFJvd1swXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJU9iamVjdEF0dHJpYnV0ZSA9ICgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Fzc2lnbmVkIHRvIEN1c3RvbWVyIFVzZXIgTG9naW4nKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3VzdG9tZXJVc2VyTG9naW5SYXcnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJUN1c3RvbWVyVXNlcklEcywKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RBdHRyaWJ1dGVzLCBcJU9iamVjdEF0dHJpYnV0ZTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSBAQ3VzdG9tZXJVc2VyQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Fzc2lnbmVkIHRvIEN1c3RvbWVyIFVzZXIgTG9naW4gKGNvbXBsZXggc2VhcmNoKScpLAogICAgICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3VzdG9tZXJVc2VyTG9naW4nLAogICAgICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Fzc2lnbmVkIHRvIEN1c3RvbWVyIFVzZXIgTG9naW4gKGV4YWN0IG1hdGNoKScpLAogICAgICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzICAgPT4gMCwKICAgICAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gICA9PiAxLAogICAgICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICAgID0+ICdDdXN0b21lclVzZXJMb2dpblJhdycsCiAgICAgICAgICAgICAgICBCbG9jayAgICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgICAgICAgICAgQ1NTQ2xhc3MgICAgICAgICAgID0+ICdDdXN0b21lckF1dG9Db21wbGV0ZVNpbXBsZScsCiAgICAgICAgICAgICAgICBIVE1MRGF0YUF0dHJpYnV0ZXMgPT4gewogICAgICAgICAgICAgICAgICAgICdjdXN0b21lci1zZWFyY2gtdHlwZScgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHB1c2ggQE9iamVjdEF0dHJpYnV0ZXMsIEBDdXN0b21lclVzZXJBdHRyaWJ1dGVzOwogICAgfQoKICAgICMgQWRkIGFsd2F5cyB0aGUgZmllbGQgZm9yIHRoZSBjdXN0b21lciB1c2VyIGxvZ2luIGFjY2Vzc2libGUgdGlja2V0cyBhcyBhdXRvIGNvbXBsZXRlIGZpZWxkLgogICAgbXkgJU9iamVjdEF0dHJpYnV0ZSA9ICgKICAgICAgICBOYW1lICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBY2Nlc3NpYmxlIHRvIEN1c3RvbWVyIFVzZXIgTG9naW4gKGV4YWN0IG1hdGNoKScpLAogICAgICAgIFVzZUFzWHZhbHVlICAgICAgICA9PiAwLAogICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgICA9PiAwLAogICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gICA9PiAxLAogICAgICAgIEVsZW1lbnQgICAgICAgICAgICA9PiAnQ3VzdG9tZXJVc2VySUQnLAogICAgICAgIEJsb2NrICAgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgQ1NTQ2xhc3MgICAgICAgICAgID0+ICdDdXN0b21lckF1dG9Db21wbGV0ZVNpbXBsZScsCiAgICAgICAgSFRNTERhdGFBdHRyaWJ1dGVzID0+IHsKICAgICAgICAgICAgJ2N1c3RvbWVyLXNlYXJjaC10eXBlJyA9PiAnQ3VzdG9tZXJVc2VyJywKICAgICAgICB9LAogICAgKTsKICAgIHB1c2ggQE9iamVjdEF0dHJpYnV0ZXMsIFwlT2JqZWN0QXR0cmlidXRlOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkFyY2hpdmVTeXN0ZW0nKSApIHsKCiAgICAgICAgbXkgJU9iamVjdEF0dHJpYnV0ZSA9ICgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0FyY2hpdmUgU2VhcmNoJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1NlYXJjaEluQXJjaGl2ZScsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1NlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIEFyY2hpdmVkVGlja2V0cyAgICA9PiBUcmFuc2xhdGFibGUoJ0FyY2hpdmVkIHRpY2tldHMnKSwKICAgICAgICAgICAgICAgIE5vdEFyY2hpdmVkVGlja2V0cyA9PiBUcmFuc2xhdGFibGUoJ1VuYXJjaGl2ZWQgdGlja2V0cycpLAogICAgICAgICAgICAgICAgQWxsVGlja2V0cyAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQWxsIHRpY2tldHMnKSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RBdHRyaWJ1dGVzLCBcJU9iamVjdEF0dHJpYnV0ZTsKICAgIH0KCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgc2tpcCBhbGwgZmllbGRzIG5vdCBkZXNpZ25lZCB0byBiZSBzdXBwb3J0ZWQgYnkgc3RhdGlzdGljcwogICAgICAgIG15ICRJc1N0YXRzQ29uZGl0aW9uID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1N0YXRzQ29uZGl0aW9uJywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzU3RhdHNDb25kaXRpb247CgogICAgICAgIG15ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRJc0FDTFJlZHVjaWJsZSkgewoKICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7ICRQb3NzaWJsZVZhbHVlcyB8fCB7fSB9OwogICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICMgc2V0IHBvc3NpYmxlIHZhbHVlcyBmaWx0ZXIgZnJvbSBBQ0xzCiAgICAgICAgICAgIG15ICRBQ0wgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRBY2woCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICdBZ2VudFN0YXRzJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEgfHwge30sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNsRGF0YSgpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIHN0YXRzIHBhcmFtZXRlcnMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXIgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U3RhdHNGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXIpICkgewoKICAgICAgICAgICAgIyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e0Jsb2NrfSApIHsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e0Jsb2NrfSA9ICdJbnB1dEZpZWxkJzsKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e1ZhbHVlc30gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntCbG9ja30gPSAnTXVsdGlTZWxlY3RGaWVsZCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZFN0YXRzUGFyYW1ldGVyLT57QmxvY2t9IGVxICdUaW1lJyApIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QgYXR0cmlidXRlcyAoZGF0ZS90aW1lIGZpZWxkcykKICAgICAgICAgICAgICAgIG15ICRUaW1lUGVyaW9kRm9ybWF0ID0gJER5bmFtaWNGaWVsZFN0YXRzUGFyYW1ldGVyLT57VGltZVBlcmlvZEZvcm1hdH0gfHwgJ0RhdGVJbnB1dEZvcm1hdExvbmcnOwoKICAgICAgICAgICAgICAgIG15ICVPYmplY3RBdHRyaWJ1dGUgPSAoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e0VsZW1lbnR9LAogICAgICAgICAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJFRpbWVQZXJpb2RGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntCbG9ja30sCiAgICAgICAgICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAkVGltZVBlcmlvZEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntFbGVtZW50fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0dyZWF0ZXJUaGFuRXF1YWxzJywKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVN0b3AgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e0VsZW1lbnR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfU21hbGxlclRoYW5FcXVhbHMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcHVzaCBAT2JqZWN0QXR0cmlidXRlcywgXCVPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntCbG9ja30gZXEgJ011bHRpU2VsZWN0RmllbGQnICkgewoKICAgICAgICAgICAgICAgICMgY3JlYXRlIG9iamVjdCBhdHRyaWJ1dGVzIChtdWx0aXBsZSB2YWx1ZXMpCiAgICAgICAgICAgICAgICBteSAlT2JqZWN0QXR0cmlidXRlID0gKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFN0YXRzUGFyYW1ldGVyLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntFbGVtZW50fSwKICAgICAgICAgICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e1ZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgSXNEeW5hbWljRmllbGQgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFNob3dBc1RyZWUgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmVlVmlld30gfHwgMCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBPYmplY3RBdHRyaWJ1dGVzLCBcJU9iamVjdEF0dHJpYnV0ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QgYXR0cmlidXRlcyAodGV4dCBmaWVsZHMpCiAgICAgICAgICAgICAgICBteSAlT2JqZWN0QXR0cmlidXRlID0gKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFN0YXRzUGFyYW1ldGVyLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU3RhdHNQYXJhbWV0ZXItPntFbGVtZW50fSwKICAgICAgICAgICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICREeW5hbWljRmllbGRTdGF0c1BhcmFtZXRlci0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBPYmplY3RBdHRyaWJ1dGVzLCBcJU9iamVjdEF0dHJpYnV0ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gQE9iamVjdEF0dHJpYnV0ZXM7Cn0KCnN1YiBHZXRTdGF0VGFibGVQcmV2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5HZXRTdGF0VGFibGUoCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZXZpZXcgPT4gMSwKICAgICk7Cn0KCnN1YiBHZXRTdGF0VGFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVUaWNrZXRBdHRyaWJ1dGVzICAgID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtYVmFsdWV9e1NlbGVjdGVkVmFsdWVzfSB9OwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15ICRQcmV2aWV3ICAgICAgICAgICAgID0gJFBhcmFte1ByZXZpZXd9OwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgYSBlbnVtZXJhdGlvbiBpcyByZXF1ZXN0ZWQKICAgIG15ICRBZGRFbnVtZXJhdGlvbiA9IDA7CiAgICBpZiAoICRUaWNrZXRBdHRyaWJ1dGVze051bWJlcn0gKSB7CiAgICAgICAgJEFkZEVudW1lcmF0aW9uID0gMTsKICAgICAgICBkZWxldGUgJFRpY2tldEF0dHJpYnV0ZXN7TnVtYmVyfTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcyBpZiBubyBzb3J0IG9yIG9yZGVyIGF0dHJpYnV0ZSBpcyBnaXZlbgogICAgbXkgJE9yZGVyUmVmID0gZmlyc3QgeyAkXy0+e0VsZW1lbnR9IGVxICdPcmRlckJ5JyB9IEB7ICRQYXJhbXtWYWx1ZVNlcmllc30gfTsKICAgIG15ICRPcmRlckJ5ICA9ICRPcmRlclJlZiA/ICRPcmRlclJlZi0+e1NlbGVjdGVkVmFsdWVzfVswXSA6ICdBZ2UnOwogICAgbXkgJFNvcnRSZWYgID0gZmlyc3QgeyAkXy0+e0VsZW1lbnR9IGVxICdTb3J0U2VxdWVuY2UnIH0gQHsgJFBhcmFte1ZhbHVlU2VyaWVzfSB9OwogICAgbXkgJFNvcnQgICAgID0gJFNvcnRSZWYgPyAkU29ydFJlZi0+e1NlbGVjdGVkVmFsdWVzfVswXSA6ICdEb3duJzsKICAgIG15ICRMaW1pdCAgICA9ICRQYXJhbXtSZXN0cmljdGlvbnN9e0xpbWl0fTsKCiAgICAjIGNoZWNrIGlmIHdlIGNhbiB1c2UgdGhlIHNvcnQgYW5kIG9yZGVyIGZ1bmN0aW9uIG9mIFRpY2tldFNlYXJjaAogICAgbXkgJE9yZGVyQnlJc1ZhbHVlT2ZUaWNrZXRTZWFyY2hTb3J0ID0gJFNlbGYtPl9PcmRlckJ5SXNWYWx1ZU9mVGlja2V0U2VhcmNoU29ydCgKICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgKTsKCiAgICAjIGVzY2FwZSBzZWFyY2ggYXR0cmlidXRlcyBmb3IgdGlja2V0IHNlYXJjaAogICAgbXkgJUF0dHJpYnV0ZXNUb0VzY2FwZSA9ICgKICAgICAgICAnQ3VzdG9tZXJJRCcgPT4gMSwKICAgICAgICAnVGl0bGUnICAgICAgPT4gMSwKICAgICk7CgogICAgIyBNYXAgdGhlIEN1c3RvbWVySUQgc2VhcmNoIHBhcmFtZXRlciB0byBDdXN0b21lcklEUmF3IHNlYXJjaCBwYXJhbWV0ZXIgZm9yIHRoZQogICAgIyAgIGV4YWN0IHNlYXJjaCBtYXRjaCwgaWYgdGhlICdTdGF0czo6Q3VzdG9tZXJJREFzTXVsdGlTZWxlY3QnIGlzIGFjdGl2ZS4KICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdGF0czo6Q3VzdG9tZXJJREFzTXVsdGlTZWxlY3QnKSApIHsKICAgICAgICAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e0N1c3RvbWVySURSYXd9ID0gJFBhcmFte1Jlc3RyaWN0aW9uc30tPntDdXN0b21lcklEfTsKICAgIH0KCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UmVzdHJpY3Rpb25zfSB9ICkgewoKICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEF0dHJpYnV0ZXNUb0VzY2FwZXskS2V5fTsKCiAgICAgICAgaWYgKCByZWYgJFBhcmFte1Jlc3RyaWN0aW9uc30tPnskS2V5fSApIHsKICAgICAgICAgICAgaWYgKCByZWYgJFBhcmFte1Jlc3RyaWN0aW9uc30tPnskS2V5fSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgJFBhcmFte1Jlc3RyaWN0aW9uc30tPnskS2V5fSA9IFsKICAgICAgICAgICAgICAgICAgICBtYXAgeyAkREJPYmplY3QtPlF1ZXJ5U3RyaW5nRXNjYXBlKCBRdWVyeVN0cmluZyA9PiAkXyApIH0KICAgICAgICAgICAgICAgICAgICAgICAgQHsgJFBhcmFte1Jlc3RyaWN0aW9uc30tPnskS2V5fSB9CiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUGFyYW17UmVzdHJpY3Rpb25zfS0+eyRLZXl9ID0gJERCT2JqZWN0LT5RdWVyeVN0cmluZ0VzY2FwZSgKICAgICAgICAgICAgICAgIFF1ZXJ5U3RyaW5nID0+ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57JEtleX0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgbXkgJUR5bmFtaWNGaWVsZFJlc3RyaWN0aW9uczsKICAgIGZvciBteSAkUGFyYW1ldGVyTmFtZSAoIHNvcnQga2V5cyAleyAkUGFyYW17UmVzdHJpY3Rpb25zfSB9ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFtZXRlck5hbWUgPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyAoIFthLXpBLVpcZF0rICkgKD86IF8gKCBbYS16QS1aXGRdKyApICk/IFx6IH14bXMKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICQxOwogICAgICAgICAgICBteSAkT3BlcmF0b3IgID0gJDI7CgogICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZAogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICMgc2tpcCBhbGwgZmllbGRzIHRoYXQgZG8gbm90IG1hdGNoIHdpdGggY3VycmVudCBmaWVsZCBuYW1lCiAgICAgICAgICAgICAgICAjIHdpdGhvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXgKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBuZSAkRmllbGROYW1lOwoKICAgICAgICAgICAgICAgICMgc2tpcCBhbGwgZmllbGRzIG5vdCBkZXNpZ25lZCB0byBiZSBzdXBwb3J0ZWQgYnkgc3RhdGlzdGljcwogICAgICAgICAgICAgICAgbXkgJElzU3RhdHNDb25kaXRpb24gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1N0YXRzQ29uZGl0aW9uJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc1N0YXRzQ29uZGl0aW9uOwoKICAgICAgICAgICAgICAgICMgZ2V0IG5ldyBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkU3RhdHNTZWFyY2hQYXJhbWV0ZXIgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U3RhdHNTZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17UmVzdHJpY3Rpb25zfS0+eyRQYXJhbWV0ZXJOYW1lfSwKICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciAgICAgICAgICAgPT4gJE9wZXJhdG9yLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBuZXcgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRSZXN0cmljdGlvbnN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkUmVzdHJpY3Rpb25zeyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ID0KICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFN0YXRzU2VhcmNoUGFyYW1ldGVyOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0ZW5kIHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFN0YXRzU2VhcmNoUGFyYW1ldGVyKSApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkUmVzdHJpY3Rpb25zeyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ID0gewogICAgICAgICAgICAgICAgICAgICAgICAleyAkRHluYW1pY0ZpZWxkUmVzdHJpY3Rpb25zeyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZFN0YXRzU2VhcmNoUGFyYW1ldGVyfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkT3JkZXJCeUlzVmFsdWVPZlRpY2tldFNlYXJjaFNvcnQpIHsKCiAgICAgICAgIyBkb24ndCBiZSBpcnJpdGF0ZWQgb2YgdGhlIG1peHR1cmUgT3JkZXJCeSA8PiBTb3J0IGFuZCBTb3J0QnkgPD4gT3JkZXJCeQogICAgICAgICMgdGhlIG1lYW5pbmcgaXMgaW4gVGlja2V0U2VhcmNoIGlzIGRpZmZlcmVudCBhcyBpbiBjb21tb24gaGFuZGxpbmcKICAgICAgICAkUGFyYW17UmVzdHJpY3Rpb25zfXtPcmRlckJ5fSA9ICRTb3J0OwogICAgICAgICRQYXJhbXtSZXN0cmljdGlvbnN9e1NvcnRCeX0gID0gJE9yZGVyQnlJc1ZhbHVlT2ZUaWNrZXRTZWFyY2hTb3J0OwogICAgICAgICRQYXJhbXtSZXN0cmljdGlvbnN9e0xpbWl0fSAgID0gISRMaW1pdCB8fCAkTGltaXQgZXEgJ3VubGltaXRlZCcgPyAxMDBfMDAwXzAwMCA6ICRMaW1pdDsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRQYXJhbXtSZXN0cmljdGlvbnN9e0xpbWl0fSA9IDEwMF8wMDBfMDAwOwogICAgfQoKICAgICMgZ2V0IHN0YXRlIG9iamVjdAogICAgbXkgJFN0YXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CgogICAgIyBPbGRlclRpY2tldHNFeGNsdWRlIGZvciBoaXN0b3JpYyBzZWFyY2hlcwogICAgIyB0YWtlcyB0aWNrZXRzIHRoYXQgd2VyZSBjbG9zZWQgYmVmb3JlIHRoZQogICAgIyBzdGFydCBvZiB0aGUgc2VhcmNoZWQgdGltZSBwZXJpb2QKICAgIG15ICVPbGRlclRpY2tldHNFeGNsdWRlOwoKICAgICMgTmV3ZXJUaWNrZXRFeGNsdWRlIGZvciBoaXN0b3JpYyBzZWFyY2hlcwogICAgIyB0YWtlcyB0aWNrZXRzIHRoYXQgd2VyZSBjcmVhdGVkIGFmdGVyIHRoZQogICAgIyBzZWFyY2hlZCB0aW1lIHBlcmlvZAogICAgbXkgJU5ld2VyVGlja2V0c0V4Y2x1ZGU7CiAgICBteSAlU3RhdGVMaXN0ID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUxpc3QoIFVzZXJJRCA9PiAxICk7CgogICAgIyBnZXQgdGltZSBvYmplY3QKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgICMgVW5peFRpbWVTdGFydCAmIEVuZDoKICAgICMgVGhlIFRpbWUgcGVyaW9kIHRoZSBoaXN0b3JpYyBzZWFyY2ggaXMgZXhlY3V0ZWQKICAgICMgaWYgbm8gdGltZSBwZXJpb2QgaGFzIGJlZW4gc2VsZWN0ZWQgd2UgdGFrZQogICAgIyBVbml4dGltZSAwIGFzIFN0YXJ0VGltZSBhbmQgU3lzdGVtVGltZSBhcyBFbmRUaW1lCiAgICBteSAkVW5peFRpbWVTdGFydCA9IDA7CiAgICBteSAkVW5peFRpbWVFbmQgICA9ICREYXRlVGltZU9iamVjdC0+VG9FcG9jaCgpOwoKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdUaWNrZXQ6OkFyY2hpdmVTeXN0ZW0nKSApIHsKICAgICAgICAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1NlYXJjaEluQXJjaGl2ZX0gfHw9ICcnOwogICAgICAgIGlmICggJFBhcmFte1Jlc3RyaWN0aW9uc30tPntTZWFyY2hJbkFyY2hpdmV9IGVxICdBbGxUaWNrZXRzJyApIHsKICAgICAgICAgICAgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntBcmNoaXZlRmxhZ3N9ID0gWyAneScsICduJyBdOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtSZXN0cmljdGlvbnN9LT57U2VhcmNoSW5BcmNoaXZlfSBlcSAnQXJjaGl2ZWRUaWNrZXRzJyApIHsKICAgICAgICAgICAgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntBcmNoaXZlRmxhZ3N9ID0gWyd5J107CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e0FyY2hpdmVGbGFnc30gPSBbJ24nXTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBpZiAoICEkUHJldmlldyAmJiAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e0hpc3RvcmljVGltZVJhbmdlVGltZU5ld2VyRGF0ZX0gKSB7CgogICAgICAgICMgRmluZCB0aWNrZXRzIHRoYXQgd2VyZSBjbG9zZWQgYmVmb3JlIHRoZSBzdGFydCBvZiBvdXIKICAgICAgICAjIEhpc3RvcmljVGltZVJhbmdlVGltZU5ld2VyRGF0ZSwgdGhlc2UgaGF2ZSB0byBiZSBleGNsdWRlZC4KICAgICAgICAjIEluIG9yZGVyIHRvIHJlZHVjZSBpdCBxdWlja2x5IHdlIHJlZm9ybWF0IHRoZSByZXN1bHQgYXJyYXkKICAgICAgICAjIHRvIGEgaGFzaC4KICAgICAgICBteSBAT2xkVG9FeGNsdWRlID0gJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFBlcm1pc3Npb24gICAgICAgICAgICAgICA9PiAncm8nLAogICAgICAgICAgICBUaWNrZXRDbG9zZVRpbWVPbGRlckRhdGUgPT4gJFBhcmFte1Jlc3RyaWN0aW9uc30tPntIaXN0b3JpY1RpbWVSYW5nZVRpbWVOZXdlckRhdGV9LAogICAgICAgICAgICBBcmNoaXZlRmxhZ3MgICAgICAgICAgICAgPT4gJFBhcmFte1Jlc3RyaWN0aW9uc30tPntBcmNoaXZlRmxhZ3N9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgPT4gMTAwXzAwMF8wMDAsCiAgICAgICAgKTsKICAgICAgICAlT2xkZXJUaWNrZXRzRXhjbHVkZSA9IG1hcCB7ICRfID0+IDEgfSBAT2xkVG9FeGNsdWRlOwoKICAgICAgICAkRGF0ZVRpbWVPYmplY3QtPlNldCggU3RyaW5nID0+ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57SGlzdG9yaWNUaW1lUmFuZ2VUaW1lTmV3ZXJEYXRlfSApOwogICAgICAgICRVbml4VGltZVN0YXJ0ID0gJERhdGVUaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CiAgICB9CiAgICBpZiAoICEkUHJldmlldyAmJiAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e0hpc3RvcmljVGltZVJhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgRmluZCB0aWNrZXRzIHRoYXQgd2VyZSBjbG9zZWQgYWZ0ZXIgdGhlIGVuZCBvZiBvdXIKICAgICAgICAjIEhpc3RvcmljVGltZVJhbmdlVGltZU9sZGVyRGF0ZSwgdGhlc2UgaGF2ZSB0byBiZSBleGNsdWRlZAogICAgICAgICMgaW4gb3JkZXIgdG8gcmVkdWNlIGl0IHF1aWNrbHkgd2UgcmVmb3JtYXQgdGhlIHJlc3VsdCBhcnJheQogICAgICAgICMgdG8gYSBoYXNoLgogICAgICAgIG15IEBOZXdUb0V4Y2x1ZGUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBQZXJtaXNzaW9uICAgICAgICAgICAgICAgID0+ICdybycsCiAgICAgICAgICAgIFRpY2tldENyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJFBhcmFte1Jlc3RyaWN0aW9uc30tPntIaXN0b3JpY1RpbWVSYW5nZVRpbWVPbGRlckRhdGV9LAogICAgICAgICAgICBBcmNoaXZlRmxhZ3MgICAgICAgICAgICAgID0+ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57QXJjaGl2ZUZsYWdzfSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICA9PiAxMDBfMDAwXzAwMCwKICAgICAgICApOwogICAgICAgICVOZXdlclRpY2tldHNFeGNsdWRlID0gbWFwIHsgJF8gPT4gMSB9IEBOZXdUb0V4Y2x1ZGU7CgogICAgICAgICREYXRlVGltZU9iamVjdC0+U2V0KCBTdHJpbmcgPT4gJFBhcmFte1Jlc3RyaWN0aW9uc30tPntIaXN0b3JpY1RpbWVSYW5nZVRpbWVPbGRlckRhdGV9ICk7CiAgICAgICAgJFVuaXhUaW1lRW5kID0gJERhdGVUaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIGludm9sdmVkIHRpY2tldHMKICAgIG15IEBUaWNrZXRJRHM7CgogICAgaWYgKCRQcmV2aWV3KSB7CiAgICAgICAgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKICAgICAgICAgICAgTGltaXQgICAgICA9PiAxMCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKICAgICAgICAgICAgJXsgJFBhcmFte1Jlc3RyaWN0aW9uc30gfSwKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFJlc3RyaWN0aW9ucywKICAgICAgICApOwogICAgfQoKICAgICMgaWYgd2UgaGFkIFRpY2tldHMgd2UgbmVlZCB0byByZWR1Y2UgdGhlIGZvdW5kIHRpY2tldHMKICAgICMgdG8gdGhvc2Ugbm90IGJlaW5nIGluICVPbGRlclRpY2tldHNFeGNsdWRlCiAgICAjIGFzIHdlbGwgYXMgbm90IGluICVOZXdlclRpY2tldHNFeGNsdWRlCiAgICBpZiAoICVPbGRlclRpY2tldHNFeGNsdWRlIHx8ICVOZXdlclRpY2tldHNFeGNsdWRlICkgewogICAgICAgIEBUaWNrZXRJRHMgPSBncmVwIHsKICAgICAgICAgICAgIWRlZmluZWQgJE9sZGVyVGlja2V0c0V4Y2x1ZGV7JF99CiAgICAgICAgICAgICAgICAmJiAhZGVmaW5lZCAkTmV3ZXJUaWNrZXRzRXhjbHVkZXskX30KICAgICAgICB9IEBUaWNrZXRJRHM7CiAgICB9CgogICAgIyBpZiB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBoaXN0b3J5IHN0YXRlcwogICAgaWYgKAogICAgICAgICEkUHJldmlldwogICAgICAgICYmICgKICAgICAgICAgICAgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntIaXN0b3JpY1RpbWVSYW5nZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgIHx8ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57SGlzdG9yaWNUaW1lUmFuZ2VUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBkZWZpbmVkICRQYXJhbXtSZXN0cmljdGlvbnN9LT57U3RhdGVUeXBlSURzSGlzdG9yaWN9CiAgICAgICAgICAgICAgICAmJiByZWYgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntTdGF0ZVR5cGVJRHNIaXN0b3JpY30gZXEgJ0FSUkFZJwogICAgICAgICAgICApCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntTdGF0ZUlEc0hpc3RvcmljfQogICAgICAgICAgICAgICAgJiYgcmVmICRQYXJhbXtSZXN0cmljdGlvbnN9LT57U3RhdGVJRHNIaXN0b3JpY30gZXEgJ0FSUkFZJwogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgICYmIEBUaWNrZXRJRHMKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICRTUUxUaWNrZXRJREluQ29uZGl0aW9uID0gJERCT2JqZWN0LT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ3RpY2tldF9pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiBcQFRpY2tldElEcywKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBzdGFydCBidWlsZGluZyB0aGUgU1FMIHF1ZXJ5IGZyb20gYmFjayB0byBmcm9udAogICAgICAgICMgd2hhdCdzIGZpeGVkIGlzIHRoZSBoaXN0b3J5X3R5cGVfaWQgd2UgaGF2ZSB0byBzZWFyY2ggZm9yCiAgICAgICAgIyAxIGlzIHRpY2tldGNyZWF0ZQogICAgICAgICMgMjcgaXMgc3RhdGUgdXBkYXRlCiAgICAgICAgbXkgJFNRTCA9ICRTUUxUaWNrZXRJREluQ29uZGl0aW9uIC4gJyBBTkQgaGlzdG9yeV90eXBlX2lkIElOICgxLDI3KSBPUkRFUiBCWSB0aWNrZXRfaWQgQVNDJzsKCiAgICAgICAgbXkgJVN0YXRlSURzOwoKICAgICAgICAjIGlmIHdlIGhhdmUgY2VydGFpbiBzdGF0ZSB0eXBlcyB3ZSBoYXZlIHRvIHNlYXJjaCBmb3IKICAgICAgICAjIGJ1aWxkIGEgaGFzaCBob2xkaW5nIGFsbCB0aWNrZXQgU3RhdGVJRHMgPT4gU3RhdGVOYW1lcwogICAgICAgICMgd2UgYXJlIHNlYXJjaGluZyBmb3IKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntTdGF0ZVR5cGVJRHNIaXN0b3JpY30KICAgICAgICAgICAgJiYgcmVmICRQYXJhbXtSZXN0cmljdGlvbnN9LT57U3RhdGVUeXBlSURzSGlzdG9yaWN9IGVxICdBUlJBWScKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgZ2V0dGluZyB0aGUgU3RhdGVMaXN0VHlwZToKICAgICAgICAgICAgIyBteSAlTGlzdFR5cGUgPSAoCiAgICAgICAgICAgICMgICAgIDEgPT4gIm5ldyIsCiAgICAgICAgICAgICMgICAgIDIgPT4gIm9wZW4iLAogICAgICAgICAgICAjICAgICAzID0+ICJjbG9zZWQiLAogICAgICAgICAgICAjICAgICA0ID0+ICJwZW5kaW5nIHJlbWluZGVyIiwKICAgICAgICAgICAgIyAgICAgNSA9PiAicGVuZGluZyBhdXRvIiwKICAgICAgICAgICAgIyAgICAgNiA9PiAicmVtb3ZlZCIsCiAgICAgICAgICAgICMgICAgIDcgPT4gIm1lcmdlZCIsCiAgICAgICAgICAgICMgKTsKICAgICAgICAgICAgbXkgJUxpc3RUeXBlID0gJFN0YXRlT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFRha2VzIHRoZSBBcnJheSBvZiBTdGF0ZVR5cGVJRCdzCiAgICAgICAgICAgICMgZXhhbXBsZTogKDEsIDMsIDUsIDYsIDcpCiAgICAgICAgICAgICMgbWFwcyB0aGUgSUQncyB0byB0aGUgU3RhdGVUeXBlTmFtZXMKICAgICAgICAgICAgIyByZXN1bHRzIGluIGEgSGFzaCBjb250YWluaW5nIHRoZSBTdGF0ZVR5cGVOYW1lcwogICAgICAgICAgICAjIGV4YW1wbGU6CiAgICAgICAgICAgICMgJVN0YXRlVHlwZUhhc2ggPSB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAnY2xvc2VkJyA9PiAxLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQnID0+IDEsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAncGVuZGluZyBhdXRvJyA9PiAxLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgJ21lcmdlZCcgPT4gMSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICduZXcnID0+IDEKICAgICAgICAgICAgIyAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIG15ICVTdGF0ZVR5cGVIYXNoID0gbWFwIHsgJExpc3RUeXBleyRffSA9PiAxIH0KICAgICAgICAgICAgICAgIEB7ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57U3RhdGVUeXBlSURzSGlzdG9yaWN9IH07CgogICAgICAgICAgICAjIEFuZCBub3cgZ2V0IHRoZSBTdGF0ZXNCeVR5cGUKICAgICAgICAgICAgIyBSZXN1bHQgaXMgYSBIYXNoIHtJRCA9PiBTdGF0ZU5hbWUsfQogICAgICAgICAgICBteSBAU3RhdGVUeXBlcyA9IGtleXMgJVN0YXRlVHlwZUhhc2g7CiAgICAgICAgICAgICVTdGF0ZUlEcyA9ICRTdGF0ZU9iamVjdC0+U3RhdGVHZXRTdGF0ZXNCeVR5cGUoCiAgICAgICAgICAgICAgICBTdGF0ZVR5cGUgPT4gWyBrZXlzICVTdGF0ZVR5cGVIYXNoIF0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICAgPT4gJ0hBU0gnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB3ZSBoYWQgY2VydGFpbiBzdGF0ZXMgc2VsZWN0ZWQsIGFkZCB0aGVtIHRvIHRoZQogICAgICAgICMgU3RhdGVJRHMgSGFzaAogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N0YXRlSURzSGlzdG9yaWN9CiAgICAgICAgICAgICYmIHJlZiAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N0YXRlSURzSGlzdG9yaWN9IGVxICdBUlJBWScKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgVmFsaWRhdGUgdGhlIFN0YXRlSURzSGlzdG9yaWMgbGlzdCBieQogICAgICAgICAgICAjIGNoZWNraW5nIGlmIHRoZXkgYXJlIGluIHRoZSAlU3RhdGVMaXN0IGhhc2gKICAgICAgICAgICAgIyB0aGVuIHRha2luZyBhbGwgVmFsaWRTdGF0ZSBJRCdzIGFuZCByZXR1cm4gYSBoYXNoCiAgICAgICAgICAgICMgaG9sZGluZyB7IFN0YXRlSUQgPT4gTmFtZSB9CiAgICAgICAgICAgIG15ICVUbXAgPSBtYXAgeyAkXyA9PiAkU3RhdGVMaXN0eyRffSB9CiAgICAgICAgICAgICAgICBncmVwIHsgJFN0YXRlTGlzdHskX30gfSBAeyAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N0YXRlSURzSGlzdG9yaWN9IH07CiAgICAgICAgICAgICVTdGF0ZUlEcyA9ICggJVN0YXRlSURzLCAlVG1wICk7CiAgICAgICAgfQoKICAgICAgICAkU1FMID0gJ1NFTEVDVCB0aWNrZXRfaWQsIHN0YXRlX2lkLCBjcmVhdGVfdGltZSBGUk9NIHRpY2tldF9oaXN0b3J5IFdIRVJFICcgLiAkU1FMOwoKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoIFNRTCA9PiAkU1FMICk7CgogICAgICAgICMgU3RydWN0dXJlOgogICAgICAgICMgU3RvcmVzIHRoZSBsYXN0IFRpY2tldFN0YXRlOgogICAgICAgICMgVGlja2V0SUQgPT4gW1N0YXRlSUQsIENyZWF0ZVRpbWVdCiAgICAgICAgbXkgJUZvdW5kVGlja2V0czsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIGlmICggJFJvd1swXSApIHsKICAgICAgICAgICAgICAgIG15ICRUaWNrZXRJRCA9ICRSb3dbMF07CiAgICAgICAgICAgICAgICBteSAkU3RhdGVJRCAgPSAkUm93WzFdOwogICAgICAgICAgICAgICAgJERhdGVUaW1lT2JqZWN0LT5TZXQoIFN0cmluZyA9PiAkUm93WzJdICk7CiAgICAgICAgICAgICAgICBteSAkUm93VGltZVVuaXggPSAkRGF0ZVRpbWVPYmplY3QtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICAgICAjIEVudHJpZXMgYmVmb3JlIFN0YXJ0VGltZQogICAgICAgICAgICAgICAgaWYgKCAkUm93VGltZVVuaXggPCAkVW5peFRpbWVTdGFydCApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgdGlja2V0IHdhcyBhbHJlYWR5IHN0b3JlZAogICAgICAgICAgICAgICAgICAgIGlmICggJEZvdW5kVGlja2V0c3skVGlja2V0SUR9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBpbiB0aGUgc2VhcmNoZWQgc3RhdGVzCiAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIHRoZSByZWNvcmQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU3RhdGVJRHN7JFN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZvdW5kVGlja2V0c3skVGlja2V0SUR9ID0gWyAkU3RhdGVJRCwgJFJvd1RpbWVVbml4IF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgaXQgaXMgbm90IGluIHRoZSBzZWFyY2hlZCBzdGF0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBhIHN0YXRlIGNoYW5nZSBoYXBwZW5lZCAtPgogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgcmVjb3JkCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRGb3VuZFRpY2tldHN7JFRpY2tldElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgdGlja2V0IHdhcyBOT1QgYWxyZWFkeSBzdG9yZWQKICAgICAgICAgICAgICAgICAgICAjIGFuZCB0aGUgc3RhdGUgaXMgaW4gdGhlIHNlYXJjaGVkIHN0YXRlcwogICAgICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIHJlY29yZAogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFN0YXRlSURzeyRTdGF0ZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZvdW5kVGlja2V0c3skVGlja2V0SUR9ID0gWyAkU3RhdGVJRCwgJFJvd1RpbWVVbml4IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRW50cmllcyBiZXR3ZWVuIFN0YXJ0IGFuZCBFbmRUaW1lCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFJvd1RpbWVVbml4ID49ICRVbml4VGltZVN0YXJ0CiAgICAgICAgICAgICAgICAgICAgJiYgJFJvd1RpbWVVbml4IDw9ICRVbml4VGltZUVuZAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyBpZiB3ZSBmb3VuZCBhIHJlY29yZAogICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgc2VhcmNoZWQgc3RhdGVzCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgaXQgdG8gdGhlIEZvdW5kVGlja2V0cwogICAgICAgICAgICAgICAgICAgIGlmICggJFN0YXRlSURzeyRTdGF0ZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZvdW5kVGlja2V0c3skVGlja2V0SUR9ID0gWyAkU3RhdGVJRCwgJFJvd1RpbWVVbml4IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIHdlIGhhZCB0aWNrZXRzIHRoYXQgbWF0Y2hlZCBvdXIgcXVlcnkKICAgICAgICAjIHVzZSB0aGVtIHRvIGdldCB0aGUgZGV0YWlscyBmb3IgdGhlIHN0YXRpc3RpYwogICAgICAgIGlmICglRm91bmRUaWNrZXRzKSB7CiAgICAgICAgICAgIEBUaWNrZXRJRHMgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlRm91bmRUaWNrZXRzOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBubyBUaWNrZXRzIHdlcmUgcmVtYWluaW5nLAogICAgICAgICMgYWZ0ZXIgcmVkdWNpbmcgdGhlIHRvdGFsIGFtb3VudCBieSB0aGUgb25lcwogICAgICAgICMgdGhhdCBoYWQgbm9uZSBvZiB0aGUgc2VhcmNoZWQgc3RhdGVzLAogICAgICAgICMgZW1wdHkgQFRpY2tldElEcwogICAgICAgIGVsc2UgewogICAgICAgICAgICBAVGlja2V0SURzID0gKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgZmluZCBvdXQgaWYgdGhlIGV4dGVuZGVkIHZlcnNpb24gb2YgVGlja2V0R2V0IGlzIG5lZWRlZCwKICAgIG15ICRFeHRlbmRlZCA9ICRTZWxmLT5fRXh0ZW5kZWRBdHRyaWJ1dGVzQ2hlY2soCiAgICAgICAgVGlja2V0QXR0cmlidXRlcyA9PiBcJVRpY2tldEF0dHJpYnV0ZXMsCiAgICApOwoKICAgICMgZmluZCBvdXQgaWYgZHluYW1pYyBmaWVsZHMgYXJlIHJlcXVpcmVkCiAgICBteSAkTmVlZER5bmFtaWNGaWVsZHMgPSAwOwogICAgRFlOQU1JQ0ZJRUxEU05FRURFRDoKICAgIGZvciBteSAkUGFyYW1ldGVyTmFtZSAoIHNvcnQga2V5cyAlVGlja2V0QXR0cmlidXRlcyApIHsKICAgICAgICBpZiAoICRQYXJhbWV0ZXJOYW1lID1+IG17XEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICAgICAkTmVlZER5bmFtaWNGaWVsZHMgPSAxOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRFNORUVERUQ7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTdGF0c09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpOwoKICAgICMgZ2VuZXJhdGUgdGhlIHRpY2tldCBsaXN0CiAgICBteSBAU3RhdEFycmF5OwogICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgIG15IEBSZXN1bHRSb3c7CiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgRXh0ZW5kZWQgICAgICA9PiAkRXh0ZW5kZWQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gJE5lZWREeW5hbWljRmllbGRzLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5fTW9kaWZ5VGlja2V0UXVldWVUaW1lcyggVGlja2V0ID0+IFwlVGlja2V0ICk7CgogICAgICAgICMgRm9ybWF0IFRpY2tldCAnQWdlJyBwYXJhbSBpbnRvIGh1bWFuIHJlYWRhYmxlIGZvcm1hdC4KICAgICAgICAkVGlja2V0e0FnZX0gPSAkU3RhdHNPYmplY3QtPl9IdW1hblJlYWRhYmxlQWdlR2V0KAogICAgICAgICAgICBBZ2UgPT4gJFRpY2tldHtBZ2V9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBhY2NvdW50ZWQgdGltZSBpZiBuZWVkZWQKICAgICAgICBpZiAoICRUaWNrZXRBdHRyaWJ1dGVze0FjY291bnRlZFRpbWV9ICkgewogICAgICAgICAgICAkVGlja2V0e0FjY291bnRlZFRpbWV9ID0gJFRpY2tldE9iamVjdC0+VGlja2V0QWNjb3VudGVkVGltZUdldCggVGlja2V0SUQgPT4gJFRpY2tldElEICk7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgbnVtYmVyIG9mIGFydGljbGVzIGlmIG5lZWRlZAogICAgICAgIGlmICggJFRpY2tldEF0dHJpYnV0ZXN7TnVtYmVyT2ZBcnRpY2xlc30gKSB7CiAgICAgICAgICAgICRUaWNrZXR7TnVtYmVyT2ZBcnRpY2xlc30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkFydGljbGVMaXN0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJFRpY2tldHtDbG9zZWR9ICAgICAgICAgICAgICAgICAgICAgIHx8PSAnJzsKICAgICAgICAkVGlja2V0e1NvbHV0aW9uVGltZX0gICAgICAgICAgICAgICAgfHw9ICcnOwogICAgICAgICRUaWNrZXR7U29sdXRpb25EaWZmSW5NaW59ICAgICAgICAgICB8fD0gMDsKICAgICAgICAkVGlja2V0e1NvbHV0aW9uSW5NaW59ICAgICAgICAgICAgICAgfHw9IDA7CiAgICAgICAgJFRpY2tldHtTb2x1dGlvblRpbWVFc2NhbGF0aW9ufSAgICAgIHx8PSAwOwogICAgICAgICRUaWNrZXR7Rmlyc3RSZXNwb25zZX0gICAgICAgICAgICAgICB8fD0gJyc7CiAgICAgICAgJFRpY2tldHtGaXJzdFJlc3BvbnNlRGlmZkluTWlufSAgICAgIHx8PSAwOwogICAgICAgICRUaWNrZXR7Rmlyc3RSZXNwb25zZUluTWlufSAgICAgICAgICB8fD0gMDsKICAgICAgICAkVGlja2V0e0ZpcnN0UmVzcG9uc2VUaW1lRXNjYWxhdGlvbn0gfHw9IDA7CiAgICAgICAgJFRpY2tldHtGaXJzdExvY2t9ICAgICAgICAgICAgICAgICAgIHx8PSAnJzsKICAgICAgICAkVGlja2V0e1VwZGF0ZVRpbWVEZXN0aW5hdGlvbkRhdGV9ICAgfHw9ICcnOwogICAgICAgICRUaWNrZXR7VXBkYXRlVGltZURlc3RpbmF0aW9uVGltZX0gICB8fD0gMDsKICAgICAgICAkVGlja2V0e1VwZGF0ZVRpbWVXb3JraW5nVGltZX0gICAgICAgfHw9IDA7CiAgICAgICAgJFRpY2tldHtVcGRhdGVUaW1lRXNjYWxhdGlvbn0gICAgICAgIHx8PSAwOwogICAgICAgICRUaWNrZXR7U29sdXRpb25UaW1lRGVzdGluYXRpb25EYXRlfSB8fD0gJyc7CiAgICAgICAgJFRpY2tldHtFc2NhbGF0aW9uRGVzdGluYXRpb25Jbn0gICAgIHx8PSAnJzsKICAgICAgICAkVGlja2V0e0VzY2FsYXRpb25EZXN0aW5hdGlvbkRhdGV9ICAgfHw9ICcnOwogICAgICAgICRUaWNrZXR7RXNjYWxhdGlvblRpbWVXb3JraW5nVGltZX0gICB8fD0gMDsKICAgICAgICAkVGlja2V0e051bWJlck9mQXJ0aWNsZXN9ICAgICAgICAgICAgfHw9IDA7CgogICAgICAgIGZvciBteSAkUGFyYW1ldGVyTmFtZSAoIHNvcnQga2V5cyAlVGlja2V0ICkgewogICAgICAgICAgICBpZiAoICRQYXJhbWV0ZXJOYW1lID1+IG17XEEgRHluYW1pY0ZpZWxkXyAoIFthLXpBLVpcZF0rICkgXHp9eG1zICkgewoKICAgICAgICAgICAgICAgICMgbG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICAjIHNraXAgYWxsIGZpZWxkcyB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggY3VycmVudCBmaWVsZCBuYW1lICgkMSkKICAgICAgICAgICAgICAgICAgICAjIHdpdGhvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXgKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICMgcHJldmVudCB1bml0aWxpemF0aW9uIGVycm9ycwogICAgICAgICAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFRpY2tldHskUGFyYW1ldGVyTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaWNrZXR7JFBhcmFtZXRlck5hbWV9ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IGZyb20gc3RvcmVkIGtleXMgdG8gdmFsdWVzIGZvciBjZXJ0YWluIER5bmFtaWMgRmllbGRzIGxpa2UKICAgICAgICAgICAgICAgICAgICAjIERyb3Bkb3duLCBDaGVja2JveCBhbmQgTXVsdGlzZWxlY3QKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVMb29rdXAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgICAgICAgPT4gJFRpY2tldHskUGFyYW1ldGVyTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUgaW4gcGxhaW4gdGV4dAogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWVMb29rdXAsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57VmFsdWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgcmF3IHZhbHVlIGZyb20gdGlja2V0IHRvIGEgcGxhaW4gdGV4dCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAkVGlja2V0eyRQYXJhbWV0ZXJOYW1lfSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICAgICAgICAgICAgICAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpMYXlvdXRPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID1+IC9Qcm9jZXNzTWFuYWdlbWVudFByb2Nlc3NJRHxQcm9jZXNzTWFuYWdlbWVudEFjdGl2aXR5SUQvICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRpY2tldHskUGFyYW1ldGVyTmFtZX0gPSAkRGlzcGxheVZhbHVlLT57VmFsdWV9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggQHskU29ydGVkQXR0cmlidXRlc1JlZn0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkVGlja2V0QXR0cmlidXRlc3skQXR0cmlidXRlfTsKCiAgICAgICAgICAgICMgY29udmVydCBmcm9tIE9UT0JPIHRpbWUgem9uZSB0byBnaXZlbiB0aW1lIHpvbmUKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFte1RpbWVab25lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte1RpbWVab25lfSBuZSBLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUtPk9UT0JPVGltZVpvbmVHZXQoKQogICAgICAgICAgICAgICAgJiYgJFRpY2tldHskQXR0cmlidXRlfQogICAgICAgICAgICAgICAgJiYgJFRpY2tldHskQXR0cmlidXRlfSA9fiAvXEEoXGR7NH0pLShcZHsyfSktKFxkezJ9KVxzKFxkezJ9KTooXGR7Mn0pOihcZHsyfSlcei8KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRUaWNrZXR7JEF0dHJpYnV0ZX0gPSAkU3RhdHNPYmplY3QtPl9Gcm9tT1RPQk9UaW1lWm9uZSgKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgICA9PiAkVGlja2V0eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgIFRpbWVab25lID0+ICRQYXJhbXtUaW1lWm9uZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFRpY2tldHskQXR0cmlidXRlfSAuPSAiICgkUGFyYW17VGltZVpvbmV9KSI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnT3duZXInIHx8ICRBdHRyaWJ1dGUgZXEgJ1Jlc3BvbnNpYmxlJyApIHsKICAgICAgICAgICAgICAgICRUaWNrZXR7JEF0dHJpYnV0ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgICAgICBVc2VyICAgICAgICAgID0+ICRUaWNrZXR7JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgTm9PdXRPZk9mZmljZSA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAUmVzdWx0Um93LCAkVGlja2V0eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KICAgICAgICBwdXNoIEBTdGF0QXJyYXksIFxAUmVzdWx0Um93OwogICAgfQoKICAgICMgdXNlIGEgaW5kaXZpZHVhbCBzb3J0IGlmIHRoZSBzb3J0IG1lY2hhbmlzbSBvZiB0aGUgVGlja2V0U2VhcmNoIGlzIG5vdCB1c2FibGUKICAgIGlmICggISRPcmRlckJ5SXNWYWx1ZU9mVGlja2V0U2VhcmNoU29ydCApIHsKICAgICAgICBAU3RhdEFycmF5ID0gJFNlbGYtPl9JbmRpdmlkdWFsUmVzdWx0T3JkZXIoCiAgICAgICAgICAgIFN0YXRBcnJheSAgICAgICAgICA9PiBcQFN0YXRBcnJheSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICBTb3J0ICAgICAgICAgICAgICAgPT4gJFNvcnQsCiAgICAgICAgICAgIFNlbGVjdGVkQXR0cmlidXRlcyA9PiBcJVRpY2tldEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICA9PiAkTGltaXQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBhIGVudW1lcmF0aW9uIGluIGZyb250IG9mIGVhY2ggcm93CiAgICBpZiAoJEFkZEVudW1lcmF0aW9uKSB7CiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIGZvciBteSAkUm93IChAU3RhdEFycmF5KSB7CiAgICAgICAgICAgIHVuc2hpZnQgQHskUm93fSwgKyskQ291bnRlcjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBTdGF0QXJyYXk7Cn0KCnN1YiBHZXRIZWFkZXJMaW5lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlU2VsZWN0ZWRBdHRyaWJ1dGVzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtYVmFsdWV9e1NlbGVjdGVkVmFsdWVzfSB9OwoKICAgIG15ICRUaWNrZXRBdHRyaWJ1dGVzICAgID0gJFNlbGYtPl9UaWNrZXRBdHRyaWJ1dGVzKCk7CiAgICBteSAkU29ydGVkQXR0cmlidXRlc1JlZiA9ICRTZWxmLT5fU29ydGVkQXR0cmlidXRlcygpOwogICAgbXkgQEhlYWRlckxpbmU7CgogICAgIyBnZXQgbGFuZ3VhZ2Ugb2JqZWN0CiAgICBteSAkTGFuZ3VhZ2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBAeyRTb3J0ZWRBdHRyaWJ1dGVzUmVmfSApIHsKICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJFNlbGVjdGVkQXR0cmlidXRlc3skQXR0cmlidXRlfTsKICAgICAgICBwdXNoIEBIZWFkZXJMaW5lLCAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSggJFRpY2tldEF0dHJpYnV0ZXMtPnskQXR0cmlidXRlfSApOwogICAgfQogICAgcmV0dXJuIFxASGVhZGVyTGluZTsKfQoKc3ViIEV4cG9ydFdyYXBwZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFVzZXJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgIG15ICRRdWV1ZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJFN0YXRlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CiAgICBteSAkUHJpb3JpdHlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJpb3JpdHknKTsKCiAgICAjIHdyYXAgaWRzIHRvIHVzZWQgc3BlbGxpbmcKICAgIGZvciBteSAkVXNlIChxdyhVc2VBc1ZhbHVlU2VyaWVzIFVzZUFzUmVzdHJpY3Rpb24gVXNlQXNYdmFsdWUpKSB7CiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBAeyAkUGFyYW17JFVzZX0gfSApIHsKICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICEkRWxlbWVudCB8fCAhJEVsZW1lbnQtPntTZWxlY3RlZFZhbHVlc307CiAgICAgICAgICAgIG15ICRFbGVtZW50TmFtZSA9ICRFbGVtZW50LT57RWxlbWVudH07CiAgICAgICAgICAgIG15ICRWYWx1ZXMgICAgICA9ICRFbGVtZW50LT57U2VsZWN0ZWRWYWx1ZXN9OwoKICAgICAgICAgICAgaWYgKCAkRWxlbWVudE5hbWUgZXEgJ1F1ZXVlSURzJyB8fCAkRWxlbWVudE5hbWUgZXEgJ0NyZWF0ZWRRdWV1ZUlEcycgKSB7CiAgICAgICAgICAgICAgICBJRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBAeyRWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISRJRDsKICAgICAgICAgICAgICAgICAgICAkSUQtPntDb250ZW50fSA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoIFF1ZXVlSUQgPT4gJElELT57Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRFbGVtZW50TmFtZSBlcSAnU3RhdGVJRHMnIHx8ICRFbGVtZW50TmFtZSBlcSAnQ3JlYXRlZFN0YXRlSURzJyApIHsKICAgICAgICAgICAgICAgIG15ICVTdGF0ZUxpc3QgPSAkU3RhdGVPYmplY3QtPlN0YXRlTGlzdCggVXNlcklEID0+IDEgKTsKICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwogICAgICAgICAgICAgICAgICAgICRJRC0+e0NvbnRlbnR9ID0gJFN0YXRlTGlzdHsgJElELT57Q29udGVudH0gfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRFbGVtZW50TmFtZSBlcSAnUHJpb3JpdHlJRHMnIHx8ICRFbGVtZW50TmFtZSBlcSAnQ3JlYXRlZFByaW9yaXR5SURzJyApIHsKICAgICAgICAgICAgICAgIG15ICVQcmlvcml0eUxpc3QgPSAkUHJpb3JpdHlPYmplY3QtPlByaW9yaXR5TGlzdCggVXNlcklEID0+IDEgKTsKICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwogICAgICAgICAgICAgICAgICAgICRJRC0+e0NvbnRlbnR9ID0gJFByaW9yaXR5TGlzdHsgJElELT57Q29udGVudH0gfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAkRWxlbWVudE5hbWUgZXEgJ093bmVySURzJwogICAgICAgICAgICAgICAgfHwgJEVsZW1lbnROYW1lIGVxICdDcmVhdGVkVXNlcklEcycKICAgICAgICAgICAgICAgIHx8ICRFbGVtZW50TmFtZSBlcSAnUmVzcG9uc2libGVJRHMnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwogICAgICAgICAgICAgICAgICAgICRJRC0+e0NvbnRlbnR9ID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJJRCA9PiAkSUQtPntDb250ZW50fSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIExvY2tzIGFuZCBzdGF0dXN0eXBlIGRvbid0IGhhdmUgdG8gd3JhcCBiZWNhdXNlIHRoZXkgYXJlIG5ldmVyIGRpZmZlcmVudAogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVXNlck9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwogICAgbXkgJFF1ZXVlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkU3RhdGVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwoKICAgICMgd3JhcCB1c2VkIHNwZWxsaW5nIHRvIGlkcwogICAgZm9yIG15ICRVc2UgKHF3KFVzZUFzVmFsdWVTZXJpZXMgVXNlQXNSZXN0cmljdGlvbiBVc2VBc1h2YWx1ZSkpIHsKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRQYXJhbXskVXNlfSB9ICkgewogICAgICAgICAgICBuZXh0IEVMRU1FTlQgaWYgISRFbGVtZW50IHx8ICEkRWxlbWVudC0+e1NlbGVjdGVkVmFsdWVzfTsKICAgICAgICAgICAgbXkgJEVsZW1lbnROYW1lID0gJEVsZW1lbnQtPntFbGVtZW50fTsKICAgICAgICAgICAgbXkgJFZhbHVlcyAgICAgID0gJEVsZW1lbnQtPntTZWxlY3RlZFZhbHVlc307CgogICAgICAgICAgICBpZiAoICRFbGVtZW50TmFtZSBlcSAnUXVldWVJRHMnIHx8ICRFbGVtZW50TmFtZSBlcSAnQ3JlYXRlZFF1ZXVlSURzJyApIHsKICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwogICAgICAgICAgICAgICAgICAgIGlmICggJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCggUXVldWUgPT4gJElELT57Q29udGVudH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJElELT57Q29udGVudH0gPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkSUQtPntDb250ZW50fSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkltcG9ydDogQ2FuJyBmaW5kIHRoZSBxdWV1ZSAkSUQtPntDb250ZW50fSEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRJRCA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRFbGVtZW50TmFtZSBlcSAnU3RhdGVJRHMnIHx8ICRFbGVtZW50TmFtZSBlcSAnQ3JlYXRlZFN0YXRlSURzJyApIHsKICAgICAgICAgICAgICAgIElEOgogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJElEOwoKICAgICAgICAgICAgICAgICAgICBteSAlU3RhdGUgPSAkU3RhdGVPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICA9PiAkSUQtPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ2FjaGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggJFN0YXRle0lEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJElELT57Q29udGVudH0gPSAkU3RhdGV7SUR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkltcG9ydDogQ2FuJyBmaW5kIHN0YXRlICRJRC0+e0NvbnRlbnR9ISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJElEID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEVsZW1lbnROYW1lIGVxICdQcmlvcml0eUlEcycgfHwgJEVsZW1lbnROYW1lIGVxICdDcmVhdGVkUHJpb3JpdHlJRHMnICkgewogICAgICAgICAgICAgICAgbXkgJVByaW9yaXR5TGlzdCA9ICRQcmlvcml0eU9iamVjdC0+UHJpb3JpdHlMaXN0KCBVc2VySUQgPT4gMSApOwogICAgICAgICAgICAgICAgbXkgJVByaW9yaXR5SURzOwogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJVByaW9yaXR5TGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAkUHJpb3JpdHlJRHN7ICRQcmlvcml0eUxpc3R7JEtleX0gfSA9ICRLZXk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBJRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBAeyRWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISRJRDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUHJpb3JpdHlJRHN7ICRJRC0+e0NvbnRlbnR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRJRC0+e0NvbnRlbnR9ID0gJFByaW9yaXR5SURzeyAkSUQtPntDb250ZW50fSB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkltcG9ydDogQ2FuJyBmaW5kIHByaW9yaXR5ICRJRC0+e0NvbnRlbnR9ISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJElEID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRFbGVtZW50TmFtZSBlcSAnT3duZXJJRHMnCiAgICAgICAgICAgICAgICB8fCAkRWxlbWVudE5hbWUgZXEgJ0NyZWF0ZWRVc2VySURzJwogICAgICAgICAgICAgICAgfHwgJEVsZW1lbnROYW1lIGVxICdSZXNwb25zaWJsZUlEcycKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggQHskVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElEIGlmICEkSUQ7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkSUQtPntDb250ZW50fSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSUQtPntDb250ZW50fSA9ICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRJRC0+e0NvbnRlbnR9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW1wb3J0OiBDYW4nIGZpbmQgdXNlciAkSUQtPntDb250ZW50fSEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRJRCA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBMb2NrcyBhbmQgc3RhdHVzdHlwZSBkb24ndCBoYXZlIHRvIHdyYXAgYmVjYXVzZSB0aGV5IGFyZSBuZXZlciBkaWZmZXJlbnQKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gXCVQYXJhbTsKfQoKc3ViIF9UaWNrZXRBdHRyaWJ1dGVzIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJVRpY2tldEF0dHJpYnV0ZXMgPSAoCiAgICAgICAgTnVtYmVyICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTnVtYmVyJyksICAgICAgICAgICAgICAgIyBvbmx5IGEgY291bnRlciBmb3IgYSBiZXR0ZXIgcmVhZGFiaWxpdHkKICAgICAgICBUaWNrZXROdW1iZXIgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6Okhvb2snKSwKCiAgICAgICAgI1RpY2tldElEICAgICAgID0+ICdUaWNrZXRJRCcsCiAgICAgICAgQWdlICAgPT4gJ0FnZScsCiAgICAgICAgVGl0bGUgPT4gJ1RpdGxlJywKICAgICAgICBRdWV1ZSA9PiAnUXVldWUnLAoKICAgICAgICAjUXVldWVJRCAgICAgICAgPT4gJ1F1ZXVlSUQnLAogICAgICAgIFN0YXRlID0+ICdTdGF0ZScsCgogICAgICAgICNTdGF0ZUlEICAgICAgICA9PiAnU3RhdGVJRCcsCiAgICAgICAgUHJpb3JpdHkgPT4gJ1ByaW9yaXR5JywKCiAgICAgICAgI1ByaW9yaXR5SUQgICAgID0+ICdQcmlvcml0eUlEJywKICAgICAgICBDdXN0b21lcklEID0+ICdDdXN0b21lciBJRCcsCiAgICAgICAgQ2hhbmdlZCAgICA9PiBUcmFuc2xhdGFibGUoJ0xhc3QgQ2hhbmdlZCcpLAogICAgICAgIENyZWF0ZWQgICAgPT4gJ0NyZWF0ZWQnLAoKICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAnQ3VzdG9tZXIgVXNlcicsCiAgICAgICAgTG9jayAgICAgICAgICAgPT4gJ0xvY2snLAoKICAgICAgICAjTG9ja0lEICAgICAgICAgPT4gJ0xvY2tJRCcsCiAgICAgICAgVW5sb2NrVGltZW91dCAgICAgICA9PiAnVW5sb2NrVGltZW91dCcsCiAgICAgICAgQWNjb3VudGVkVGltZSAgICAgICA9PiAnQWNjb3VudGVkIHRpbWUnLCAgICAgICAgIyB0aGUgc2FtZSB3b3JkaW5nIGlzIGluIEFnZW50VGlja2V0UHJpbnQudHQKICAgICAgICBSZWFsVGlsbFRpbWVOb3RVc2VkID0+ICdSZWFsVGlsbFRpbWVOb3RVc2VkJywKICAgICAgICBOdW1iZXJPZkFydGljbGVzICAgID0+ICdOdW1iZXIgb2YgQXJ0aWNsZXMnLAoKICAgICAgICAjR3JvdXBJRCAgICAgICAgPT4gJ0dyb3VwSUQnLAogICAgICAgIFN0YXRlVHlwZSA9PiAnU3RhdGVUeXBlJywKICAgICAgICBVbnRpbFRpbWUgPT4gJ1VudGlsVGltZScsCiAgICAgICAgQ2xvc2VkICAgID0+ICdDbG9zZSBUaW1lJywKICAgICAgICBGaXJzdExvY2sgPT4gJ0ZpcnN0IExvY2snLAoKICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lID0+ICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lJywKICAgICAgICBFc2NhbGF0aW9uVXBkYXRlVGltZSAgID0+ICdFc2NhbGF0aW9uVXBkYXRlVGltZScsCiAgICAgICAgRXNjYWxhdGlvblNvbHV0aW9uVGltZSA9PiAnRXNjYWxhdGlvblNvbHV0aW9uVGltZScsCgogICAgICAgIEVzY2FsYXRpb25EZXN0aW5hdGlvbkluID0+ICdFc2NhbGF0aW9uRGVzdGluYXRpb25JbicsCgogICAgICAgICMgRXNjYWxhdGlvbkRlc3RpbmF0aW9uVGltZSA9PiAnRXNjYWxhdGlvbkRlc3RpbmF0aW9uVGltZScsCiAgICAgICAgRXNjYWxhdGlvbkRlc3RpbmF0aW9uRGF0ZSA9PiAnRXNjYWxhdGlvbkRlc3RpbmF0aW9uRGF0ZScsCiAgICAgICAgRXNjYWxhdGlvblRpbWVXb3JraW5nVGltZSA9PiAnRXNjYWxhdGlvblRpbWVXb3JraW5nVGltZScsCiAgICAgICAgRXNjYWxhdGlvblRpbWUgICAgICAgICAgICA9PiAnRXNjYWxhdGlvblRpbWUnLAoKICAgICAgICBGaXJzdFJlc3BvbnNlICAgICAgICAgICAgICAgICAgICA9PiAnRmlyc3RSZXNwb25zZScsCiAgICAgICAgRmlyc3RSZXNwb25zZUluTWluICAgICAgICAgICAgICAgPT4gJ0ZpcnN0UmVzcG9uc2VJbk1pbicsCiAgICAgICAgRmlyc3RSZXNwb25zZURpZmZJbk1pbiAgICAgICAgICAgPT4gJ0ZpcnN0UmVzcG9uc2VEaWZmSW5NaW4nLAogICAgICAgIEZpcnN0UmVzcG9uc2VUaW1lV29ya2luZ1RpbWUgICAgID0+ICdGaXJzdFJlc3BvbnNlVGltZVdvcmtpbmdUaW1lJywKICAgICAgICBGaXJzdFJlc3BvbnNlVGltZUVzY2FsYXRpb24gICAgICA9PiAnRmlyc3RSZXNwb25zZVRpbWVFc2NhbGF0aW9uJywKICAgICAgICBGaXJzdFJlc3BvbnNlVGltZU5vdGlmaWNhdGlvbiAgICA9PiAnRmlyc3RSZXNwb25zZVRpbWVOb3RpZmljYXRpb24nLAogICAgICAgIEZpcnN0UmVzcG9uc2VUaW1lRGVzdGluYXRpb25UaW1lID0+ICdGaXJzdFJlc3BvbnNlVGltZURlc3RpbmF0aW9uVGltZScsCiAgICAgICAgRmlyc3RSZXNwb25zZVRpbWVEZXN0aW5hdGlvbkRhdGUgPT4gJ0ZpcnN0UmVzcG9uc2VUaW1lRGVzdGluYXRpb25EYXRlJywKICAgICAgICBGaXJzdFJlc3BvbnNlVGltZSAgICAgICAgICAgICAgICA9PiAnRmlyc3RSZXNwb25zZVRpbWUnLAoKICAgICAgICBVcGRhdGVUaW1lRXNjYWxhdGlvbiAgICAgID0+ICdVcGRhdGVUaW1lRXNjYWxhdGlvbicsCiAgICAgICAgVXBkYXRlVGltZU5vdGlmaWNhdGlvbiAgICA9PiAnVXBkYXRlVGltZU5vdGlmaWNhdGlvbicsCiAgICAgICAgVXBkYXRlVGltZURlc3RpbmF0aW9uVGltZSA9PiAnVXBkYXRlVGltZURlc3RpbmF0aW9uVGltZScsCiAgICAgICAgVXBkYXRlVGltZURlc3RpbmF0aW9uRGF0ZSA9PiAnVXBkYXRlVGltZURlc3RpbmF0aW9uRGF0ZScsCiAgICAgICAgVXBkYXRlVGltZVdvcmtpbmdUaW1lICAgICA9PiAnVXBkYXRlVGltZVdvcmtpbmdUaW1lJywKICAgICAgICBVcGRhdGVUaW1lICAgICAgICAgICAgICAgID0+ICdVcGRhdGVUaW1lJywKCiAgICAgICAgU29sdXRpb25UaW1lICAgICAgICAgICAgICAgID0+ICdTb2x1dGlvblRpbWUnLAogICAgICAgIFNvbHV0aW9uSW5NaW4gICAgICAgICAgICAgICA9PiAnU29sdXRpb25Jbk1pbicsCiAgICAgICAgU29sdXRpb25EaWZmSW5NaW4gICAgICAgICAgID0+ICdTb2x1dGlvbkRpZmZJbk1pbicsCiAgICAgICAgU29sdXRpb25UaW1lV29ya2luZ1RpbWUgICAgID0+ICdTb2x1dGlvblRpbWVXb3JraW5nVGltZScsCiAgICAgICAgU29sdXRpb25UaW1lRXNjYWxhdGlvbiAgICAgID0+ICdTb2x1dGlvblRpbWVFc2NhbGF0aW9uJywKICAgICAgICBTb2x1dGlvblRpbWVOb3RpZmljYXRpb24gICAgPT4gJ1NvbHV0aW9uVGltZU5vdGlmaWNhdGlvbicsCiAgICAgICAgU29sdXRpb25UaW1lRGVzdGluYXRpb25UaW1lID0+ICdTb2x1dGlvblRpbWVEZXN0aW5hdGlvblRpbWUnLAogICAgICAgIFNvbHV0aW9uVGltZURlc3RpbmF0aW9uRGF0ZSA9PiAnU29sdXRpb25UaW1lRGVzdGluYXRpb25EYXRlJywKICAgICAgICBTb2x1dGlvblRpbWVXb3JraW5nVGltZSAgICAgPT4gJ1NvbHV0aW9uVGltZVdvcmtpbmdUaW1lJywKICAgICk7CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6U2VydmljZScpICkgewogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVze1NlcnZpY2V9ID0gJ1NlcnZpY2UnOwoKICAgICAgICAjJFRpY2tldEF0dHJpYnV0ZXN7U2VydmljZUlEfSA9ICdTZXJ2aWNlSUQnLAogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVze1NMQX0gICA9ICdTTEEnOwogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVze1NMQUlEfSA9ICdTTEFJRCc7CiAgICB9CgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6VHlwZScpICkgewogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVze1R5cGV9ID0gJ1R5cGUnOwoKICAgICAgICAjJFRpY2tldEF0dHJpYnV0ZXN7VHlwZUlEfSA9ICdUeXBlSUQnOwogICAgfQoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6VXNlQWdlbnRFbGVtZW50SW5TdGF0cycpICkgewogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVze093bmVyfSA9ICdBZ2VudC9Pd25lcic7CgogICAgICAgICMkVGlja2V0QXR0cmlidXRlc3tPd25lcklEfSAgICAgICAgPSAnT3duZXJJRCc7CiAgICAgICAgIyA/ICRUaWNrZXRBdHRyaWJ1dGVze0NyZWF0ZWRVc2VySURzfSAgPSAnQ3JlYXRlZCBieSBBZ2VudC9Pd25lcic7CiAgICAgICAgJFRpY2tldEF0dHJpYnV0ZXN7UmVzcG9uc2libGV9ID0gJ1Jlc3BvbnNpYmxlJzsKCiAgICAgICAgIyRUaWNrZXRBdHRyaWJ1dGVze1Jlc3BvbnNpYmxlSUR9ICA9ICdSZXNwb25zaWJsZUlEJzsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAkVGlja2V0QXR0cmlidXRlc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgfQoKICAgIGZvciBteSAkUXVldWVJRCAoIHNvcnQga2V5cyAleyAkU2VsZi0+e1F1ZXVlTGlzdH0gfSApIHsKICAgICAgICAkVGlja2V0QXR0cmlidXRlc3sgJ1F1ZXVlXycgLiAkUXVldWVJRCAuICdfVGltZScgfSAgICAgICAgICA9ICdRdWV1ZSAnIC4gJFNlbGYtPntRdWV1ZUxpc3R9LT57JFF1ZXVlSUR9LT57TmFtZX0gLiAnIFRpbWUnOwogICAgICAgICRUaWNrZXRBdHRyaWJ1dGVzeyAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19Xb3JraW5nVGltZScgfSAgID0gJ1F1ZXVlICcgLiAkU2VsZi0+e1F1ZXVlTGlzdH0tPnskUXVldWVJRH0tPntOYW1lfSAuICcgV29ya2luZyBUaW1lJzsKICAgICAgICAkVGlja2V0QXR0cmlidXRlc3sgJ1F1ZXVlXycgLiAkUXVldWVJRCAuICdfRWZmZWN0aXZlVGltZScgfSA9ICdRdWV1ZSAnIC4gJFNlbGYtPntRdWV1ZUxpc3R9LT57JFF1ZXVlSUR9LT57TmFtZX0gLiAnIEVmZmVjdGl2ZSBUaW1lJzsKICAgIH0KCiAgICByZXR1cm4gXCVUaWNrZXRBdHRyaWJ1dGVzOwp9CgpzdWIgX1NvcnRlZEF0dHJpYnV0ZXMgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSBAU29ydGVkQXR0cmlidXRlcyA9IHF3KAogICAgICAgIE51bWJlcgogICAgICAgIFRpY2tldE51bWJlcgogICAgICAgIEFnZQogICAgICAgIFRpdGxlCiAgICAgICAgQ3JlYXRlZAogICAgICAgIENoYW5nZWQKICAgICAgICBDbG9zZWQKICAgICAgICBRdWV1ZQogICAgICAgIFN0YXRlCiAgICAgICAgUHJpb3JpdHkKICAgICAgICBDdXN0b21lclVzZXJJRAogICAgICAgIEN1c3RvbWVySUQKICAgICAgICBTZXJ2aWNlCiAgICAgICAgU0xBCiAgICAgICAgVHlwZQogICAgICAgIE93bmVyCiAgICAgICAgUmVzcG9uc2libGUKICAgICAgICBBY2NvdW50ZWRUaW1lCiAgICAgICAgRXNjYWxhdGlvbkRlc3RpbmF0aW9uSW4KICAgICAgICBFc2NhbGF0aW9uRGVzdGluYXRpb25UaW1lCiAgICAgICAgRXNjYWxhdGlvbkRlc3RpbmF0aW9uRGF0ZQogICAgICAgIEVzY2FsYXRpb25UaW1lV29ya2luZ1RpbWUKICAgICAgICBFc2NhbGF0aW9uVGltZQoKICAgICAgICBGaXJzdFJlc3BvbnNlCiAgICAgICAgRmlyc3RSZXNwb25zZUluTWluCiAgICAgICAgRmlyc3RSZXNwb25zZURpZmZJbk1pbgogICAgICAgIEZpcnN0UmVzcG9uc2VUaW1lV29ya2luZ1RpbWUKICAgICAgICBGaXJzdFJlc3BvbnNlVGltZUVzY2FsYXRpb24KICAgICAgICBGaXJzdFJlc3BvbnNlVGltZU5vdGlmaWNhdGlvbgogICAgICAgIEZpcnN0UmVzcG9uc2VUaW1lRGVzdGluYXRpb25UaW1lCiAgICAgICAgRmlyc3RSZXNwb25zZVRpbWVEZXN0aW5hdGlvbkRhdGUKICAgICAgICBGaXJzdFJlc3BvbnNlVGltZQoKICAgICAgICBVcGRhdGVUaW1lRXNjYWxhdGlvbgogICAgICAgIFVwZGF0ZVRpbWVOb3RpZmljYXRpb24KICAgICAgICBVcGRhdGVUaW1lRGVzdGluYXRpb25UaW1lCiAgICAgICAgVXBkYXRlVGltZURlc3RpbmF0aW9uRGF0ZQogICAgICAgIFVwZGF0ZVRpbWVXb3JraW5nVGltZQogICAgICAgIFVwZGF0ZVRpbWUKCiAgICAgICAgU29sdXRpb25UaW1lCiAgICAgICAgU29sdXRpb25Jbk1pbgogICAgICAgIFNvbHV0aW9uRGlmZkluTWluCiAgICAgICAgU29sdXRpb25UaW1lV29ya2luZ1RpbWUKICAgICAgICBTb2x1dGlvblRpbWVFc2NhbGF0aW9uCiAgICAgICAgU29sdXRpb25UaW1lTm90aWZpY2F0aW9uCiAgICAgICAgU29sdXRpb25UaW1lRGVzdGluYXRpb25UaW1lCiAgICAgICAgU29sdXRpb25UaW1lRGVzdGluYXRpb25EYXRlCiAgICAgICAgU29sdXRpb25UaW1lV29ya2luZ1RpbWUKCiAgICAgICAgRmlyc3RMb2NrCiAgICAgICAgTG9jawogICAgICAgIFN0YXRlVHlwZQogICAgICAgIFVudGlsVGltZQogICAgICAgIFVubG9ja1RpbWVvdXQKICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lCiAgICAgICAgRXNjYWxhdGlvblNvbHV0aW9uVGltZQogICAgICAgIEVzY2FsYXRpb25VcGRhdGVUaW1lCiAgICAgICAgUmVhbFRpbGxUaW1lTm90VXNlZAogICAgICAgIE51bWJlck9mQXJ0aWNsZXMKICAgICk7CgogICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBEeW5hbWljIEZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUKICAgICAgICBwdXNoIEBTb3J0ZWRBdHRyaWJ1dGVzLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICB9CgogICAgZm9yIG15ICRRdWV1ZUlEICggc29ydCBrZXlzICV7ICRTZWxmLT57UXVldWVMaXN0fSB9ICkgewogICAgICAgIHB1c2ggQFNvcnRlZEF0dHJpYnV0ZXMsICdRdWV1ZV8nIC4gJFF1ZXVlSUQgLiAnX1RpbWUnOwogICAgICAgIHB1c2ggQFNvcnRlZEF0dHJpYnV0ZXMsICdRdWV1ZV8nIC4gJFF1ZXVlSUQgLiAnX1dvcmtpbmdUaW1lJzsKICAgICAgICBwdXNoIEBTb3J0ZWRBdHRyaWJ1dGVzLCAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19FZmZlY3RpdmVUaW1lJzsKICAgIH0KCiAgICByZXR1cm4gXEBTb3J0ZWRBdHRyaWJ1dGVzOwp9CgpzdWIgX0V4dGVuZGVkQXR0cmlidXRlc0NoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQEV4dGVuZGVkQXR0cmlidXRlcyA9IHF3KAogICAgICAgIEZpcnN0UmVzcG9uc2UKICAgICAgICBGaXJzdFJlc3BvbnNlSW5NaW4KICAgICAgICBGaXJzdFJlc3BvbnNlRGlmZkluTWluCiAgICAgICAgRmlyc3RSZXNwb25zZVRpbWVXb3JraW5nVGltZQogICAgICAgIENsb3NlZAogICAgICAgIFNvbHV0aW9uVGltZQogICAgICAgIFNvbHV0aW9uSW5NaW4KICAgICAgICBTb2x1dGlvbkRpZmZJbk1pbgogICAgICAgIFNvbHV0aW9uVGltZVdvcmtpbmdUaW1lCiAgICAgICAgRmlyc3RMb2NrCiAgICApOwoKICAgIEFUVFJJQlVURToKICAgIGZvciBteSAkQXR0cmlidXRlIChARXh0ZW5kZWRBdHRyaWJ1dGVzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1RpY2tldEF0dHJpYnV0ZXN9eyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9PcmRlckJ5SXNWYWx1ZU9mVGlja2V0U2VhcmNoU29ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTb3J0T3B0aW9ucyA9ICgKICAgICAgICBBZ2UgICAgICAgICAgICAgICAgICAgID0+ICdBZ2UnLAogICAgICAgIENyZWF0ZWQgICAgICAgICAgICAgICAgPT4gJ0FnZScsCiAgICAgICAgQ3VzdG9tZXJJRCAgICAgICAgICAgICA9PiAnQ3VzdG9tZXJJRCcsCiAgICAgICAgRXNjYWxhdGlvblJlc3BvbnNlVGltZSA9PiAnRXNjYWxhdGlvblJlc3BvbnNlVGltZScsCiAgICAgICAgRXNjYWxhdGlvblNvbHV0aW9uVGltZSA9PiAnRXNjYWxhdGlvblNvbHV0aW9uVGltZScsCiAgICAgICAgRXNjYWxhdGlvblRpbWUgICAgICAgICA9PiAnRXNjYWxhdGlvblRpbWUnLAogICAgICAgIEVzY2FsYXRpb25VcGRhdGVUaW1lICAgPT4gJ0VzY2FsYXRpb25VcGRhdGVUaW1lJywKICAgICAgICBMb2NrICAgICAgICAgICAgICAgICAgID0+ICdMb2NrJywKICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICdPd25lcicsCiAgICAgICAgUHJpb3JpdHkgICAgICAgICAgICAgICA9PiAnUHJpb3JpdHknLAogICAgICAgIFF1ZXVlICAgICAgICAgICAgICAgICAgPT4gJ1F1ZXVlJywKICAgICAgICBSZXNwb25zaWJsZSAgICAgICAgICAgID0+ICdSZXNwb25zaWJsZScsCiAgICAgICAgU0xBICAgICAgICAgICAgICAgICAgICA9PiAnU0xBJywKICAgICAgICBTZXJ2aWNlICAgICAgICAgICAgICAgID0+ICdTZXJ2aWNlJywKICAgICAgICBTdGF0ZSAgICAgICAgICAgICAgICAgID0+ICdTdGF0ZScsCiAgICAgICAgVGlja2V0TnVtYmVyICAgICAgICAgICA9PiAnVGlja2V0JywKICAgICAgICBUaWNrZXRFc2NhbGF0aW9uICAgICAgID0+ICdUaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgID0+ICdUaXRsZScsCiAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAnVHlwZScsCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgRHluYW1pYyBGaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICk7CgogICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgaWYgaXMgc29ydGFibGUKICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgJFNvcnRPcHRpb25zeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTb3J0T3B0aW9uc3sgJFBhcmFte09yZGVyQnl9IH0gaWYgJFNvcnRPcHRpb25zeyAkUGFyYW17T3JkZXJCeX0gfTsKICAgIHJldHVybjsKfQoKc3ViIF9JbmRpdmlkdWFsUmVzdWx0T3JkZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15IEBVbnNvcnRlZCA9IEB7ICRQYXJhbXtTdGF0QXJyYXl9IH07CiAgICBteSBAU29ydGVkOwoKICAgICMgZmluZCBvdXQgdGhlIHBvc2l0aW9uIG9mIHRoZSB2YWx1ZXMgd2hpY2ggc2hvdWxkIGJlCiAgICAjIHVzZWQgZm9yIHRoZSBvcmRlcgogICAgbXkgJENvdW50ZXIgICAgICAgICAgPSAwOwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXMgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXN9ICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkUGFyYW17U2VsZWN0ZWRBdHRyaWJ1dGVzfXskQXR0cmlidXRlfTsKICAgICAgICBsYXN0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICRQYXJhbXtPcmRlckJ5fTsKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgb3JkZXIgYWZ0ZXIgYSBpbmRpdmlkdWFsIGF0dHJpYnV0ZQogICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ0FjY291bnRlZFRpbWUnICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1NvbHV0aW9uVGltZScgKSB7CiAgICAgICAgQFNvcnRlZCA9IHNvcnQgeyAkYS0+WyRDb3VudGVyXSBjbXAgJGItPlskQ291bnRlcl0gfSBAVW5zb3J0ZWQ7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnU29sdXRpb25EaWZmSW5NaW4nICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1NvbHV0aW9uSW5NaW4nICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1NvbHV0aW9uVGltZVdvcmtpbmdUaW1lJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdGaXJzdFJlc3BvbnNlJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIGNtcCAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdGaXJzdFJlc3BvbnNlRGlmZkluTWluJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdGaXJzdFJlc3BvbnNlSW5NaW4nICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ0ZpcnN0UmVzcG9uc2VUaW1lV29ya2luZ1RpbWUnICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ0ZpcnN0TG9jaycgKSB7CiAgICAgICAgQFNvcnRlZCA9IHNvcnQgeyAkYS0+WyRDb3VudGVyXSBjbXAgJGItPlskQ291bnRlcl0gfSBAVW5zb3J0ZWQ7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtPcmRlckJ5fSBlcSAnU3RhdGVUeXBlJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIGNtcCAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdVbnRpbFRpbWUnICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VubG9ja1RpbWVvdXQnICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gPD0+ICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ0VzY2FsYXRpb25VcGRhdGVUaW1lJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdFc2NhbGF0aW9uU29sdXRpb25UaW1lJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdSZWFsVGlsbFRpbWVOb3RVc2VkJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdFc2NhbGF0aW9uVGltZVdvcmtpbmdUaW1lJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte09yZGVyQnl9IGVxICdOdW1iZXJPZkFydGljbGVzJyApIHsKICAgICAgICBAU29ydGVkID0gc29ydCB7ICRhLT5bJENvdW50ZXJdIDw9PiAkYi0+WyRDb3VudGVyXSB9IEBVbnNvcnRlZDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBTb3J0ZWQgPSBzb3J0IHsgJGEtPlskQ291bnRlcl0gY21wICRiLT5bJENvdW50ZXJdIH0gQFVuc29ydGVkOwogICAgfQoKICAgICMgbWFrZSBhIHJldmVyc2Ugc29ydCBpZiBuZWVkZWQKICAgIGlmICggJFBhcmFte1NvcnR9IGVxICdEb3duJyApIHsKICAgICAgICBAU29ydGVkID0gcmV2ZXJzZSBAU29ydGVkOwogICAgfQoKICAgICMgdGFrZSBjYXJlIGFib3V0IHRoZSBsaW1pdAogICAgaWYgKCAkUGFyYW17TGltaXR9ICYmICRQYXJhbXtMaW1pdH0gbmUgJ3VubGltaXRlZCcgKSB7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBAU29ydGVkID0gZ3JlcCB7ICsrJENvdW50IDw9ICRQYXJhbXtMaW1pdH0gfSBAU29ydGVkOwogICAgfQoKICAgIHJldHVybiBAU29ydGVkOwp9CgpzdWIgX01vZGlmeVRpY2tldFF1ZXVlVGltZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFRpY2tldCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRUaWNrZXQgICA9ICRQYXJhbXtUaWNrZXR9OwogICAgbXkgJFRpY2tldElEID0gJFRpY2tldC0+e1RpY2tldElEfTsKCiAgICBteSAlRWZmZWN0aXZlVGltZTsKICAgIGZvciBteSAkUXVldWVJRCAoIHNvcnQga2V5cyAleyAkU2VsZi0+e1F1ZXVlTGlzdH0gfSApIHsKICAgICAgICAkVGlja2V0LT57ICdRdWV1ZV8nIC4gJFF1ZXVlSUQgLiAnX1RpbWUnIH0gICAgICAgICAgPSAwOwogICAgICAgICRUaWNrZXQtPnsgJ1F1ZXVlXycgLiAkUXVldWVJRCAuICdfV29ya2luZ1RpbWUnIH0gICA9IDA7CiAgICAgICAgJFRpY2tldC0+eyAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19FZmZlY3RpdmVUaW1lJyB9ID0gJyc7CiAgICAgICAgJEVmZmVjdGl2ZVRpbWV7JFF1ZXVlSUR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0ge307CiAgICB9CgogICAgbXkgQEhpc3RvcnlMaW5lcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+SGlzdG9yeUdldCgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgbXkgQENsb3NlZFN0YXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpLT5TdGF0ZUdldFN0YXRlc0J5VHlwZSgKICAgICAgICBTdGF0ZVR5cGUgPT4gWyAnY2xvc2VkJywgJ21lcmdlZCcsICdyZW1vdmVkJyBdLAogICAgICAgIFJlc3VsdCAgICA9PiAnSUQnLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCBcQEhpc3RvcnlMaW5lcyApOwogICAgcmV0dXJuIDEgaWYgQEhpc3RvcnlMaW5lcyA8IDE7CgogICAgbXkgQEluZGV4TGlzdCA9ICgnQ0FMQ1VMQVRFX0xBU1QnKTsKICAgIGlmICggQEhpc3RvcnlMaW5lcyA+IDEgKSB7CiAgICAgICAgcHVzaCBASW5kZXhMaXN0LCAoIDEgLi4gJCNIaXN0b3J5TGluZXMgKTsKICAgIH0KCiAgICBJTkRFWDoKICAgIGZvciBteSAkSW5kZXggKEBJbmRleExpc3QpIHsKCiAgICAgICAgbXkgJFByZXZpb3VzSGlzdG9yeTsKICAgICAgICBteSAkQ3VycmVudEhpc3Rvcnk7CiAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRJbmRleCkgJiYgJEluZGV4IGVxICdDQUxDVUxBVEVfTEFTVCcgKSB7CiAgICAgICAgICAgICRQcmV2aW91c0hpc3RvcnkgPSAkSGlzdG9yeUxpbmVzWy0xXTsKICAgICAgICAgICAgJEN1cnJlbnRIaXN0b3J5ICA9IHsKICAgICAgICAgICAgICAgICV7JFByZXZpb3VzSGlzdG9yeX0sCiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub1N0cmluZygpLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFByZXZpb3VzSGlzdG9yeSA9ICRIaXN0b3J5TGluZXNbICRJbmRleCAtIDEgXTsKICAgICAgICAgICAgJEN1cnJlbnRIaXN0b3J5ICA9ICRIaXN0b3J5TGluZXNbJEluZGV4XTsKICAgICAgICB9CgogICAgICAgICMgdG8gY291bnQgdGhlIHRpbWUgZm9yIHRoZSBxdWV1ZQogICAgICAgICMgdGhlIGhpc3RvcnkgZW50cnkgaGFzIHRvIGJlIGluIGEgb3BlbiBzdGF0ZQogICAgICAgIG15ICRJc0Nsb3NlZCA9IGdyZXAgeyAkUHJldmlvdXNIaXN0b3J5LT57U3RhdGVJRH0gPT0gJF8gfSBAQ2xvc2VkU3RhdGVzOwoKICAgICAgICBteSAkU3RhcnRUaW1lID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkUHJldmlvdXNIaXN0b3J5LT57Q3JlYXRlVGltZX0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN0b3BUaW1lID0gJFNlbGYtPl9UaW1lU3RhbXAyRXBvY2goCiAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkQ3VycmVudEhpc3RvcnktPntDcmVhdGVUaW1lfSwKICAgICAgICApOwoKICAgICAgICBteSAkUXVldWVJRCA9ICRQcmV2aW91c0hpc3RvcnktPntRdWV1ZUlEfTsKCiAgICAgICAgIyBjYWxjdWxhdGUgdGltZSB1bml0cyBmb3IgcXVldWUKICAgICAgICBpZiAoICRQcmV2aW91c0hpc3RvcnktPntIaXN0b3J5VHlwZX0gZXEgJ1RpbWVBY2NvdW50aW5nJyAmJiAkUHJldmlvdXNIaXN0b3J5LT57TmFtZX0gPX4gbXsgXEEgXCVcJSAoXGQrKSBcJVwlIFxkKyBceiB9eG1zICkgewogICAgICAgICAgICBteSAkQWNjb3VudGVkVGltZSA9ICQxOwogICAgICAgICAgICBteSAkVXNlcklEICAgICAgICA9ICRQcmV2aW91c0hpc3RvcnktPntDcmVhdGVCeX07CgogICAgICAgICAgICAkRWZmZWN0aXZlVGltZXskUXVldWVJRH0tPnskVXNlcklEfSB8fD0gMDsKICAgICAgICAgICAgJEVmZmVjdGl2ZVRpbWV7JFF1ZXVlSUR9LT57JFVzZXJJRH0gKz0gJEFjY291bnRlZFRpbWU7CiAgICAgICAgfQoKICAgICAgICBuZXh0IElOREVYIGlmICRJc0Nsb3NlZDsKCiAgICAgICAgIyBnZXQgcXVldWUgdGltZQogICAgICAgICRUaWNrZXQtPnsgJ1F1ZXVlXycgLiAkUXVldWVJRCAuICdfVGltZScgfSArPSAkU3RvcFRpbWUgLSAkU3RhcnRUaW1lOwoKICAgICAgICAjIGdldCBxdWV1ZSB3b3JraW5nIHRpbWUKICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRTZWxmLT57UXVldWVMaXN0fS0+eyRRdWV1ZUlEfS0+e0NhbGVuZGFyfSApICkgewoKICAgICAgICAgICAgJFRpY2tldC0+eyAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19Xb3JraW5nVGltZScgfSArPSAkU2VsZi0+X1dvcmtpbmdUaW1lKAogICAgICAgICAgICAgICAgU3RhcnRUaW1lID0+ICRTdGFydFRpbWUsCiAgICAgICAgICAgICAgICBTdG9wVGltZSAgPT4gJFN0b3BUaW1lLAogICAgICAgICAgICAgICAgQ2FsZW5kYXIgID0+ICRTZWxmLT57UXVldWVMaXN0fS0+eyRRdWV1ZUlEfS0+e0NhbGVuZGFyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRUaWNrZXQtPnsgJ1F1ZXVlXycgLiAkUXVldWVJRCAuICdfV29ya2luZ1RpbWUnIH0gKz0gJFN0b3BUaW1lIC0gJFN0YXJ0VGltZTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYSBsb2NhbCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIFFVRVVFSUQ6CiAgICBmb3IgbXkgJFF1ZXVlSUQgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntRdWV1ZUxpc3R9IH0gKSB7CiAgICAgICAgbXkgQE93bmVyRWZmZWN0aXZlVGltZTsKCiAgICAgICAgVVNFUklEOgogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJEVmZmVjdGl2ZVRpbWV7JFF1ZXVlSUR9IH0gKSB7CiAgICAgICAgICAgIG15ICVVc2VyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBVU0VSSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCBcJVVzZXIgKTsKICAgICAgICAgICAgbmV4dCBVU0VSSUQgaWYgISRFZmZlY3RpdmVUaW1leyRRdWV1ZUlEfS0+eyRVc2VySUR9OwoKICAgICAgICAgICAgbXkgJE5hbWUgICAgICAgICAgPSAkVXNlcntVc2VyRmlyc3RuYW1lfSAuICIgIiAuICRVc2Vye1VzZXJMYXN0bmFtZX07CiAgICAgICAgICAgIG15ICRUaW1lRm9ybWF0dGVkID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2UoCiAgICAgICAgICAgICAgICBBZ2UgICA9PiAkRWZmZWN0aXZlVGltZXskUXVldWVJRH0tPnskVXNlcklEfSwKICAgICAgICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQE93bmVyRWZmZWN0aXZlVGltZSwgJE5hbWUgLiAiOiAiIC4gJFRpbWVGb3JtYXR0ZWQ7CiAgICAgICAgfQoKICAgICAgICAkVGlja2V0LT57ICdRdWV1ZV8nIC4gJFF1ZXVlSUQgLiAnX1RpbWUnIH0gPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckFnZSgKICAgICAgICAgICAgQWdlICAgPT4gJFRpY2tldC0+eyAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19UaW1lJyB9LAogICAgICAgICAgICBTcGFjZSA9PiAnICcsCiAgICAgICAgKTsKICAgICAgICAkVGlja2V0LT57ICdRdWV1ZV8nIC4gJFF1ZXVlSUQgLiAnX1dvcmtpbmdUaW1lJyB9ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2UoCiAgICAgICAgICAgIEFnZSAgID0+ICRUaWNrZXQtPnsgJ1F1ZXVlXycgLiAkUXVldWVJRCAuICdfV29ya2luZ1RpbWUnIH0sCiAgICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICApOwoKICAgICAgICBuZXh0IFFVRVVFSUQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBPd25lckVmZmVjdGl2ZVRpbWUgKTsKCiAgICAgICAgJFRpY2tldC0+eyAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19FZmZlY3RpdmVUaW1lJyB9ID0gam9pbiAnLCAnLCBAT3duZXJFZmZlY3RpdmVUaW1lOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1RpbWVTdGFtcDJFcG9jaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0sICkgPSBAXzsKCiAgICBteSAkVGltZVN0YW1wICAgICAgPSAkUGFyYW17VGltZVN0YW1wfTsKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRUaW1lU3RhbXAsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+VG9FcG9jaCgpIGlmICREYXRlVGltZU9iamVjdDsKICAgIHJldHVybjsKfQoKc3ViIF9Xb3JraW5nVGltZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0sICkgPSBAXzsKCiAgICBteSAkU3RhcnRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBFcG9jaCA9PiAkUGFyYW17U3RhcnRUaW1lfSwKICAgICAgICB9LAogICAgKTsKICAgIG15ICRTdG9wVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgRXBvY2ggPT4gJFBhcmFte1N0b3BUaW1lfSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkRGVsdGEgPSAkU3RhcnRUaW1lLT5EZWx0YSgKICAgICAgICBEYXRlVGltZU9iamVjdCA9PiAkU3RvcFRpbWUsCiAgICAgICAgQ2FsZW5kYXIgICAgICAgPT4gJFBhcmFte0NhbGVuZGFyfSwKICAgICAgICBGb3JXb3JraW5nVGltZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJERlbHRhLT57QWJzb2x1dGVTZWNvbmRzfSB8fCAwOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Stats/Static/ResponseStatistic.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpSZXNwb25zZVN0YXRpc3RpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YW5kYXJkVGVtcGxhdGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBQYXJhbSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgR2V0IGN1cnJlbnQgc3lzdGVtIGRhdGV0aW1lIG9iamVjdC4KICAgIG15ICRDdXJTeXNEVE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgbXkgJEN1cnJlbnRZZWFyICAgID0gJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoIEZvcm1hdCA9PiAnJVknICk7CiAgICBteSAkQ3VycmVudE1vbnRoICAgPSAkQ3VyU3lzRFRPYmplY3QtPkZvcm1hdCggRm9ybWF0ID0+ICclbScgKTsKCiAgICAjIGNyZWF0ZSBwb3NzaWJsZSB0aW1lIHNlbGVjdGlvbnMKICAgIG15ICVZZWFyICA9IG1hcCB7ICRfID0+ICRfIH0gKCAkQ3VycmVudFllYXIgLSAxMCAuLiAkQ3VycmVudFllYXIgKyAxICk7CiAgICBteSAlTW9udGggPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICkgPT4gc3ByaW50ZiggIiUwMmQiLCAkXyApIH0gKCAxIC4uIDEyICk7CiAgICBteSAlRGF5ICAgPSBtYXAgeyBzcHJpbnRmKCAiJTAyZCIsICRfICkgPT4gc3ByaW50ZiggIiUwMmQiLCAkXyApIH0gKCAxIC4uIDMxICk7CgogICAgbXkgQFBhcmFtczsKCiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+IFRyYW5zbGF0YWJsZSgnU3RhcnQgRGF5JyksCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnREYXknLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAnMDEnLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlRGF5LAogICAgICAgIH0sCiAgICB9OwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gVHJhbnNsYXRhYmxlKCdTdGFydCBNb250aCcpLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0TW9udGgnLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkQ3VycmVudE1vbnRoLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlTW9udGgsCiAgICAgICAgfSwKICAgIH07CgogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiBUcmFuc2xhdGFibGUoJ1N0YXJ0IFllYXInKSwKICAgICAgICBOYW1lICAgICAgID0+ICdTdGFydFllYXInLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkQ3VycmVudFllYXIsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gVHJhbnNsYXRhYmxlKCdFbmQgRGF5JyksCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kRGF5JywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgIEZvcm1hdCA9PiAnJWQnLAogICAgICAgICksCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVEYXksCiAgICAgICAgfSwKICAgIH07CgogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiBUcmFuc2xhdGFibGUoJ0VuZCBNb250aCcpLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZE1vbnRoJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEN1cnJlbnRNb250aCwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJU1vbnRoLAogICAgICAgIH0sCiAgICB9OwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gVHJhbnNsYXRhYmxlKCdFbmQgWWVhcicpLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZFllYXInLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkQ3VycmVudFllYXIsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwoKICAgICMgZ2V0IHF1ZXVlcwogICAgbXkgJVF1ZXVlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoKTsKCiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCA9PiBUcmFuc2xhdGFibGUoJ1F1ZXVlcycpLAogICAgICAgIE5hbWUgICAgID0+ICdRdWV1ZUlEcycsCiAgICAgICAgTXVsdGlwbGUgPT4gMSwKICAgICAgICBTaXplICAgICA9PiAxMCwKICAgICAgICBEYXRhICAgICA9PiBcJVF1ZXVlcywKICAgIH07CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRQYXJhbSAocXcoU3RhcnRZZWFyIFN0YXJ0TW9udGggU3RhcnREYXkgRW5kWWVhciBFbmRNb250aCBFbmREYXkpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IHN0YXJ0IGFuZCBlbmQgZGF0ZQogICAgbXkgJFN0YXJ0RGF0ZSA9ICIkUGFyYW17U3RhcnRZZWFyfS0kUGFyYW17U3RhcnRNb250aH0tJFBhcmFte1N0YXJ0RGF5fSAwMDowMDowMCI7CiAgICBteSAkRW5kRGF0ZSAgID0gIiRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRQYXJhbXtFbmREYXl9IDIzOjU5OjU5IjsKCiAgICAjIGdldCBxdWV1ZSBvYmplY3QKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwoKICAgICMgZ2V0IHF1ZXVlcwogICAgbXkgJVF1ZXVlcyAgID0gJFF1ZXVlT2JqZWN0LT5HZXRBbGxRdWV1ZXMoKTsKICAgIG15IEBRdWV1ZUlEcyA9IGtleXMgJVF1ZXVlczsKCiAgICBpZiAoIEB7ICRQYXJhbXtRdWV1ZUlEc30gfSApIHsKCiAgICAgICAgIyBidWlsZCBsaXN0IG9mIHNlbGVjdGVkIHF1ZXVlIGlkcwogICAgICAgIEBRdWV1ZUlEcyA9IEB7ICRQYXJhbXtRdWV1ZUlEc30gfTsKICAgIH0KCiAgICAjIHNvcnQgcXVldWUgaWRzCiAgICBAUXVldWVJRHMgPSBzb3J0IHsgJFF1ZXVlc3skYX0gY21wICRRdWV1ZXN7JGJ9IH0gQFF1ZXVlSURzOwoKICAgICMgYnVpbGQgYXJyYXkgb2YgcXVldWUgbmFtZXMKICAgIG15IEBRdWV1ZU5hbWVzID0gbWFwIHsgJFF1ZXVlc3skX30gfSBAUXVldWVJRHM7CgogICAgIyBidWlsZCBxdWV1ZSBzdHJpbmcKICAgIG15ICRRdWV1ZVN0cmluZyA9IFRyYW5zbGF0YWJsZSgnUXVldWVzOiBBbGwnKTsKICAgIGlmICggc2NhbGFyIEBRdWV1ZUlEcyA8IHNjYWxhciBrZXlzICVRdWV1ZXMgKSB7CiAgICAgICAgJFF1ZXVlU3RyaW5nID0gJ1F1ZXVlczogJyAuIGpvaW4gJywgJywgQFF1ZXVlTmFtZXM7CiAgICB9CgogICAgIyBzZXQgcmVwb3J0IHRpdGxlCiAgICBteSAkVGl0bGUgPSAnJzsKICAgICRUaXRsZSAuPSAiKCRQYXJhbXtTdGFydERheX0uJFBhcmFte1N0YXJ0TW9udGh9LiRQYXJhbXtTdGFydFllYXJ9IC0gIjsKICAgICRUaXRsZSAuPSAiJFBhcmFte0VuZERheX0uJFBhcmFte0VuZE1vbnRofS4kUGFyYW17RW5kWWVhcn0pLCAiOwogICAgJFRpdGxlIC49ICRRdWV1ZVN0cmluZzsKCiAgICAjIHRhYmxlIGhlYWRsaW5lcwogICAgbXkgQEhlYWREYXRhID0gKAogICAgICAgICdSZXNwb25zZScsCiAgICAgICAgQFF1ZXVlTmFtZXMsCiAgICAgICAgJ1RvdGFsJywKICAgICk7CgogICAgIyBsb29rdXAgaGlzdG9yeSB0eXBlCiAgICBteSAkTWlzY1R5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+SGlzdG9yeVR5cGVMb29rdXAoCiAgICAgICAgVHlwZSA9PiAnTWlzYycsCiAgICApOwoKICAgICMgZmluZCBhbGwgcmVzcG9uc2VzIGluIGhpc3RvcnkgYW5kIGNvdW50IHRoZW0KICAgIG15ICVSZXNwb25zZUNvdW50OwogICAgbXkgJVJlc3BvbnNlQ291bnRCeVF1ZXVlSUQ7CiAgICBteSAkUXVldWVJRFN0cmluZyA9IGpvaW4gJywgJywgQFF1ZXVlSURzOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiCiAgICAgICAgICAgIFNFTEVDVCBuYW1lLCBxdWV1ZV9pZAogICAgICAgICAgICBGUk9NIHRpY2tldF9oaXN0b3J5CiAgICAgICAgICAgIFdIRVJFIGhpc3RvcnlfdHlwZV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBxdWV1ZV9pZCBJTiAoIiAuICRRdWV1ZUlEU3RyaW5nIC4gIikKICAgICAgICAgICAgICAgIEFORCBjcmVhdGVfdGltZSA+PSA/CiAgICAgICAgICAgICAgICBBTkQgY3JlYXRlX3RpbWUgPD0gPwogICAgICAgICAgICAgICAgQU5EIG5hbWUgTElLRSAnUmVzcG9uc2VUZW1wbGF0ZSUnIiwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRNaXNjVHlwZUlELAogICAgICAgICAgICBcJFN0YXJ0RGF0ZSwKICAgICAgICAgICAgXCRFbmREYXRlLAogICAgICAgIF0sCiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIHN0cmluZyBsb29rcyBsaWtlIHRoaXM6IFJlc3BvbnNlVGVtcGxhdGUgKDEvMy80KQogICAgICAgIGlmICggJFJvd1swXSA9fiBteyBcQSBSZXNwb25zZVRlbXBsYXRlIFxzKyBcKCAoIFxkKyApIFwvIH14bXMgKSB7CgogICAgICAgICAgICBteSAkUmVzcG9uc2VJRCA9ICQxOwogICAgICAgICAgICBteSAkUXVldWVJRCAgICA9ICRSb3dbMV07CiAgICAgICAgICAgICRSZXNwb25zZUNvdW50eyRSZXNwb25zZUlEfSsrOwogICAgICAgICAgICAkUmVzcG9uc2VDb3VudEJ5UXVldWVJRHskUmVzcG9uc2VJRH0tPnskUXVldWVJRH0rKzsKICAgICAgICB9CiAgICB9CgogICAgbXkgQERhdGE7CgogICAgIyBzb3J0IHJlc3BvbnNlcyBieSBudW1iZXIgKGRlc2NlbmRpbmcpCiAgICBmb3IgbXkgJFJlc3BvbnNlSUQgKCBzb3J0IHsgJFJlc3BvbnNlQ291bnR7JGJ9IDw9PiAkUmVzcG9uc2VDb3VudHskYX0gfSBrZXlzICVSZXNwb25zZUNvdW50ICkgewoKICAgICAgICAjIGxvb2t1cCByZXNwb25zZSBuYW1lCiAgICAgICAgbXkgJFJlc3BvbnNlTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGFuZGFyZFRlbXBsYXRlJyktPlN0YW5kYXJkVGVtcGxhdGVMb29rdXAoCiAgICAgICAgICAgIFN0YW5kYXJkVGVtcGxhdGVJRCA9PiAkUmVzcG9uc2VJRCwKICAgICAgICApOwoKICAgICAgICBteSBAUmVzcG9uc2VDb3VudEJ5UXVldWUgPSAoKTsKICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKEBRdWV1ZUlEcykgewogICAgICAgICAgICBwdXNoIEBSZXNwb25zZUNvdW50QnlRdWV1ZSwgJFJlc3BvbnNlQ291bnRCeVF1ZXVlSUR7JFJlc3BvbnNlSUR9LT57JFF1ZXVlSUR9IHx8IDA7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHRhYmxlIHJvdwogICAgICAgIHB1c2ggQERhdGEsIFsKICAgICAgICAgICAgJFJlc3BvbnNlTmFtZSwKICAgICAgICAgICAgQFJlc3BvbnNlQ291bnRCeVF1ZXVlLAogICAgICAgICAgICAkUmVzcG9uc2VDb3VudHskUmVzcG9uc2VJRH0sCiAgICAgICAgXTsKICAgIH0KCiAgICByZXR1cm4gKCBbJFRpdGxlXSwgW0BIZWFkRGF0YV0sIEBEYXRhICk7Cn0KCjE7Cg==</File>
        <File Location="scripts/test/QueueRestingTime.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgU2V0IHVwIHRoZSB0ZXN0IGRyaXZlciAkU2VsZiB3aGVuIHdlIGFyZSBydW5uaW5nIGFzIGEgc3RhbmRhbG9uZSBzY3JpcHQuCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6Ok1vY2tUaW1lIHF3KDphbGwpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgY3JlYXRlIGxvY2FsIG9iamVjdHMKbXkgJFVzZXJJRCA9IDE7CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnID0+IHsKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgIH0sCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkU3RhdHNPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyk7CgokU2VsZi0+e1VuaXRUZXN0UHJlZml4fSA9ICdVbml0VGVzdC1PVE9CT1N0YXRzUXVldWVSZXN0aW5nVGltZSc7CgpteSAkVGltZVN0YW1wMkVwb2NoID0gc3ViIHsKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRUaW1lU3RhbXAgICAgICA9ICRQYXJhbXtUaW1lU3RhbXB9OwogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFRpbWVTdGFtcCwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJERhdGVUaW1lT2JqZWN0LT5Ub0Vwb2NoKCkgaWYgJERhdGVUaW1lT2JqZWN0OwogICAgcmV0dXJuOwp9OwoKbXkgJEVwb2NoMlRpbWVTdGFtcCA9IHN1YiB7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkRXBvY2ggICAgICAgICAgPSAkUGFyYW17RXBvY2h9OwogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBFcG9jaCA9PiAkRXBvY2gsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKSBpZiAkRGF0ZVRpbWVPYmplY3Q7CiAgICByZXR1cm47Cn07CgojIGdldCBzdGF0ZSBvYmplY3QKbXkgJFN0YXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CgojIGFkZCBzdGF0cwpteSAkU3RhdElEID0gJFN0YXRzT2JqZWN0LT5TdGF0c0FkZCggVXNlcklEID0+ICRVc2VySUQgKTsKJFNlbGYtPlRydWUoCiAgICAkU3RhdElEID4gMCwKICAgICdDcmVhdGUgU3RhdCcsCik7CgojIGdldCBxdWV1ZSBvYmplY3QKbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CgojIGNyZWF0ZSB0ZXN0IHF1ZXVlcwpteSAlUXVldWVzOwpmb3IgbXkgJE51bWJlciAoIDEgLi4gMyApIHsKICAgIG15ICRRdWV1ZUlEID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUFkZCgKICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJFNlbGYtPntVbml0VGVzdFByZWZpeH0gLiAkTnVtYmVyLAogICAgICAgIFZhbGlkSUQgICAgICAgICA9PiAxLAogICAgICAgIEdyb3VwSUQgICAgICAgICA9PiAxLAogICAgICAgIFN5c3RlbUFkZHJlc3NJRCA9PiAxLAogICAgICAgIFNhbHV0YXRpb25JRCAgICA9PiAxLAogICAgICAgIFNpZ25hdHVyZUlEICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkVXNlcklELAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRRdWV1ZUlELAogICAgICAgICdDcmVhdGUgdGVzdCBxdWV1ZSAnIC4gJE51bWJlciwKICAgICk7CiAgICAkUXVldWVzeyROdW1iZXJ9ID0gJFF1ZXVlSUQ7Cn0KCiMgZGV0ZXJtaW5lIHRlc3Qgc3RhdGVzCm15ICVTdGF0ZXM7Cm15ICVBbGxTdGF0ZXMgPSAkU3RhdGVPYmplY3QtPlN0YXRlTGlzdCgKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwpteSAlQWxsU3RhdGVzUmV2ZXJzZSA9IHJldmVyc2UgJUFsbFN0YXRlczsKZm9yIG15ICRTdGF0ZVR5cGUgKCAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJywgJ2Nsb3NlZCcsICkgewogICAgbXkgQFN0YXRlTGlzdCA9ICRTdGF0ZU9iamVjdC0+U3RhdGVHZXRTdGF0ZXNCeVR5cGUoCiAgICAgICAgU3RhdGVUeXBlID0+IFskU3RhdGVUeXBlXSwKICAgICAgICBSZXN1bHQgICAgPT4gJ05hbWUnLAogICAgKTsKCiAgICAjIG9ubHkgYWxsb3cgdmFsaWQgc3RhdGVzCiAgICBAU3RhdGVMaXN0ID0gZ3JlcCB7ICRBbGxTdGF0ZXNSZXZlcnNleyRffSB9IEBTdGF0ZUxpc3Q7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3RhdGVMaXN0WzBdLAogICAgICAgICdEZXRlcm1pbmUgdGVzdCBzdGF0ZSBvZiB0eXBlICcgLiAkU3RhdGVUeXBlLAogICAgKTsKICAgICRTdGF0ZXN7JFN0YXRlVHlwZX0gPSAkU3RhdGVMaXN0WzBdOwp9CgojIGRlZmluZSB0ZXN0IHN0YXJ0IGFuZCBzdG9wIHRpbWVzICh0byBiZSB1c2VkIHdpdGggcmVsYXRpdmUgdGltZXMgbGF0ZXIpCm15ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSA9ICc2MzExNDg0MDAnOwpteSAkU3RhdHNTdGFydFRpbWVTdGFtcCAgPSAnMTk4OS0xMi0zMSAyMzowMDowMCc7Cm15ICRTdGF0c1N0b3BTeXN0ZW1UaW1lICA9ICc2MzExNDg1MDAnOwpteSAkU3RhdHNTdG9wVGltZVN0YW1wICAgPSAnMTk4OS0xMi0zMSAyMzowMTo0MCc7CgojIHNldCBFeHRlbmRlZFRpY2tldFN0YXRzIGFuZCBhZGQgcmVzdHJpY3Rpb25zCm15ICRTdGF0c1Jlc3RyaWN0aW9ucyA9IHsKICAgIFVzZUFzWHZhbHVlID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIEJsb2NrICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgPT4gJ1RpY2tldEF0dHJpYnV0ZXMnLAogICAgICAgICAgICBGaXhlZCAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQXR0cmlidXRlcyB0byBiZSBwcmludGVkJywKICAgICAgICAgICAgU2VsZWN0ZWQgICAgICAgPT4gMSwKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZXMgPT4gWwogICAgICAgICAgICAgICAgJ1RpY2tldElEJywKICAgICAgICAgICAgICAgICdDcmVhdGVkJywKICAgICAgICAgICAgICAgICdDaGFuZ2VkJywKICAgICAgICAgICAgICAgICdDbG9zZWQnLAogICAgICAgICAgICAgICAgJ1N0YXRlJywKICAgICAgICAgICAgICAgICdRdWV1ZScsCiAgICAgICAgICAgICAgICAnUXVldWVKb2luVGltZScsCiAgICAgICAgICAgICAgICAnUXVldWVMZWZ0VGltZScsCiAgICAgICAgICAgICAgICAnUmVzdGluZ1RpbWVTZWNvbmRzJywKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAnVGlja2V0SUQnLAogICAgICAgICAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgICAgIENoYW5nZWQgICAgICAgICAgICA9PiAnQ2hhbmdlZCcsCiAgICAgICAgICAgICAgICBDbG9zZWQgICAgICAgICAgICAgPT4gJ0Nsb3NlIFRpbWUnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICAgICAgID0+ICdTdGF0ZScsCiAgICAgICAgICAgICAgICBRdWV1ZSAgICAgICAgICAgICAgPT4gJ1F1ZXVlJywKICAgICAgICAgICAgICAgIFF1ZXVlSm9pblRpbWUgICAgICA9PiAnUXVldWUgam9pbiB0aW1lJywKICAgICAgICAgICAgICAgIFF1ZXVlTGVmdFRpbWUgICAgICA9PiAnUXVldWUgbGVmdCB0aW1lJywKICAgICAgICAgICAgICAgIFJlc3RpbmdUaW1lU2Vjb25kcyA9PiAnUmVzdGluZyB0aW1lIChzZWNvbmRzKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIF0sCiAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIEJsb2NrICAgICAgICAgID0+ICdTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgID0+ICdTb3J0U2VxdWVuY2UnLAogICAgICAgICAgICBGaXhlZCAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnU29ydCBzZXF1ZW5jZScsCiAgICAgICAgICAgIFNlbGVjdGVkICAgICAgID0+IDAsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWVzID0+IFsKICAgICAgICAgICAgICAgICdVcCcsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFZhbHVlcyA9PiB7CiAgICAgICAgICAgICAgICBVcCA9PiAnYXNjZW5kaW5nJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXSwKICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gWwogICAgICAgIHsKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICA9PiAnUXVldWVJRHMnLAogICAgICAgICAgICBGaXhlZCAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnUXVldWUnLAogICAgICAgICAgICBTZWxlY3RlZCAgICAgICA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlcyA9PiBbCiAgICAgICAgICAgICAgICAkUXVldWVzezF9LAogICAgICAgICAgICAgICAgJFF1ZXVlc3syfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICRRdWV1ZXN7MX0gPT4gJFNlbGYtPntVbml0VGVzdFByZWZpeH0gLiAxLAogICAgICAgICAgICAgICAgJFF1ZXVlc3syfSA9PiAkU2VsZi0+e1VuaXRUZXN0UHJlZml4fSAuIDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEJsb2NrICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnUmVwb3J0aW5nVGltZXNsb3QnLAogICAgICAgICAgICBGaXhlZCAgICAgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgID0+ICdSZXBvcnRpbmcgVGltZXNsb3QnLAogICAgICAgICAgICBTZWxlY3RlZCAgPT4gMSwKICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICRTdGF0c1N0YXJ0VGltZVN0YW1wLAogICAgICAgICAgICBUaW1lU3RvcCAgPT4gJFN0YXRzU3RvcFRpbWVTdGFtcCwKICAgICAgICAgICAgVmFsdWVzICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnUmVwb3J0aW5nVGltZXNsb3RPbGRlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdSZXBvcnRpbmdUaW1lc2xvdE5ld2VyRGF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIF0sCn07Cm15ICRVcGRhdGUgPSAkU3RhdHNPYmplY3QtPlN0YXRzVXBkYXRlKAogICAgU3RhdElEID0+ICRTdGF0SUQsCiAgICBIYXNoICAgPT4gewogICAgICAgIFRpdGxlICAgICAgICA9PiAnVGVzdFRpdGxlIGZyb20gVW5pdFRlc3QucGwnLAogICAgICAgIERlc2NyaXB0aW9uICA9PiAnc29tZSBEZXNjcmlwdGlvbicsCiAgICAgICAgT2JqZWN0ICAgICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZvcm1hdCAgICAgICA9PiBbJ0NTViddLAogICAgICAgIE9iamVjdE1vZHVsZSA9PiAnS2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpPVE9CT1N0YXRzUXVldWVSZXN0aW5nVGltZScsCiAgICAgICAgUGVybWlzc2lvbiAgID0+IFsnMSddLAogICAgICAgIFN0YXRUeXBlICAgICA9PiAnZHluYW1pYycsCiAgICAgICAgVmFsaWQgICAgICAgID0+ICcxJywKICAgICAgICAleyRTdGF0c1Jlc3RyaWN0aW9uc30sCiAgICB9LAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFVwZGF0ZSwKICAgICdVcGRhdGUgU3RhdCcsCik7CgpteSAkR2V0VGVzdFRpY2tldERlZmluaXRpb24gPSBzdWIgewoKICAgICMgZGVmaW5pdGlvbiBvZiB0aWNrZXRzCiAgICBteSAkVGVzdFRpY2tldHMgPSB7CiAgICAgICAgJ2NyZWF0ZWQgd2l0aGluIHRpbWVmcmFtZScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMSwgICAgIyAxIG9yIDAKICAgICAgICAgICAgICAgIERhdGEgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlZAogICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlTGVmdFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RvcFN5c3RlbVRpbWUgLSAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LCAgICAjIFJlc3RpbmdUaW1lU2Vjb25kcwogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaWNrZXREYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ05ld1RpY2tldCcsICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBvciAzICgzIHdpbGwgbm90IGJlIHJlcG9ydGVkKQogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnb3BlbicsICAgICAgICAgICAgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICAnY3JlYXRlZCBiZWZvcmUgdGltZWZyYW1lJyA9PiB7CiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgICAgIExpc3RlZCA9PiAxLCAgICAjIDEgb3IgMAogICAgICAgICAgICAgICAgRGF0YSAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWVKb2luVGltZQogICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdG9wU3lzdGVtVGltZSAtICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICdjcmVhdGVkIGFmdGVyIHRpbWVmcmFtZScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMCwgICAgIyAxIG9yIDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLCAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDEwNSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICAnY3JlYXRlZCB3aXRoaW4gdGltZWZyYW1lLCBub24tcmVwb3J0ZWQgcXVldWUnID0+IHsKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAgICAgTGlzdGVkID0+IDAsICAgICMgMSBvciAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBvciAzICgzIHdpbGwgbm90IGJlIHJlcG9ydGVkKQogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnb3BlbicsICAgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMDUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgJ2NyZWF0ZWQgd2l0aGluIHRpbWVmcmFtZSwgY2xvc2VkIGluc3RhbnRseScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMSwgICAgIyAxIG9yIDAKICAgICAgICAgICAgICAgIERhdGEgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAjIENyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgIyBRdWV1ZUxlZnRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICdjcmVhdGVkIGJlZm9yZSBhbmQgY2xvc2VkIHdpdGhpbiB0aW1lZnJhbWUnID0+IHsKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAgICAgTGlzdGVkID0+IDEsICAgICMgMSBvciAwCiAgICAgICAgICAgICAgICBEYXRhICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lIC0gNSwgICAgICMgQ3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIENsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LCAgICAgIyBRdWV1ZUpvaW5UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIFF1ZXVlTGVmdFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgNjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICdjcmVhdGVkIGFuZCBjbG9zZWQgYmVmb3JlIHRpbWVmcmFtZScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMCwgICAgIyAxIG9yIDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLCAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnU3RhdGVVcGRhdGUnLCAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ2Nsb3NlZCcsICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgJ2NyZWF0ZWQgYmVmb3JlIGFuZCBjbG9zZWQgYWZ0ZXIgdGltZWZyYW1lJyA9PiB7CiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgICAgIExpc3RlZCA9PiAxLCAgICAjIDEgb3IgMAogICAgICAgICAgICAgICAgRGF0YSAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDUsICAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDEwNSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDEwNSwgICAgIyBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZCcsICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LCAgICAgICMgUXVldWVKb2luVGltZQogICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICAxMDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ2Nsb3NlZCcsICAgICAgICAgICAgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMTA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICdjcmVhdGVkIGFuZCBjbG9zZWQgd2l0aGluIHRpbWVmcmFtZScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMSwgICAgIyAxIG9yIDAKICAgICAgICAgICAgICAgIERhdGEgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIENoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICA1MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLCAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnU3RhdGVVcGRhdGUnLCAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgJ2NyZWF0ZWQgYW5kIGNsb3NlZCB3aXRoIHN0YXRlIGluIGJldHdlZW4gd2l0aGluIHRpbWVmcmFtZScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMSwgICAgIyAxIG9yIDAKICAgICAgICAgICAgICAgIERhdGEgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIENoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICA1MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLCAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnU3RhdGVVcGRhdGUnLCAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdwZW5kaW5nIHJlbWluZGVyJywgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMjUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnU3RhdGVVcGRhdGUnLCAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgJ2NyZWF0ZWQsIGNsb3NlZCwgcmVvcGVuZWQgYW5kIHJlY2xvc2VkIHdpdGhpbiB0aW1lZnJhbWUnID0+IHsKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAgICAgTGlzdGVkID0+IDEsICAgICMgMSBvciAwCiAgICAgICAgICAgICAgICBEYXRhICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgICMgQ3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIENsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgIyBRdWV1ZUpvaW5UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIFF1ZXVlTGVmdFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgNDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDE5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAncGVuZGluZyByZW1pbmRlcicsICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDI4LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICdjcmVhdGVkIGFuZCBtb3ZlZCBiZXR3ZWVuIHJlcG9ydGVkIHF1ZXVlcyB3aXRoaW4gdGltZWZyYW1lJyA9PiB7CiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgICAgIExpc3RlZCA9PiAxLCAgICAjIDEgb3IgMAogICAgICAgICAgICAgICAgRGF0YSAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICAjIENyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgQ2hhbmdlZAogICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgICMgUXVldWVKb2luVGltZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBRdWV1ZUxlZnRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgIDUwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlc3RpbmdUaW1lU2Vjb25kcwogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIENoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LCAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICA0NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLCAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTW92ZScsICAgICAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgJ2NyZWF0ZWQgYW5kIG1vdmVkIGZyb20gbm9uLXJlcG9ydGVkIHRvIHJlcG9ydGVkIHF1ZXVlIHdpdGhpbiB0aW1lZnJhbWUnID0+IHsKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAgICAgTGlzdGVkID0+IDEsICAgICMgMSBvciAwCiAgICAgICAgICAgICAgICBEYXRhICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgICMgQ3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAnb3BlbicsICAgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBRdWV1ZUpvaW5UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlTGVmdFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgNDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ01vdmUnLCAgICAgICAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDU1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICdjcmVhdGVkIGFuZCBtb3ZlZCBmcm9tIHJlcG9ydGVkIHRvIG5vbi1yZXBvcnRlZCBxdWV1ZSB3aXRoaW4gdGltZWZyYW1lJyA9PiB7CiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgICAgIExpc3RlZCA9PiAxLCAgICAjIDEgb3IgMAogICAgICAgICAgICAgICAgRGF0YSAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICAjIENyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgQ2hhbmdlZAogICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgICMgUXVldWVKb2luVGltZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBRdWV1ZUxlZnRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgIDUwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlc3RpbmdUaW1lU2Vjb25kcwogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaWNrZXREYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ05ld1RpY2tldCcsICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBvciAzICgzIHdpbGwgbm90IGJlIHJlcG9ydGVkKQogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnb3BlbicsICAgICAgICAgICAgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdNb3ZlJywgICAgICAgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBvciAzICgzIHdpbGwgbm90IGJlIHJlcG9ydGVkKQogICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICAnY3JlYXRlZCBhbmQgbW92ZWQgbXVsdGlwbGUgdGltZXMgYmV0d2VlbiByZXBvcnRlZCBxdWV1ZXMgd2l0aGluIHRpbWVmcmFtZScgPT4gewogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICBMaXN0ZWQgPT4gMSwgICAgIyAxIG9yIDAKICAgICAgICAgICAgICAgIERhdGEgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDk1LCAgICAjIENoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICA1MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNSwgICAgICMgQ3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA5NSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAnb3BlbicsICAgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1NSwgICAgIyBRdWV1ZUpvaW5UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDY1LCAgICAjIFF1ZXVlTGVmdFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgMTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsICAgICAjIENyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgOTUsICAgICMgQ2hhbmdlZAogICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNjUsICAgICMgUXVldWVKb2luVGltZQogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA5NSwgICAgIyBRdWV1ZUxlZnRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgIDMwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlc3RpbmdUaW1lU2Vjb25kcwogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyA1LCAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDk1LCAgICAjIENoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlCiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDk1LCAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICA1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLCAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ29wZW4nLCAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTW92ZScsICAgICAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNTUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTW92ZScsICAgICAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgNjUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTW92ZScsICAgICAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgOTUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgJ3N0YXJ0IGJlZm9yZSB0aW1lZnJhbWUsIG1vdmUsIGNsb3NlLCBtb3ZlLCByZW9wZW4sIG1vdmUgYmFjayBhbmQgZm9ydGgsIHRoZW4gY2xvc2UgYWZ0ZXIgdGltZWZyYW1lJwogICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgTGlzdGVkID0+IDEsICAgICMgMSBvciAwCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lIC0gNSwgICAgICAjIENyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDEwMSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMDEsICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lIC0gNSwgICAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDMsICAgICAgIyBRdWV1ZUxlZnRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDUsICAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMDEsICAgICMgQ2hhbmdlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMTAxLCAgICAjIENsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZCcsICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDMsICAgICAgIyBRdWV1ZUpvaW5UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMiwgICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlc3RpbmdUaW1lU2Vjb25kcwogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgLSA1LCAgICAgICMgQ3JlYXRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMTAxLCAgICAjIENoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDEwMSwgICAgIyBDbG9zZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICAgIyBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFF1ZXVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxOSwgICAgICMgUXVldWVKb2luVGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMzAsICAgICAjIFF1ZXVlTGVmdFRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZXN0aW5nVGltZVNlY29uZHMKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lIC0gNSwgICAgICAjIENyZWF0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDEwMSwgICAgIyBDaGFuZ2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMDEsICAgICMgQ2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2VkJywgICAgICAgICAgICAgICAgICAgICAgICMgU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBRdWV1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMzAsICAgICAjIFF1ZXVlSm9pblRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDMxLCAgICAgIyBRdWV1ZUxlZnRUaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmVzdGluZ1RpbWVTZWNvbmRzCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSAtIDUsICAgICAgIyBDcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMDEsICAgICMgQ2hhbmdlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMTAxLCAgICAjIENsb3NlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nsb3NlZCcsICAgICAgICAgICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDgwLCAgICAgIyBRdWV1ZUpvaW5UaW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUXVldWVMZWZ0VGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlc3RpbmdUaW1lU2Vjb25kcwogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ05ld1RpY2tldCcsICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdvcGVuJywgICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lIC0gNSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdNb3ZlJywgICAgICAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAzLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgPT4gJ2Nsb3NlZCcsICAgICAgICAgICAgICAgICAgICAgIyAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJyBvciAnY2xvc2VkJwogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMTIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTW92ZScsICAgICAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdTdGF0ZVVwZGF0ZScsICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdwZW5kaW5nIHJlbWluZGVyJywgICAgICAgICAgICMgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicgb3IgJ2Nsb3NlZCcKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDE5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ01vdmUnLCAgICAgICAgICAgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnTW92ZScgb3IgJ1N0YXRlVXBkYXRlJwogICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZSAgICAgPT4gMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBvciAzICgzIHdpbGwgbm90IGJlIHJlcG9ydGVkKQogICAgICAgICAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJFN0YXRzU3RhcnRTeXN0ZW1UaW1lICsgMzAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTW92ZScsICAgICAgICAgICAgICAgICAgICAgICAjICdOZXdUaWNrZXQnIChvciBlbXB0eSksICdNb3ZlJyBvciAnU3RhdGVVcGRhdGUnCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlICAgICA9PiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDEsIDIsIG9yIDMgKDMgd2lsbCBub3QgYmUgcmVwb3J0ZWQpCiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAzMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdNb3ZlJywgICAgICAgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICRTdGF0c1N0YXJ0U3lzdGVtVGltZSArIDgwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ1N0YXRlVXBkYXRlJywgICAgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ01vdmUnIG9yICdTdGF0ZVVwZGF0ZScKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdjbG9zZWQnLCAgICAgICAgICAgICAgICAgICAgICAjICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInIG9yICdjbG9zZWQnCiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAkU3RhdHNTdGFydFN5c3RlbVRpbWUgKyAxMDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICB9OwoKICAgICMgcHJlcGFyZSB0ZXN0LXRpY2tldHMgIHdpdGggJ3JlYWwnIHF1ZXVlIG5hbWVzLCBzdGF0ZSBuYW1lcyBhbmQgdGltZXN0YW1wcwogICAgZm9yIG15ICRUaWNrZXQgKCBzb3J0IGtleXMgJXskVGVzdFRpY2tldHN9ICkgewogICAgICAgIGZvciBteSAkRGF0YSAoIEB7ICRUZXN0VGlja2V0cy0+eyRUaWNrZXR9LT57RXhwZWN0ZWRSZXN1bHR9LT57RGF0YX0gfSApIHsKICAgICAgICAgICAgVElNRVBBUkFNOgogICAgICAgICAgICBmb3IgbXkgJFRpbWVQYXJhbSAoIDAgLi4gMiwgNSwgNiApIHsKICAgICAgICAgICAgICAgIG5leHQgVElNRVBBUkFNIGlmICEkRGF0YS0+WyRUaW1lUGFyYW1dOwogICAgICAgICAgICAgICAgJERhdGEtPlskVGltZVBhcmFtXSA9ICRFcG9jaDJUaW1lU3RhbXAtPigKICAgICAgICAgICAgICAgICAgICBFcG9jaCA9PiAkRGF0YS0+WyRUaW1lUGFyYW1dLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRGF0YS0+WzNdID0gJFN0YXRlc3sgJERhdGEtPlszXSB9OwogICAgICAgICAgICAkRGF0YS0+WzRdID0gJFNlbGYtPntVbml0VGVzdFByZWZpeH0gLiAkRGF0YS0+WzRdOwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJEFjdGlvbiAoIEB7ICRUZXN0VGlja2V0cy0+eyRUaWNrZXR9LT57VGlja2V0RGF0YX0gfSApIHsKICAgICAgICAgICAgaWYgKCAkQWN0aW9uLT57UXVldWV9ICkgewogICAgICAgICAgICAgICAgJEFjdGlvbi0+e1F1ZXVlfSA9ICRTZWxmLT57VW5pdFRlc3RQcmVmaXh9IC4gJEFjdGlvbi0+e1F1ZXVlfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRBY3Rpb24tPntTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aW9uLT57U3RhdGV9ID0gJFN0YXRlc3sgJEFjdGlvbi0+e1N0YXRlfSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRBY3Rpb24tPntUaW1lU3RhbXB9ID0gJEVwb2NoMlRpbWVTdGFtcC0+KAogICAgICAgICAgICAgICAgRXBvY2ggPT4gJEFjdGlvbi0+e1RpbWVTdGFtcH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuICRUZXN0VGlja2V0czsKfTsKCiMgZ2V0IHRlc3QgdGlja2V0IGRlZmluaXRpb24KbXkgJFRlc3RUaWNrZXRzID0gJEdldFRlc3RUaWNrZXREZWZpbml0aW9uLT4oKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNyZWF0ZSBhbmQgcHJlcGFyZSB0ZXN0IHRpY2tldHMKVElDS0VUOgpmb3IgbXkgJFRpY2tldCAoIHNvcnQga2V5cyAleyRUZXN0VGlja2V0c30gKSB7CiAgICBteSBAQWN0aW9ucyAgICAgPSBAeyAkVGVzdFRpY2tldHMtPnskVGlja2V0fS0+e1RpY2tldERhdGF9IH07CiAgICBteSAkRmlyc3RBY3Rpb24gPSBzaGlmdCBAQWN0aW9uczsKCiAgICAjIHNldCBhY3Rpb24gdGltZQogICAgRml4ZWRUaW1lU2V0KAogICAgICAgICRUaW1lU3RhbXAyRXBvY2gtPiggVGltZVN0YW1wID0+ICRGaXJzdEFjdGlvbi0+e1RpbWVTdGFtcH0gKSwKICAgICk7CgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgICV7JEZpcnN0QWN0aW9ufSwKICAgICAgICBUaXRsZSAgICAgID0+ICRTZWxmLT57VW5pdFRlc3RQcmVmaXh9IC4gJ18nIC4gJFRpY2tldCwKICAgICAgICBMb2NrICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5SUQgPT4gMSwKICAgICAgICBPd25lcklEICAgID0+ICRVc2VySUQsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRUaWNrZXRJRCwKICAgICAgICAnQ3JlYXRlIHRlc3QgdGlja2V0ICcgLiAkVGlja2V0SUQsCiAgICApOwogICAgbmV4dCBUSUNLRVQgaWYgISRUaWNrZXRJRDsKICAgICRUZXN0VGlja2V0cy0+eyRUaWNrZXR9LT57VGlja2V0SUR9ID0gJFRpY2tldElEOwoKICAgIGZvciBteSAkQWN0aW9uIChAQWN0aW9ucykgewoKICAgICAgICAjIHNldCBhY3Rpb24gdGltZQogICAgICAgIEZpeGVkVGltZVNldCgKICAgICAgICAgICAgJFRpbWVTdGFtcDJFcG9jaC0+KCBUaW1lU3RhbXAgPT4gJEFjdGlvbi0+e1RpbWVTdGFtcH0gKSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRBY3Rpb24tPntBY3Rpb259IGVxICdNb3ZlJyApIHsKICAgICAgICAgICAgbXkgJE1vdmVPayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFF1ZXVlU2V0KAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgICAgICAgID0+ICRBY3Rpb24tPntRdWV1ZX0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkTW92ZU9rLAogICAgICAgICAgICAgICAgJ01vdmUgdGVzdCB0aWNrZXQgJyAuICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkQWN0aW9uLT57QWN0aW9ufSBlcSAnU3RhdGVVcGRhdGUnICkgewogICAgICAgICAgICBteSAkU3RhdGVPayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICAgICAgID0+ICRBY3Rpb24tPntTdGF0ZX0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBTZW5kTm9Ob3RpZmljYXRpb24gPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3RhdGVPaywKICAgICAgICAgICAgICAgICdDaGFuZ2Ugc3RhdGUgb2YgdGVzdCB0aWNrZXQgJyAuICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KY29udGludWUgewogICAgRml4ZWRUaW1lVW5zZXQoKTsKfQoKIyBnZXQgY2FjaGUgb2JqZWN0Cm15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKJENhY2hlT2JqZWN0LT5DbGVhblVwKCk7CgojIHJ1biBzdGF0IGFnYWluc3QgdGVzdCB0aWNrZXRzCm15ICRTdGF0QXJyYXkgPSAkU3RhdHNPYmplY3QtPlN0YXRzUnVuKAogICAgU3RhdElEICAgPT4gJFN0YXRJRCwKICAgIEdldFBhcmFtID0+ICRTdGF0c1Jlc3RyaWN0aW9ucywKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7Cm15IEBTdGF0UmVzdWx0ID0gQHskU3RhdEFycmF5fTsKJFNlbGYtPlRydWUoCiAgICAkU3RhdFJlc3VsdFswXSwKICAgICdSdW4gU3RhdCcsCik7CgojIHJlbW92ZSAodW5uZWVkZWQpIHN0YXQgaGVhZGVycwpzaGlmdCBAU3RhdFJlc3VsdDsKc2hpZnQgQFN0YXRSZXN1bHQ7CiRTZWxmLT5UcnVlKAogICAgJFN0YXRSZXN1bHRbMF0sCiAgICAnSGF2ZSBTdGF0IHJlc3VsdHMnLAopOwoKIyBjaGVjayBzdGF0cyByZXN1bHQKVElDS0VUOgpmb3IgbXkgJFRpY2tldCAoIHNvcnQga2V5cyAleyRUZXN0VGlja2V0c30gKSB7CgogICAgIyBmaWx0ZXIgc3RhdCByZXN1bHQgZm9yIHRpY2tldAogICAgbXkgJFRpY2tldElEID0gJFRlc3RUaWNrZXRzLT57JFRpY2tldH0tPntUaWNrZXRJRH07CiAgICBteSBAVGlja2V0U3RhdERhdGE7CiAgICBSRVNVTFQ6CiAgICBmb3IgbXkgJFJlc3VsdCAoQFN0YXRSZXN1bHQpIHsKICAgICAgICBuZXh0IFJFU1VMVCBpZiAkUmVzdWx0LT5bMF0gbmUgJFRpY2tldElEOwogICAgICAgIG15IEBTdG9yZVJlc3VsdCA9IEB7JFJlc3VsdH07CgogICAgICAgICMgUmVtb3ZlIHRoZSBmaXJzdCBlbGVtZW50ICh0aWNrZXQgaWQpLgogICAgICAgIHNoaWZ0IEBTdG9yZVJlc3VsdDsKICAgICAgICBwdXNoIEBUaWNrZXRTdGF0RGF0YSwgXEBTdG9yZVJlc3VsdDsKICAgIH0KCiAgICAjIGNoZWNrIG1hdGNoIGZvciBubyBleHBlY3RlZCByZXN1bHQKICAgIGlmICggISRUZXN0VGlja2V0cy0+eyRUaWNrZXR9LT57RXhwZWN0ZWRSZXN1bHR9LT57TGlzdGVkfSApIHsKCiAgICAgICAgIyBubyBkYXRhIHNob3VsZCBiZSBsaXN0ZWQgaW4gc3RhdCByZXN1bHQKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIHNjYWxhciBAVGlja2V0U3RhdERhdGEsCiAgICAgICAgICAgICJFeHBlY3RlZCBubyBzdGF0IGVudHJ5IGZvciB0ZXN0IHRpY2tldCAkVGlja2V0SUQgKCRUaWNrZXQpIiwKICAgICAgICApOwogICAgICAgIG5leHQgVElDS0VUOwogICAgfQoKICAgICMgY2hlY2sgbWF0Y2ggZm9yIGV4cGVjdGVkIHJlc3VsdHMKICAgIG15IEBFeHBlY3RlZERhdGEgPSBAeyAkVGVzdFRpY2tldHMtPnskVGlja2V0fS0+e0V4cGVjdGVkUmVzdWx0fS0+e0RhdGF9IH07CiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBUaWNrZXRTdGF0RGF0YSwKICAgICAgICBcQEV4cGVjdGVkRGF0YSwKICAgICAgICAiRXhwZWN0ZWQgc3RhdCBlbnRyaWVzIG1hdGNoIGZvciB0ZXN0IHRpY2tldCAkVGlja2V0SUQgKCRUaWNrZXQpIiwKICAgICk7Cn0KCiMgcmVtb3ZlIHRlc3QgdGlja2V0cwpmb3IgbXkgJFRpY2tldCAoIHNvcnQga2V5cyAleyRUZXN0VGlja2V0c30gKSB7CiAgICBteSAkVGlja2V0SUQgICAgICAgPSAkVGVzdFRpY2tldHMtPnskVGlja2V0fS0+e1RpY2tldElEfTsKICAgIG15ICRUaWNrZXREZWxldGVPayA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVGlja2V0RGVsZXRlT2ssCiAgICAgICAgJ0RlbGV0ZSB0ZXN0IHRpY2tldCAnIC4gJFRpY2tldElELAogICAgKTsKfQoKIyByZW1vdmUgdGVzdCBzdGF0CiRTZWxmLT5UcnVlKAogICAgJFN0YXRzT2JqZWN0LT5TdGF0c0RlbGV0ZSggU3RhdElEID0+ICRTdGF0SUQgKSwKICAgICdEZWxldGUgU3RhdCcsCik7CgojIHJlbW92ZSB0ZXN0IHF1ZXVlcwpteSAkUXVldWVSZW1vdmVPayA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIHF1ZXVlIFdIRVJFIElEIElOICg/LD8sPyknLAogICAgQmluZCA9PiBbIFwkUXVldWVzezF9LCBcJFF1ZXVlc3syfSwgXCRRdWV1ZXN7M30sIF0sCik7CiRTZWxmLT5UcnVlKAogICAgJFF1ZXVlUmVtb3ZlT2ssCiAgICAnUmVtb3ZlIHRlc3QgcXVldWVzJywKKTsKJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgVHlwZSA9PiAnUXVldWUnLAopOwoKJFNlbGYtPkRvbmVUZXN0aW5nKCk7Cg==</File>
        <File Location="scripts/test/QueueWorkingTime.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgU2V0IHVwIHRoZSB0ZXN0IGRyaXZlciAkU2VsZiB3aGVuIHdlIGFyZSBydW5uaW5nIGFzIGEgc3RhbmRhbG9uZSBzY3JpcHQuCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6Ok1vY2tUaW1lIHF3KDphbGwpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm15ICRUaW1lU3RhbXAyRXBvY2ggPSBzdWIgewogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFRpbWVTdGFtcCAgICAgID0gJFBhcmFte1RpbWVTdGFtcH07CiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFN0cmluZyA9PiAkVGltZVN0YW1wLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPlRvRXBvY2goKSBpZiAkRGF0ZVRpbWVPYmplY3Q7CiAgICByZXR1cm47Cn07CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICA9PiAnVGhlIGdyZWF0IHRlc3QgMScsCiAgICAgICAgUXVldWUgICA9PiAnTWlzYycsCiAgICAgICAgRGF0ZSAgICA9PiAnMjAxNC0xMC0yNyAxNjowMDowMCcsCiAgICAgICAgQWN0aW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjcgMTY6MDA6MDUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUG9zdG1hc3RlcicsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yNyAxNjowMDoxMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yNyAxNjowMDoxMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBSZXN1bHQgPT4gewogICAgICAgICAgICBSYXcgICAgICAgID0+ICcwIG0nLAogICAgICAgICAgICBNaXNjICAgICAgID0+ICcwIG0nLAogICAgICAgICAgICBQb3N0bWFzdGVyID0+ICcwIG0nLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGhlIGdyZWF0IHRlc3QgMicsCiAgICAgICAgUXVldWUgID0+ICdQb3N0bWFzdGVyJywKICAgICAgICBEYXRlICAgPT4gJzIwMTQtMTAtMjggMDA6NTc6MjMnLAogICAgICAgIFJlc3VsdCA9PiB7CiAgICAgICAgICAgIEp1bmsgICAgICAgPT4gJzQgaCA0NyBtJywKICAgICAgICAgICAgTWlzYyAgICAgICA9PiAnOCBoIDMgbScsCiAgICAgICAgICAgIFBvc3RtYXN0ZXIgPT4gJzQzIG0nLAogICAgICAgICAgICBSYXcgICAgICAgID0+ICczIGggMTEgbScsCiAgICAgICAgfSwKICAgICAgICBBY3Rpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDAxOjQwOjMzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAwMjo0Mjo0MScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMDM6MzA6MzgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDAzOjM2OjQzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAwNDoxMjoyOScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDA0OjIxOjMzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAwNDo1NjoxNScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMDU6MDg6MjQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAwNTowODo0NycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMDY6MDM6MzUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMDc6MjA6MjMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAwODoyNTowNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDA5OjA2OjU1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMDk6NDA6NTcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAxMDoyNzoxOScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDExOjI4OjI0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAxMjo0NzowMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDEzOjE0OjQ4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMTQ6MzI6MzUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDE1OjIxOjUzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDE2OjAxOjU4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAxNjowNTowNycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMTY6NDM6MzEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDE3OjMyOjI2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMTg6NDE6MjcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnb3BlbicsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAxOToyNzozMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDIwOjI3OjIzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMjE6MTc6NTUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOCAyMToyODoyOCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDIxOjM5OjU0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDIyOjE2OjU5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjggMjI6NDI6MDgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI4IDIzOjE5OjMxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMDA6MTg6MjQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOSAwMDo0MzozNCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI5IDAxOjMwOjQwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMDI6MjU6NTcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOSAwMjo0NzoyNycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI5IDA0OjA2OjQ2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMDU6MTU6NTInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMDU6MTY6MjInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI5IDA2OjE4OjMxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMDY6NTg6MjknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOSAwODoxNTozNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI5IDA4OjU2OjQ5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMDk6MjM6NTgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMC0yOSAwOTo1NDoyNCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI5IDA5OjU5OjE4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTAtMjkgMTA6MTM6NTAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTEwLTI5IDExOjE5OjE4JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RoZSBncmVhdCB0ZXN0IDMnLAogICAgICAgIFF1ZXVlICA9PiAnUG9zdG1hc3RlcicsCiAgICAgICAgRGF0ZSAgID0+ICcyMDE0LTExLTAxIDA5OjI2OjU1JywKICAgICAgICBSZXN1bHQgPT4gewogICAgICAgICAgICBKdW5rICAgICAgID0+ICc1IGggMyBtJywKICAgICAgICAgICAgTWlzYyAgICAgICA9PiAnMyBoIDQxIG0nLAogICAgICAgICAgICBQb3N0bWFzdGVyID0+ICczNCBtJywKICAgICAgICAgICAgUmF3ICAgICAgICA9PiAnOCBoIDEyIG0nLAogICAgICAgIH0sCiAgICAgICAgQWN0aW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAxMDowMTozOScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDExOjIzOjA1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMTI6MTE6NTgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAxMjo0OToyMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMTM6NDU6MzknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnb3BlbicsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAxNDowMTozMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMTQ6MTk6MDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDE1OjMyOjE1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMTY6MDM6MDQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAxNjo0MzoyNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAxNzoyMzowOScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDE3OjQ4OjUxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMTk6MTA6MTgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDE5OjIzOjI0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAyMDowMTo0OCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDIwOjIwOjM2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMjE6MTc6NDknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMSAyMToyMjowMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDEgMjI6MDA6NDQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDIzOjE4OjM1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAxIDIzOjQxOjA4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMDA6MjU6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAwMDo0MDozMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMDA6NDE6MDYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDAwOjQ3OjQzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMDE6MjM6MDknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDAyOjE1OjA5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMDI6NTg6MzQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAwMzo0NzoxMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDA0OjQ4OjQyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDA0OjU1OjA4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMDU6MTk6MTMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAwNjoxNzo0MicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDA3OjEwOjI0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAwODoyNzo0MycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDA4OjM2OjE0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAwOTowMzowNCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDA5OjI3OjU5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAwOTo0NToyMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDEwOjUxOjIyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDEyOjA3OjEwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAxMjo0MjoxNScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDEzOjA5OjI3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMTQ6MDE6MDgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAxNToxMDoxMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDE1OjIxOjAzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMTY6Mjc6MTInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wMiAxNzoyNjo1MCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTAyIDE4OjE3OjI1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDIgMTg6MzM6MjQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGhlIGdyZWF0IHRlc3QgNCcsCiAgICAgICAgUXVldWUgID0+ICdQb3N0bWFzdGVyJywKICAgICAgICBEYXRlICAgPT4gJzIwMTQtMTEtMDUgMTc6MTk6NTEnLAogICAgICAgIFJlc3VsdCA9PiB7CiAgICAgICAgICAgIEp1bmsgICAgICAgPT4gJzEgaCA0IG0nLAogICAgICAgICAgICBNaXNjICAgICAgID0+ICc4IGggMzcgbScsCiAgICAgICAgICAgIFBvc3RtYXN0ZXIgPT4gJzExIG0nLAogICAgICAgICAgICBSYXcgICAgICAgID0+ICc2IGggMzkgbScsCiAgICAgICAgfSwKICAgICAgICBBY3Rpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA1IDE3OjMxOjA1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDUgMTg6Mjc6NTYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNSAxOTo0Mzo1MCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA1IDE5OjU2OjExJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNSAxOTo1NjozNycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA1IDIxOjEyOjQ5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDUgMjI6MTQ6NDgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNSAyMjozMDoxMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA1IDIzOjQ3OjA4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMDA6MDY6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMDA6NTg6NDMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDAyOjAzOjE4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMDM6MjM6MjAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAwNDowNzoyMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMDQ6MzU6MjgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnb3BlbicsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAwNTozMjoxNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDA1OjQ2OjI4JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMDY6NTA6MDgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAwNzoyNDoyOCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDA3OjUzOjE2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDA4OjI5OjQxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMDk6MTU6NTYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDEwOjM4OjI5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMTA6Mzk6MTcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAxMTozNDoxNScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDEyOjA5OjE3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMTI6MjQ6NTAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAxMzo0Nzo0OScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDEzOjU2OjM0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAxNDowOTo0NicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAxNDoyODo1NycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDE1OjExOjQ3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMTY6MDE6MzQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAxNjo0NzoyOScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMTc6MTc6NTInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnb3BlbicsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAxODozOTo1MycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDYgMTk6NTY6MDgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDIxOjEzOjQ2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAyMjoyMzo0NScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDIyOjUwOjAyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA2IDIyOjUyOjM1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNiAyMzozNjowNycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA3IDAwOjUzOjAwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNyAwMTowMDoxNScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA3IDAxOjE5OjUyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDcgMDE6MzI6NDQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTA3IDAyOjM0OjUxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDcgMDM6Mjg6NDgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0wNyAwNDoyNTo1OCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMDcgMDQ6Mzg6MDInLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGhlIGdyZWF0IHRlc3QgNScsCiAgICAgICAgUXVldWUgID0+ICdQb3N0bWFzdGVyJywKICAgICAgICBEYXRlICAgPT4gJzIwMTQtMTEtMTEgMjI6MTM6MTQnLAogICAgICAgIFJlc3VsdCA9PiB7CiAgICAgICAgICAgIEp1bmsgICAgICAgPT4gJzQgaCA0IG0nLAogICAgICAgICAgICBNaXNjICAgICAgID0+ICc1IGggNDYgbScsCiAgICAgICAgICAgIFBvc3RtYXN0ZXIgPT4gJzE0IG0nLAogICAgICAgICAgICBSYXcgICAgICAgID0+ICc2IGggMjIgbScsCiAgICAgICAgfSwKICAgICAgICBBY3Rpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTExIDIyOjI3OjQyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTEgMjM6MjU6NTknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDAwOjQxOjU5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMDE6NDg6MTcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAwMjowMDoxNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDAzOjEyOjI0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMDM6MjQ6MTYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAwNDoxMjo1NScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMDU6Mjc6MzYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAwNjo0OToyNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAwODoxMDo0MCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDA5OjI3OjE2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMDk6NTk6NDYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAxMDo0NDo0MycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDExOjU4OjA0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMTI6NDM6MzMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDEzOjI0OjA0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMTQ6MjE6MjcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAxNDoyODoyNycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDE0OjUxOjM2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDE0OjUxOjU3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMTU6Mjg6MDMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDE2OjQ3OjA5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMTc6MjE6MTEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAxNzo1MTozMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDE4OjAzOjMwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMTk6MDc6MzcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAxOToxNToyMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDIwOjE0OjUzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMjE6MTk6MjMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMjE6NDI6MzMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMiAyMzowMzowMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTIgMjM6MTc6MjAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEyIDIzOjM0OjA1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMyAwMDo0Mzo1MScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEzIDAxOjE2OjMxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMyAwMTo0Mjo0MScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTMgMDI6MDI6MTUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMyAwMjo0ODozNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTMgMDM6MjM6MDInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTMgMDQ6MTE6MzYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMyAwNDo0ODo1MycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEzIDA1OjUxOjIwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTMgMDY6NTU6MDInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEzIDA3OjQwOjA2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTMgMDc6NDc6NTcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMyAwOTowMTowOCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEzIDA5OjM4OjEzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xMyAwOTo1MTo0OScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTEzIDEwOjIxOjI1JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RoZSBncmVhdCB0ZXN0IDYnLAogICAgICAgIFF1ZXVlICA9PiAnUG9zdG1hc3RlcicsCiAgICAgICAgRGF0ZSAgID0+ICcyMDE0LTExLTE4IDEyOjE5OjIxJywKICAgICAgICBSZXN1bHQgPT4gewogICAgICAgICAgICBKdW5rICAgICAgID0+ICc3IGggNDMgbScsCiAgICAgICAgICAgIE1pc2MgICAgICAgPT4gJzUgaCA1NyBtJywKICAgICAgICAgICAgUG9zdG1hc3RlciA9PiAnMjUgbScsCiAgICAgICAgICAgIFJhdyAgICAgICAgPT4gJzUgaCA1NiBtJywKICAgICAgICB9LAogICAgICAgIEFjdGlvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTggMTI6NDQ6NTEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDEzOjUzOjQxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTggMTQ6MzI6MDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDE1OjQzOjU2JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOCAxNzowNzoxMicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDE3OjMwOjMwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOCAxODo1MjowMicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDE5OjE1OjQwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTggMjA6MTM6MTUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDIwOjU2OjMxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDIyOjE1OjM0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOCAyMzowNTo0NicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE4IDIzOjQzOjUzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOCAyMzo1NzozMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDAwOjQ4OjMxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMDE6NDQ6MjknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDAyOjE5OjE3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMDM6MzM6MDUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAwNDoyNTo0NScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMDU6MjA6MjQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMDU6NTY6MTInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAwNjoxNDozMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMDY6MzE6MjknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDA3OjEyOjUwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMDc6MjI6MjInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTdGF0ZSA9PiAnb3BlbicsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAwODowNzoxMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDA5OjIwOjQzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ0p1bmsnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMTA6MDg6MjgnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAxMToxODo1NycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDExOjQxOjA3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDEyOjEyOjU5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMTI6MjY6MjcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnUmF3JywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDEzOjE4OjE3JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAxMzoyODoyMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDE0OjQyOjE5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ29wZW4nLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMTU6NTE6MTknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAxNjozMTo0NScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdSYXcnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMTY6NTY6MjknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAxNzo1OTowNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDE4OjA2OjA0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3RhdGUgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDE5OjI0OjUzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ1JhdycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAyMDoxMToxNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdKdW5rJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDIwOjI3OjAyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMjA6Mzc6NTAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnSnVuaycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAyMTo1ODoxMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN0YXRlID0+ICdvcGVuJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTE5IDIyOjA4OjU5JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMTkgMjM6MDI6MzAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICBEYXRlICA9PiAnMjAxNC0xMS0xOSAyMzoyNDoxNycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFF1ZXVlID0+ICdNaXNjJywKICAgICAgICAgICAgICAgIERhdGUgID0+ICcyMDE0LTExLTIwIDAwOjQzOjIyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgUXVldWUgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgRGF0ZSAgPT4gJzIwMTQtMTEtMjAgMDE6MTA6NTAnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKIyBjcmVhdGUgbG9jYWwgb2JqZWN0cwpteSAkUXVldWVPYmplY3QgICAgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKbXkgJFN0YXRlT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJEhlbHBlck9iamVjdCAgICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJE9UT0JPU3RhdHNRdWV1ZVdvcmtpbmdUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpPVE9CT1N0YXRzUXVldWVXb3JraW5nVGltZScpOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIEZpeGVkVGltZVNldCgKICAgICAgICAkVGltZVN0YW1wMkVwb2NoLT4oIFRpbWVTdGFtcCA9PiAkVGVzdC0+e0RhdGV9ICksCiAgICApOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0X1RpdGxlJywKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJFRlc3QtPntRdWV1ZX0sCiAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRUaWNrZXRJRCwKICAgICAgICAkVGVzdC0+e05hbWV9IC4gJyAtIENyZWF0ZSB0aWNrZXQnLAogICAgKTsKCiAgICBmb3IgbXkgJEFjdGlvbiAoIEB7ICRUZXN0LT57QWN0aW9uc30gfSApIHsKICAgICAgICBGaXhlZFRpbWVTZXQoCiAgICAgICAgICAgICRUaW1lU3RhbXAyRXBvY2gtPiggVGltZVN0YW1wID0+ICRBY3Rpb24tPntEYXRlfSApLAogICAgICAgICk7CgogICAgICAgIGlmICggJEFjdGlvbi0+e1F1ZXVlfSApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRRdWV1ZVNldCgKICAgICAgICAgICAgICAgIFF1ZXVlICAgID0+ICRBY3Rpb24tPntRdWV1ZX0sCiAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICRUZXN0LT57TmFtZX0gLiAnIC0gVGlja2V0IG1vdmUgdG8gcXVldWUgXCcnIC4gJEFjdGlvbi0+e1F1ZXVlfSAuICdcJycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEFjdGlvbi0+e1N0YXRlfSApIHsKICAgICAgICAgICAgbXkgJFN0YXRlSUQgPSAkU3RhdGVPYmplY3QtPlN0YXRlTG9va3VwKAogICAgICAgICAgICAgICAgU3RhdGUgPT4gJEFjdGlvbi0+e1N0YXRlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN0YXRlSUQsCiAgICAgICAgICAgICAgICAkVGVzdC0+e05hbWV9IC4gJyAtIExvb2t1cCBzdGF0ZSBcJycgLiAkQWN0aW9uLT57U3RhdGV9IC4gJ1wnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVTZXQoCiAgICAgICAgICAgICAgICBTdGF0ZUlEICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgJFRlc3QtPntOYW1lfSAuICcgLSBUaWNrZXQgY2hhbmdlIHN0YXRlIHRvIFwnJyAuICRBY3Rpb24tPntTdGF0ZX0gLiAnXCcnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICAkT1RPQk9TdGF0c1F1ZXVlV29ya2luZ1RpbWVPYmplY3QtPl9Nb2RpZnlUaWNrZXRRdWV1ZVRpbWVzKAogICAgICAgIFRpY2tldCA9PiBcJVRpY2tldCwKICAgICk7CgogICAgZm9yIG15ICRRdWV1ZSAoIHNvcnQga2V5cyAleyAkVGVzdC0+e1Jlc3VsdH0gfSApIHsKICAgICAgICBteSAkUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoIFF1ZXVlID0+ICRRdWV1ZSApOwoKICAgICAgICBteSAkRXhwZWN0ZWRWYWx1ZSA9ICRUZXN0LT57UmVzdWx0fS0+eyRRdWV1ZX07CiAgICAgICAgbXkgJFJlc3VsdFZhbHVlICAgPSAkVGlja2V0eyAnUXVldWVfJyAuICRRdWV1ZUlEIC4gJ19UaW1lJyB9OwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXN1bHRWYWx1ZSwKICAgICAgICAgICAgJEV4cGVjdGVkVmFsdWUsCiAgICAgICAgICAgICRUZXN0LT57TmFtZX0gLiAnIC0gQ2hlY2sgcmVzdWx0IHZhbHVlIGZvciBxdWV1ZSBcJycgLiAkUXVldWUgLiAnXCcnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJERlbGV0ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRGVsZXRlLAogICAgICAgICRUZXN0LT57TmFtZX0gLiAnIC0gRGVsZXRlIHRpY2tldCBpZCBcJycgLiAkVGlja2V0SUQgLiAnXCcnLAogICAgKTsKfQpjb250aW51ZSB7CiAgICBGaXhlZFRpbWVVbnNldCgpOwp9CgokU2VsZi0+RG9uZVRlc3RpbmcoKTsK</File>
        <File Location="scripts/test/ResponseStatistic.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgdXRmODsKCiMgU2V0IHVwIHRoZSB0ZXN0IGRyaXZlciAkU2VsZiB3aGVuIHdlIGFyZSBydW5uaW5nIGFzIGEgc3RhbmRhbG9uZSBzY3JpcHQuCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6Ok1vY2tUaW1lIHF3KDphbGwpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgZGVmaW5lIGxvY2FsIHZhcmlhYmxlcwpteSAkVXNlcklEID0gMTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnID0+IHsKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgIH0sCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRpbWVTdGFtcDJFcG9jaCA9IHN1YiB7CiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVGltZVN0YW1wICAgICAgPSAkUGFyYW17VGltZVN0YW1wfTsKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRUaW1lU3RhbXAsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+VG9FcG9jaCgpIGlmICREYXRlVGltZU9iamVjdDsKICAgIHJldHVybjsKfTsKCiMgZ2V0IHN0YXRzIG9iamVjdApteSAkU3RhdHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKTsKCiRTZWxmLT57VW5pdFRlc3RQcmVmaXh9ID0gJ1VuaXRUZXN0LU9UT0JPU3RhdHNSZXNwb25zZVN0YXRpc3RpYyc7CgojIGFkZCBzdGF0cwpteSAkU3RhdElEID0gJFN0YXRzT2JqZWN0LT5TdGF0c0FkZCggVXNlcklEID0+ICRVc2VySUQgKTsKJFNlbGYtPlRydWUoCiAgICAkU3RhdElEID4gMCwKICAgICdDcmVhdGUgU3RhdCcsCik7CgpteSAkVXBkYXRlID0gJFN0YXRzT2JqZWN0LT5TdGF0c1VwZGF0ZSgKICAgIFN0YXRJRCA9PiAkU3RhdElELAogICAgSGFzaCAgID0+IHsKICAgICAgICBUaXRsZSAgICAgICAgPT4gJ09UT0JPU3RhdHNSZXNwb25zZVN0YXRpc3RpYyBVbml0IFRlc3QnLAogICAgICAgIERlc2NyaXB0aW9uICA9PiAnVGVzdCBSZXN1bHRzJywKICAgICAgICBPYmplY3QgICAgICAgPT4gJycsCiAgICAgICAgRm9ybWF0ICAgICAgID0+IFsnQ1NWJ10sCiAgICAgICAgT2JqZWN0TW9kdWxlID0+ICdLZXJuZWw6OlN5c3RlbTo6U3RhdHM6OlN0YXRpYzo6T1RPQk9TdGF0c1Jlc3BvbnNlU3RhdGlzdGljJywKICAgICAgICBQZXJtaXNzaW9uICAgPT4gWycxJ10sCiAgICAgICAgU3RhdFR5cGUgICAgID0+ICdzdGF0aWMnLAogICAgICAgIFZhbGlkICAgICAgICA9PiAnMScsCiAgICB9LAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFVwZGF0ZSwKICAgICdVcGRhdGUgU3RhdCcsCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKIyBnZXQgcXVldWUgb2JqZWN0Cm15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwoKIyBjcmVhdGUgdGVzdCBxdWV1ZXMKbXkgJVF1ZXVlczsKZm9yIG15ICROdW1iZXIgKCAxIC4uIDMgKSB7CiAgICBteSAkUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVBZGQoCiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICRTZWxmLT57VW5pdFRlc3RQcmVmaXh9IC4gJE51bWJlciAuICRSYW5kb21JRCwKICAgICAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgICAgICBHcm91cElEICAgICAgICAgPT4gMSwKICAgICAgICBTeXN0ZW1BZGRyZXNzSUQgPT4gMSwKICAgICAgICBTYWx1dGF0aW9uSUQgICAgPT4gMSwKICAgICAgICBTaWduYXR1cmVJRCAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkUXVldWVJRCwKICAgICAgICAnQ3JlYXRlIHRlc3QgcXVldWUgJyAuICROdW1iZXIsCiAgICApOwogICAgJFF1ZXVlc3skTnVtYmVyfSA9ICRRdWV1ZUlEOwp9CgojIGdldCBzdGFuZGFyZCB0ZW1wbGF0ZSBvYmplY3QKbXkgJFN0YW5kYXJkVGVtcGxhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScpOwoKIyBjcmVhdGUgcmVzcG9uc2UgdGVtcGxhdGVzCm15ICVSZXNwb25zZVRlbXBsYXRlczsKZm9yIG15ICROdW1iZXIgKCAxIC4uIDMgKSB7CiAgICBteSAkUmVzcG9uc2VUZW1wbGF0ZUlEID0gJFN0YW5kYXJkVGVtcGxhdGVPYmplY3QtPlN0YW5kYXJkVGVtcGxhdGVBZGQoCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRTZWxmLT57VW5pdFRlc3RQcmVmaXh9IC4gJE51bWJlciAuICRSYW5kb21JRCwKICAgICAgICBUZW1wbGF0ZSAgICAgPT4gJ1RoYW5rIHlvdSBmb3IgeW91ciBlbWFpbC4nLAogICAgICAgIENvbnRlbnRUeXBlICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgVGVtcGxhdGVUeXBlID0+ICdBbnN3ZXInLAogICAgICAgIFZhbGlkSUQgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRSZXNwb25zZVRlbXBsYXRlSUQsCiAgICAgICAgJ1JlbXBvc2VUZW1wbGF0ZSB0ZXN0IHF1ZXVlICcgLiAkTnVtYmVyLAogICAgKTsKICAgICRSZXNwb25zZVRlbXBsYXRlc3skTnVtYmVyfSA9ICRSZXNwb25zZVRlbXBsYXRlSUQ7Cn0KCiMgZGVmaW5pdGlvbiBvZiB0ZXN0cwpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICdTaW5nbGUgcmVzcG9uc2Ugd2l0aG91dCB0aW1lZnJhbWUnLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICRSZXNwb25zZVRlbXBsYXRlc3sxfSA9PiBbCiAgICAgICAgICAgICAgICAwLCAgICAjIFRlbXBsYXRlcyBmb3IgUXVldWUgMQogICAgICAgICAgICAgICAgMCwgICAgIyBUZW1wbGF0ZXMgZm9yIFF1ZXVlIDIKICAgICAgICAgICAgICAgIDAsICAgICMgVG90YWwKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgVGlja2V0RGF0YSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywgICAgICAgICAgICAgIyAnTmV3VGlja2V0JyAob3IgZW1wdHkpLCAnUmVzcG9uc2UnCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgPT4gJFF1ZXVlc3sxfSwgICAgICAgICAgICAgICMgMSwgMiwgb3IgMyAoMyB3aWxsIG5vdCBiZSByZXBvcnRlZCkKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAnMTk4OS0xMi0zMCAxNzowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJ1Jlc3BvbnNlJywgICAgICAgICAgICAgICMgJ05ld1RpY2tldCcgKG9yIGVtcHR5KSwgJ1Jlc3BvbnNlJwogICAgICAgICAgICAgICAgUmVzcG9uc2VJRCA9PiAkUmVzcG9uc2VUZW1wbGF0ZXN7MX0sCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgID0+ICcxOTg5LTEyLTMwIDE3OjAxOjAwJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJ1NpbmdsZSByZXNwb25zZSB3aXRoaW4gdGltZWZyYW1lJywKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAkUmVzcG9uc2VUZW1wbGF0ZXN7MX0gPT4gWwogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICBUaWNrZXREYXRhID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLAogICAgICAgICAgICAgICAgUXVldWVJRCAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJzE5ODktMTItMzEgMTc6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDE6MDAnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICA9PiAnU2luZ2xlIHJlc3BvbnNlIHdpdGhpbiB0aW1lZnJhbWUgKG5vdCBjb3VudGVkIHF1ZXVlKScsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHt9LAogICAgICAgIFRpY2tldERhdGEgICAgICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnTmV3VGlja2V0JywKICAgICAgICAgICAgICAgIFF1ZXVlSUQgICA9PiAkUXVldWVzezF9LAogICAgICAgICAgICAgICAgVGltZVN0YW1wID0+ICcxOTg5LTEyLTMxIDE3OjAwOjAwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQWN0aW9uICAgICA9PiAnUmVzcG9uc2UnLAogICAgICAgICAgICAgICAgUXVldWVJRCAgICA9PiAkUXVldWVzezN9LAogICAgICAgICAgICAgICAgUmVzcG9uc2VJRCA9PiAkUmVzcG9uc2VUZW1wbGF0ZXN7MX0sCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgID0+ICcxOTg5LTEyLTMxIDE3OjAxOjAwJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJ011bHRpcGxlIHJlc3BvbnNlIHdpdGhpbiB0aW1lZnJhbWUgKHNhbWUgcXVldWUpJywKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAkUmVzcG9uc2VUZW1wbGF0ZXN7MX0gPT4gWwogICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAzLAogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICBUaWNrZXREYXRhID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLAogICAgICAgICAgICAgICAgUXVldWVJRCAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJzE5ODktMTItMzEgMTc6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDE6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDI6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDI6MDAnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICA9PiAnTXVsdGlwbGUgcmVzcG9uc2Ugd2l0aGluIHRpbWVmcmFtZSAoc2FtZSBxdWV1ZSkgZGlmZmVyZW50IHJlc3BvbnNlcycsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgJFJlc3BvbnNlVGVtcGxhdGVzezF9ID0+IFsKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJFJlc3BvbnNlVGVtcGxhdGVzezJ9ID0+IFsKICAgICAgICAgICAgICAgIDIsCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFRpY2tldERhdGEgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgPT4gJFF1ZXVlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9PiAnMTk4OS0xMi0zMSAxNzowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJ1Jlc3BvbnNlJywKICAgICAgICAgICAgICAgIFJlc3BvbnNlSUQgPT4gJFJlc3BvbnNlVGVtcGxhdGVzezJ9LAogICAgICAgICAgICAgICAgVGltZVN0YW1wICA9PiAnMTk4OS0xMi0zMSAxNzowMTowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJ1Jlc3BvbnNlJywKICAgICAgICAgICAgICAgIFJlc3BvbnNlSUQgPT4gJFJlc3BvbnNlVGVtcGxhdGVzezF9LAogICAgICAgICAgICAgICAgVGltZVN0YW1wICA9PiAnMTk4OS0xMi0zMSAxNzowMjowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgPT4gJ1Jlc3BvbnNlJywKICAgICAgICAgICAgICAgIFJlc3BvbnNlSUQgPT4gJFJlc3BvbnNlVGVtcGxhdGVzezJ9LAogICAgICAgICAgICAgICAgVGltZVN0YW1wICA9PiAnMTk4OS0xMi0zMSAxNzowMjowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICdNdWx0aXBsZSByZXNwb25zZSB3aXRoaW4gdGltZWZyYW1lIChkaWZmZXJlbnQgcXVldWVzKSBkaWZmZXJlbnQgcmVzcG9uc2VzIDInLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICRSZXNwb25zZVRlbXBsYXRlc3sxfSA9PiBbCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDIsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICRSZXNwb25zZVRlbXBsYXRlc3syfSA9PiBbCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDIsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBUaWNrZXREYXRhID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLAogICAgICAgICAgICAgICAgUXVldWVJRCAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJzE5ODktMTItMzEgMTc6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7Mn0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDE6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7Mn0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3syfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDI6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDM6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3syfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDQ6MDAnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICA9PiAnTXVsdGlwbGUgcmVzcG9uc2Ugd2l0aGluIHRpbWVmcmFtZSAoZGlmZmVyZW50IHF1ZXVlcykgc2FtZSByZXNwb25zZXMnLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICRSZXNwb25zZVRlbXBsYXRlc3sxfSA9PiBbCiAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgIDQsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBUaWNrZXREYXRhID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdOZXdUaWNrZXQnLAogICAgICAgICAgICAgICAgUXVldWVJRCAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBUaW1lU3RhbXAgPT4gJzE5ODktMTItMzEgMTc6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7Mn0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDE6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7Mn0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDI6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDM6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgID0+ICdSZXNwb25zZScsCiAgICAgICAgICAgICAgICBRdWV1ZUlEICAgID0+ICRRdWV1ZXN7MX0sCiAgICAgICAgICAgICAgICBSZXNwb25zZUlEID0+ICRSZXNwb25zZVRlbXBsYXRlc3sxfSwKICAgICAgICAgICAgICAgIFRpbWVTdGFtcCAgPT4gJzE5ODktMTItMzEgMTc6MDQ6MDAnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKbXkgJUV4cGVjdGVkUmVzdWx0czsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIHNldCBhY3Rpb24gdGltZQpGaXhlZFRpbWVTZXQoCiAgICAkVGltZVN0YW1wMkVwb2NoLT4oIFRpbWVTdGFtcCA9PiAnMTk4OS0xMi0zMSAxNzowMDowMCcgKSwKKTsKCiMgZXhlY3V0ZSB0ZXN0cwpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgbXkgQEFjdGlvbnMgICAgID0gQHsgJFRlc3QtPntUaWNrZXREYXRhfSB9OwogICAgbXkgJEZpcnN0QWN0aW9uID0gc2hpZnQgQEFjdGlvbnM7CgogICAgIyBzZXQgYWN0aW9uIHRpbWUKICAgIGlmICggJEZpcnN0QWN0aW9uLT57VGltZVN0YW1wfSBuZSAnMTk4OS0xMi0zMSAxNzowMDowMCcgKSB7CiAgICAgICAgRml4ZWRUaW1lU2V0KAogICAgICAgICAgICAkVGltZVN0YW1wMkVwb2NoLT4oIFRpbWVTdGFtcCA9PiAkRmlyc3RBY3Rpb24tPntUaW1lU3RhbXB9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgJXskRmlyc3RBY3Rpb259LAogICAgICAgIFRpdGxlICAgICAgPT4gJFNlbGYtPntVbml0VGVzdFByZWZpeH0gLiAnXycgLiAkVGVzdC0+e05hbWV9LAogICAgICAgIExvY2sgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgU3RhdGUgICAgICA9PiAnb3BlbicsCiAgICAgICAgUHJpb3JpdHlJRCA9PiAxLAogICAgICAgIE93bmVySUQgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFRpY2tldElELAogICAgICAgICdDcmVhdGUgdGVzdCB0aWNrZXQgJyAuICRUaWNrZXRJRCwKICAgICk7CiAgICBuZXh0IFRJQ0tFVCBpZiAhJFRpY2tldElEOwoKICAgICMgdXNlIGFueSBBcnRpY2xlSURzIGFzIHRoZXkgYXJlIG5vdCBjaGVja2VkCiAgICBteSAkUmVwbHlBcnRpY2xlSUQgPSAxOwogICAgbXkgJEFydGljbGVJRCAgICAgID0gMTsKCiAgICBmb3IgbXkgJEFjdGlvbiAoQEFjdGlvbnMpIHsKCiAgICAgICAgIyBzZXQgYWN0aW9uIHRpbWUKICAgICAgICBGaXhlZFRpbWVTZXQoCiAgICAgICAgICAgICRUaW1lU3RhbXAyRXBvY2gtPiggVGltZVN0YW1wID0+ICRBY3Rpb24tPntUaW1lU3RhbXB9ICksCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQWN0aW9uLT57QWN0aW9ufSBlcSAnUmVzcG9uc2UnICkgewoKICAgICAgICAgICAgaWYgKCAkQWN0aW9uLT57UXVldWVJRH0gKSB7CiAgICAgICAgICAgICAgICBteSAkTW92ZU9rID0gJFRpY2tldE9iamVjdC0+VGlja2V0UXVldWVTZXQoCiAgICAgICAgICAgICAgICAgICAgUXVldWVJRCAgICAgICAgICAgID0+ICRBY3Rpb24tPntRdWV1ZUlEfSwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgIFNlbmROb05vdGlmaWNhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgICRNb3ZlT2ssCiAgICAgICAgICAgICAgICAgICAgJ01vdmUgdGVzdCB0aWNrZXQgJyAuICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2ltdWxhdGUgdGhhdCBhIHJlc3BvbnNlIGhpc3RvcnkgZW50cnkgaGFzIGJlZW4gYWRkZWQKICAgICAgICAgICAgbXkgJEhpc3RvcnlBZGRzdWNjZXNzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiUmVzcG9uc2VUZW1wbGF0ZSAoJEFjdGlvbi0+e1Jlc3BvbnNlSUR9LyRSZXBseUFydGljbGVJRC8kQXJ0aWNsZUlEKSIsCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIENyZWF0ZVVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSGlzdG9yeUFkZHN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAnU2ltdWxhdGVkIHJlc3BvbnNlIGhpc3RvcnkgYWRkZWQgZm9yICcgLiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc3VtIGV4cGVjdGVkIHJlc3VsdHMKICAgICMgc2V0IHRoZW0gb24gYSBzdHJ1Y3R1cmUgZWFzeSB0byBjb21wYXJlCiAgICBSRVNQT05TRUlEOgogICAgZm9yIG15ICRSZXNwb25zZUlEICggc29ydCBrZXlzICV7ICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSB9ICkgewogICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfS0+eyRSZXNwb25zZUlEfSB9ICkgewoKICAgICAgICAgICAgIyBnZXQgcmVzcG9uc2UgbmFtZQogICAgICAgICAgICBteSAkUmVzcG9uc2UgPSAkU3RhbmRhcmRUZW1wbGF0ZU9iamVjdC0+U3RhbmRhcmRUZW1wbGF0ZUxvb2t1cCgKICAgICAgICAgICAgICAgIFN0YW5kYXJkVGVtcGxhdGVJRCA9PiAkUmVzcG9uc2VJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRFeHBlY3RlZFJlc3VsdHN7JFJlc3BvbnNlfS0+WyRJbmRleF0gKz0gJFZhbHVlOwogICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICB9CiAgICB9Cn0KY29udGludWUgewogICAgRml4ZWRUaW1lVW5zZXQoKTsKfQoKIyBjbGVhciBjYWNoZQokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgpOwoKIyBydW4gc3RhdCBhZ2FpbnN0IHRlc3QgdGlja2V0cwpteSAkU3RhdEFycmF5ID0gJFN0YXRzT2JqZWN0LT5TdGF0c1J1bigKICAgIFN0YXRJRCAgID0+ICRTdGF0SUQsCiAgICBHZXRQYXJhbSA9PiB7CiAgICAgICAgU3RhcnRZZWFyICA9PiAxOTg5LAogICAgICAgIFN0YXJ0TW9udGggPT4gMTIsCiAgICAgICAgU3RhcnREYXkgICA9PiAzMSwKICAgICAgICBFbmRZZWFyICAgID0+IDE5OTAsCiAgICAgICAgRW5kTW9udGggICA9PiAxLAogICAgICAgIEVuZERheSAgICAgPT4gMSwKICAgICAgICBRdWV1ZUlEcyAgID0+IFsgJFF1ZXVlc3sxfSwgJFF1ZXVlc3syfSBdCiAgICB9LAogICAgVXNlcklEID0+ICRVc2VySUQsCik7Cm15IEBTdGF0UmVzdWx0cyA9IEB7JFN0YXRBcnJheX07CiRTZWxmLT5UcnVlKAogICAgJFN0YXRSZXN1bHRzWzBdLAogICAgJ1J1biBTdGF0JywKKTsKCiMgcmVtb3ZlICh1bm5lZWRlZCkgc3RhdCBoZWFkZXJzCnNoaWZ0IEBTdGF0UmVzdWx0czsKc2hpZnQgQFN0YXRSZXN1bHRzOwokU2VsZi0+VHJ1ZSgKICAgICRTdGF0UmVzdWx0c1swXSwKICAgICdIYXZlIFN0YXQgcmVzdWx0cycsCik7CgpteSAlU3RhdERhdGE7CgojIGNoZWNrIHN0YXRzIHJlc3VsdApSRVNVTFQ6CmZvciBteSAkUmVzdWx0IChAU3RhdFJlc3VsdHMpIHsKCiAgICAjIGRpc2NhcmQgcmVzdWx0cyBmcm9tIG90aGVyIHRlbXBsYXRlcwogICAgbmV4dCBSRVNVTFQgaWYgJFJlc3VsdC0+WzBdICF+IG17VW5pdFRlc3QtT1RPQk9TdGF0c1Jlc3BvbnNlU3RhdGlzdGljWzF8Ml10ZXN0XGQrfTsKCiAgICBteSBAU3RvcmVSZXN1bHQgPSBAeyRSZXN1bHR9OwoKICAgICMgcmVtb3ZlIGZpcnN0IGVsZW1lbnQgKHJlc3BvbnNlIHRlbXBsYXRlIG5hbWUpCiAgICBteSAkUmVzcG9uc2UgPSBzcGxpY2UgQFN0b3JlUmVzdWx0LCAwLCAxOwoKICAgICMgc2V0IHRoZW0gaW4gYSBzdHJ1Y3R1cmUgZWFzeSB0byBjb21wYXJlCiAgICAkU3RhdERhdGF7JFJlc3BvbnNlfSA9IFxAU3RvcmVSZXN1bHQ7Cn0KCiMgYWN0dWFsIHRlc3QgcmVzdWx0CiRTZWxmLT5Jc0RlZXBseSgKICAgIFwlU3RhdERhdGEsCiAgICBcJUV4cGVjdGVkUmVzdWx0cywKICAgICdTdGF0aXN0aWMgcmVzdWx0cycsCik7CgojIG5vIGNsZWFudXAgaXMgbmVlZGVkIGFzIHRoZSB1bml0IHRlc3Qgcm9sbHMgYmFjayB0aGUgdHJhbnNhY3Rpb24KCiRTZWxmLT5Eb25lVGVzdGluZygpOwo=</File>
        <File Location="var/packagesetup/StatisticsExtendedQueueStats.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpTdGF0aXN0aWNzRXh0ZW5kZWRRdWV1ZVN0YXRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpYTUwnLAopOwoKPWhlYWQxIE5BTUUKCnZhcjo6cGFja2FnZXNldHVwOjpTdGF0aXN0aWNzRXh0ZW5kZWRRdWV1ZVN0YXRzIC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1jdXQKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENvZGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6RXh0ZW5kZWRUaWNrZXRTdGF0cycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENyZWF0ZSBjb21tb24gb2JqZWN0cyB3aXRoIGZyZXNoIGRlZmF1bHQgY29uZmlnLgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKCk7CgogICAgIyBkZWZpbmUgVXNlcklEIHBhcmFtZXRlciBmb3IgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBzdGF0cyBvYmplY3QKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4CiAgICAkU2VsZi0+e0ZpbGVQcmVmaXh9ID0gJ09UT0JPU3RhdHMnOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbmFtZSBwb3RlbnRpYWxseSBleGlzdGluZyBzdGF0cyBmcm9tIG1lcmdlZCBwYWNrYWdlCiAgICAkU2VsZi0+X1N0YXRzUmVuYW1lKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGUoKQoKcnVuIHRoZSBjb2RlIHVwZ3JhZGUgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGUoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVbmluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdW5pbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNVbmluc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfU3RhdHNSZW5hbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkWE1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpOwoKICAgICMgZmV0Y2ggcmVsZXZhbnQgZGF0YSAtIHVzZSBMaXN0IGFzIGNvbmRpdGlvbnMgZm9yIFNlYXJjaCBhcmUgdW5wbGVhc2FudCB0byByZWFkCiAgICBteSBAS2V5cyA9ICRYTUxPYmplY3QtPlhNTEhhc2hMaXN0KAogICAgICAgIFR5cGUgPT4gJ1N0YXRzJywKICAgICk7CgogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKEBLZXlzKSB7CiAgICAgICAgbXkgQFhNTEhhc2ggPSAkWE1MT2JqZWN0LT5YTUxIYXNoR2V0KAogICAgICAgICAgICBUeXBlID0+ICdTdGF0cycsCiAgICAgICAgICAgIEtleSAgPT4gJEtleSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEtFWSB1bmxlc3MgQFhNTEhhc2g7CgogICAgICAgICMgcmVwbGFjZSBPYmplY3RNb2R1bGUgbmFtZQogICAgICAgIHsKICAgICAgICAgICAgbXkgJE5hbWUgPSAkWE1MSGFzaFswXXsnb3RvYm9fc3RhdHMnfVsxXXtPYmplY3RNb2R1bGV9WzFde0NvbnRlbnR9OwoKICAgICAgICAgICAgbmV4dCBLRVkKICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgJE5hbWUgZXEgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6T1RSU1N0YXRzUXVldWVXb3JraW5nVGltZScKICAgICAgICAgICAgICAgICAgICB8fCAkTmFtZSBlcSAnS2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpPVFJTU3RhdHNRdWV1ZVJlc3RpbmdUaW1lJwogICAgICAgICAgICAgICAgICAgIHx8ICROYW1lIGVxICdLZXJuZWw6OlN5c3RlbTo6U3RhdHM6OlN0YXRpYzo6T1RSU1N0YXRzUmVzcG9uc2VTdGF0aXN0aWMnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgJE5hbWUgPX4gcy9PVFJTU3RhdHMvLzsKICAgICAgICAgICAgJFhNTEhhc2hbMF17J290b2JvX3N0YXRzJ31bMV17T2JqZWN0TW9kdWxlfVsxXXtDb250ZW50fSA9ICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyByZXBsYWNlIEZpbGUgbmFtZQogICAgICAgIGlmICggZXhpc3RzICRYTUxIYXNoWzBdeydvdG9ib19zdGF0cyd9WzFde0ZpbGV9ICkgewogICAgICAgICAgICBteSAkTmFtZSA9ICRYTUxIYXNoWzBdeydvdG9ib19zdGF0cyd9WzFde0ZpbGV9WzFde0NvbnRlbnR9OwoKICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICROYW1lOwoKICAgICAgICAgICAgbmV4dCBLRVkKICAgICAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAgICAgJE5hbWUgZXEgJ09UUlNTdGF0c1F1ZXVlV29ya2luZ1RpbWUnCiAgICAgICAgICAgICAgICAgICAgfHwgJE5hbWUgZXEgJ09UUlNTdGF0c1F1ZXVlUmVzdGluZ1RpbWUnCiAgICAgICAgICAgICAgICAgICAgfHwgJE5hbWUgZXEgJ09UUlNTdGF0c1Jlc3BvbnNlU3RhdGlzdGljJwogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICROYW1lID1+IHMvT1RSU1N0YXRzLy87CiAgICAgICAgICAgICRYTUxIYXNoWzBdeydvdG9ib19zdGF0cyd9WzFde0ZpbGV9WzFde0NvbnRlbnR9ID0gJE5hbWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRYTUxPYmplY3QtPlhNTEhhc2hVcGRhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0YXRzJywKICAgICAgICAgICAgS2V5ICAgICA9PiAkS2V5LAogICAgICAgICAgICBYTUxIYXNoID0+IFxAWE1MSGFzaCwKICAgICAgICApOwogICAgfQoKICAgICMgcmVuYW1lIChyZWFkLCBkZWxldGUgYW5kIHdyaXRlKSBpbnN0YWxsZWQueG1sIGZpbGUKICAgIHsKICAgICAgICBteSAkRmlsZU9sZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy92YXIvc3RhdHMvT1RSU1N0YXRzLVJlc3BvbnNlU3RhdGlzdGljLnhtbC5pbnN0YWxsZWQnOwogICAgICAgIG15ICRGaWxlTmV3ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9zdGF0cy9PVE9CT1N0YXRzLVJlc3BvbnNlU3RhdGlzdGljLnhtbC5pbnN0YWxsZWQnOwogICAgICAgIGlmICggLWUgJEZpbGVPbGQgKSB7CgogICAgICAgICAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICAgICAgICAgIG15ICRDb250ZW50ICAgID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICAgICAgTG9jYXRpb24gPT4gJEZpbGVPbGQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTWFpbk9iamVjdC0+RmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIExvY2F0aW9uID0+ICRGaWxlT2xkLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgQ29udGVudCAgPT4gJENvbnRlbnQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZU5ldywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="var/stats/OTOBOStats-ResponseStatistic.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdG9ib19zdGF0cz4KPENhY2hlPjA8L0NhY2hlPgo8RGVzY3JpcHRpb24+QSBzdGF0aXN0aWMgdG8gY291bnQgdGhlIHJlc3BvbnNlcyB1c2VkLCBpLmUuIGhvdyBtYW55IHRpbWVzIGhhcyB0aGUgcmVzcG9uc2UgJnF1b3Q7RGVsaXZlcnkgTWlzc2luZyZxdW90OyBiZSB1c2VkIGluIHRoZSBsYXN0IDMwIGRheXMuPC9EZXNjcmlwdGlvbj4KPEZvcm1hdD5DU1Y8L0Zvcm1hdD4KPEZvcm1hdD5QcmludDwvRm9ybWF0Pgo8R3JhcGhTaXplPjwvR3JhcGhTaXplPgo8T2JqZWN0PjwvT2JqZWN0Pgo8T2JqZWN0TW9kdWxlPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpSZXNwb25zZVN0YXRpc3RpYzwvT2JqZWN0TW9kdWxlPgo8UGVybWlzc2lvbj5hZG1pbjwvUGVybWlzc2lvbj4KPFBlcm1pc3Npb24+c3RhdHM8L1Blcm1pc3Npb24+CjxTdGF0VHlwZT5zdGF0aWM8L1N0YXRUeXBlPgo8U3VtQ29sPjA8L1N1bUNvbD4KPFN1bVJvdz4wPC9TdW1Sb3c+CjxUaXRsZT5SZXNwb25zZSBTdGF0aXN0aWM8L1RpdGxlPgo8VmFsaWQ+MTwvVmFsaWQ+Cjwvb3RvYm9fc3RhdHM+Cg==</File>
        <File Location="doc/en/Statistics-ExtendedQueueStats.pdf" Permission="644" Encode="Base64">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</File>
    </Filelist>
</otrs_package>