<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>GenericAgent-NotificationTags</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:18:46" Version="11.1.1">Initial release for OTOBO 11.1.</ChangeLog>
    <Description Lang="en">Provides the Generic Agent Job Management feature with the ability to use field tags</Description>
    <Framework>11.1.x</Framework>
    <BuildCommitID>007f40c0cf6ada6a36919f7267425d492de3ba4e</BuildCommitID>
    <BuildDate>2026-06-26 16:18:49</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminGenericAgent.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2Mzk3ZjM2ZmYwOWQwODVlNGMzMWQ1ZGRhNDExMGE3MzMxOWY5MDZkIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkdlbmVyaWNBZ2VudC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjwhLS0gc3RhcnQgZm9ybSAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiR2VuZXJpYyBBZ2VudCBKb2IgTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdHZW5lcmljIEFnZW50IEpvYiBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5TdWJhY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdVcGRhdGUnICVdCiAgICAgICAgICAgIFslIElGIERhdGEuUHJvZmlsZSAlXQogICAgICAgICAgICAgICAgWyUgVVNFIEVkaXRKb2IgPSBTdHJpbmcoVHJhbnNsYXRlKCJFZGl0IEpvYiIpKSAlXQogICAgICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdEpvYi5hcHBlbmQoICc6ICcsIERhdGEuUHJvZmlsZSApIH0pICVdCiAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEpvYiIpLH0pICVdCiAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgIFslIENBU0UgJ1J1bicgJV0KICAgICAgICAgICAgWyUgVVNFIFJ1bkpvYiA9IFN0cmluZyhUcmFuc2xhdGUoIlJ1biBKb2IiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gUnVuSm9iLmFwcGVuZCggJzogJywgRGF0YS5Qcm9maWxlICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNsdWRlSW52YWxpZCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBqb2JzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIGpvYnMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2x1ZGVJbnZhbGlkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFjdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249VXBkYXRlIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBKb2IiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXIiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyR2VuZXJpY0FnZW50Sm9icyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIEpvYnMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyR2VuZXJpY0FnZW50Sm9icyIgY2xhc3M9IkZpbHRlckJveCIgcGxhY2Vob2xkZXI9IlslIFRyYW5zbGF0ZSgiSnVzdCBzdGFydCB0eXBpbmcgdG8gZmlsdGVyLi4uIikgfCBodG1sICVdIiBuYW1lPSJGaWx0ZXJHZW5lcmljQWdlbnRKb2JzIiB2YWx1ZT0iIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIGpvYnMiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkltcG9ydEV4cG9ydFdpZGdldCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0nV2lkZ2V0U2ltcGxlJyBpZD0nR2VuZXJpY0FnZW50SW1wb3J0RXhwb3J0V2lkZ2V0Jz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nSGVhZGVyJz4KICAgICAgICAgICAgICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJbXBvcnQgLyBFeHBvcnQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvaDE+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgnSW1wb3J0IC8gRXhwb3J0JyksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgJV0KCiAgICAgICAgICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ29udGVudCc+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0nRmllbGRFeHBsYW5hdGlvbic+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCdIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBnZW5lcmljIGFnZW50cyB0byB5b3VyIHN5c3RlbS4gVGhlIGZpbGUgbmVlZHMgdG8gYmUgaW4gLnltbCBmb3JtYXQgYXMgZXhwb3J0ZWQgYnkgdGhlIGdlbmVyaWMgYWdlbnQgbWFuYWdlbWVudCBtb2R1bGUuJykgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9J0FjdGlvbkxpc3QgU3BhY2luZ1RvcCc+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249J1slIEVudigiQ0dJSGFuZGxlIikgJV0nIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgY2xhc3M9J1ZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nQ2hhbGxlbmdlVG9rZW4nIHZhbHVlPVslIEVudigiVXNlckNoYWxsZW5nZVRva2VuIikgfCBKU09OICVdPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nQWN0aW9uJyB2YWx1ZT0nQWRtaW5HZW5lcmljQWdlbnRJbXBvcnRFeHBvcnQnLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J1N1YmFjdGlvbicgdmFsdWU9J0ltcG9ydCcvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J0ZpbGVVcGxvYWQnIGlkPSdGaWxlVXBsb2FkJyB0eXBlPSdmaWxlJyBzaXplPScxOCcgY2xhc3M9J0ZpeGVkIFcxMDBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkZpbGVVcGxvYWRJbnZhbGlkIHwgaHRtbCAlXScvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0nRmlsZVVwbG9hZEVycm9yJyBjbGFzcz0nVG9vbHRpcEVycm9yTWVzc2FnZSc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9J0ZpbGVVcGxvYWRTZXJ2ZXJFcnJvcicgY2xhc3M9J1Rvb2x0aXBFcnJvck1lc3NhZ2UnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIFRyYW5zbGF0ZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0nU3BhY2luZ1RvcCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2NoZWNrYm94JyBpZD0nT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllc0V4YW1wbGUnIG5hbWU9J092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMnIHZhbHVlPScxJy8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0nT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllc0V4YW1wbGUnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ092ZXJ3cml0ZSBleGlzdGluZyBlbnRpdGllcycpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIgU3BhY2luZ1RvcCcgaWQ9J0dlbmVyaWNBZ2VudEltcG9ydCcgdHlwZT0nc3VibWl0Jz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnR2VuZXJpYyBBZ2VudHMgSW1wb3J0JykgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluR2VuZXJpY0FnZW50SW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1FeHBvcnQnIGlkPSdHZW5lcmljQWdlbnRFeHBvcnQnIGNsYXNzPSdDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlcic+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtZG93bmxvYWQnPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoJ0dlbmVyaWMgQWdlbnRzIEV4cG9ydCcpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW1wb3J0RXhwb3J0V2lkZ2V0IikgJV0KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIGlkPSJHZW5lcmljQWdlbnRKb2JzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiTGFzdCBydW4iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlJ1biBOb3chIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFslIElGIERhdGEuVmFsaWQgIT0gMSVdY2xhc3M9IkludmFsaWQiWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249VXBkYXRlO1Byb2ZpbGU9WyUgRGF0YS5OYW1lIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5TY2hlZHVsZUxhc3RSdW4gfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuU2hvd25WYWxpZCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVHJhc2hDYW4iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1EZWxldGU7UHJvZmlsZT1bJSBEYXRhLk5hbWUgfCB1cmkgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyB0YXNrIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuVmFsaWQgPT0gMSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UnVuO1Byb2ZpbGU9WyUgRGF0YS5OYW1lIHwgdXJpICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUnVuIHRoaXMgdGFzayIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRWRpdCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiSm9iIFNldHRpbmdzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNjaGVkdWxlTGFzdFJ1biIgdmFsdWU9IlslIERhdGEuU2NoZWR1bGVMYXN0UnVuIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9sZFByb2ZpbGUiIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Qcm9maWxlICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbnRpbnVlQWZ0ZXJTYXZlIiBpZD0iQ29udGludWVBZnRlclNhdmUiIHZhbHVlPSIiLz4KICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiSm9iIG5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlByb2ZpbGUiIGlkPSJQcm9maWxlIiBjbGFzcz0iVmFsaWRhdGVfUmVxdWlyZWQgVzUwcGMgWyUgRGF0YS5Qcm9maWxlSW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUHJvZmlsZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9maWxlSW52YWxpZE1zZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQcm9maWxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvZmlsZUludmFsaWRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQcm9maWxlSW52YWxpZE1zZ0FkZEVycm9yIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlByb2ZpbGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgeW91IGVudGVyZWQgYWxyZWFkeSBleGlzdHMuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHJvZmlsZUludmFsaWRNc2dBZGRFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBDb2xsYXBzZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVG9nZ2xlIHRoaXMgd2lkZ2V0IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBdXRvbWF0aWMgRXhlY3V0aW9uIChNdWx0aXBsZSBUaWNrZXRzKSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgVmFyaWFibGVXaWR0aCIgc3VtbWFyeT0iWyUgVHJhbnNsYXRlKCJFeGVjdXRpb24gU2NoZWR1bGUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxsYWJlbCBmb3I9IlNjaGVkdWxlTWludXRlcyI+WyUgVHJhbnNsYXRlKCJTY2hlZHVsZSBtaW51dGVzIikgfCBodG1sICVdPC9sYWJlbD48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxsYWJlbCBmb3I9IlNjaGVkdWxlSG91cnMiPlslIFRyYW5zbGF0ZSgiU2NoZWR1bGUgaG91cnMiKSB8IGh0bWwgJV08L2xhYmVsPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGxhYmVsIGZvcj0iU2NoZWR1bGVEYXlzIj5bJSBUcmFuc2xhdGUoIlNjaGVkdWxlIGRheXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2NoZWR1bGVNaW51dGVzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNjaGVkdWxlSG91cnNMaXN0ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2NoZWR1bGVEYXlzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXV0b21hdGljIGV4ZWN1dGlvbiB2YWx1ZXMgYXJlIGluIHRoZSBzeXN0ZW0gdGltZXpvbmUuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrU3RhcnQoIkpvYlNjaGVkdWxlV2FybmluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRXJyb3IgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDdXJyZW50bHkgdGhpcyBnZW5lcmljIGFnZW50IGpvYiB3aWxsIG5vdCBydW4gYXV0b21hdGljYWxseS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gZW5hYmxlIGF1dG9tYXRpYyBleGVjdXRpb24gc2VsZWN0IGF0IGxlYXN0IG9uZSB2YWx1ZSBmcm9tIG1pbnV0ZXMsIGhvdXJzIGFuZCBkYXlzISIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiSm9iU2NoZWR1bGVXYXJuaW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgQ29sbGFwc2VkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRXZlbnQgQmFzZWQgRXhlY3V0aW9uIChTaW5nbGUgVGlja2V0KSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkV2ZW50c1RhYmxlIj5bJSBUcmFuc2xhdGUoIkV2ZW50IFRyaWdnZXJzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFc1MHBjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIENsZWFyTm9uZSBTcGFjaW5nQm90dG9tU21hbGwiIGlkPSJFdmVudHNUYWJsZSIgc3VtbWFyeT0iWyUgVHJhbnNsYXRlKCJMaXN0IG9mIGFsbCBjb25maWd1cmVkIGV2ZW50cyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkV2ZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnRXZlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnRXZlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkV2ZW50Um93VGVtcGxhdGUgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQXNCbG9jayBFdmVudFR5cGUiPkV2ZW50VHlwZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkV2ZW50TmFtZSIgPkV2ZW50TmFtZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkV2ZW50RGVsZXRlIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUV2ZW50IiBjbGFzcz0iVHJhc2hDYW4gRGVsZXRlRXZlbnQiIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIiIGNsYXNzPSJFdmVudFZhbHVlIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkFzQmxvY2siPlslIERhdGEuRXZlbnRUeXBlIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5FdmVudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJEZWxldGVFdmVudFslIERhdGEuRXZlbnQgfCBodG1sICVdIiBjbGFzcz0iVHJhc2hDYW4gRGVsZXRlRXZlbnQiIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFdmVudFZhbHVlcyIgY2xhc3M9IkV2ZW50VmFsdWUiIHZhbHVlPSJbJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBZGRpdGlvbmFsbHkgb3IgYWx0ZXJuYXRpdmVseSB0byBhIHBlcmlvZGljIGV4ZWN1dGlvbiwgeW91IGNhbiBkZWZpbmUgdGlja2V0IGV2ZW50cyB0aGF0IHdpbGwgdHJpZ2dlciB0aGlzIGpvYi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIklmIGEgdGlja2V0IGV2ZW50IGlzIGZpcmVkLCB0aGUgdGlja2V0IGZpbHRlciB3aWxsIGJlIGFwcGxpZWQgdG8gY2hlY2sgaWYgdGhlIHRpY2tldCBtYXRjaGVzLiBPbmx5IHRoZW4gdGhlIGpvYiBpcyBydW4gb24gdGhhdCB0aWNrZXQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRXZlbnREaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZCA9IkRlbGV0ZUV2ZW50RGlhbG9nIiBjbGFzcz0iSW5uZXJDb250ZW50IEdlbmVyaWNJbnRlcmZhY2VEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJXYXJuaW5nRGlhbG9nICI+Jm5ic3A7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+WyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZXZlbnQgdHJpZ2dlcj8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJIaWRlT25DaGFuZ2UiIGZvcj0iRXZlbnRUeXBlIj5bJSBUcmFuc2xhdGUoIkFkZCBFdmVudCBUcmlnZ2VyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIEhpZGVPbkNoYW5nZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkV2ZW50VHlwZVN0cmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5FdmVudFR5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudFR5cGVTdHJnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkV2ZW50VHlwZU5hbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXZlbnRTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJFdmVudEFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBhZGQgYSBuZXcgZXZlbnQgc2VsZWN0IHRoZSBldmVudCBvYmplY3QgYW5kIGV2ZW50IG5hbWUiKSB8IGh0bWwgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlNlbGVjdCBUaWNrZXRzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaWNrZXROdW1iZXIiPlslIENvbmZpZygiVGlja2V0OjpIb29rIikgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpY2tldE51bWJlciIgaWQ9IlRpY2tldE51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSJbJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgY2xhc3M9IlczM3BjIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkN1c3RvbWVySUQiPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgSUQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkN1c3RvbWVySUQiIGlkPSJDdXN0b21lcklEIiBjbGFzcz0iVzMzcGMiIHZhbHVlPSJbJSBEYXRhLkN1c3RvbWVySUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCIoZS4gZy4gMjM0MzIxKSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJVc2VyTG9naW4iPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgdXNlciBJRCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQ3VzdG9tZXJVc2VyTG9naW4iIGlkPSJDdXN0b21lclVzZXJMb2dpbiIgY2xhc3M9IlczM3BjIiB2YWx1ZT0iWyUgRGF0YS5DdXN0b21lclVzZXJMb2dpbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIihlLiBnLiBVNTE1MCkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0VHlwZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlR5cGVJRHMiPlslIFRyYW5zbGF0ZSgiVHlwZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlR5cGVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0VHlwZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1JTUVCYXNlX0Zyb20iPlslIFRyYW5zbGF0ZSgiRnJvbSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTUlNRUJhc2VfRnJvbSIgaWQ9Ik1JTUVCYXNlX0Zyb20iIGNsYXNzPSJXMzBwYyBbJSBEYXRhLk1JTUVCYXNlX0Zyb21JbnZhbGlkIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuTUlNRUJhc2VfRnJvbSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0LXNlYXJjaCBpbiBhcnRpY2xlIChlLiBnLiBcIk1hcippblwiIG9yIFwiQmF1ZSpcIikuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJNSU1FQmFzZV9Gcm9tU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBEYXRhLk1JTUVCYXNlX0Zyb21JbnZhbGlkVG9vbHRpcCB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1JTUVCYXNlX1RvIj5bJSBUcmFuc2xhdGUoIlRvIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJNSU1FQmFzZV9UbyIgaWQ9Ik1JTUVCYXNlX1RvIiBjbGFzcz0iVzMzcGMgWyUgRGF0YS5NSU1FQmFzZV9Ub0ludmFsaWQgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5NSU1FQmFzZV9UbyB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0LXNlYXJjaCBpbiBhcnRpY2xlIChlLiBnLiBcIk1hcippblwiIG9yIFwiQmF1ZSpcIikuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJNSU1FQmFzZV9Ub1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgRGF0YS5NSU1FQmFzZV9Ub0ludmFsaWRUb29sdGlwIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTUlNRUJhc2VfQ2MiPlslIFRyYW5zbGF0ZSgiQ2MiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik1JTUVCYXNlX0NjIiBpZD0iTUlNRUJhc2VfQ2MiIGNsYXNzPSJXMzNwYyBbJSBEYXRhLk1JTUVCYXNlX0NjSW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk1JTUVCYXNlX0NjIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRnVsbHRleHQtc2VhcmNoIGluIGFydGljbGUgKGUuIGcuIFwiTWFyKmluXCIgb3IgXCJCYXVlKlwiKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik1JTUVCYXNlX0NjU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBEYXRhLk1JTUVCYXNlX0NjSW52YWxpZFRvb2x0aXAgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNSU1FQmFzZV9TdWJqZWN0Ij5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik1JTUVCYXNlX1N1YmplY3QiIGlkPSJNSU1FQmFzZV9TdWJqZWN0IiBjbGFzcz0iVzMzcGMgWyUgRGF0YS5NSU1FQmFzZV9TdWJqZWN0SW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk1JTUVCYXNlX1N1YmplY3QgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJGdWxsdGV4dC1zZWFyY2ggaW4gYXJ0aWNsZSAoZS4gZy4gXCJNYXIqaW5cIiBvciBcIkJhdWUqXCIpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTUlNRUJhc2VfU3ViamVjdFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgRGF0YS5NSU1FQmFzZV9TdWJqZWN0SW52YWxpZFRvb2x0aXAgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNSU1FQmFzZV9Cb2R5Ij5bJSBUcmFuc2xhdGUoIlRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik1JTUVCYXNlX0JvZHkiIGlkPSJNSU1FQmFzZV9Cb2R5IiBjbGFzcz0iVzMzcGMgWyUgRGF0YS5NSU1FQmFzZV9Cb2R5SW52YWxpZCB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk1JTUVCYXNlX0JvZHkgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJGdWxsdGV4dC1zZWFyY2ggaW4gYXJ0aWNsZSAoZS4gZy4gXCJNYXIqaW5cIiBvciBcIkJhdWUqXCIpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTUlNRUJhc2VfQm9keVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgRGF0YS5NSU1FQmFzZV9Cb2R5SW52YWxpZFRvb2x0aXAgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNMQUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlIExldmVsIEFncmVlbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNMQXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRTZXJ2aWNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJpb3JpdHlJRHMiPlslIFRyYW5zbGF0ZSgiUHJpb3JpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcmlvcml0aWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVldWVJRHMiPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXRlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik93bmVySURzIj5bJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdL1slIFRyYW5zbGF0ZSgiT3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Pd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFJlc3BvbnNpYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmVzcG9uc2libGVJRHMiPlslIFRyYW5zbGF0ZSgiQWdlbnQiKSB8IGh0bWwgJV0vWyUgVHJhbnNsYXRlKCJSZXNwb25zaWJsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJlc3BvbnNpYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0UmVzcG9uc2libGUiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTG9ja0lEcyI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgbG9jayIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxvY2tPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkR5bmFtaWMgZmllbGRzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZGREeW5hbWljRmllbGRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBkeW5hbWljIGZpZWxkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIGRhdGEtd2lkZ2V0PSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBZGREeW5hbWljRmllbGRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgaWQ9IlNlbGVjdGVkRHluYW1pY0ZpZWxkcyIgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlbGVjdGVkRHluYW1pY0ZpZWxkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgZGF0YS1pZD0iWyUgRGF0YS5JRCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWxlY3RlZER5bmFtaWNGaWVsZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGltZVNlYXJjaFR5cGVOb25lIj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiBpZD0iVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjcmVhdGUgdGltZSBzZXR0aW5ncy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGNyZWF0ZWQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLlRpY2tldENyZWF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBjcmVhdGVkIGJldHdlZW4iKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRDcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRDcmVhdGVUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VUaW1lU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIHRpbWVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlIiBpZD0iTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlTm9uZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJMYXN0Q2hhbmdlVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGxhc3QgY2hhbmdlZCB0aW1lIHNldHRpbmdzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJMYXN0Q2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBsYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2hhbmdlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2hhbmdlVGltZVBvaW50ICVdIFslIERhdGEuVGlja2V0TGFzdENoYW5nZVRpbWVQb2ludEZvcm1hdCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGxhc3QgY2hhbmdlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENoYW5nZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldExhc3RDaGFuZ2VUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UgdGltZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgaWQ9IkNoYW5nZVRpbWVTZWFyY2hUeXBlTm9uZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gY2hhbmdlIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBjaGFuZ2VkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2hhbmdlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRDaGFuZ2VUaW1lUG9pbnQgJV0gWyUgRGF0YS5UaWNrZXRDaGFuZ2VUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgY2hhbmdlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2hhbmdlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2hhbmdlVGltZVN0b3AgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMYXN0Q2xvc2VUaW1lU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiTGFzdCBjbG9zZSB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ikxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlIiBpZD0iTGFzdENsb3NlVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIkxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBsYXN0IGNsb3NlIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ikxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBsYXN0IGNsb3NlIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENsb3NlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2xvc2VUaW1lUG9pbnQgJV0gWyUgRGF0YS5UaWNrZXRMYXN0Q2xvc2VUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Ikxhc3RDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiTGFzdENsb3NlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgbGFzdCBjbG9zZSBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENsb3NlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0TGFzdENsb3NlVGltZVN0b3AgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbG9zZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJDbG9zZSB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkNsb3NlVGltZVNlYXJjaFR5cGUiIGlkPSJDbG9zZVRpbWVTZWFyY2hUeXBlTm9uZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDbG9zZVRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjbG9zZSB0aW1lIHNldHRpbmdzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkNsb3NlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGNsb3NlZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldENsb3NlVGltZVBvaW50U3RhcnQgJV0gWyUgRGF0YS5UaWNrZXRDbG9zZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldENsb3NlVGltZVBvaW50Rm9ybWF0ICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJDbG9zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiQ2xvc2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBjbG9zZWQgYmV0d2VlbiIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldENsb3NlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0Q2xvc2VUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiUGVuZGluZyB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZSIgaWQ9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZU5vbmUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVGltZVBlbmRpbmdTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBwZW5kaW5nIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lUGVuZGluZ1NlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IHBlbmRpbmcgdGltZSByZWFjaGVkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0UGVuZGluZ1RpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0UGVuZGluZ1RpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldFBlbmRpbmdUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IlRpbWVQZW5kaW5nU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVQZW5kaW5nU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBwZW5kaW5nIHRpbWUgcmVhY2hlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0UGVuZGluZ1RpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldFBlbmRpbmdUaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZU5vbmUiPlslIFRyYW5zbGF0ZSgiRXNjYWxhdGlvbiB0aW1lcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZSIgaWQ9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZU5vbmUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBlc2NhbGF0aW9uIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJFc2NhbGF0aW9uVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IGVzY2FsYXRpb24gdGltZSByZWFjaGVkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25UaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25UaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBlc2NhbGF0aW9uIHRpbWUgcmVhY2hlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25UaW1lU3RvcCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJFc2NhbGF0aW9uIC0gZmlyc3QgcmVzcG9uc2UgdGltZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlIiBpZD0iRXNjYWxhdGlvblJlc3BvbnNlVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0vPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBlc2NhbGF0aW9uIHRpbWUgc2V0dGluZ3MuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVBvaW50IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25SZXNwb25zZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBmaXJzdCByZXNwb25zZSB0aW1lIHJlYWNoZWQiKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRFc2NhbGF0aW9uUmVzcG9uc2VUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVQb2ludEZvcm1hdCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iRXNjYWxhdGlvblJlc3BvbnNlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCBmaXJzdCByZXNwb25zZSB0aW1lIHJlYWNoZWQgYmV0d2VlbiIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdG9wICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXNjYWxhdGlvblVwZGF0ZVRpbWVTZWFyY2hUeXBlTm9uZSI+WyUgVHJhbnNsYXRlKCJFc2NhbGF0aW9uIC0gdXBkYXRlIHRpbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGUiIGlkPSJFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGVOb25lIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZXNjYWxhdGlvbiB0aW1lIHNldHRpbmdzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblVwZGF0ZVRpbWVTZWFyY2hUeXBlOjpUaW1lUG9pbnQiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCB1cGRhdGUgdGltZSByZWFjaGVkIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25VcGRhdGVUaW1lUG9pbnRGb3JtYXQgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IkVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpY2tldCB1cGRhdGUgdGltZSByZWFjaGVkIGJldHdlZW4iKSB8IGh0bWwgJV0gWyUgRGF0YS5UaWNrZXRFc2NhbGF0aW9uVXBkYXRlVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblVwZGF0ZVRpbWVTdG9wICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGVOb25lIj5bJSBUcmFuc2xhdGUoIkVzY2FsYXRpb24gLSBzb2x1dGlvbiB0aW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUiIGlkPSJFc2NhbGF0aW9uU29sdXRpb25UaW1lU2VhcmNoVHlwZU5vbmUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGVzY2FsYXRpb24gdGltZSBzZXR0aW5ncy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IHNvbHV0aW9uIHRpbWUgcmVhY2hlZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlRpY2tldEVzY2FsYXRpb25Tb2x1dGlvblRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVBvaW50ICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVBvaW50Rm9ybWF0ICVdLgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJFc2NhbGF0aW9uU29sdXRpb25UaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkVzY2FsYXRpb25Tb2x1dGlvblRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IHNvbHV0aW9uIHRpbWUgcmVhY2hlZCBiZXR3ZWVuIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVN0YXJ0ICVdIFslIFRyYW5zbGF0ZSgiYW5kIikgfCBodG1sICVdIFslIERhdGEuVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uVGltZVN0b3AgJV0uCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaEluQXJjaGl2ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNlYXJjaEluQXJjaGl2ZSI+WyUgVHJhbnNsYXRlKCJBcmNoaXZlIHNlYXJjaCBvcHRpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZWFyY2hJbkFyY2hpdmVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hJbkFyY2hpdmUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CjwhLS0gbmV3IG9wdGlvbnMgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlVwZGF0ZS9BZGQgVGlja2V0IEF0dHJpYnV0ZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld1RpY2tldFNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTZXJ2aWNlSUQiPlslIFRyYW5zbGF0ZSgiU2V0IG5ldyBzZXJ2aWNlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3U2VydmljZXNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTTEFJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IFNlcnZpY2UgTGV2ZWwgQWdyZWVtZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3U0xBc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5ld1RpY2tldFNlcnZpY2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQcmlvcml0eUlEIj5bJSBUcmFuc2xhdGUoIlNldCBuZXcgcHJpb3JpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdQcmlvcml0aWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UXVldWVJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IHF1ZXVlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3UXVldWVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3U3RhdGVJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IHN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3U3RhdGVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGVuZGluZ1RpbWUiPlslIFRyYW5zbGF0ZSgiUGVuZGluZyBkYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQZW5kaW5nVGltZSIgaWQ9Ik5ld1BlbmRpbmdUaW1lIiB2YWx1ZT0iWyUgRGF0YS5OZXdQZW5kaW5nVGltZSB8IGh0bWwgJV0iIGNsYXNzPSJXMTBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdQZW5kaW5nVGltZVR5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdPd25lcklEIj5bJSBUcmFuc2xhdGUoIlNldCBuZXcgYWdlbnQiKSB8IGh0bWwgJV0vWyUgVHJhbnNsYXRlKCJuZXcgb3duZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdPd25lclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld1RpY2tldFJlc3BvbnNpYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UmVzcG9uc2libGVJRCI+WyUgVHJhbnNsYXRlKCJTZXQgbmV3IGFnZW50IikgfCBodG1sICVdL1slIFRyYW5zbGF0ZSgibmV3IHJlc3BvbnNpYmxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3UmVzcG9uc2libGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOZXdUaWNrZXRSZXNwb25zaWJsZSIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdMb2NrSUQiPlslIFRyYW5zbGF0ZSgiU2V0IG5ldyB0aWNrZXQgbG9jayIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5ld0xvY2tPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld0N1c3RvbWVyVXNlckxvZ2luIj5bJSBUcmFuc2xhdGUoIk5ldyBjdXN0b21lciB1c2VyIElEIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdDdXN0b21lclVzZXJMb2dpbiIgaWQ9Ik5ld0N1c3RvbWVyVXNlckxvZ2luIiB2YWx1ZT0iWyUgRGF0YS5OZXdDdXN0b21lclVzZXJMb2dpbiB8IGh0bWwgJV0iIGNsYXNzPSJXMzNwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3Q3VzdG9tZXJJRCI+WyUgVHJhbnNsYXRlKCJOZXcgY3VzdG9tZXIgSUQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld0N1c3RvbWVySUQiIGlkPSJOZXdDdXN0b21lcklEIiB2YWx1ZT0iWyUgRGF0YS5OZXdDdXN0b21lcklEIHwgaHRtbCAlXSIgY2xhc3M9IlczM3BjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdUaXRsZSI+WyUgVHJhbnNsYXRlKCJOZXcgdGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1RpdGxlIiBpZD0iTmV3VGl0bGUiIGNsYXNzPSJXMzNwYyIgdmFsdWU9IlslIERhdGEuTmV3VGl0bGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld1RpY2tldFR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdUeXBlSUQiPlslIFRyYW5zbGF0ZSgiTmV3IHR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdUeXBlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5ld1RpY2tldFR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJEeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWRkTmV3RHluYW1pY0ZpZWxkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBkeW5hbWljIGZpZWxkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIGRhdGEtd2lkZ2V0PSJVcGRhdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5ld0R5bmFtaWNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJBZGROZXdEeW5hbWljRmllbGRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgaWQ9IlNlbGVjdGVkTmV3RHluYW1pY0ZpZWxkcyIgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlbGVjdGVkTmV3RHluYW1pY0ZpZWxkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgZGF0YS1pZD0iWyUgRGF0YS5JRCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWxlY3RlZE5ld0R5bmFtaWNGaWVsZHMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKClslIFJlbmRlckJsb2NrU3RhcnQoIk5ld0FyY2hpdmVGbGFnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3QXJjaGl2ZUZsYWciPlslIFRyYW5zbGF0ZSgiQXJjaGl2ZSBzZWxlY3RlZCB0aWNrZXRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmV3QXJjaGl2ZUZsYWdTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOZXdBcmNoaXZlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgQ29sbGFwc2VkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRvZ2dsZSB0aGlzIHdpZGdldCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIE5vdGUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld05vdGVGcm9tIj5bJSBUcmFuc2xhdGUoIkZyb20iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld05vdGVGcm9tIiBpZD0iTmV3Tm90ZUZyb20iIHZhbHVlPSJbJSBEYXRhLk5ld05vdGVGcm9tIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIFslIERhdGEuTmV3Tm90ZUZyb21TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdOb3RlRnJvbVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIG11c3QgaGF2ZSBsZXNzIHRoZW4gMjAwIGNoYXJhY3RlcnMuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3Tm90ZVN1YmplY3QiPlslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmV3Tm90ZVN1YmplY3QiIGlkPSJOZXdOb3RlU3ViamVjdCIgdmFsdWU9IlslIERhdGEuTmV3Tm90ZVN1YmplY3QgfCBodG1sICVdIiBzaXplPSI2MCIgWyUgSUYgRGF0YS5OZXdOb3RlU3ViamVjdFNlcnZlckVycm9yID09ICdTZXJ2ZXJFcnJvcicgJV1jbGFzcz0iWyUgRGF0YS5OZXdOb3RlU3ViamVjdFNlcnZlckVycm9yIHwgaHRtbCAlXSJbJSBFTkQgJV0gbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5ld05vdGVTdWJqZWN0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgbXVzdCBoYXZlIGxlc3MgdGhlbiAyMDAgY2hhcmFjdGVycy4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdOb3RlQm9keSI+WyUgVHJhbnNsYXRlKCJUZXh0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJOZXdOb3RlQm9keSIgaWQ9Ik5ld05vdGVCb2R5IiBjbGFzcz0iVmFsaWRhdGVfTWF4TGVuZ3RoIFslIERhdGEuTmV3Tm90ZUJvZHlTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHJvd3M9IjciIGNvbHM9IjYwIiBkYXRhLW1heGxlbmd0aD0iMjAwIj5bJSBEYXRhLk5ld05vdGVCb2R5IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOZXdOb3RlQm9keUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIG11c3QgaGF2ZSBsZXNzIHRoZW4gMjAwIGNoYXJhY3RlcnMuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmV3Tm90ZUJvZHlTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBtdXN0IGhhdmUgbGVzcyB0aGVuIDIwMCBjaGFyYWN0ZXJzLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld05vdGVJc1Zpc2libGVGb3JDdXN0b21lciI+WyUgVHJhbnNsYXRlKCJWaXNpYmxlIGZvciBjdXN0b21lciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0iTmV3Tm90ZUlzVmlzaWJsZUZvckN1c3RvbWVyIiBpZD0iTmV3Tm90ZUlzVmlzaWJsZUZvckN1c3RvbWVyIiB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk5ld05vdGVJc1Zpc2libGVGb3JDdXN0b21lciAlXWNoZWNrZWRbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld05vdGVUaW1lVW5pdHMiPlslIFRyYW5zbGF0ZSgiVGltZSB1bml0cyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUaW1lVW5pdHMiKSkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdOb3RlVGltZVVuaXRzIiBpZD0iTmV3Tm90ZVRpbWVVbml0cyIgdmFsdWU9IlslIERhdGEuTmV3Tm90ZVRpbWVVbml0cyB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkV4ZWN1dGUgVGlja2V0IENvbW1hbmRzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdTZW5kTm9Ob3RpZmljYXRpb24iPlslIFRyYW5zbGF0ZSgiU2VuZCBhZ2VudC9jdXN0b21lciBub3RpZmljYXRpb25zIG9uIGNoYW5nZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZW5kTm9Ob3RpZmljYXRpb25PcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIElGIERhdGEuQWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3Q01EIj5bJSBUcmFuc2xhdGUoIkNNRCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmV3Q01EIiBpZD0iTmV3Q01EIiB2YWx1ZT0iWyUgRGF0YS5OZXdDTUQgfCBodG1sICVdIiBzaXplPSI0MCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBUcmFuc2xhdGUoIlRoaXMgY29tbWFuZCB3aWxsIGJlIGV4ZWN1dGVkLiBBUkdbMF0gd2lsbCBiZSB0aGUgdGlja2V0IG51bWJlci4gQVJHWzFdIHRoZSB0aWNrZXQgaWQuIikgfCBodG1sICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5ld0RlbGV0ZSI+WyUgVHJhbnNsYXRlKCJEZWxldGUgdGlja2V0cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkRlbGV0ZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIldhcm5pbmc6IEFsbCBhZmZlY3RlZCB0aWNrZXRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgY2Fubm90IGJlIHJlc3RvcmVkISIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBJRiBEYXRhLkFsbG93Q3VzdG9tTW9kdWxlRXhlY3V0aW9uICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkV4ZWN1dGUgQ3VzdG9tIE1vZHVsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3TW9kdWxlIj5bJSBUcmFuc2xhdGUoIk1vZHVsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmV3TW9kdWxlIiBpZD0iTmV3TW9kdWxlIiB2YWx1ZT0iWyUgRGF0YS5OZXdNb2R1bGUgfCBodG1sICVdIiBzaXplPSI0NSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1LZXkxIj5bJSBUcmFuc2xhdGUoIlBhcmFtICVzIGtleSIsICIxIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbUtleTEiIGlkPSJOZXdQYXJhbUtleTEiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtS2V5MSB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1WYWx1ZTEiPiBbJSBUcmFuc2xhdGUoIlBhcmFtICVzIHZhbHVlIiwgIjEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbVZhbHVlMSIgaWQ9Ik5ld1BhcmFtVmFsdWUxIiB2YWx1ZT0iWyUgRGF0YS5OZXdQYXJhbVZhbHVlMSB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1LZXkyIj5bJSBUcmFuc2xhdGUoIlBhcmFtICVzIGtleSIsICIyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbUtleTIiIGlkPSJOZXdQYXJhbUtleTIiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtS2V5MiB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1WYWx1ZTIiPiBbJSBUcmFuc2xhdGUoIlBhcmFtICVzIHZhbHVlIiwgIjIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbVZhbHVlMiIgaWQ9Ik5ld1BhcmFtVmFsdWUyIiB2YWx1ZT0iWyUgRGF0YS5OZXdQYXJhbVZhbHVlMiB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1LZXkzIj5bJSBUcmFuc2xhdGUoIlBhcmFtICVzIGtleSIsICIzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOZXdQYXJhbUtleTMiIGlkPSJOZXdQYXJhbUtleTMiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtS2V5MyB8IGh0bWwgJV0iIGNsYXNzPSJXMjBwYyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmV3UGFyYW1WYWx1ZTMiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiMyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWUzIiBpZD0iTmV3UGFyYW1WYWx1ZTMiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWUzIHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbUtleTQiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMga2V5IiwgIjQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtS2V5NCIgaWQ9Ik5ld1BhcmFtS2V5NCIgdmFsdWU9IlslIERhdGEuTmV3UGFyYW1LZXk0IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbVZhbHVlNCI+IFslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiNCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWU0IiBpZD0iTmV3UGFyYW1WYWx1ZTQiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWU0IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbUtleTUiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMga2V5IiwgIjUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtS2V5NSIgaWQ9Ik5ld1BhcmFtS2V5NSIgdmFsdWU9IlslIERhdGEuTmV3UGFyYW1LZXk1IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbVZhbHVlNSI+IFslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiNSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWU1IiBpZD0iTmV3UGFyYW1WYWx1ZTUiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWU1IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbUtleTYiPlslIFRyYW5zbGF0ZSgiUGFyYW0gJXMga2V5IiwgIjYiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtS2V5NiIgaWQ9Ik5ld1BhcmFtS2V5NiIgdmFsdWU9IlslIERhdGEuTmV3UGFyYW1LZXk2IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOZXdQYXJhbVZhbHVlNiI+IFslIFRyYW5zbGF0ZSgiUGFyYW0gJXMgdmFsdWUiLCAiNiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5ld1BhcmFtVmFsdWU2IiBpZD0iTmV3UGFyYW1WYWx1ZTYiIHZhbHVlPSJbJSBEYXRhLk5ld1BhcmFtVmFsdWU2IHwgaHRtbCAlXSIgY2xhc3M9IlcyMHBjIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgRU5EICVdCiMgUm90aGVyIE9TUyAvIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIENvbGxhcHNlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUb2dnbGUgdGhpcyB3aWRnZXQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRhZyBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB0YWdzIikgfCBodG1sICVdOjwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX0NVU1RPTUVSX1JFQUxOQU1FJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIGdldCB0aGUgbmFtZSBvZiB0aGUgdGlja2V0J3MgY3VzdG9tZXIgdXNlciAoaWYgZ2l2ZW4pLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVE9CT19DVVNUT01FUl9EQVRBXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCBjdXN0b21lciB1c2VyIGRhdGEiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBUcmFuc2xhdGUoIiBlLiBnLiIpIHwgaHRtbCAlXSA8Y29kZT4mbHQ7T1RPQk9fQ1VTVE9NRVJfREFUQV9Vc2VyRmlyc3RuYW1lJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVE9CT19PV05FUl8qJmd0OzwvY29kZT4gWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXSA8Y29kZT4mbHQ7T1RPQk9fVElDS0VUX09XTkVSXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCB0aWNrZXQgb3duZXIgdXNlciBkYXRhIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWyUgVHJhbnNsYXRlKCIgZS4gZy4iKSB8IGh0bWwgJV0gPGNvZGU+Jmx0O09UT0JPX09XTkVSX1VzZXJGaXJzdG5hbWUmZ3Q7PC9jb2RlPiBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19USUNLRVRfT1dORVJfVXNlckZpcnN0bmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RPQk9fKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBdHRyaWJ1dGVzIG9mIHRoZSByZWNpcGllbnQgdXNlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIFRyYW5zbGF0ZSgiIGUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19Vc2VyRnVsbG5hbWUmZ3Q7PC9jb2RlPiBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19OT1RJRklDQVRJT05fUkVDSVBJRU5UX1VzZXJGdWxsbmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RPQk9fVElDS0VUXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0cmlidXRlcyBvZiB0aGUgdGlja2V0IGRhdGEiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBUcmFuc2xhdGUoIiBlLiBnLiIpIHwgaHRtbCAlXSA8Y29kZT4mbHQ7T1RPQk9fVElDS0VUX1RpY2tldE51bWJlciZndDssICZsdDtPVE9CT19USUNLRVRfVGlja2V0SUQmZ3Q7LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O09UT0JPX1RJQ0tFVF9RdWV1ZSZndDssICZsdDtPVE9CT19USUNLRVRfU3RhdGUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX1RJQ0tFVF9EeW5hbWljRmllbGRfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgZHluYW1pYyBmaWVsZHMgaW50ZXJuYWwga2V5IHZhbHVlcyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIFRyYW5zbGF0ZSgiIGUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19USUNLRVRfRHluYW1pY0ZpZWxkX1Rlc3RGaWVsZCZndDssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7T1RPQk9fVElDS0VUX0R5bmFtaWNGaWVsZF9UaWNrZXRGcmVlVGV4dDEmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX1RJQ0tFVF9EeW5hbWljRmllbGRfKl9WYWx1ZSZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQgZHluYW1pYyBmaWVsZHMgZGlzcGxheSB2YWx1ZXMsIHVzZWZ1bCBmb3IgRHJvcGRvd24gYW5kIE11bHRpc2VsZWN0IGZpZWxkcyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIFRyYW5zbGF0ZSgiIGUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVE9CT19USUNLRVRfRHluYW1pY0ZpZWxkX1Rlc3RGaWVsZF9WYWx1ZSZndDssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7T1RPQk9fVElDS0VUX0R5bmFtaWNGaWVsZF9UaWNrZXRGcmVlVGV4dDFfVmFsdWUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UT0JPX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNvbmZpZyBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWyUgVHJhbnNsYXRlKCIgZS4gZy4iKSB8IGh0bWwgJV0gPGNvZGU+Jmx0O09UT0JPX0NPTkZJR19IdHRwVHlwZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgICAgICA8L2RsPgoKICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRXhhbXBsZSBub3RpZmljYXRpb24iKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN1YmplY3RFeGFtcGxlIj5bJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV08L2xhYmVsPjoKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iU3ViamVjdEV4YW1wbGUiIGlkPSJTdWJqZWN0RXhhbXBsZSIgdmFsdWU9IlRpY2tldCBDcmVhdGVkOiAmbHQ7T1RPQk9fVElDS0VUX1RpdGxlJmd0OyIgc2l6ZT0iODAiIG1heGxlbmd0aD0iODAiIHJlYWRvbmx5IC8+CiAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSZXNwb25zZUV4YW1wbGUiPlslIFRyYW5zbGF0ZSgiVGV4dCIpIHwgaHRtbCAlXTwvbGFiZWw+OgogICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9IjEyIiBjb2xzPSI3MCIgbmFtZT0iUmVzcG9uc2VFeGFtcGxlIiBpZD0iUmVzcG9uc2VFeGFtcGxlIiByZWFkb25seT4KICAgIEhpICZsdDtPVE9CT19PV05FUl9Vc2VyRmlyc3RuYW1lJmd0OywKCiAgICB0aWNrZXQgWyZsdDtPVE9CT19DT05GSUdfVGlja2V0SG9vayZndDsmbHQ7T1RPQk9fVElDS0VUX1RpY2tldE51bWJlciZndDtdIGhhcyBiZWVuIGNyZWF0ZWQgaW4gcXVldWUgJmx0O09UT0JPX1RJQ0tFVF9RdWV1ZSZndDsuCgogICAgJmx0O09UT0JPX0NPTkZJR19IdHRwVHlwZSZndDs6Ly8mbHQ7T1RPQk9fQ09ORklHX0ZRRE4mZ3Q7LyZsdDtPVE9CT19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0Wm9vbTtUaWNrZXRJRD0mbHQ7T1RPQk9fVElDS0VUX1RpY2tldElEJmd0OwoKICAgIC0tICZsdDtPVE9CT19DT05GSUdfTm90aWZpY2F0aW9uU2VuZGVyTmFtZSZndDsKICAgICAgICAgICAgICAgICAgICA8L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2F2ZSBDaGFuZ2VzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIFNhdmVCdXR0b25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuUHJvZmlsZSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJFZGl0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3VsdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJlc3VsdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIiVzIFRpY2tldHMgYWZmZWN0ZWQhIFdoYXQgZG8geW91IHdhbnQgdG8gZG8/IiwgRGF0YS5BZmZlY3RlZElEcykgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZVdhcm5pbmciKSAlXQogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIldhcm5pbmc6IFlvdSB1c2VkIHRoZSBERUxFVEUgb3B0aW9uLiBBbGwgZGVsZXRlZCB0aWNrZXRzIHdpbGwgYmUgbG9zdCEiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlbGV0ZVdhcm5pbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUnVuTGltaXQiKSAlXQogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkVycm9yIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIldhcm5pbmc6IFRoZXJlIGFyZSAlcyB0aWNrZXRzIGFmZmVjdGVkIGJ1dCBvbmx5ICVzIG1heSBiZSBtb2RpZmllZCBkdXJpbmcgb25lIGpvYiBleGVjdXRpb24hIiwgRGF0YS5Db3VudGVyLCBEYXRhLlJ1bkxpbWl0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJ1bkxpbWl0IikgJV0KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVVwZGF0ZTtQcm9maWxlPVslIERhdGEuTmFtZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiRWRpdCBKb2IiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UnVuTm93O1Byb2ZpbGU9WyUgRGF0YS5OYW1lIHwgdXJpICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiUnVuIEpvYiIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3VsdEJsb2NrIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZmZlY3RlZCBUaWNrZXRzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIENvbmZpZygiVGlja2V0OjpIb29rIikgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQWdlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkZyb20iKSB8IGh0bWwgJV0gLyBbJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiUXVldWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiT3duZXIiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIgSUQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXTtBY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQWdlIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5Gcm9tIHwgdHJ1bmNhdGUoMzApIHwgaHRtbCAlXVslIERhdGEuU3ViamVjdCB8IHRydW5jYXRlKDMwKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuUXVldWUgfCB0cnVuY2F0ZSgzMCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLk93bmVyIHwgdHJ1bmNhdGUoMzApIHwgaHRtbCAlXSAoWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdKTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFRpY2tldEN1c3RvbWVyO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkN1c3RvbWVySUQgfCB0cnVuY2F0ZSgxNSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzdWx0QmxvY2siKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzdWx0IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/System/GenericAgent.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBhYTlkNWNiYWJlYzc1YWI1ZjJhMzI5MTYwMmNlM2VmMzgxNTRmY2M5IC0gS2VybmVsL1N5c3RlbS9HZW5lcmljQWdlbnQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0FnZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFRpbWU6OkhpUmVzICgpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9jaycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U0xBJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNBZ2VudCAtIHRvIG1hbmFnZSB0aGUgZ2VuZXJpYyBhZ2VudCBqb2JzCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMgdG8gbWFuYWdlIHRoZSBnZW5lcmljIGFnZW50IGFuZCB0aGUgZ2VuZXJpYyBhZ2VudCBqb2JzLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJEdlbmVyaWNBZ2VudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljQWdlbnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGlja2V0IG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICAjIGRlYnVnCiAgICAkU2VsZi0+e0RlYnVnfSA9ICRQYXJhbXtEZWJ1Z30gfHwgMDsKCiAgICAjIG5vdGljZSBvbiBTVERPVVQKICAgICRTZWxmLT57Tm90aWNlU1RET1VUfSA9ICRQYXJhbXtOb3RpY2VTVERPVVR9IHx8IDA7CgogICAgbXkgJU1hcCA9ICgKICAgICAgICBUaWNrZXROdW1iZXIgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9Gcm9tICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9UbyAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9DYyAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9TdWJqZWN0ICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBNSU1FQmFzZV9Cb2R5ICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBUaW1lVW5pdCAgICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBDdXN0b21lcklEICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBDdXN0b21lclVzZXJMb2dpbiAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBBZ2VudCAgICAgICAgICAgICAgICAgICA9PiAnU0NBTEFSJywKICAgICAgICBTdGF0ZUlEcyAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIFN0YXRlVHlwZUlEcyAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgUXVldWVJRHMgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBQcmlvcml0eUlEcyAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIE93bmVySURzICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgTG9ja0lEcyAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBUeXBlSURzICAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIFJlc3BvbnNpYmxlSURzICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBTTEFJRHMgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIE5ld1RpdGxlICAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld0N1c3RvbWVySUQgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld0N1c3RvbWVyVXNlckxvZ2luICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1N0YXRlSUQgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1F1ZXVlSUQgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1ByaW9yaXR5SUQgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld093bmVySUQgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld0xvY2tJRCAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1R5cGVJRCAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1NlcnZpY2VJRCAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIE5ld1NMQUlEICAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIFNjaGVkdWxlTGFzdFJ1biAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIFNjaGVkdWxlTGFzdFJ1blVuaXhUaW1lID0+ICdTQ0FMQVInLAogICAgICAgIFZhbGlkICAgICAgICAgICAgICAgICAgID0+ICdTQ0FMQVInLAogICAgICAgIFNjaGVkdWxlRGF5cyAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgU2NoZWR1bGVNaW51dGVzICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICBTY2hlZHVsZUhvdXJzICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIEV2ZW50VmFsdWVzICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICApOwoKICAgICMgYWRkIHRpbWUgYXR0cmlidXRlcwogICAgZm9yIG15ICRUeXBlICgKICAgICAgICBxdyhUaW1lIENoYW5nZVRpbWUgQ2xvc2VUaW1lIFRpbWVQZW5kaW5nIEVzY2FsYXRpb25UaW1lIEVzY2FsYXRpb25SZXNwb25zZVRpbWUgRXNjYWxhdGlvblVwZGF0ZVRpbWUgRXNjYWxhdGlvblNvbHV0aW9uVGltZSkKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJEtleSA9ICRUeXBlIC4gJ1NlYXJjaFR5cGUnOwogICAgICAgICRNYXB7JEtleX0gPSAnU0NBTEFSJzsKICAgIH0KICAgIGZvciBteSAkVHlwZSAoCiAgICAgICAgcXcoVGlja2V0Q3JlYXRlIFRpY2tldENoYW5nZSBUaWNrZXRDbG9zZSBUaWNrZXRMYXN0Q2hhbmdlIFRpY2tldExhc3RDbG9zZSBUaWNrZXRQZW5kaW5nIFRpY2tldEVzY2FsYXRpb24gVGlja2V0RXNjYWxhdGlvblJlc3BvbnNlIFRpY2tldEVzY2FsYXRpb25VcGRhdGUgVGlja2V0RXNjYWxhdGlvblNvbHV0aW9uKQogICAgICAgICkKICAgIHsKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoCiAgICAgICAgICAgIHF3KFBvaW50Rm9ybWF0IFBvaW50IFBvaW50U3RhcnQgU3RhcnQgU3RhcnREYXkgU3RhcnRNb250aCBTdGFydFllYXIgU3RvcCBTdG9wRGF5IFN0b3BNb250aCBTdG9wWWVhcikKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEtleSA9ICRUeXBlIC4gJ1RpbWUnIC4gJEF0dHJpYnV0ZTsKICAgICAgICAgICAgJE1hcHskS2V5fSA9ICdTQ0FMQVInOwogICAgICAgIH0KICAgIH0KCiAgICAjIEFkZCBEeW5hbWljIEZpZWxkcyBhdHRyaWJ1dGVzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgdGhlIGZpZWxkIHR5cGUgb2YgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBlZGl0IGFuZCBzZWFyY2gKICAgICAgICBteSAkRmllbGRWYWx1ZVR5cGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VGVtcGxhdGVWYWx1ZVR5cGVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBGaWVsZFR5cGUgICAgICAgICAgPT4gJ0FsbCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgZmllbGQgdHlwZSB0byBNYXAKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRGaWVsZFZhbHVlVHlwZSkgKSB7CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICggc29ydCBrZXlzICV7JEZpZWxkVmFsdWVUeXBlfSApIHsKICAgICAgICAgICAgICAgICRNYXB7JEZpZWxkTmFtZX0gPSAkRmllbGRWYWx1ZVR5cGUtPnskRmllbGROYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+e01hcH0gPSBcJU1hcDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBKb2JSdW4oKQoKcnVuIGEgZ2VuZXJpYyBhZ2VudCBqb2IKCiAgICAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JSdW4oCiAgICAgICAgSm9iICAgICAgICAgID0+ICdKb2JOYW1lJywKICAgICAgICBPbmx5VGlja2V0SUQgPT4gMTIzLCAgICAgIyAob3B0aW9uYWwpIGZvciBldmVudCBiYXNlZCBKb2IgZXhlY3V0aW9uCiAgICAgICAgU2xlZXBUaW1lICAgID0+IDEwMF8wMDAgICMgKG9wdGlvbmFsKSBzbGVlcHRpbWUgcGVyIHRpY2tldCBpbiBtaWNyb3NlY29uZHMKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgSm9iUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoSm9iIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICBwcmludCAiSm9iOiAnJFBhcmFte0pvYn0nXG4iOwogICAgfQoKICAgICMgZ2V0IGpvYiBmcm9tIHBhcmFtCiAgICBteSAlSm9iOwogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFRlbXBsYXRlOwogICAgaWYgKCAkUGFyYW17Q29uZmlnfSApIHsKICAgICAgICAlSm9iID0gJXsgJFBhcmFte0NvbmZpZ30gfTsKCiAgICAgICAgIyBsb2cgZXZlbnQKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSdW4gR2VuZXJpY0FnZW50IEpvYiAnJFBhcmFte0pvYn0nIGZyb20gY29uZmlnIGZpbGUuIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGRiIGpvYgogICAgZWxzZSB7CgogICAgICAgICMgbG9nIGV2ZW50CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUnVuIEdlbmVyaWNBZ2VudCBKb2IgJyRQYXJhbXtKb2J9JyBmcm9tIGRiLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgam9iIGRhdGEKICAgICAgICBteSAlREJKb2JSYXcgPSAkU2VsZi0+Sm9iR2V0KCBOYW1lID0+ICRQYXJhbXtKb2J9ICk7CgogICAgICAgICMgdXBkYXRlZCBsYXN0IHJ1biB0aW1lCiAgICAgICAgJFNlbGYtPl9Kb2JVcGRhdGVSdW5UaW1lKAogICAgICAgICAgICBOYW1lICAgPT4gJFBhcmFte0pvYn0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfQogICAgICAgICk7CgogICAgICAgICMgcmV3b3JrCiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJURCSm9iUmF3ICkgewogICAgICAgICAgICBpZiAoICRLZXkgPX4gL15OZXcvICkgewogICAgICAgICAgICAgICAgbXkgJE5ld0tleSA9ICRLZXk7CiAgICAgICAgICAgICAgICAkTmV3S2V5ID1+IHMvXk5ldy8vOwogICAgICAgICAgICAgICAgJEpvYntOZXd9LT57JE5ld0tleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgIX4gbXsgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICAgICAgICAgICAgICRKb2J7JEtleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udmVydCBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBpZiAoICRLZXkgPX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICAgICAgICAgJEpvYntOZXd9LT57JEtleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkS2V5ID1+IG17IFxBIFNlYXJjaF9EeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoVGVtcGxhdGV7JEtleX0gPSAkREJKb2JSYXd7JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUGFzcyBtb2R1bGUgcGFyYW1ldGVycyBkaXJlY3RseSB0byB0aGUgbW9kdWxlIGluICVQYXJhbSwKICAgICAgICAjICAgYnV0IGRvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBrZXlzCiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiA2ICkgewogICAgICAgICAgICBpZiAoICRKb2J7TmV3fS0+eyJQYXJhbUtleSRDb3VudGVyIn0gKSB7CiAgICAgICAgICAgICAgICAkSm9ie05ld30tPnsgJEpvYntOZXd9LT57IlBhcmFtS2V5JENvdW50ZXIifSB9IC8vPSAkSm9ie05ld30tPnsiUGFyYW1WYWx1ZSRDb3VudGVyIn07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggZXhpc3RzICRKb2J7U2VhcmNoSW5BcmNoaXZlfSAmJiAkSm9ie1NlYXJjaEluQXJjaGl2ZX0gZXEgJ0FyY2hpdmVkVGlja2V0cycgKSB7CiAgICAgICAgICAgICRKb2J7QXJjaGl2ZUZsYWdzfSA9IFsneSddOwogICAgICAgIH0KICAgICAgICBpZiAoIGV4aXN0cyAkSm9ie1NlYXJjaEluQXJjaGl2ZX0gJiYgJEpvYntTZWFyY2hJbkFyY2hpdmV9IGVxICdBbGxUaWNrZXRzJyApIHsKICAgICAgICAgICAgJEpvYntBcmNoaXZlRmxhZ3N9ID0gWyAneScsICduJyBdOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZHMgc2VhcmNoIHBhcmFtZXRlcnMKICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRUZW1wID0gJER5bmFtaWNGaWVsZFNlYXJjaFRlbXBsYXRlewogICAgICAgICAgICAgICAgJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAkUHJlZmVyZW5jZS0+e1R5cGV9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0UgaWYgIWRlZmluZWQgJER5bmFtaWNGaWVsZFRlbXA7CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZFNlYXJjaFRlbXBsYXRlLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17T25seVRpY2tldElEfSApIHsKICAgICAgICAkSm9ie1RpY2tldElEfSA9ICRQYXJhbXtPbmx5VGlja2V0SUR9OwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBlc2NhbGF0aW9uIHRpY2tldHMKICAgIG15ICVUaWNrZXRzOwoKICAgICMgZ2V0IHRpY2tldCBsaW1pdCBvbiBqb2IgcnVuCiAgICBteSAkUnVuTGltaXQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6R2VuZXJpY0FnZW50UnVuTGltaXQnKTsKICAgIGlmICggJEpvYntFc2NhbGF0aW9ufSApIHsKCiAgICAgICAgIyBGaW5kIGFsbCB0aWNrZXRzIHdoaWNoIHdpbGwgZXNjYWxhdGUgd2l0aGluIHRoZSBuZXh0IGZpdmUgZGF5cy4KICAgICAgICAjICAgVGhlIG5vdGlmaWNhdGlvbiBtb2R1bGUgd2lsbCBkZXRlcm1pbmUgaWYgYSBub3RpZmljYXRpb24gbXVzdCBiZSBzZW50IG91dCBvciBub3QuCiAgICAgICAgbXkgQFRpY2tldHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRKb2J7TGltaXR9IHx8ICRQYXJhbXtMaW1pdH0gfHwgMTAwLAogICAgICAgICAgICBUaWNrZXRFc2NhbGF0aW9uVGltZU9sZGVyTWludXRlcyA9PiAkSm9ie1RpY2tldEVzY2FsYXRpb25UaW1lT2xkZXJNaW51dGVzfQogICAgICAgICAgICAgICAgfHwgLSggNSAqIDI0ICogNjAgKSwKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAncncnLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9IHx8IDEsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIChAVGlja2V0cykgewogICAgICAgICAgICBpZiAoICEkSm9ie1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRzeyRffSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE51bWJlckxvb2t1cCggVGlja2V0SUQgPT4gJF8gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkXywKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkVGlja2V0e1F1ZXVlfSBlcSAkSm9ie1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkVGlja2V0c3skX30gPSAkVGlja2V0e1RpY2tldE51bWJlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBwZW5kaW5nIHRpY2tldHMKICAgIGVsc2lmICggJEpvYntQZW5kaW5nUmVtaW5kZXJ9IHx8ICRKb2J7UGVuZGluZ0F1dG99ICkgewogICAgICAgIG15ICRUeXBlID0gJyc7CiAgICAgICAgaWYgKCAkSm9ie1BlbmRpbmdSZW1pbmRlcn0gKSB7CiAgICAgICAgICAgICRUeXBlID0gJ1BlbmRpbmdSZW1pbmRlcic7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkVHlwZSA9ICdQZW5kaW5nQXV0byc7CiAgICAgICAgfQogICAgICAgIGlmICggISRKb2J7UXVldWV9ICkgewogICAgICAgICAgICAlVGlja2V0cyA9ICgKICAgICAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAlSm9iLAogICAgICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbklubGluZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZSAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSB8fCAkUnVuTGltaXQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICVUaWNrZXRzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRKb2J7UXVldWV9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciAoIEB7ICRKb2J7UXVldWV9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgICAgICAgICBwcmludCAiIEZvciBRdWV1ZTogJF9cbiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAlVGlja2V0cyA9ICgKICAgICAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25JbmxpbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUXVldWVzICAgICAgICAgID0+IFskX10sCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZSAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgID0+ICRQYXJhbXtMaW1pdH0gfHwgJFJ1bkxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAlVGlja2V0cwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJVRpY2tldHMgPSAoCiAgICAgICAgICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgICAgICAgICAgJUpvYiwKICAgICAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25JbmxpbmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGUgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICAgICAgUXVldWVzICAgICAgICAgID0+IFsgJEpvYntRdWV1ZX0gXSwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSB8fCAkUnVuTGltaXQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICVUaWNrZXRzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGZvciAoIHNvcnQga2V5cyAlVGlja2V0cyApIHsKICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJF8sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJFRpY2tldHtVbnRpbFRpbWV9ID4gMSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkVGlja2V0c3skX307CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcmVndWxhciB0aWNrZXRzCiAgICBlbHNlIHsKICAgICAgICBpZiAoICEkSm9ie1F1ZXVlfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgbWluLiBvbmUgc2VhcmNoIGFyZwogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBmb3IgKCBzb3J0IGtleXMgJUpvYiApIHsKICAgICAgICAgICAgICAgIGlmICggJF8gIX4gL14oTmV3fE5hbWV8VmFsaWR8U2NoZWR1bGV8RXZlbnQpLyAmJiAkSm9ieyRffSApIHsKICAgICAgICAgICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhbHNvIHNlYXJjaCBpbiBEeW5hbWljIGZpZWxkcyBzZWFyY2ggYXR0cmlidXRlcwogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsb2cgbm8gc2VhcmNoIGF0dHJpYnV0ZQogICAgICAgICAgICBpZiAoICEkQ291bnQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBdHRlbnRpb246IENhbid0IHJ1biBHZW5lcmljQWdlbnQgSm9iICckUGFyYW17Sm9ifScgYmVjYXVzZSBubyAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gInNlYXJjaCBhdHRyaWJ1dGVzIGFyZSB1c2VkIS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZWFyY2ggdGlja2V0cwogICAgICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgICAgIHByaW50ICIgRm9yIGFsbCBRdWV1ZXM6IFxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkR2VuZXJpY0FnZW50VGlja2V0U2VhcmNoID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkdlbmVyaWNBZ2VudFRpY2tldFNlYXJjaCIpIHx8IHt9OwogICAgICAgICAgICAlVGlja2V0cyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgIENvbmRpdGlvbklubGluZSA9PiAkR2VuZXJpY0FnZW50VGlja2V0U2VhcmNoLT57RXh0ZW5kZWRTZWFyY2hDb25kaXRpb259LAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgID0+ICRQYXJhbXtMaW1pdH0gfHwgJFJ1bkxpbWl0LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkSm9ie1F1ZXVlfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBmb3IgKCBAeyAkSm9ie1F1ZXVlfSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiBGb3IgUXVldWU6ICRfXG4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJVRpY2tldHMgPSAoCiAgICAgICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VhcmNoKAogICAgICAgICAgICAgICAgICAgICAgICAlSm9iLAogICAgICAgICAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uSW5saW5lID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICA9PiBbJF9dLAogICAgICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSB8fCAkUnVuTGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICVUaWNrZXRzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlVGlja2V0cyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgICAgICVKb2IsCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgICAgIENvbmRpdGlvbklubGluZSA9PiAxLAogICAgICAgICAgICAgICAgUXVldWVzICAgICAgICAgID0+IFsgJEpvYntRdWV1ZX0gXSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICA9PiAkUGFyYW17TGltaXR9IHx8ICRSdW5MaW1pdCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcm9jZXNzIGVhY2ggdGlja2V0CiAgICBUSUNLRVRJRDoKICAgIGZvciBteSAkVGlja2V0SUQgKCBzb3J0IGtleXMgJVRpY2tldHMgKSB7CgogICAgICAgICRTZWxmLT5fSm9iUnVuVGlja2V0KAogICAgICAgICAgICBDb25maWcgICAgICAgPT4gXCVKb2IsCiAgICAgICAgICAgIEpvYiAgICAgICAgICA9PiAkUGFyYW17Sm9ifSwKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICRUaWNrZXRzeyRUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRJQ0tFVElEIGlmICEkUGFyYW17U2xlZXBUaW1lfTsKCiAgICAgICAgVGltZTo6SGlSZXM6OnVzbGVlcCggJFBhcmFte1NsZWVwVGltZX0gKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEpvYkxpc3QoKQoKcmV0dXJucyBhIGhhc2ggb2Ygam9icwoKICAgIG15ICVMaXN0ID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iTGlzdCgpOwoKPWN1dAoKc3ViIEpvYkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICJKb2JMaXN0IjsKICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiByZWYgJENhY2hlOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgRElTVElOQ1Qoam9iX25hbWUpIEZST00gZ2VuZXJpY19hZ2VudF9qb2JzJywKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1swXTsKICAgIH0KCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAnR2VuZXJpY0FnZW50JywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+IDI0ICogNjAgKiA2MCwKICAgICk7CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aGVhZDIgSm9iR2V0KCkKCnJldHVybnMgYSBoYXNoIG9mIHRoZSBqb2IgZGF0YQoKICAgIG15ICVKb2IgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JHZXQoTmFtZSA9PiAnSm9iTmFtZScpOwoKPWN1dAoKc3ViIEpvYkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgKHF3KE5hbWUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0pvYkdldDo6JyAuICRQYXJhbXtOYW1lfTsKICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiByZWYgJENhY2hlOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGpvYl9rZXksIGpvYl92YWx1ZQogICAgICAgICAgICBGUk9NIGdlbmVyaWNfYWdlbnRfam9icwogICAgICAgICAgICBXSEVSRSBqb2JfbmFtZSA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e01hcH0tPnsgJFJvd1swXSB9ICYmICRTZWxmLT57TWFwfS0+eyAkUm93WzBdIH0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgcHVzaCBAeyAkRGF0YXsgJFJvd1swXSB9IH0sICRSb3dbMV07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGltZSBzZXR0aW5ncwogICAgbXkgJU1hcCA9ICgKICAgICAgICBUaWNrZXRDcmVhdGUgICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgIFRpY2tldENoYW5nZSAgICAgICAgICAgICA9PiAnQ2hhbmdlVGltZScsCiAgICAgICAgVGlja2V0Q2xvc2UgICAgICAgICAgICAgID0+ICdDbG9zZVRpbWUnLAogICAgICAgIFRpY2tldExhc3RDaGFuZ2UgICAgICAgICA9PiAnTGFzdENoYW5nZVRpbWUnLAogICAgICAgIFRpY2tldExhc3RDbG9zZSAgICAgICAgICA9PiAnTGFzdENsb3NlVGltZScsCiAgICAgICAgVGlja2V0UGVuZGluZyAgICAgICAgICAgID0+ICdUaW1lUGVuZGluZycsCiAgICAgICAgVGlja2V0RXNjYWxhdGlvbiAgICAgICAgID0+ICdFc2NhbGF0aW9uVGltZScsCiAgICAgICAgVGlja2V0RXNjYWxhdGlvblJlc3BvbnNlID0+ICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lJywKICAgICAgICBUaWNrZXRFc2NhbGF0aW9uVXBkYXRlICAgPT4gJ0VzY2FsYXRpb25VcGRhdGVUaW1lJywKICAgICAgICBUaWNrZXRFc2NhbGF0aW9uU29sdXRpb24gPT4gJ0VzY2FsYXRpb25Tb2x1dGlvblRpbWUnLAogICAgKTsKCiAgICBmb3IgbXkgJFR5cGUgKAogICAgICAgIHF3KFRpY2tldENyZWF0ZSBUaWNrZXRDaGFuZ2UgVGlja2V0Q2xvc2UgVGlja2V0TGFzdENoYW5nZSBUaWNrZXRMYXN0Q2xvc2UgVGlja2V0UGVuZGluZyBUaWNrZXRFc2NhbGF0aW9uIFRpY2tldEVzY2FsYXRpb25SZXNwb25zZSBUaWNrZXRFc2NhbGF0aW9uVXBkYXRlIFRpY2tldEVzY2FsYXRpb25Tb2x1dGlvbikKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJFNlYXJjaFR5cGUgPSAkTWFweyRUeXBlfSAuICdTZWFyY2hUeXBlJzsKCiAgICAgICAgaWYgKCAhJERhdGF7JFNlYXJjaFR5cGV9IHx8ICREYXRheyRTZWFyY2hUeXBlfSBlcSAnTm9uZScgKSB7CgogICAgICAgICAgICAjIGRvIG5vdGhpbmcgb24gdGltZSBzdHVmZgogICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgcXcoVGltZVN0YXJ0TW9udGggVGltZVN0b3BNb250aCBUaW1lU3RvcERheQogICAgICAgICAgICAgICAgVGltZVN0YXJ0RGF5IFRpbWVTdG9wWWVhciBUaW1lUG9pbnQKICAgICAgICAgICAgICAgIFRpbWVTdGFydFllYXIgVGltZVBvaW50Rm9ybWF0IFRpbWVQb2ludFN0YXJ0KQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJERhdGF7ICRUeXBlIC4gJF8gfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREYXRheyRTZWFyY2hUeXBlfSAmJiAkRGF0YXskU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgZm9yIChxdyhUaW1lUG9pbnQgVGltZVBvaW50Rm9ybWF0IFRpbWVQb2ludFN0YXJ0KSkgewogICAgICAgICAgICAgICAgZGVsZXRlICREYXRheyAkVHlwZSAuICRfIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAiVGltZVN0YXJ0JF8iIH0gPSBzcHJpbnRmKCAnJTAyZCcsICREYXRheyAkVHlwZSAuICJUaW1lU3RhcnQkXyIgfSApOwogICAgICAgICAgICAgICAgJERhdGF7ICRUeXBlIC4gIlRpbWVTdG9wJF8iIH0gID0gc3ByaW50ZiggJyUwMmQnLCAkRGF0YXsgJFR5cGUgLiAiVGltZVN0b3AkXyIgfSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICYmICREYXRheyAkVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgJiYgJERhdGF7ICRUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJERhdGF7ICRUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0gPSAkRGF0YXsgJFR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgIC4gJERhdGF7ICRUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgLiAkRGF0YXsgJFR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAxJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICYmICREYXRheyAkVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAmJiAkRGF0YXsgJFR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJERhdGF7ICRUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgIC4gJERhdGF7ICRUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAuICREYXRheyAkVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGF0YXskU2VhcmNoVHlwZX0gJiYgJERhdGF7JFNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICBmb3IgKAogICAgICAgICAgICAgICAgcXcoVGltZVN0YXJ0TW9udGggVGltZVN0b3BNb250aCBUaW1lU3RvcERheQogICAgICAgICAgICAgICAgVGltZVN0YXJ0RGF5IFRpbWVTdG9wWWVhciBUaW1lU3RhcnRZZWFyKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJERhdGF7ICRUeXBlIC4gJF8gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAmJiAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICYmICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgaWYgKCAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICRUaW1lID0gJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkRGF0YXsgJFR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICRUaW1lID0gJERhdGF7ICRUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICREYXRheyAkVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnTmV4dCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgd2l0aGluIHRoZSBuZXh0IC4uLgogICAgICAgICAgICAgICAgICAgICREYXRheyAkVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiB0aGUgbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAkRGF0YXsgJFR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7ICRUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHZhbGlkCiAgICBpZiAoICVEYXRhICYmICFkZWZpbmVkICREYXRhe1ZhbGlkfSApIHsKICAgICAgICAkRGF0YXtWYWxpZH0gPSAxOwogICAgfQogICAgaWYgKCVEYXRhKSB7CiAgICAgICAgJERhdGF7TmFtZX0gPSAkUGFyYW17TmFtZX07CiAgICB9CgogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiAyNCAqIDYwICogNjAsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIEpvYkFkZCgpCgphZGRzIGEgbmV3IGpvYiB0byB0aGUgZGF0YWJhc2UKCiAgICAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JBZGQoCiAgICAgICAgTmFtZSA9PiAnSm9iTmFtZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFF1ZXVlID0+ICdTb21lUXVldWUnLAogICAgICAgICAgICAuLi4KICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEpvYkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgKHF3KE5hbWUgRGF0YSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgam9iIG5hbWUgYWxyZWFkeSBleGlzdHMKICAgIG15ICVDaGVjayA9ICRTZWxmLT5Kb2JHZXQoIE5hbWUgPT4gJFBhcmFte05hbWV9ICk7CiAgICBpZiAoJUNoZWNrKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBIGpvYiB3aXRoIHRoZSBuYW1lICckUGFyYW17TmFtZX0nIGFscmVhZHkgZXhpc3RzLiIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGluc2VydCBkYXRhIGludG8gZGIKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtEYXRhfSB9ICkgewogICAgICAgIGlmICggcmVmICRQYXJhbXtEYXRhfS0+eyRLZXl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtEYXRhfS0+eyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJEl0ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBnZW5lcmljX2FnZW50X2pvYnMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnKGpvYl9uYW1lLCBqb2Jfa2V5LCBqb2JfdmFsdWUpIFZBTFVFUyAoPywgPywgPyknLAogICAgICAgICAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRLZXksIFwkSXRlbSBdLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBnZW5lcmljX2FnZW50X2pvYnMgJwogICAgICAgICAgICAgICAgICAgICAgICAuICcoam9iX25hbWUsIGpvYl9rZXksIGpvYl92YWx1ZSkgVkFMVUVTICg/LCA/LCA/KScsCiAgICAgICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkS2V5LCBcJFBhcmFte0RhdGF9LT57JEtleX0gXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIk5ldyBHZW5lcmljQWdlbnQgam9iICckUGFyYW17TmFtZX0nIGFkZGVkIChVc2VySUQ9JFBhcmFte1VzZXJJRH0pLiIsCiAgICApOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0dlbmVyaWNBZ2VudCcsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgSm9iRGVsZXRlKCkKCmRlbGV0ZXMgYSBqb2IgZnJvbSB0aGUgZGF0YWJhc2UKCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkRlbGV0ZSgKICAgICAgICBOYW1lICAgPT4gJ0pvYk5hbWUnLAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoKcmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICMgb3IgZmFsc2UgaW4gY2FzZSBvZiBhIGZhaWx1cmUKCj1jdXQKCnN1YiBKb2JEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgam9iCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZ2VuZXJpY19hZ2VudF9qb2JzIFdIRVJFIGpvYl9uYW1lID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICk7CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIkdlbmVyaWNBZ2VudCBqb2IgJyRQYXJhbXtOYW1lfScgZGVsZXRlZCAoVXNlcklEPSRQYXJhbXtVc2VySUR9KS4iLAogICAgKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdHZW5lcmljQWdlbnQnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEpvYkV2ZW50TGlzdCgpCgpyZXR1cm5zIGEgaGFzaCBvZiBldmVudHMgZm9yIGVhY2ggam9iCgogICAgbXkgJUxpc3QgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JFdmVudExpc3QoKTsKCj1jdXQKCnN1YiBKb2JFdmVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICJKb2JFdmVudExpc3QiOwogICAgbXkgJENhY2hlICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnR2VuZXJpY0FnZW50JywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJXskQ2FjaGV9IGlmIHJlZiAkQ2FjaGU7CgogICAgbXkgJUpvYkxpc3QgPSAkU2VsZi0+Sm9iTGlzdCgpOwogICAgbXkgJURhdGE7CiAgICBKT0JfTkFNRToKICAgIGZvciBteSAkSm9iTmFtZSAoIHNvcnQga2V5cyAlSm9iTGlzdCApIHsKICAgICAgICBteSAlSm9iID0gJFNlbGYtPkpvYkdldCggTmFtZSA9PiAkSm9iTmFtZSApOwogICAgICAgIG5leHQgSk9CX05BTUUgaWYgISRKb2J7VmFsaWR9OwogICAgICAgICREYXRheyRKb2JOYW1lfSA9ICRKb2J7RXZlbnRWYWx1ZXN9OwogICAgfQoKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdHZW5lcmljQWdlbnQnLAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgVFRMICAgPT4gMjQgKiA2MCAqIDYwLAogICAgKTsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBFeHBvcnRHZW5lcmljQWdlbnRzKCkKClJldHVybnMgZGF0YSBzdHJ1Y3R1cmVzIHJlYWR5IGZvciBleHBvcnQgZm9yIGVhY2ggZ2VuZXJpYyBhZ2VudC4gT3B0aW9uYWxseSBmaWx0ZXJhYmxlIGJ5IGdpdmluZyBhIGxpc3Qgb2YgZGVzaXJlZCBnZW5lcmljIGFnZW50cy4KCiAgICBteSAkRXhwb3J0RGF0YSA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkV4cG9ydEdlbmVyaWNBZ2VudHMoCiAgICAgICAgR2VuZXJpY0FnZW50cyA9PiBbICAgICAgICAgICMgKG9wdGlvbmFsKSByZXN0cmljdCBnZW5lcmljIGFnZW50cyB0byBnaXZlbiBvbmVzCiAgICAgICAgICAgICdHZW5lcmljQWdlbnROYW1lMDEnLAogICAgICAgICAgICAnR2VuZXJpY0FnZW50TmFtZTAyJwogICAgICAgIF0sCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydEdlbmVyaWNBZ2VudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlR2VuZXJpY0FnZW50RmlsdGVyOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtHZW5lcmljQWdlbnRzfSApICkgewogICAgICAgICVHZW5lcmljQWdlbnRGaWx0ZXIgPSBtYXAgeyAkXyA9PiAxIH0gJFBhcmFte0dlbmVyaWNBZ2VudHN9LT5AKjsKICAgIH0KCiAgICAjIGdldCBuZWNlc3Nhcnkgb2JqZWN0cwogICAgbXkgJExvY2tPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvY2snKTsKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwogICAgbXkgJFF1ZXVlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CiAgICBteSAkU2VydmljZU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwogICAgbXkgJFNMQU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwogICAgbXkgJFN0YXRlT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CiAgICBteSAkVHlwZU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwogICAgbXkgJFVzZXJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGZldGNoIGxvb2t1cCBsaXN0cwogICAgbXkgJUdlbmVyaWNBZ2VudExpc3QgPSAkU2VsZi0+Sm9iTGlzdCgpOwoKICAgIG15ICVFeHBvcnREYXRhOwogICAgR0VORVJJQ0FHRU5UTkFNRToKICAgIGZvciBteSAkR2VuZXJpY0FnZW50TmFtZSAoIHNvcnQga2V5cyAlR2VuZXJpY0FnZW50TGlzdCApIHsKCiAgICAgICAgbXkgJUdlbmVyaWNBZ2VudERhdGEgPSAkU2VsZi0+Sm9iR2V0KAogICAgICAgICAgICBOYW1lID0+ICRHZW5lcmljQWdlbnROYW1lLAogICAgICAgICk7CgogICAgICAgIGlmICglR2VuZXJpY0FnZW50RmlsdGVyKSB7CiAgICAgICAgICAgIG5leHQgR0VORVJJQ0FHRU5UTkFNRSB1bmxlc3MgJEdlbmVyaWNBZ2VudEZpbHRlcnsgJEdlbmVyaWNBZ2VudERhdGF7TmFtZX0gfTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNsYXRlIElEcyBpbnRvIG5hbWVzIG9yIG5hbWUtbGlrZSBpZGVudGlmaWVycwogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIGtleXMgJUdlbmVyaWNBZ2VudERhdGEgKSB7CgogICAgICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnTmV3TG9ja0lEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3TG9ja0lEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdMb2NrfSA9ICRMb2NrT2JqZWN0LT5Mb2NrTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBMb2NrSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3TG9ja0lEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdMb2NrSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3T3duZXJJRCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZW5lcmljQWdlbnREYXRhe05ld093bmVySUR9ICkgewogICAgICAgICAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhe05ld093bmVyfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3T3duZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEdlbmVyaWNBZ2VudERhdGF7TmV3T3duZXJJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOZXdQcmlvcml0eUlEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3UHJpb3JpdHlJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7TmV3UHJpb3JpdHl9ID0gJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHlJRCA9PiAkR2VuZXJpY0FnZW50RGF0YXtOZXdQcmlvcml0eUlEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdQcmlvcml0eUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05ld1F1ZXVlSUQnICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YXtOZXdRdWV1ZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdRdWV1ZX0gPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZUlEID0+ICRHZW5lcmljQWdlbnREYXRhe05ld1F1ZXVlSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe05ld1F1ZXVlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3U2VydmljZUlEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3U2VydmljZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdTZXJ2aWNlfSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3U2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdTZXJ2aWNlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3U0xBSUQnICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YXtOZXdTTEFJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7TmV3U0xBfSA9ICRTTEFPYmplY3QtPlNMQUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgU0xBSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3U0xBSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe05ld1NMQUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05ld1N0YXRlSUQnICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YXtOZXdTdGF0ZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdTdGF0ZX0gPSAkU3RhdGVPYmplY3QtPlN0YXRlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEID0+ICRHZW5lcmljQWdlbnREYXRhe05ld1N0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe05ld1N0YXRlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnTmV3VHlwZUlEJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGF7TmV3VHlwZUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtOZXdUeXBlfSA9ICRUeXBlT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlSUQgPT4gJEdlbmVyaWNBZ2VudERhdGF7TmV3VHlwZUlEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtOZXdUeXBlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZXMKICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMb2NrSURzJyApIHsKICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YXtMb2NrSURzfSApICkgewogICAgICAgICAgICAgICAgICAgIG15IEBMb2NrczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExvY2tJRCAoICRHZW5lcmljQWdlbnREYXRhe0xvY2tJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATG9ja3MsICRMb2NrT2JqZWN0LT5Mb2NrTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0lEID0+ICRMb2NrSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhe0xvY2tzfSA9IFxATG9ja3M7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe0xvY2tJRHN9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnT3duZXJJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe093bmVySURzfSApICkgewogICAgICAgICAgICAgICAgICAgIG15IEBPd25lcnM7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRPd25lcklEICggJEdlbmVyaWNBZ2VudERhdGF7T3duZXJJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAT3duZXJzLCAkVXNlck9iamVjdC0+VXNlckxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkT3duZXJJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7T3duZXJzfSA9IFxAT3duZXJzOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtPd25lcklEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdQcmlvcml0eUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGF7UHJpb3JpdHlJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFByaW9yaXRpZXM7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRQcmlvcml0eUlEICggJEdlbmVyaWNBZ2VudERhdGF7UHJpb3JpdHlJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAUHJpb3JpdGllcywgJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5SUQgPT4gJFByaW9yaXR5SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhe1ByaW9yaXRpZXN9ID0gXEBQcmlvcml0aWVzOwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkR2VuZXJpY0FnZW50RGF0YXtQcmlvcml0eUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdRdWV1ZUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGF7UXVldWVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFF1ZXVlczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXVlSUQgKCAkR2VuZXJpY0FnZW50RGF0YXtRdWV1ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBRdWV1ZXMsICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWV1ZUlEID0+ICRRdWV1ZUlELAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtRdWV1ZXN9ID0gXEBRdWV1ZXM7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe1F1ZXVlSURzfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1NlcnZpY2VJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe1NlcnZpY2VJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFNlcnZpY2VzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggJEdlbmVyaWNBZ2VudERhdGF7U2VydmljZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZXJ2aWNlcywgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7U2VydmljZXN9ID0gXEBTZXJ2aWNlczsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEdlbmVyaWNBZ2VudERhdGF7U2VydmljZUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdTTEFJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe1NMQUlEc30gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSBAU0xBczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNMQUlEICggJEdlbmVyaWNBZ2VudERhdGF7U0xBSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNMQXMsICRTTEFPYmplY3QtPlNMQUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMQUlEID0+ICRTTEFJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7U0xBc30gPSBcQFNMQXM7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe1NMQUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdTdGF0ZUlEcycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGF7U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFN0YXRlczsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFN0YXRlSUQgKCAkR2VuZXJpY0FnZW50RGF0YXtTdGF0ZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTdGF0ZXMsICRTdGF0ZU9iamVjdC0+U3RhdGVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YXtTdGF0ZXN9ID0gXEBTdGF0ZXM7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRHZW5lcmljQWdlbnREYXRhe1N0YXRlSURzfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1R5cGVJRHMnICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhe1R5cGVJRHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQFR5cGVzOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVHlwZUlEICggJEdlbmVyaWNBZ2VudERhdGF7VHlwZUlEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBUeXBlcywgJFR5cGVPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlSUQgPT4gJFR5cGVJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGF7VHlwZXN9ID0gXEBUeXBlczsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEdlbmVyaWNBZ2VudERhdGF7VHlwZUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRFeHBvcnREYXRheyAkR2VuZXJpY0FnZW50RGF0YXtOYW1lfSB9ID0gXCVHZW5lcmljQWdlbnREYXRhOwogICAgfQoKICAgIHJldHVybiBcJUV4cG9ydERhdGE7Cn0KCj1oZWFkMiBJbXBvcnRHZW5lcmljQWdlbnRzKCkKCkltcG9ydHMgbmV3IGdlbmVyaWMgYWdlbnRzIGFuZCBvcHRpb25hbGx5IHVwZGF0ZXMgZXhpc3Rpbmcgb25lcy4KCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkltcG9ydEdlbmVyaWNBZ2VudHMoCiAgICAgICAgR2VuZXJpY0FnZW50cyAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICdHZW5lcmljQWdlbnROYW1lMDEnID0+IHsKICAgICAgICAgICAgICAgICMgR2VuZXJpY0FnZW50IGRhdGEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0dlbmVyaWNBZ2VudE5hbWUwMicgPT4gewogICAgICAgICAgICAgICAgIyBHZW5lcmljQWdlbnQgZGF0YQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9PiAoMHwxKSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydEdlbmVyaWNBZ2VudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVXNlcklEID0gJFNlbGYtPntVc2VySUR9IHx8ICRQYXJhbXtVc2VySUR9OwoKICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICBteSAkTG9ja09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9jaycpOwogICAgbXkgJFByaW9yaXR5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5Jyk7CiAgICBteSAkUXVldWVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgIG15ICRTZXJ2aWNlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CiAgICBteSAkU0xBT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U0xBJyk7CiAgICBteSAkU3RhdGVPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdGUnKTsKICAgIG15ICRUeXBlT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgZmV0Y2ggbG9va3VwIGxpc3RzCiAgICBteSAlR2VuZXJpY0FnZW50TGlzdCA9ICRTZWxmLT5Kb2JMaXN0KCk7CgogICAgR0VORVJJQ0FHRU5UTkFNRToKICAgIGZvciBteSAkR2VuZXJpY0FnZW50TmFtZSAoIGtleXMgJFBhcmFte0dlbmVyaWNBZ2VudHN9LT4lKiApIHsKICAgICAgICBteSAkR2VuZXJpY0FnZW50RGF0YSA9ICRQYXJhbXtHZW5lcmljQWdlbnRzfXskR2VuZXJpY0FnZW50TmFtZX07CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgZXhpc3RzIGEgZ2VuZXJpYyBhZ2VudCB3aXRoIHNhbWUgbmFtZSBpbiB0aGUgc3lzdGVtCiAgICAgICAgIyAgIE5PVEUgR2VuZXJpY0FnZW50TGlzdCBoYXMgZm9ybWF0IHsgTmFtZSA9PiAnTmFtZScgfSwgdGhlcmVmb3IgdXNpbmcgYSBsb29rdXAgaXMgdW5uZWNlc3NhcnkKICAgICAgICBteSAkR2VuZXJpY0FnZW50Q2hlY2tOYW1lID0gJEdlbmVyaWNBZ2VudExpc3R7ICRHZW5lcmljQWdlbnREYXRhLT57TmFtZX0gfTsKCiAgICAgICAgIyBza2lwIGlmIGdlbmVyaWMgYWdlbnQgd2l0aCBzYW1lIG5hbWUgZXhpc3RzIGFuZCBvdmVyd3JpdGUgaXMgbm90IHNldAogICAgICAgIG5leHQgR0VORVJJQ0FHRU5UTkFNRSBpZiAoICEkUGFyYW17T3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllc30gJiYgJEdlbmVyaWNBZ2VudENoZWNrTmFtZSApOwoKICAgICAgICAjIHRyYW5zbGF0ZSBuYW1lZCBkYXRhIGJhY2sgdG8gSURzCiAgICAgICAgIyBzaW5nbGUtdmFsdWUgYXR0cmlidXRlcwogICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGEtPntOZXdMb2NrfSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdMb2NrSUR9ID0gJExvY2tPYmplY3QtPkxvY2tMb29rdXAoCiAgICAgICAgICAgICAgICBMb2NrID0+ICRHZW5lcmljQWdlbnREYXRhLT57TmV3TG9ja30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGEtPntOZXdPd25lcn0gKSB7CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57TmV3T3duZXJJRH0gPSAkVXNlck9iamVjdC0+VXNlckxvb2t1cCgKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkR2VuZXJpY0FnZW50RGF0YS0+e05ld093bmVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1ByaW9yaXR5fSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdQcmlvcml0eUlEfSA9ICRQcmlvcml0eU9iamVjdC0+UHJpb3JpdHlMb29rdXAoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1ByaW9yaXR5fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1F1ZXVlfSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdRdWV1ZUlEfSA9ICRRdWV1ZU9iamVjdC0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1F1ZXVlfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1NlcnZpY2V9ICkgewogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1NlcnZpY2VJRH0gPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxvb2t1cCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEdlbmVyaWNBZ2VudERhdGEtPntOZXdTZXJ2aWNlfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1NMQX0gKSB7CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57TmV3U0xBSUR9ID0gJFNMQU9iamVjdC0+U0xBTG9va3VwKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkR2VuZXJpY0FnZW50RGF0YS0+e05ld1NMQX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGEtPntOZXdTdGF0ZX0gKSB7CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57TmV3U3RhdGVJRH0gPSAkU3RhdGVPYmplY3QtPlN0YXRlTG9va3VwKAogICAgICAgICAgICAgICAgU3RhdGUgPT4gJEdlbmVyaWNBZ2VudERhdGEtPntOZXdTdGF0ZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGlmICggJEdlbmVyaWNBZ2VudERhdGEtPntOZXdUeXBlfSApIHsKICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntOZXdUeXBlSUR9ID0gJFR5cGVPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRHZW5lcmljQWdlbnREYXRhLT57TmV3VHlwZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGEtPntMb2Nrc30gKSApIHsKICAgICAgICAgICAgbXkgQExvY2tJRHM7CiAgICAgICAgICAgIGZvciBteSAkTG9jayAoICRHZW5lcmljQWdlbnREYXRhLT57TG9ja3N9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQExvY2tJRHMsICRMb2NrT2JqZWN0LT5Mb2NrTG9va3VwKAogICAgICAgICAgICAgICAgICAgIExvY2sgPT4gJExvY2ssCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57TG9ja0lEc30gPSBcQExvY2tJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e093bmVyc30gKSApIHsKICAgICAgICAgICAgbXkgQE93bmVySURzOwogICAgICAgICAgICBmb3IgbXkgJE93bmVyICggJEdlbmVyaWNBZ2VudERhdGEtPntPd25lcnN9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQE93bmVySURzLCAkVXNlck9iamVjdC0+VXNlckxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJE93bmVyLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e093bmVySURzfSA9IFxAT3duZXJJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e1ByaW9yaXRpZXN9ICkgKSB7CiAgICAgICAgICAgIG15IEBQcmlvcml0eUlEczsKICAgICAgICAgICAgZm9yIG15ICRQcmlvcml0eSAoICRHZW5lcmljQWdlbnREYXRhLT57UHJpb3JpdGllc30tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAUHJpb3JpdHlJRHMsICRQcmlvcml0eU9iamVjdC0+UHJpb3JpdHlMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFByaW9yaXR5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e1ByaW9yaXR5SURzfSA9IFxAUHJpb3JpdHlJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e1F1ZXVlc30gKSApIHsKICAgICAgICAgICAgbXkgQFF1ZXVlSURzOwogICAgICAgICAgICBmb3IgbXkgJFF1ZXVlICggJEdlbmVyaWNBZ2VudERhdGEtPntRdWV1ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFF1ZXVlSURzLCAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRRdWV1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEdlbmVyaWNBZ2VudERhdGEtPntRdWV1ZUlEc30gPSBcQFF1ZXVlSURzOwogICAgICAgIH0KICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGEtPntTZXJ2aWNlc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlcnZpY2VJRHM7CiAgICAgICAgICAgIGZvciBteSAkU2VydmljZSAoICRHZW5lcmljQWdlbnREYXRhLT57U2VydmljZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNlcnZpY2VJRHMsICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFNlcnZpY2UsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57U2VydmljZUlEc30gPSBcQFNlcnZpY2VJRHM7CiAgICAgICAgfQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2VuZXJpY0FnZW50RGF0YS0+e1NMQXN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTTEFJRHM7CiAgICAgICAgICAgIGZvciBteSAkU0xBICggJEdlbmVyaWNBZ2VudERhdGEtPntTTEFzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTTEFJRHMsICRTTEFPYmplY3QtPlNMQUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRTTEEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57U0xBSURzfSA9IFxAU0xBSURzOwogICAgICAgIH0KICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdlbmVyaWNBZ2VudERhdGEtPntTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTdGF0ZUlEczsKICAgICAgICAgICAgZm9yIG15ICRTdGF0ZSAoICRHZW5lcmljQWdlbnREYXRhLT57U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTdGF0ZUlEcywgJFN0YXRlT2JqZWN0LT5TdGF0ZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBTdGF0ZSA9PiAkU3RhdGUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRHZW5lcmljQWdlbnREYXRhLT57U3RhdGVJRHN9ID0gXEBTdGF0ZUlEczsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnREYXRhLT57VHlwZXN9ICkgKSB7CiAgICAgICAgICAgIG15IEBUeXBlSURzOwogICAgICAgICAgICBmb3IgbXkgJFR5cGUgKCAkR2VuZXJpY0FnZW50RGF0YS0+e1R5cGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBUeXBlSURzLCAkVHlwZU9iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICRUeXBlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkR2VuZXJpY0FnZW50RGF0YS0+e1R5cGVJRHN9ID0gXEBUeXBlSURzOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUKICAgICAgICBpZiAoJEdlbmVyaWNBZ2VudENoZWNrTmFtZSkgewoKICAgICAgICAgICAgIyByZW1vdmUvY2xlYW4gdXAgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAgICAgJFNlbGYtPkpvYkRlbGV0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkR2VuZXJpY0FnZW50Q2hlY2tOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluc2VydCBuZXcgcHJvZmlsZSBwYXJhbXMKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+Sm9iQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRHZW5lcmljQWdlbnRDaGVja05hbWUsCiAgICAgICAgICAgICAgICBEYXRhICAgPT4gJEdlbmVyaWNBZ2VudERhdGEsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHZW5lcmljQWdlbnRJRCA9ICRTZWxmLT5Kb2JBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEdlbmVyaWNBZ2VudERhdGEtPntOYW1lfSwKICAgICAgICAgICAgICAgIERhdGEgICA9PiAkR2VuZXJpY0FnZW50RGF0YSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gdW5sZXNzICRHZW5lcmljQWdlbnRJRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1iZWdpbiBJbnRlcm5hbDoKCj1jdXQKCj1oZWFkMiBfSm9iUnVuVGlja2V0KCkKCnJ1biBhIGdlbmVyaWMgYWdlbnQgam9iIG9uIGEgdGlja2V0CgogICAgJEdlbmVyaWNBZ2VudE9iamVjdC0+X0pvYlJ1blRpY2tldCgKICAgICAgICBUaWNrZXRJRCA9PiAxMjMsCiAgICAgICAgVGlja2V0TnVtYmVyID0+ICcyMDA0MDgxNDAwMDAxJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlSm9iLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIF9Kb2JSdW5UaWNrZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhUaWNrZXRJRCBUaWNrZXROdW1iZXIgQ29uZmlnIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICBteSAkVGlja2V0ID0gIigkUGFyYW17VGlja2V0TnVtYmVyfS8kUGFyYW17VGlja2V0SUR9KSI7CgogICAgIyBkaXNhYmxlIHNlbmRpbmcgZW1haWxzCiAgICBsb2NhbCAkVGlja2V0T2JqZWN0LT57U2VuZE5vTm90aWZpY2F0aW9ufSA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlbmROb05vdGlmaWNhdGlvbn0gPyAxIDogMDsKCiAgICAjIG1vdmUgdGlja2V0CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1F1ZXVlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBNb3ZlIFRpY2tldCAkVGlja2V0IHRvIFF1ZXVlICckUGFyYW17Q29uZmlnfS0+e05ld30tPntRdWV1ZX0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRRdWV1ZVNldCgKICAgICAgICAgICAgUXVldWVJRCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVMb29rdXAoCiAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntRdWV1ZX0sCiAgICAgICAgICAgICAgICBDYWNoZSA9PiAxLAogICAgICAgICAgICApLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntRdWV1ZUlEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBNb3ZlIFRpY2tldCAkVGlja2V0IHRvIFF1ZXVlSUQgJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1F1ZXVlSUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UXVldWVTZXQoCiAgICAgICAgICAgIFF1ZXVlSUQgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1F1ZXVlSUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJzsKCiAgICAjIGFkZCBub3RlIGlmIHdhbnRlZAogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0JvZHl9IHx8ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVCb2R5fSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBBZGQgbm90ZSB0byBUaWNrZXQgJFRpY2tldFxuIjsKICAgICAgICB9CgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVCb2R5fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5fUmVwbGFjZSgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgRGF0YSAgICAgICA9PiB7fSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBcJVRpY2tldCwKICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlQm9keX0sCiAgICAgICAgICAgIFJpY2hUZXh0ICAgPT4gMCwKICAgICAgICApOwoKIyBSb3RoZXIgT1NTIC8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKICAgICAgICAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlU3ViamVjdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+X1JlcGxhY2UoCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIERhdGEgICAgICAgPT4ge30sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgIFRleHQgICAgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZVN1YmplY3R9LAogICAgICAgICAgICBSaWNoVGV4dCAgID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZUZyb219ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRlbXBsYXRlR2VuZXJhdG9yJyktPl9SZXBsYWNlKAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBEYXRhICAgICAgID0+IHt9LAogICAgICAgICAgICBUaWNrZXREYXRhID0+IFwlVGlja2V0LAogICAgICAgICAgICBUZXh0ICAgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVGcm9tfSwKICAgICAgICAgICAgUmljaFRleHQgICA9PiAwLAogICAgICAgICk7CiMgRU8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCBcJVRpY2tldCApICkgewoKICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAoKTsKICAgICAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSApICkgewogICAgICAgICAgICAgICAgJUN1c3RvbWVyVXNlckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICVOb3RpZmljYXRpb24gPSAoCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlU3ViamVjdH0sCiAgICAgICAgICAgICAgICBCb2R5ICAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlQm9keX0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlR2VuZXJpY0FnZW50QXJ0aWNsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5HZW5lcmljQWdlbnRBcnRpY2xlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBSZWNpcGllbnQgICAgPT4gXCVDdXN0b21lclVzZXJEYXRhLAogICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uID0+IFwlTm90aWZpY2F0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEdlbmVyaWNBZ2VudEFydGljbGV7Qm9keX0gKQogICAgICAgICAgICAgICAgfHwgSXNIYXNoUmVmV2l0aERhdGEoICRHZW5lcmljQWdlbnRBcnRpY2xle1N1YmplY3R9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZX0tPntTdWJqZWN0fSA9ICRHZW5lcmljQWdlbnRBcnRpY2xle1N1YmplY3R9IHx8ICcnOwogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZX0tPntCb2R5fSAgICA9ICRHZW5lcmljQWdlbnRBcnRpY2xle0JvZHl9ICAgIHx8ICcnOwogICAgICAgICAgICAgICAgJENvbnRlbnRUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICRHZW5lcmljQWdlbnRBcnRpY2xle0NvbnRlbnRUeXBlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgICAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKICAgICAgICApOwoKICAgICAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0lzVmlzaWJsZUZvckN1c3RvbWVyfQogICAgICAgICAgICAgICAgLy8gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZUlzVmlzaWJsZUZvckN1c3RvbWVyfQogICAgICAgICAgICAgICAgLy8gMCwKICAgICAgICAgICAgRnJvbSA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0Zyb219CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlRnJvbX0KICAgICAgICAgICAgICAgIHx8ICdHZW5lcmljQWdlbnQnLAogICAgICAgICAgICBTdWJqZWN0ID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGV9LT57U3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVTdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJ05vdGUnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e0JvZHl9IHx8ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e05vdGVCb2R5fSwKICAgICAgICAgICAgTWltZVR5cGUgICAgICAgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBDaGFyc2V0ICAgICAgICA9PiAndXRmLTgnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ0FkZE5vdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnR2VuZXJpYyBBZ2VudCBub3RlIGFkZGVkLicsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlbmROb05vdGlmaWNhdGlvbn0gfHwgMCwKICAgICAgICApOwogICAgICAgIG15ICRUaW1lVW5pdHMgPSAkUGFyYW17Q29uZmlnfS0+e05ld30tPntOb3RlfS0+e1RpbWVVbml0c30KICAgICAgICAgICAgfHwgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Tm90ZVRpbWVVbml0c307CiAgICAgICAgaWYgKCAkQXJ0aWNsZUlEICYmICRUaW1lVW5pdHMgKSB7CiAgICAgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEFjY291bnRUaW1lKAogICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVJRCwKICAgICAgICAgICAgICAgIFRpbWVVbml0ICA9PiAkVGltZVVuaXRzLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGVuZGluZ1N0YXRlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpLT5TdGF0ZUdldFN0YXRlc0J5VHlwZSgKICAgICAgICBTdGF0ZVR5cGUgPT4gWyAncGVuZGluZyBhdXRvJywgJ3BlbmRpbmcgcmVtaW5kZXInIF0sCiAgICAgICAgUmVzdWx0ICAgID0+ICdIQVNIJywKICAgICk7CgogICAgJFNlbGYtPntQZW5kaW5nU3RhdGVMaXN0fSA9IFwlUGVuZGluZ1N0YXRlcyB8fCB7fTsKCiAgICAjIHNldCBuZXcgc3RhdGUKICAgIG15ICRJc1BlbmRpbmdTdGF0ZTsKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGV9ICkgewogICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICBwcmludCAiICAtIGNoYW5nZWQgc3RhdGUgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1N0YXRlfSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU3RhdGUgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGV9LAogICAgICAgICk7CgogICAgICAgICRJc1BlbmRpbmdTdGF0ZSA9IGdyZXAgeyAkXyBlcSAkUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZX0gfSB2YWx1ZXMgJXsgJFNlbGYtPntQZW5kaW5nU3RhdGVMaXN0fSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZUlEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBjaGFuZ2VkIHN0YXRlIGlkIG9mIHRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZUlEfSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFN0YXRlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVJRCAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGVJRH0sCiAgICAgICAgKTsKCiAgICAgICAgJElzUGVuZGluZ1N0YXRlID0gZ3JlcCB7ICRfID09ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1N0YXRlSUR9IH0ga2V5cyAleyAkU2VsZi0+e1BlbmRpbmdTdGF0ZUxpc3R9IH07CiAgICB9CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1BlbmRpbmdUaW1lfQogICAgICAgICYmICEkUGFyYW17Q29uZmlnfS0+e05ld30tPntTdGF0ZX0KICAgICAgICAmJiAhJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U3RhdGVJRH0KICAgICAgICApCiAgICB7CiAgICAgICAgIyBpZiBwZW5kaW5nIHRpbWUgaXMgcHJvdmlkZWQsIGJ1dCB0aGVyZSBpcyBubyBuZXcgdGlja2V0IHN0YXRlIHByb3ZpZGVkLAogICAgICAgICMgY2hlY2sgaWYgdGlja2V0IGlzIGFscmVhZHkgaW4gcGVuZGluZyBzdGF0ZQogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICk7CgogICAgICAgICRJc1BlbmRpbmdTdGF0ZSA9IGdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlfSB9IHZhbHVlcyAleyAkU2VsZi0+e1BlbmRpbmdTdGF0ZUxpc3R9IH07CiAgICB9CgogICAgIyBzZXQgcGVuZGluZyB0aW1lLCBpZiBuZXcgc3RhdGUgaXMgcGVuZGluZyBzdGF0ZQogICAgaWYgKCAkSXNQZW5kaW5nU3RhdGUgJiYgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UGVuZGluZ1RpbWV9ICkgewoKICAgICAgICAjIHBlbmRpbmcgdGltZQogICAgICAgIG15ICRQZW5kaW5nVGltZSA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1BlbmRpbmdUaW1lfTsKCiAgICAgICAgIyBjYWxjdWxhdGUgcGVuZGluZyB0aW1lIGJhc2VkIG9uIGhvdXJzLCBtaW51dGVzLCB5ZWFycy4uLgogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UGVuZGluZ1RpbWVUeXBlfSApIHsKICAgICAgICAgICAgJFBlbmRpbmdUaW1lICo9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1BlbmRpbmdUaW1lVHlwZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBzeXN0ZW10aW1lCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgJERhdGVUaW1lT2JqZWN0LT5BZGQoIFNlY29uZHMgPT4gJFBlbmRpbmdUaW1lICk7CgogICAgICAgICMgc2V0IHBlbmRpbmcgdGltZQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFBlbmRpbmdUaW1lU2V0KAogICAgICAgICAgICBZZWFyICAgICA9PiAkRGF0ZVRpbWVPYmplY3QtPkZvcm1hdCggRm9ybWF0ID0+ICclWScgKSwKICAgICAgICAgICAgTW9udGggICAgPT4gJERhdGVUaW1lT2JqZWN0LT5Gb3JtYXQoIEZvcm1hdCA9PiAnJW0nICksCiAgICAgICAgICAgIERheSAgICAgID0+ICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVkJyApLAogICAgICAgICAgICBIb3VyICAgICA9PiAkRGF0ZVRpbWVPYmplY3QtPkZvcm1hdCggRm9ybWF0ID0+ICclSCcgKSwKICAgICAgICAgICAgTWludXRlICAgPT4gJERhdGVUaW1lT2JqZWN0LT5Gb3JtYXQoIEZvcm1hdCA9PiAnJU0nICksCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgY3VzdG9tZXIgaWQgYW5kIGN1c3RvbWVyIHVzZXIKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0gfHwgJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJVc2VyTG9naW59ICkgewoKICAgICAgICAjIElmIEN1c3RvbWVySUQgb3IgQ3VzdG9tZXJVc2VySUQgaXMgdXBkYXRlZCBidXQgbm90IGJvdGggaW4gc2FtZSBjYWxsLAogICAgICAgICMga2VlcCBvcmlnaW5hbCB2YWx1ZXMgZm9yIG5vbiB1cGRhdGVkIG9uZXMuIFNlZSBidWcjMTQ4NjQgKGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NjQpLgogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICk7CgogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICAgICAgcHJpbnQKICAgICAgICAgICAgICAgICAgICAiICAtIHNldCBjdXN0b21lciBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0nXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJVc2VyTG9naW59ICkgewogICAgICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgICAgIHByaW50CiAgICAgICAgICAgICAgICAgICAgIiAgLSBzZXQgY3VzdG9tZXIgdXNlciBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJVc2VyTG9naW59J1xuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgbXkgJE5vID0gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q3VzdG9tZXJJRH0gfHwgJFRpY2tldHtDdXN0b21lcklEfSB8fCAnJzsKICAgICAgICAkTm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+X1JlcGxhY2UoCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIERhdGEgICAgICAgPT4ge30sCiAgICAgICAgICAgIFRpY2tldERhdGEgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgIFRleHQgICAgICAgPT4gJE5vLAogICAgICAgICAgICBSaWNoVGV4dCAgID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAkVXNlciA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0N1c3RvbWVyVXNlckxvZ2lufSB8fCAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSB8fCAnJzsKICAgICAgICAkVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5fUmVwbGFjZSgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgRGF0YSAgICAgICA9PiB7fSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBcJVRpY2tldCwKICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkVXNlciwKICAgICAgICAgICAgUmljaFRleHQgICA9PiAwLAogICAgICAgICk7CiMgRU8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKCiMgUm90aGVyIE9TUyAvIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiMgICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEN1c3RvbWVyU2V0KAojICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKIyAgICAgICAgICAgIE5vICAgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0N1c3RvbWVySUR9ICAgICAgICB8fCAkVGlja2V0e0N1c3RvbWVySUR9ICAgICB8fCAnJywKIyAgICAgICAgICAgIFVzZXIgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0N1c3RvbWVyVXNlckxvZ2lufSB8fCAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKIyAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAojICAgICAgICApOwogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldEN1c3RvbWVyU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBObyAgICAgICA9PiAkTm8sCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRVc2VyLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICB9CgogICAgIyBzZXQgbmV3IHRpdGxlCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgdGl0bGUgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSdcbiI7CiAgICAgICAgfQojIFJvdGhlciBPU1MgLyBHZW5lcmljQWdlbnQtTm90aWZpY2F0aW9uVGFncwogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUZW1wbGF0ZUdlbmVyYXRvcicpLT5fUmVwbGFjZSgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgRGF0YSAgICAgICA9PiB7fSwKICAgICAgICAgICAgVGlja2V0RGF0YSA9PiBcJVRpY2tldCwKICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntUaXRsZX0sCiAgICAgICAgICAgIFJpY2hUZXh0ICAgPT4gMCwKICAgICAgICApOwojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0VGl0bGVVcGRhdGUoCiAgICAgICAgICAgIFRpdGxlICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1RpdGxlfSwKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBuZXcgdHlwZQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntUeXBlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgdHlwZSBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZX0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZX0sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZUlEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgdHlwZSBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57VHlwZUlEfSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFR5cGVTZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBUeXBlSUQgICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntUeXBlSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgbmV3IHNlcnZpY2UKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U2VydmljZX0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHNlcnZpY2Ugb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2V9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U2VydmljZVNldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFNlcnZpY2UgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2V9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2VJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHNlcnZpY2UgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1NlcnZpY2VJRH0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZXJ2aWNlU2V0KAogICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U2VydmljZUlEfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyBzbGEKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgc2xhIG9mIFRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntTTEF9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U0xBU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU0xBICAgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBfSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntTTEFJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHNsYSBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBSUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0U0xBU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU0xBSUQgICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57U0xBSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgbmV3IHByaW9yaXR5CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5fSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgcHJpb3JpdHkgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5fSdcbiI7CiAgICAgICAgfQogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldFByaW9yaXR5U2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UHJpb3JpdHl9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5SUR9ICkgewogICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICBwcmludAogICAgICAgICAgICAgICAgIiAgLSBzZXQgcHJpb3JpdHkgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e1ByaW9yaXR5SUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UHJpb3JpdHlTZXQoCiAgICAgICAgICAgIFRpY2tldElEICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUHJpb3JpdHlJRCA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntQcmlvcml0eUlEfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyBvd25lcgogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcn0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IG93bmVyIG9mIFRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcn0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRPd25lclNldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIE5ld1VzZXIgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e093bmVyfSwKICAgICAgICApOwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcklEfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBzZXQgb3duZXIgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e093bmVySUR9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0T3duZXJTZXQoCiAgICAgICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIE5ld1VzZXJJRCA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntPd25lcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyByZXNwb25zaWJsZQogICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntSZXNwb25zaWJsZX0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50CiAgICAgICAgICAgICAgICAiICAtIHNldCByZXNwb25zaWJsZSBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UmVzcG9uc2libGV9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0UmVzcG9uc2libGVTZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBOZXdVc2VyICA9PiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntSZXNwb25zaWJsZX0sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UmVzcG9uc2libGVJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50CiAgICAgICAgICAgICAgICAiICAtIHNldCByZXNwb25zaWJsZSBpZCBvZiBUaWNrZXQgJFRpY2tldCB0byAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57UmVzcG9uc2libGVJRH0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRSZXNwb25zaWJsZVNldCgKICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgTmV3VXNlcklEID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e1Jlc3BvbnNpYmxlSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgbmV3IGxvY2sKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TG9ja30gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IGxvY2sgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2t9J1xuIjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0TG9ja1NldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIExvY2sgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2t9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2tJRH0gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IGxvY2sgaWQgb2YgVGlja2V0ICRUaWNrZXQgdG8gJyRQYXJhbXtDb25maWd9LT57TmV3fS0+e0xvY2tJRH0nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRMb2NrU2V0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgTG9ja0lEICAgPT4gJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TG9ja0lEfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIHNldCBuZXcgZHluYW1pYyBmaWVsZHMgb3B0aW9ucwogICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVGVtcGxhdGUgICAgICAgICAgID0+ICRQYXJhbXtDb25maWd9LT57TmV3fSwKICAgICAgICAgICAgVHJhbnNmb3JtRGF0ZXMgICAgID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBnb3QgYSB2YWx1ZSBvciBhbiBlbXB0eSB2YWx1ZSBpZgogICAgICAgICMgYW4gZW1wdHkgdmFsdWUgaXMgY29uZmlndXJlZCBhcyB2YWxpZCAoUG9zc2libGVOb25lKQogICAgICAgICMgZm9yIHRoZSBjdXJyZW50IGR5bmFtaWMgZmllbGQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFZhbHVlCiAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57UG9zc2libGVOb25lfQogICAgICAgICAgICAgICAgfHwgJFZhbHVlIG5lICcnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKIyBSb3RoZXIgT1NTIC8gR2VuZXJpY0FnZW50LU5vdGlmaWNhdGlvblRhZ3MKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXihUZXh0fFJpY2hUZXh0fFRleHRBcmVhKSQvICkgewogICAgICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGVtcGxhdGVHZW5lcmF0b3InKS0+X1JlcGxhY2UoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+IHt9LAogICAgICAgICAgICAgICAgICAgIFRpY2tldERhdGEgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgUmljaFRleHQgICA9PiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICJSaWNodGV4dCIgPyAxIDogMCApLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQojIEVPIEdlbmVyaWNBZ2VudC1Ob3RpZmljYXRpb25UYWdzCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHByaW50ICIgIC0gc2V0IHRpY2tldCBkeW5hbWljIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9mIFRpY2tldCAkVGlja2V0IHRvICRWYWx1ZVN0cmctPntUaXRsZX0gJ1xuIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBzZXQgZHluYW1pYyBmaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gIgogICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgVGlja2V0ICRUaWNrZXQuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkQWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6R2VuZXJpY0FnZW50QWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24nKSB8fCAwOwoKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSAmJiAkQWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gVXNlIG1vZHVsZSAoJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSkgZm9yIFRpY2tldCAkVGlja2V0LlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVXNlIG1vZHVsZSAoJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSkgZm9yIFRpY2tldCAkVGlja2V0LiIsCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTZWxmLT57RGVidWd9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVHJ5IHRvIGxvYWQgbW9kdWxlOiAkUGFyYW17Q29uZmlnfS0+e05ld30tPntNb2R1bGV9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e01vZHVsZX0gKSApCiAgICAgICAgewoKICAgICAgICAgICAgIyBwcm90ZWN0IHBhcmVudCBwcm9jZXNzCiAgICAgICAgICAgIGV2YWwgewogICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICBEZWJ1ZyA9PiAkU2VsZi0+e0RlYnVnfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJE9iamVjdCkgewogICAgICAgICAgICAgICAgICAgICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwoKICAgICAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRACiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17Q29uZmlnfS0+e05ld30tPntNb2R1bGV9ICYmICEkQWxsb3dDdXN0b21Nb2R1bGVFeGVjdXRpb24gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gVXNlIG1vZHVsZSAoJFBhcmFte0NvbmZpZ30tPntOZXd9LT57TW9kdWxlfSkgaXMgbm90IGFsbG93ZWQgYnkgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVc2UgbW9kdWxlICgkUGFyYW17Q29uZmlnfS0+e05ld30tPntNb2R1bGV9KSBpcyBub3QgYWxsb3dlZCBieSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIiwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IG5ldyBhcmNoaXZlIGZsYWcKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29uZmlnfS0+e05ld30tPntBcmNoaXZlRmxhZ30KICAgICAgICAmJiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6QXJjaGl2ZVN5c3RlbScpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggJFNlbGYtPntOb3RpY2VTVERPVVR9ICkgewogICAgICAgICAgICBwcmludAogICAgICAgICAgICAgICAgIiAgLSBzZXQgYXJjaGl2ZSBmbGFnIG9mIFRpY2tldCAkVGlja2V0IHRvICckUGFyYW17Q29uZmlnfS0+e05ld30tPntBcmNoaXZlRmxhZ30nXG4iOwogICAgICAgIH0KICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXRBcmNoaXZlRmxhZ1NldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEFyY2hpdmVGbGFnID0+ICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0FyY2hpdmVGbGFnfSwKICAgICAgICApOwogICAgfQoKICAgICMgY21kCiAgICBteSAkQWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RpY2tldDo6R2VuZXJpY0FnZW50QWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24nKSB8fCAwOwoKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q01EfSAmJiAkQWxsb3dDdXN0b21TY3JpcHRFeGVjdXRpb24gKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e05vdGljZVNURE9VVH0gKSB7CiAgICAgICAgICAgIHByaW50ICIgIC0gRXhlY3V0ZSAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q01EfScgZm9yIFRpY2tldCAkVGlja2V0LlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRXhlY3V0ZSAnJFBhcmFte0NvbmZpZ30tPntOZXd9LT57Q01EfScgZm9yIFRpY2tldCAkVGlja2V0LiIsCiAgICAgICAgKTsKICAgICAgICBzeXN0ZW0oIiRQYXJhbXtDb25maWd9LT57TmV3fS0+e0NNRH0gJFBhcmFte1RpY2tldE51bWJlcn0gJFBhcmFte1RpY2tldElEfSAiKTsKCiAgICAgICAgaWYgKCAkPyBuZSAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvbW1hbmQgcmV0dXJuZWQgYSBub256ZXJvIHJldHVybiBjb2RlOiByYz0kPywgZXJyPSQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtDb25maWd9LT57TmV3fS0+e0NNRH0gJiYgISRBbGxvd0N1c3RvbVNjcmlwdEV4ZWN1dGlvbiApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBFeGVjdXRlICckUGFyYW17Q29uZmlnfS0+e05ld30tPntDTUR9JyBpcyBub3QgYWxsb3dlZCBieSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uLlxuIjsKICAgICAgICB9CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFeGVjdXRlICckUGFyYW17Q29uZmlnfS0+e05ld30tPntDTUR9JyBpcyBub3QgYWxsb3dlZCBieSB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntOZXd9LT57RGVsZXRlfSApIHsKICAgICAgICBpZiAoICRTZWxmLT57Tm90aWNlU1RET1VUfSApIHsKICAgICAgICAgICAgcHJpbnQgIiAgLSBEZWxldGUgVGlja2V0ICRUaWNrZXQuXG4iOwogICAgICAgIH0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWxldGUgVGlja2V0ICRUaWNrZXQuIiwKICAgICAgICApOwogICAgICAgICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVXNlcklEICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX0pvYlVwZGF0ZVJ1blRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkXyEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGRlbGV0ZSBvbGQgcnVuIHRpbWVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZ2VuZXJpY19hZ2VudF9qb2JzIFdIRVJFIGpvYl9uYW1lID0gPyBBTkQgam9iX2tleSBJTiAoPywgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9LCBcJ1NjaGVkdWxlTGFzdFJ1bicsIFwnU2NoZWR1bGVMYXN0UnVuVW5peFRpbWUnIF0sCiAgICApOwoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKCiAgICAjIHVwZGF0ZSBuZXcgcnVuIHRpbWUKICAgIG15ICVJbnNlcnQgPSAoCiAgICAgICAgU2NoZWR1bGVMYXN0UnVuICAgICAgICAgPT4gJERhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpLAogICAgICAgIFNjaGVkdWxlTGFzdFJ1blVuaXhUaW1lID0+ICREYXRlVGltZU9iamVjdC0+VG9FcG9jaCgpLAogICAgKTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlSW5zZXJ0ICkgewogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0lOU0VSVCBJTlRPIGdlbmVyaWNfYWdlbnRfam9icyAoam9iX25hbWUsam9iX2tleSwgam9iX3ZhbHVlKSBWQUxVRVMgKD8sID8sID8pJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkS2V5LCBcJEluc2VydHskS2V5fSBdLAogICAgICAgICk7CiAgICB9CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBLZXkgID0+ICdKb2JHZXQ6OicgLiAkUGFyYW17TmFtZX0sCiAgICAgICAgVHlwZSA9PiAnR2VuZXJpY0FnZW50JywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwo=</File>
        <File Location="scripts/test/GenericAgentNotifTags.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7Cm15ICRVc2VyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgpteSAoICRVc2VyTG9naW4sICRVc2VySUQgKSA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKCk7Cm9rKAogICAgJFVzZXJJRCwKICAgICJUZXN0IHVzZXIgJFVzZXJJRCBjcmVhdGVkIiwKKTsKCm15ICRDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKb2soCiAgICAkQ3VzdG9tZXJVc2VyTG9naW4sCiAgICAiVGVzdCBjdXN0b21lciB1c2VyICRDdXN0b21lclVzZXJMb2dpbiBjcmVhdGVkIiwKKTsKCm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkQXJ0aWNsZU9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKbXkgJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKCm15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSB0ZXN0IGlzc3VlJywKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJVc2VyID0+ICRDdXN0b21lclVzZXJMb2dpbiwKICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCik7Cm9rKAogICAgJFRpY2tldElELAogICAgIlRpY2tldCAkVGlja2V0SUQgY3JlYXRlZCIsCik7CgpteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgVXNlcklEICAgPT4gJFVzZXJJRAopOwpteSAkQXJ0aWNsZUlEID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBBcnRpY2xlVHlwZSAgICAgICAgICA9PiAnbm90ZS1pbnRlcm5hbCcsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gIkFnZW50IDwkVXNlckxvZ2luPiIsCiAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnUGhvbmUgdGlja2V0JywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICdTb21lIHRlc3QgYm9keS4nLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmOCcsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnUGhvbmVDYWxsQ3VzdG9tZXInLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ0ZpcnN0IHJlZ2lzdGVyJywKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAkVXNlcklELAopOwpvaygKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZSAkQXJ0aWNsZUlEIGNyZWF0ZWQiLAopOwoKbXkgJEFydGljbGVSZXBseUlEID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBBcnRpY2xlVHlwZSAgICAgICAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICJDbGllbnQgPCRDdXN0b21lclVzZXJMb2dpbj4iLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1JlcGx5IHRvIHRpY2tldCcsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAnUmVwbHkgYm9keS4nLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmOCcsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnRW1haWxDdXN0b21lcicsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnQ3VzdG9tZXIgcmVwbHknLAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+ICRVc2VySUQsCik7Cm9rKAogICAgJEFydGljbGVSZXBseUlELAogICAgIlJlcGx5IGFydGljbGUgJEFydGljbGVSZXBseUlEIGNyZWF0ZWQiLAopOwoKbXkgJEpvYkRhdGEgPSB7CiAgICAnTmV3TW9kdWxlJyAgICAgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ05ld1BhcmFtVmFsdWUyJyAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdUaXRsZScgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnRXNjYWxhdGlvblNvbHV0aW9uVGltZVNlYXJjaFR5cGUnID0+ICcnLAogICAgJ0VzY2FsYXRpb25UaW1lU2VhcmNoVHlwZScgICAgICAgICA9PiAnJywKICAgICdOZXdQYXJhbVZhbHVlMScgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1WYWx1ZTQnICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ05ld05vdGVUaW1lVW5pdHMnICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdNSU1FQmFzZV9TdWJqZWN0JyAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXkyJyAgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ05ld1RpdGxlJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdOZXdQYXJhbUtleTUnICAgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnQ3VzdG9tZXJJRCcgICAgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ0V2ZW50VmFsdWVzJyAgICAgICAgICAgICAgICAgICAgICA9PiBbJ0FydGljbGVFZGl0J10sCiAgICAnTmV3Q3VzdG9tZXJVc2VyTG9naW4nICAgICAgICAgICAgID0+ICcnLAogICAgJ01JTUVCYXNlX1RvJyAgICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgICdMYXN0Q2xvc2VUaW1lU2VhcmNoVHlwZScgICAgICAgICAgPT4gJycsCiAgICAnTmV3Tm90ZUZyb20nICAgICAgICAgICAgICAgICAgICAgID0+ICdzb21lb25lQG1haWwub3JnJywKICAgICdOZXdQYXJhbVZhbHVlNicgICAgICAgICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3Q3VzdG9tZXJJRCcgICAgICAgICAgICAgICAgICAgID0+ICcnLAogICAgJ1NjaGVkdWxlTGFzdFJ1bicgICAgICAgICAgICAgICAgICA9PiAnMjAyNS0wOC0yNyAxMDozNzoxOCcsCiAgICAnQ2xvc2VUaW1lU2VhcmNoVHlwZScgICAgICAgICAgICAgID0+ICcnLAogICAgJ0VzY2FsYXRpb25VcGRhdGVUaW1lU2VhcmNoVHlwZScgICA9PiAnJywKICAgICdFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU2VhcmNoVHlwZScgPT4gJycsCgogICAgIyBjb250YWluIHRoZSB0YWdzIHRvIGJlIHJlcGxhY2VkIGJ5IHRoZSBqb2IgdXBvbiBzdWNjZXNzCiAgICAnTmV3Tm90ZVN1YmplY3QnID0+ICdOZXcgbm90ZSBvbiB0aWNrZXQgaWQgPE9UT0JPX1RJQ0tFVF9UaWNrZXRJRD4nLAogICAgJ05ld05vdGVCb2R5JyAgICA9PiAnQ2xpZW50IGlzIDxPVE9CT19DVVNUT01FUl9SRUFMTkFNRT4gYW5kIFRpY2tldE51bWJlciBpcyA8T1RPQk9fVElDS0VUX1RpY2tldE51bWJlcj4nLAoKICAgICdDaGFuZ2VUaW1lU2VhcmNoVHlwZScgICAgID0+ICcnLAogICAgJ05ld0RlbGV0ZScgICAgICAgICAgICAgICAgPT4gJzAnLAogICAgJ05ld1BlbmRpbmdUaW1lJyAgICAgICAgICAgPT4gJycsCiAgICAnTGFzdENoYW5nZVRpbWVTZWFyY2hUeXBlJyA9PiAnJywKICAgICdUaW1lUGVuZGluZ1NlYXJjaFR5cGUnICAgID0+ICcnLAogICAgJ05hbWUnICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgSm9iJywKICAgICdOZXdQZW5kaW5nVGltZVR5cGUnICAgICAgID0+ICc2MCcsCiAgICAnTmV3UGFyYW1WYWx1ZTMnICAgICAgICAgICA9PiAnJywKICAgICdUaW1lU2VhcmNoVHlwZScgICAgICAgICAgID0+ICcnLAogICAgJ1NjaGVkdWxlTGFzdFJ1blVuaXhUaW1lJyAgPT4gJzE3NTYyOTEwMzgnLAogICAgJ01JTUVCYXNlX0Zyb20nICAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXkzJyAgICAgICAgICAgICA9PiAnJywKICAgICdNSU1FQmFzZV9DYycgICAgICAgICAgICAgID0+ICcnLAogICAgJ0N1c3RvbWVyVXNlckxvZ2luJyAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXkxJyAgICAgICAgICAgICA9PiAnJywKICAgICdOZXdTZW5kTm9Ob3RpZmljYXRpb24nICAgID0+ICcwJywKICAgICdNSU1FQmFzZV9Cb2R5JyAgICAgICAgICAgID0+ICcnLAogICAgJ1ZhbGlkJyAgICAgICAgICAgICAgICAgICAgPT4gJzEnLAogICAgJ1RpY2tldE51bWJlcicgICAgICAgICAgICAgPT4gJFRpY2tldHtUaWNrZXROdW1iZXJ9LAogICAgJ05ld1BhcmFtVmFsdWU1JyAgICAgICAgICAgPT4gJycsCiAgICAnTmV3UGFyYW1LZXk0JyAgICAgICAgICAgICA9PiAnJywKICAgICdOZXdQYXJhbUtleTYnICAgICAgICAgICAgID0+ICcnCn07CgpteSAkR2VuZXJpY0FnZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNBZ2VudCcpOwpteSAkSm9iQWRkUmVzdWx0ICAgICAgID0gJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iQWRkKAogICAgTmFtZSAgID0+ICJKb2IxIiwKICAgIERhdGEgICA9PiAkSm9iRGF0YSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwoKbXkgJFN1Y2Nlc3MgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JSdW4oCiAgICBKb2IgICAgPT4gJ0pvYjEnLAogICAgVXNlcklEID0+IDEsCik7Cm9rKAogICAgJFN1Y2Nlc3MsCiAgICAiSm9iIGV4ZWN1dGVkIHdpdGggc3VjY2VzcyIsCik7CgpteSBAQXJ0aWNsZUxpc3QgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUxpc3QoCiAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCik7CmlzKAogICAgc2NhbGFyIEBBcnRpY2xlTGlzdCwKICAgIDMsCiAgICAiSm9iIGFkZGVkIG5ldyBub3RlIHRvIHRoZSB0aWNrZXQiCik7CgpBUlRJQ0xFOgpmb3IgbXkgJEFydGljbGVFbGVtIChAQXJ0aWNsZUxpc3QpIHsKICAgIG15ICVBcnRpY2xlID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVHZXQoCiAgICAgICAgVGlja2V0SUQgID0+ICRUaWNrZXRJRCwKICAgICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGVFbGVtLT57QXJ0aWNsZUlEfSwKICAgICk7CgogICAgIyBPbmx5IHRoZSBuZXcgYWRkZWQgbm90ZSBtYXR0ZXJzIGZvciBjaGVja2luZwogICAgbmV4dCBBUlRJQ0xFIGlmICRBcnRpY2xle1N1YmplY3R9ICF+IC9OZXcgbm90ZS87CgogICAgbXkgJEV4cGVjdGVkU3ViamVjdCA9ICJOZXcgbm90ZSBvbiB0aWNrZXQgaWQgJFRpY2tldElEIjsKICAgIGxpa2UoCiAgICAgICAgJEFydGljbGV7U3ViamVjdH0sCiAgICAgICAgcXIvXFEkRXhwZWN0ZWRTdWJqZWN0XEUvLAogICAgICAgICJOZXcgbm90ZSBoYXMgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaW4gdGhlIHN1YmplY3QiCiAgICApOwoKICAgICMgdGhlIFRlc3RDdXN0b21lclVzZXJDcmVhdGUgZnVuY3Rpb24gc2V0cyBib3RoIHRoZSBjdXN0b21lcidzIGZpcnN0IGFuZCBsYXN0IG5hbWUgYXMgdGhlIGxvZ2luCiAgICBteSAkQ3VzdG9tZXJVc2VyRnVsbE5hbWUgPSAiJEN1c3RvbWVyVXNlckxvZ2luICRDdXN0b21lclVzZXJMb2dpbiI7CiAgICBteSAkRXhwZWN0ZWRCb2R5ICAgICAgICAgPSAiQ2xpZW50IGlzICRDdXN0b21lclVzZXJGdWxsTmFtZSBhbmQgVGlja2V0TnVtYmVyIGlzICRUaWNrZXR7VGlja2V0TnVtYmVyfSI7CiAgICBteSAkQXJ0aWNsZUJvZHkgICAgICAgICAgPSAkQXJ0aWNsZXtCb2R5fTsKICAgICRBcnRpY2xlQm9keSA9fiBzL1tcclxuXS8gL2c7ICAgICMgU2FuaXRpemUgYW55IGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgQ1IvTEYgY2hhcmFjdGVycwogICAgbGlrZSgKICAgICAgICAkQXJ0aWNsZUJvZHksCiAgICAgICAgcXIvXFEkRXhwZWN0ZWRCb2R5XEUvLAogICAgICAgICJOZXcgbm90ZSBoYXMgdGhlIGV4cGVjdGVkIGNvbnRlbnQgaW4gdGhlIGJvZHkiCiAgICApOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="doc/en/GenericAgent-NotificationTags.pdf" Permission="644" Encode="Base64">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</File>
    </Filelist>
</otrs_package>