Skip to content

Instantly share code, notes, and snippets.

@g0g11
Created November 1, 2022 21:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save g0g11/a6ecedc13589d2af876f51f0e1138ab8 to your computer and use it in GitHub Desktop.
Save g0g11/a6ecedc13589d2af876f51f0e1138ab8 to your computer and use it in GitHub Desktop.
Otobo_CustomerImportExport
<?xml version="1.0" encoding="utf-8" ?>
<otobo_package version="1.1">
<Name>CustomerUserImportExport</Name>
<Version>6.0.0</Version>
<Vendor>AddonsForOTRS</Vendor>
<URL>https://otrsaddons.com/</URL>
<License>GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007</License>
<Description Lang="en">Provides ImportExportBackend for CustomerUsers.</Description>
<Framework>10.x.x</Framework>
<PackageRequired Version="5.0.1">ImportExport</PackageRequired>
<CodeInstall Type="post">
my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};
$Kernel::OM-&gt;Get($CodeModule)-&gt;CodeInstall();
</CodeInstall>
<CodeUpgrade Type="post">
my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};
$Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgrade();
</CodeUpgrade>
<CodeUninstall Type="pre">
my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};
$Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstall();
</CodeUninstall>
<CodeReinstall Type="post">
my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};
$Kernel::OM-&gt;Get($CodeModule)-&gt;CodeReinstall();
</CodeReinstall>
<BuildDate>2015-11-13 16:36:56</BuildDate>
<BuildHost>https://otrsaddons.com/</BuildHost>
<Filelist>
<File Location="Kernel/Config/Files/XML/CustomerUserImportExport.xml" Permission="644" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDVlM+JElkOiBDdXN0b21lclVzZXJJbXBvcnRFeHBvcnQueG1sLHYgMS40IDIwMTMvMDIvMTIgMTE6NDI6MzkgdHRvIEV4cCAkPC9DVlM+CiAgICA8U2V0dGluZyBOYW1lPSJJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmRSZWdpc3RyYXRpb24jIyNDdXN0b21lclVzZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+T2JqZWN0QmFja2VuZDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6Q3VzdG9tZXJVc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5DdXN0b21lclVzZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJVc2VySW1wb3J0OjpEZWZhdWx0Q3VzdG9tZXJJRCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIGN1c3RvbWVyIElEIHRvIHVzZSBpZiBubyBjb21wYW55IGRlZmluZWQgLSBvbmx5IHJlbGV2YW50IGZvciBuZXcgY3VzdG9tZXIgdXNlcnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5DdXN0b21lclVzZXJJbXBvcnRFeHBvcnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5YTVBMQ3VzdG9tZXJJRDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJVc2VySW1wb3J0OjpEZWZhdWx0RW1haWxBZGRyZXNzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggZW1haWwgYWRkcmVzcyB0byB1c2UgaWYgbm90IGRlZmluZWQgLSBzdHJvbmdseSBkZXBlbmRzIG9uIGJhY2tlbmQgY29uZmlndXJhdGlvbiEhIS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkN1c3RvbWVyVXNlckltcG9ydEV4cG9ydDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPmR1bW15QGxvY2FsaG9zdDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJVc2VySW1wb3J0OjpFTWFpbERvbWFpbkN1c3RvbWVySURNYXBwaW5nIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYSBtYXBwaW5nIG9mIGVtYWlsIGRvbWFpbnMgdG8gY3VzdG9tZXIgSURzLiBBIHNwZWNpYWwga2V5IHZhbHVlIGlzIEFOWVRISU5HRUxTRSwgd2hpY2ggaXMgc2ltaWxhciB0byBkZWZhdWx0IGN1c3RvbWVyIElEIGJ1dCBhbHNvIGFmZmVjdHMgdXBkYXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkN1c3RvbWVyVXNlckltcG9ydEV4cG9ydDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJvZXhhbXBsZS5jb20iPlhNUExDdXN0b21lcklEPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+ICAgICAgICAgICAgCiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkltcG9ydEV4cG9ydDo6Q3VzdG9tZXJVc2VySW1wb3J0RXhwb3J0OjpGb3JjZUNTVk1hcHBpbmdSZWNyZWF0aW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgaWYgQ1NWLW1hcHBpbmdzIGFyZSByZS1jcmVhdGVkIG9uIG5leHQgcGFja2FnZSByZWluc3RhbGxhdGlvbiBvciB1cGdyYWRlIGlmIGFscmVhZHkgZXhpc3RlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5DdXN0b21lclVzZXJJbXBvcnRFeHBvcnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cgo8L290b2JvX2NvbmZpZz4K</File>
<File Location="Kernel/System/ImportExport/ObjectBackend/CustomerUser.pm" Permission="644" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvQ3VzdG9tZXJVc2VyLnBtIC0gaW1wb3J0L2V4cG9ydCBiYWNrZW5kIGZvciBDdXN0b21lclVzZXIKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNSBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVkIGJ5OgojICogVG9yc3Rlbihkb3QpVGhhdShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogRnJhbmsoZG90KU9iZXJlbmRlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBTdGVmYW4oZG90KU1laGxpZyhhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUaG9tYXMoZG90KUxhbmdlKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAtLQojICRJZDogQ3VzdG9tZXJVc2VyLnBtLHYgMS4yMyAyMDE1LzExLzEzIDE1OjIwOjAzIHRsYW5nZSBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpDdXN0b21lclVzZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OkNvbmZpZycKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpDdXN0b21lclVzZXIgLSBpbXBvcnQvZXhwb3J0IGJhY2tlbmQgZm9yIEN1c3RvbWVyVXNlcgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgZnVuY3Rpb25zIHRvIGltcG9ydCBhbmQgZXhwb3J0IEN1c3RvbWVyVXNlciBlbnRyaWVzCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OkNvbmZpZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6REI7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkxvZzsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TWFpbjsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpDdXN0b21lclVzZXI7CgogICAgbXkgJENvbmZpZ09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKICAgIG15ICRMb2dPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6TG9nLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICApOwogICAgbXkgJE1haW5PYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6TWFpbi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgKTsKICAgIG15ICREQk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpEQi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OkN1c3RvbWVyVXNlci0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCAgICAgICA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICAgICAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIERCT2JqZWN0ICAgICAgICAgICA9PiAkREJPYmplY3QsCiAgICAgICAgTWFpbk9iamVjdCAgICAgICAgID0+ICRNYWluT2JqZWN0LAogICAgICAgIEltcG9ydEV4cG9ydE9iamVjdCA9PiAkSW1wb3J0RXhwb3J0T2JqZWN0LAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCmdldCB0aGUgb2JqZWN0IGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZXMgPSAkT2JqZWN0QmFja2VuZC0+T2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0QXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdAogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpCiAgICAgICAgICAgIC0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICdOZWVkIFVzZXJJRCEnICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVDU0xpc3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyU291cmNlTGlzdCgpOwogICAgbXkgJVZhbGlkbGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDdXN0b21lckJhY2tlbmQnLAogICAgICAgICAgICBOYW1lICA9PiAnQ3VzdG9tZXIgQmFja2VuZCcsCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJUNTTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZvcmNlSW1wb3J0SW5Db25maWd1cmVkQ3VzdG9tZXJCYWNrZW5kJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0ZvcmNlIGltcG9ydCBpbiBjb25maWd1cmVkIGN1c3RvbWVyIGJhY2tlbmQnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJzAnID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgJzEnID0+ICdZZXMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVmYXVsdFVzZXJDdXN0b21lcklEJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0RlZmF1bHQgQ3VzdG9tZXIgSUQnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gMjUwLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRW5hYmxlTWFpbERvbWFpbkN1c3RvbWVySURNYXBwaW5nJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01haWxkb21haW4tQ3VzdG9tZXJJRCBNYXBwaW5nIChzZWUgU3lzQ29uZmlnKScsCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAnMCcgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAnMScgPT4gJ1llcycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWZhdWx0VXNlckVtYWlsJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0RlZmF1bHQgRW1haWwnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gMjUwLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnUmVzZXRQYXNzd29yZCcsCiAgICAgICAgICAgIE5hbWUgID0+ICdSZXNldCBwYXNzd29yZCBpZiB1cGRhdGVkJywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICcwJyA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICcxJyA9PiAnWWVzJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgICAgICAgICBWYWx1ZURlZmF1bHQgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1Jlc2V0UGFzc3dvcmRTdWZmaXgnLAogICAgICAgICAgICBOYW1lICA9PiAnUGFzc3dvcmQtU3VmZml4IChuZXcgcGFzc3dvcmQgPSBsb2dpbiArIHN1ZmZpeCknLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNTAsCiAgICAgICAgICAgICAgICBWYWx1ZURlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWZhdWx0VmFsaWQnLAogICAgICAgICAgICBOYW1lICA9PiAnRGVmYXVsdCBWYWxpZGl0eScsCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVZhbGlkbGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlczsKfQoKPWl0ZW0gTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoKQoKZ2V0IHRoZSBtYXBwaW5nIGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZXMgPSAkT2JqZWN0QmFja2VuZC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15IEBFbGVtZW50TGlzdCA9IHF3e307CiAgICBteSBATWFwID0KICAgICAgICBAeyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT57ICRPYmplY3REYXRhLT57Q3VzdG9tZXJCYWNrZW5kfSB9LT57J01hcCd9IH07CgogICAgZm9yIG15ICRDdXJyQXR0cmlidXRlTWFwcGluZyAoQE1hcCkgewogICAgICAgIG15ICRDdXJyQXR0cmlidXRlID0gewogICAgICAgICAgICBLZXkgICA9PiAkQ3VyckF0dHJpYnV0ZU1hcHBpbmctPlswXSwKICAgICAgICAgICAgVmFsdWUgPT4gJEN1cnJBdHRyaWJ1dGVNYXBwaW5nLT5bMF0sCiAgICAgICAgfTsKCiAgICAgICAgIyBpZiBWYWxpZElEIGlzIGF2YWlsYWJsZSAtIG9mZmVyIFZhbGlkIGluc3RlYWQuLgogICAgICAgIGlmICggJEN1cnJBdHRyaWJ1dGVNYXBwaW5nLT5bMF0gZXEgJ1ZhbGlkSUQnICkgewogICAgICAgICAgICAkQ3VyckF0dHJpYnV0ZSA9IHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdWYWxpZElEJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdWYWxpZElEIChub3QgdXNlZCBpbiBpbXBvcnQgYW55bW9yZSwgdXNlIFZhbGlkaXR5IGluc3RlYWQpJywKICAgICAgICAgICAgfTsKICAgICAgICAgICAgcHVzaCggQEVsZW1lbnRMaXN0LCAkQ3VyckF0dHJpYnV0ZSApOwoKICAgICAgICAgICAgJEN1cnJBdHRyaWJ1dGUgPSB7IEtleSA9PiAnVmFsaWQnLCBWYWx1ZSA9PiAnVmFsaWRpdHknLCB9OwogICAgICAgIH0KCiAgICAgICAgIyBpZiBVc2VyUGFzc3dvcmQgaXMgYXZhaWxhYmxlIC0gYWRkIG5vdGUgdG8gbWFwcGluZy4uCiAgICAgICAgaWYgKCAkQ3VyckF0dHJpYnV0ZU1hcHBpbmctPlswXSBlcSAnVXNlclBhc3N3b3JkJyApIHsKICAgICAgICAgICAgJEN1cnJBdHRyaWJ1dGUgPSB7CiAgICAgICAgICAgICAgICBLZXkgPT4gJ1VzZXJQYXNzd29yZCcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PgogICAgICAgICAgICAgICAgICAgICdVc2VyUGFzc3dvcmQgKG5vdCBmaWxsZWQgaW4gZXhwb3J0LCByZWxldmFudCBvbmx5IGZvciBpbXBvcnQgb2YgbmV3IGVudHJpZXMpJywKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHB1c2goIEBFbGVtZW50TGlzdCwgJEN1cnJBdHRyaWJ1dGUgKTsKCiAgICB9CgogICAgbXkgJEF0dHJpYnV0ZXMgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnS2V5JywKICAgICAgICAgICAgTmFtZSAgPT4gJ0tleScsCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEVsZW1lbnRMaXN0LAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgSXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIGNvbmZpZ3VyZSBhbmQgc2V0IHRoZSBpZGVudGlmaWVyOgogICAgICAgICMgQ3VzdG9tZXJLZXkgb2YgQmFja2VuZCBpcyB1c2VkIHRvIHNlYXJjaCBmb3IgZXhpc3RpbmcgZW5ydGllcyBhbnl3YXkhCiAgICAgICAgIyAoU2VlIHN1YiBJbXBvcnREYXRhU2F2ZSkKICAgICAgICAjICAgICAgICB7CiAgICAgICAgIyAgICAgICAgICAgIEtleSAgID0+ICdJZGVudGlmaWVyJywKICAgICAgICAjICAgICAgICAgICAgTmFtZSAgPT4gJ0lkZW50aWZpZXInLAogICAgICAgICMgICAgICAgICAgICBJbnB1dCA9PiB7IFR5cGUgPT4gJ0NoZWNrYm94JywgfSwKICAgICAgICAjICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZXM7Cn0KCj1pdGVtIFNlYXJjaEF0dHJpYnV0ZXNHZXQoKQoKZ2V0IHRoZSBzZWFyY2ggb2JqZWN0IGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZUxpc3QgPSAkT2JqZWN0QmFja2VuZC0+U2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm47Cn0KCj1pdGVtIEV4cG9ydERhdGFHZXQoKQoKZ2V0IGV4cG9ydCBkYXRhIGFzIDJELWFycmF5LWhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEV4cG9ydERhdGEgPSAkT2JqZWN0QmFja2VuZC0+RXhwb3J0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydERhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIG9iamVjdCBkYXRhCiAgICBpZiAoICEkT2JqZWN0RGF0YSB8fCByZWYgJE9iamVjdERhdGEgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAkUGFyYW17VGVtcGxhdGVJRH0iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHRoZSBtYXBwaW5nIGxpc3QKICAgIG15ICRNYXBwaW5nTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+TWFwcGluZ0xpc3QoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayB0aGUgbWFwcGluZyBsaXN0CiAgICBpZiAoICEkTWFwcGluZ0xpc3QgfHwgcmVmICRNYXBwaW5nTGlzdCBuZSAnQVJSQVknIHx8ICFAeyRNYXBwaW5nTGlzdH0gKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSB0aGUgbWFwcGluZyBvYmplY3QgbGlzdAogICAgbXkgQE1hcHBpbmdPYmplY3RMaXN0OwogICAgZm9yIG15ICRNYXBwaW5nSUQgKCBAeyRNYXBwaW5nTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICBteSAkTWFwcGluZ09iamVjdERhdGEgPQogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk1hcHBpbmdPYmplY3REYXRhR2V0KAogICAgICAgICAgICBNYXBwaW5nSUQgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICBpZiAoICEkTWFwcGluZ09iamVjdERhdGEgfHwgcmVmICRNYXBwaW5nT2JqZWN0RGF0YSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcHVzaCggQE1hcHBpbmdPYmplY3RMaXN0LCAkTWFwcGluZ09iamVjdERhdGEgKTsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgY3VzdG9tZXIgdXNlcnMuLi4KICAgIG15ICVDdXN0b21lclVzZXJMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclNlYXJjaCgKICAgICAgICBTZWFyY2ggPT4gJyonLAogICAgICAgIFZhbGlkICA9PiAwLAogICAgKTsKCiAgICBteSBARXhwb3J0RGF0YTsKCiAgICBmb3IgbXkgJEN1cnJVc2VyICglQ3VzdG9tZXJVc2VyTGlzdCkgewoKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkQ3VyclVzZXIsCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmVwYXJlIHZhbGlkaXR5Li4uCiAgICAgICAgaWYgKCAkQ3VzdG9tZXJVc2VyRGF0YXtWYWxpZElEfSApIHsKICAgICAgICAgICAgJEN1c3RvbWVyVXNlckRhdGF7VmFsaWR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkQ3VzdG9tZXJVc2VyRGF0YXtWYWxpZElEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBwYXNzd29yZC4uLgogICAgICAgIGlmICggJEN1c3RvbWVyVXNlckRhdGF7VXNlclBhc3N3b3JkfSApIHsKICAgICAgICAgICAgJEN1c3RvbWVyVXNlckRhdGF7VXNlclBhc3N3b3JkfSA9ICctJzsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgJEN1c3RvbWVyVXNlckRhdGF7U291cmNlfQogICAgICAgICAgICAmJiAoICRDdXN0b21lclVzZXJEYXRhe1NvdXJjZX0gZXEgJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9ICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgQEN1cnJSb3c7CiAgICAgICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdCAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CiAgICAgICAgICAgICAgICBteSAkS2V5ID0gJE1hcHBpbmdPYmplY3QtPntLZXl9OwogICAgICAgICAgICAgICAgaWYgKCAhJEtleSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDdXJyUm93LCAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBDdXJyUm93LCAkQ3VzdG9tZXJVc2VyRGF0YXskS2V5fSB8fCAnJyApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1c2ggQEV4cG9ydERhdGEsIFxAQ3VyclJvdzsKICAgICAgICB9CgogICAgfQoKICAgIHJldHVybiBcQEV4cG9ydERhdGE7Cn0KCj1pdGVtIEltcG9ydERhdGFTYXZlKCkKCmltcG9ydCBvbmUgcm93IG9mIHRoZSBpbXBvcnQgZGF0YQoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkT2JqZWN0QmFja2VuZC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAxMjMsCiAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiAkQXJyYXlSZWYsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnREYXRhU2F2ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIEltcG9ydERhdGFSb3cgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICggdW5kZWYsICdGYWlsZWQnICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaW1wb3J0IGRhdGEgcm93CiAgICBpZiAoIHJlZiAkUGFyYW17SW1wb3J0RGF0YVJvd30gbmUgJ0FSUkFZJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ltcG9ydERhdGFSb3cgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICggdW5kZWYsICdGYWlsZWQnICk7CiAgICB9CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgb2JqZWN0IGRhdGEKICAgIGlmICggISRPYmplY3REYXRhIHx8IHJlZiAkT2JqZWN0RGF0YSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBvYmplY3QgZGF0YSBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gKCB1bmRlZiwgJ0ZhaWxlZCcgKTsKICAgIH0KCiAgICAjIGdldCB0aGUgbWFwcGluZyBsaXN0CiAgICBteSAkTWFwcGluZ0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk1hcHBpbmdMaXN0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgdGhlIG1hcHBpbmcgbGlzdAogICAgaWYgKCAhJE1hcHBpbmdMaXN0IHx8IHJlZiAkTWFwcGluZ0xpc3QgbmUgJ0FSUkFZJyB8fCAhQHskTWFwcGluZ0xpc3R9ICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gKCB1bmRlZiwgJ0ZhaWxlZCcgKTsKICAgIH0KCiAgICAjIGNyZWF0ZSB0aGUgbWFwcGluZyBvYmplY3QgbGlzdAogICAgIyAgICBteSBATWFwcGluZ09iamVjdExpc3Q7CiAgICAjICAgIG15ICVJZGVudGlmaWVyOwogICAgbXkgJENvdW50ZXIgICAgICAgICAgICAgPSAwOwogICAgbXkgJU5ld0N1c3RvbWVyVXNlckRhdGEgPSBxd3t9OwoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgI0JVSUxEIE1BUFBJTkcgVEFCTEUuLi4KICAgIG15ICRJc0hlYWRsaW5lID0gMTsKICAgIGZvciBteSAkTWFwcGluZ0lEICggQHskTWFwcGluZ0xpc3R9ICkgewoKICAgICAgICAjIGdldCBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgbXkgJE1hcHBpbmdPYmplY3REYXRhID0KICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5NYXBwaW5nT2JqZWN0RGF0YUdldCgKICAgICAgICAgICAgTWFwcGluZ0lEID0+ICRNYXBwaW5nSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKCAhJE1hcHBpbmdPYmplY3REYXRhIHx8IHJlZiAkTWFwcGluZ09iamVjdERhdGEgbmUgJ0hBU0gnICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICggdW5kZWYsICdGYWlsZWQnICk7CiAgICAgICAgfQoKICAgICAgICAjICAgICAgICBwdXNoKCBATWFwcGluZ09iamVjdExpc3QsICRNYXBwaW5nT2JqZWN0RGF0YSApOwoKICAgICAgICAjIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBjb25maWd1cmUgYW5kIHNldCB0aGUgaWRlbnRpZmllcjoKICAgICAgICAjIEN1c3RvbWVyS2V5IG9mIEJhY2tlbmQgaXMgdXNlZCB0byBzZWFyY2ggZm9yIGV4aXN0aW5nIGVucnRpZXMgYW55d2F5IQogICAgICAgICMKICAgICAgICAjICBTZWUgbGluZXMgNjM4LTYzOToKICAgICAgICAjICAgICAgIGlmICggISRDdXN0b21lclVzZXJLZXkgfHwgJEN1c3RvbWVyVXNlcktleSBuZSAnVXNlckxvZ2luJyApIHsKICAgICAgICAjICAgICAgICAgICAkQ3VzdG9tZXJVc2VyS2V5ID0gIlVzZXJMb2dpbiI7CiAgICAgICAgIyAgICAgICB9CgogICAgICAgICMgICAgICAgIGlmICgKICAgICAgICAjICAgICAgICAgICAgJE1hcHBpbmdPYmplY3REYXRhLT57SWRlbnRpZmllcn0KICAgICAgICAjICAgICAgICAgICAgJiYgJElkZW50aWZpZXJ7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfQogICAgICAgICMgICAgICAgICAgICApCiAgICAgICAgIyAgICAgICAgewogICAgICAgICMgICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAjICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgIyAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgaW1wb3J0IHRoaXMgZW50aXR5LiAiCiAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgLiAiJyRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0nIGhhcyBiZWVuIHVzZWQgbXVsdGlwbGUgIgogICAgICAgICMgICAgICAgICAgICAgICAgICAgIC4gInRpbWVzIGFzIGlkZW50aWZpZXIgKGxpbmUgJFBhcmFte0NvdW50ZXJ9KS4hIiwKICAgICAgICAjICAgICAgICAgICAgKTsKICAgICAgICAjICAgICAgICB9CiAgICAgICAgIyAgICAgICAgZWxzaWYgKCAkTWFwcGluZ09iamVjdERhdGEtPntJZGVudGlmaWVyfSApIHsKICAgICAgICAjICAgICAgICAgICAgJElkZW50aWZpZXJ7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfSA9CiAgICAgICAgIyAgICAgICAgICAgICAgICAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskQ291bnRlcl07CiAgICAgICAgIyAgICAgICAgICAgICRDdXN0b21lclVzZXJLZXkgPSAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9OwogICAgICAgICMgICAgICAgIH0KCiAgICAgICAgaWYgKCAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IG5lICJVc2VyQ291bnRyeSIgKSB7CiAgICAgICAgICAgICROZXdDdXN0b21lclVzZXJEYXRheyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPSAKICAgICAgICAgICAgJFBhcmFte0ltcG9ydERhdGFSb3d9LT5bJENvdW50ZXJdOwogICAgICAgIH0gCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICMgU2FuaXRpemUgY291bnRyeSBpZiBpdCBpc24ndCBmb3VuZCBpbiBPVFJTIHRvIGluY3JlYXNlIHRoZSBjaGFuY2UgaXQgd2lsbAogICAgICAgICAgICAjIE5vdGUgdGhhdCBzdGFuZGFyZGl6aW5nIGFnYWluc3QgdGhlIElTTyAzMTY2LTEgbGlzdCBtaWdodCBiZSBhIGJldHRlciBhcHByb2FjaC4uLgogICAgICAgICAgICBteSAkQ291bnRyeUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UmVmZXJlbmNlRGF0YScpLT5Db3VudHJ5TGlzdCgpOwogICAgICAgICAgICBpZiAoIGV4aXN0cyAkQ291bnRyeUxpc3QtPnskUGFyYW17SW1wb3J0RGF0YVJvd30tPlskQ291bnRlcl19ICkgewogICAgICAgICAgICAgICAgJE5ld0N1c3RvbWVyVXNlckRhdGF7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfSA9ICRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyRDb3VudGVyXTsKICAgICAgICAgICAgfSAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTmV3Q3VzdG9tZXJVc2VyRGF0YXsgJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fSB9ID0gCiAgICAgICAgICAgICAgICAgICAgam9pbiAoJycsIG1hcCB7IHVjZmlyc3QgbGMgfSBzcGxpdCAvKFxzKykvLCAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskQ291bnRlcl0pOwogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdW50cnkgJyRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyRDb3VudGVyXScgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJub3QgZm91bmQgLSBzYXZlIGFzICckTmV3Q3VzdG9tZXJVc2VyRGF0YXsgJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fSB9Jy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICMgV09SS0FST1VORCAtIGZvciBGRUZGLWNoYXJhY3RlciBpbiBfc29tZV8gdGV4dHMgKHJlbW92ZSBpdCkuLi4KICAgICAgICBpZiAoICROZXdDdXN0b21lclVzZXJEYXRheyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gKSB7CiAgICAgICAgICAgICROZXdDdXN0b21lclVzZXJEYXRheyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPX4gcy8oXHh7ZmVmZn0pLy9nOwogICAgICAgIH0KICAgICAgICAjRU8gV09SS0FST1VORAoKICAgICAgICAkQ291bnRlcisrOwoKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICNETyBUSEUgSU1QT1JULi4uCgogICAgIyAoMCkgc2VhcmNoIHVzZXIKICAgIG15ICVDdXN0b21lclVzZXJEYXRhID0gKCk7CgogICAgbXkgJEN1c3RvbWVyVXNlcktleTsKICAgIG15ICRDdXN0b21lckJhY2tlbmQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9IHx8ICRPYmplY3REYXRhLT57Q3VzdG9tZXJVc2VyQmFja2VuZH0pOwogICAgaWYgKCAkQ3VzdG9tZXJCYWNrZW5kICYmICRDdXN0b21lckJhY2tlbmQtPntDdXN0b21lcktleX0gJiYgJEN1c3RvbWVyQmFja2VuZC0+e01hcH0gKSB7CiAgICAgICAgZm9yIG15ICRFbnRyeSAoIEB7ICRDdXN0b21lckJhY2tlbmQtPntNYXB9IH0gKSB7CiAgICAgICAgICAgIG5leHQgaWYgKCAkRW50cnktPlsxXSBuZSAkQ3VzdG9tZXJCYWNrZW5kLT57Q3VzdG9tZXJLZXl9ICk7CgogICAgICAgICAgICAkQ3VzdG9tZXJVc2VyS2V5ID0gJEVudHJ5LT5bMF07CiAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgfQogICAgICAgIGlmICggISRDdXN0b21lclVzZXJLZXkgKSB7CiAgICAgICAgICAgICRDdXN0b21lclVzZXJLZXkgPSAiVXNlckxvZ2luIjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkTmV3Q3VzdG9tZXJVc2VyRGF0YXskQ3VzdG9tZXJVc2VyS2V5fSApIHsKICAgICAgICAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkTmV3Q3VzdG9tZXJVc2VyRGF0YXskQ3VzdG9tZXJVc2VyS2V5fQogICAgICAgICk7CiAgICB9CgogICAgbXkgJE5ld1VzZXIgPSAxOwogICAgaWYgKCVDdXN0b21lclVzZXJEYXRhKSB7CiAgICAgICAgJE5ld1VzZXIgPSAwOwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDEpIFByZXByb2Nlc3MgZGF0YS4uLgogICAgbXkgJERlZmF1bHRDdXN0b21lcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KAogICAgICAgICdDdXN0b21lclVzZXJJbXBvcnQ6OkRlZmF1bHRDdXN0b21lcklEJwogICAgKSB8fCAnRGVmYXVsdEN1c3RvbWVySUQnOwogICAgbXkgJERlZmF1bHRFbWFpbEFkZHJlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoCiAgICAgICAgJ0N1c3RvbWVyVXNlckltcG9ydDo6RGVmYXVsdEVtYWlsQWRkcmVzcycKICAgICkgfHwgJ2R1bW15QGxvY2FsaG9zdCc7CiAgICBteSAkRW1haWxEb21haW5DdXN0b21lcklETWFwcGluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgKICAgICAgICAnQ3VzdG9tZXJVc2VySW1wb3J0OjpFTWFpbERvbWFpbkN1c3RvbWVySURNYXBwaW5nJwogICAgKTsKCiAgICAjIGxvb2t1cCBWYWxpZC1JRC4uLgogICAgaWYgKCAhJE5ld0N1c3RvbWVyVXNlckRhdGF7VmFsaWRJRH0gJiYgJE5ld0N1c3RvbWVyVXNlckRhdGF7VmFsaWR9ICkgewogICAgICAgICROZXdDdXN0b21lclVzZXJEYXRhe1ZhbGlkSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKAogICAgICAgICAgICBWYWxpZCA9PiAkTmV3Q3VzdG9tZXJVc2VyRGF0YXtWYWxpZH0KICAgICAgICApOwogICAgfQogICAgaWYgKCAhJE5ld0N1c3RvbWVyVXNlckRhdGF7VmFsaWRJRH0gKSB7CiAgICAgICAgJE5ld0N1c3RvbWVyVXNlckRhdGF7VmFsaWRJRH0gPSAkT2JqZWN0RGF0YS0+e0RlZmF1bHRWYWxpZH0gfHwgMTsKICAgIH0KCiAgICAjVXNlckVtYWlsLURvbWFpbiAyIEN1c3RvbWVySUQgTWFwcGluZy4uLgogICAgaWYgKCAkT2JqZWN0RGF0YS0+e0VuYWJsZU1haWxEb21haW5DdXN0b21lcklETWFwcGluZ30gKSB7CgogICAgICAgICMgZ2V0IGNvbXBhbnkgbWFwcGluZyBmcm9tIGVtYWlsIGFkZHJlc3MKICAgICAgICBpZiAoICROZXdDdXN0b21lclVzZXJEYXRhe1VzZXJFbWFpbH0gKSB7CgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIGtleXMoICV7JEVtYWlsRG9tYWluQ3VzdG9tZXJJRE1hcHBpbmd9ICkgKSB7CiAgICAgICAgICAgICAgICAkRW1haWxEb21haW5DdXN0b21lcklETWFwcGluZy0+eyBsYygkS2V5KSB9ID0gJEVtYWlsRG9tYWluQ3VzdG9tZXJJRE1hcHBpbmctPnskS2V5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgKCAkTG9jYWxQYXJ0LCAkRG9tYWluUGFydCApID0gc3BsaXQoICdAJywgJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlckVtYWlsfSApOwogICAgICAgICAgICAkRG9tYWluUGFydCA9IGxjKCREb21haW5QYXJ0KTsKCiAgICAgICAgICAgIGlmICggJEVtYWlsRG9tYWluQ3VzdG9tZXJJRE1hcHBpbmctPnskRG9tYWluUGFydH0gKSB7CiAgICAgICAgICAgICAgICAkTmV3Q3VzdG9tZXJVc2VyRGF0YXtVc2VyQ3VzdG9tZXJJRH0gPQogICAgICAgICAgICAgICAgICAgICRFbWFpbERvbWFpbkN1c3RvbWVySURNYXBwaW5nLT57JERvbWFpblBhcnR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRFbWFpbERvbWFpbkN1c3RvbWVySURNYXBwaW5nLT57JERvbWFpblBhcnR9CiAgICAgICAgICAgICAgICAmJiAkRW1haWxEb21haW5DdXN0b21lcklETWFwcGluZy0+e0FOWVRISU5HRUxTRX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlckN1c3RvbWVySUR9ID0KICAgICAgICAgICAgICAgICAgICAkRW1haWxEb21haW5DdXN0b21lcklETWFwcGluZy0+e0FOWVRISU5HRUxTRX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBkZWZhdWx0IFVzZXJDdXN0b21lcklELi4uCiAgICBpZiAoICEkTmV3Q3VzdG9tZXJVc2VyRGF0YXtVc2VyQ3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlckN1c3RvbWVySUR9ID0gJEN1c3RvbWVyVXNlckRhdGF7VXNlckN1c3RvbWVySUR9CiAgICAgICAgICAgIHx8ICRPYmplY3REYXRhLT57RGVmYXVsdFVzZXJDdXN0b21lcklEfQogICAgICAgICAgICB8fCAkRGVmYXVsdEN1c3RvbWVySUQ7CiAgICB9CgogICAgIyBkZWZhdWx0IFVzZXJFbWFpbC4uLgogICAgaWYgKCAhJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlckVtYWlsfSApIHsKICAgICAgICAkTmV3Q3VzdG9tZXJVc2VyRGF0YXtVc2VyRW1haWx9ID0gJEN1c3RvbWVyVXNlckRhdGF7VXNlckVtYWlsfQogICAgICAgICAgICB8fCAkT2JqZWN0RGF0YS0+e0RlZmF1bHRVc2VyRW1haWx9CiAgICAgICAgICAgIHx8ICREZWZhdWx0RW1haWxBZGRyZXNzOwogICAgfQoKICAgICMgcmVzZXQgVXNlclBhc3N3b3JkLi4uCiAgICBpZiAoCiAgICAgICAgKCAkTmV3VXNlciB8fCAkT2JqZWN0RGF0YS0+e1Jlc2V0UGFzc3dvcmR9ICkKICAgICAgICAmJiAoCiAgICAgICAgICAgICggJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlclBhc3N3b3JkfSAmJiAkTmV3Q3VzdG9tZXJVc2VyRGF0YXtVc2VyUGFzc3dvcmR9IGVxICctJyApCiAgICAgICAgICAgIHx8ICggISROZXdDdXN0b21lclVzZXJEYXRhe1VzZXJQYXNzd29yZH0gKQogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlclBhc3N3b3JkfSA9ICROZXdDdXN0b21lclVzZXJEYXRheyRDdXN0b21lclVzZXJLZXl9CiAgICAgICAgICAgIC4gKCAkT2JqZWN0RGF0YS0+e1Jlc2V0UGFzc3dvcmRTdWZmaXh9IHx8ICcnICk7CiAgICB9CiAgICBlbHNpZiAoICEkTmV3VXNlciAmJiAhJE9iamVjdERhdGEtPntSZXNldFBhc3N3b3JkfSApIHsKICAgICAgICBkZWxldGUgJE5ld0N1c3RvbWVyVXNlckRhdGF7VXNlclBhc3N3b3JkfTsKICAgICAgICBkZWxldGUgJEN1c3RvbWVyVXNlckRhdGF7VXNlclBhc3N3b3JkfTsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICgyKSBvdmVyd3JpdGUgZXhpc3RpbmcgdmFsdWVzIHdpdGggbmV3IHZhbHVlcy4uLgogICAgZm9yIG15ICRLZXkgKCBrZXlzKCVOZXdDdXN0b21lclVzZXJEYXRhKSApIHsKICAgICAgICAkQ3VzdG9tZXJVc2VyRGF0YXskS2V5fSA9ICROZXdDdXN0b21lclVzZXJEYXRheyRLZXl9OwogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDMpIGlmIHVzZXIgRE9FUyBOT1QgZXhpc3RzID0+IGNyZWF0ZSBpbiBzcGVjaWZpZWQgYmFja2VuZAogICAgIyB1cGRhdGUgdXNlcgogICAgbXkgJFJlc3VsdCAgICAgPSAwOwogICAgbXkgJFJldHVybkNvZGUgPSAiIjsgICAgIyBDcmVhdGVkIHwgQ2hhbmdlZCB8IEZhaWxlZAogICAgaWYgKCROZXdVc2VyKSB7CgogICAgICAgICMgc2V0IGRlZmF1bHRzCiAgICAgICAgZGVsZXRlICRDdXN0b21lclVzZXJEYXRhe0lEfTsKICAgICAgICAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclVzZXJBZGQoCiAgICAgICAgICAgICVDdXN0b21lclVzZXJEYXRhLAogICAgICAgICAgICBTb3VyY2UgPT4gJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9IHx8ICRPYmplY3REYXRhLT57Q3VzdG9tZXJVc2VyQmFja2VuZH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUmVzdWx0ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW1wb3J0RGF0YVNhdmU6IGFkZGluZyBDdXN0b21lclVzZXIgKCIKICAgICAgICAgICAgICAgICAgICAuICJDdXN0b21lckVtYWlsICIKICAgICAgICAgICAgICAgICAgICAuICRDdXN0b21lclVzZXJEYXRhe1VzZXJFbWFpbH0KICAgICAgICAgICAgICAgICAgICAuICIpIGZhaWxlZCAobGluZSAkUGFyYW17Q291bnRlcn0pLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUmV0dXJuQ29kZSA9ICJDcmVhdGVkIjsKICAgICAgICB9CgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMoMykgaWYgdXNlciBET0VTIGV4aXN0cyA9PiBjaGVjayBiYWNrZW5kIGFuZCB1cGRhdGUuLi4KICAgIGVsc2UgewogICAgICAgICRDdXN0b21lclVzZXJEYXRhe0lEfSA9ICROZXdDdXN0b21lclVzZXJEYXRheyRDdXN0b21lclVzZXJLZXl9OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDdXN0b21lclVzZXJEYXRhe1NvdXJjZX0KICAgICAgICAgICAgJiYgJEN1c3RvbWVyVXNlckRhdGF7U291cmNlfSBlcSAkT2JqZWN0RGF0YS0+e0N1c3RvbWVyQmFja2VuZH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyVXBkYXRlKAogICAgICAgICAgICAgICAgU291cmNlID0+ICRPYmplY3REYXRhLT57Q3VzdG9tZXJCYWNrZW5kfSwKICAgICAgICAgICAgICAgICVDdXN0b21lclVzZXJEYXRhLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFJlc3VsdCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkltcG9ydERhdGFTYXZlOiB1cGRhdGluZyBDdXN0b21lclVzZXIgKCIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiQ3VzdG9tZXJFbWFpbCAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEN1c3RvbWVyVXNlckRhdGF7VXNlckVtYWlsfQogICAgICAgICAgICAgICAgICAgICAgICAuICIpIGZhaWxlZCAobGluZSAkUGFyYW17Q291bnRlcn0pLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFJldHVybkNvZGUgPSAiQ2hhbmdlZCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkT2JqZWN0RGF0YS0+e0ZvcmNlSW1wb3J0SW5Db25maWd1cmVkQ3VzdG9tZXJCYWNrZW5kfSApIHsKCiAgICAgICAgICAgICMgTk9URTogdGhpcyBpcyBhIHNvbWV3aGF0IGRpcnR5IGhhY2sgdG8gZm9yY2UgdGhlIGltcG9ydCBvZiB0aGUKICAgICAgICAgICAgIyBjdXN0b21lciB1c2VyIGRhdGEgaW4gdGhlIGJhY2tlbmQgd2hpY2ggaXMgYXNzaWduZWQgaW4gdGhlIGN1cnJlbnQKICAgICAgICAgICAgIyBtYXBwaW5nLiBBY3R1YWxseSBhIGN1c3RvbWVyIGRhdGEgc2V0IGNhbiBub3QgYmUgYWRkZWQgdW5kZXIgdGhlCiAgICAgICAgICAgICMgc2FtZSBrZXkgKFVzZXJMb2dpbikuCgogICAgICAgICAgICBteSAlQmFja2VuZFJlZiA9ICgpOwogICAgICAgICAgICBteSAkUmVzdWx0Tm90ZSA9ICIiOwoKICAgICAgICAgICAgIyBmaW5kIGJhY2tlbmQgYW5kIGJhY2t1cCBjdXN0b21lciB1c2VyIGRhdGEgYmFja2VuZCByZWZzLi4uCiAgICAgICAgICAgIHdoaWxlICgKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJEYXRhe1NvdXJjZX0KICAgICAgICAgICAgICAgICYmICRDdXN0b21lclVzZXJEYXRhe1NvdXJjZX0gbmUgJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRCYWNrZW5kUmVmeyAkQ3VzdG9tZXJVc2VyRGF0YXtTb3VyY2V9IH0gPQogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+eyAkQ3VzdG9tZXJVc2VyRGF0YXtTb3VyY2V9IH07CiAgICAgICAgICAgICAgICBkZWxldGUoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+eyAkQ3VzdG9tZXJVc2VyRGF0YXtTb3VyY2V9IH0gKTsKCiAgICAgICAgICAgICAgICAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICROZXdDdXN0b21lclVzZXJEYXRheyRDdXN0b21lclVzZXJLZXl9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG92ZXJ3cml0ZSBleGlzdGluZyB2YWx1ZXMgd2l0aCBuZXcgdmFsdWVzLi4uCiAgICAgICAgICAgIGZvciBteSAkS2V5ICgga2V5cyglTmV3Q3VzdG9tZXJVc2VyRGF0YSkgKSB7CiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2VyRGF0YXskS2V5fSA9ICROZXdDdXN0b21lclVzZXJEYXRheyRLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHVwZGF0ZSBleGlzdGluZyBlbnRyeS4uLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2VyRGF0YXtTb3VyY2V9CiAgICAgICAgICAgICAgICAmJiAkQ3VzdG9tZXJVc2VyRGF0YXtTb3VyY2V9IGVxICRPYmplY3REYXRhLT57Q3VzdG9tZXJCYWNrZW5kfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2VyRGF0YXtJRH0gPSAkTmV3Q3VzdG9tZXJVc2VyRGF0YXskQ3VzdG9tZXJVc2VyS2V5fTsKICAgICAgICAgICAgICAgICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlclVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAlQ3VzdG9tZXJVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkUmVzdWx0Tm90ZSA9ICJ1cGRhdGUiOwogICAgICAgICAgICAgICAgJFJldHVybkNvZGUgPSAiQ2hhbmdlZCI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3JlYXRlIG5ldyBlbnRyeS4uLgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckFkZCgKICAgICAgICAgICAgICAgICAgICAlQ3VzdG9tZXJVc2VyRGF0YSwKICAgICAgICAgICAgICAgICAgICBTb3VyY2UgPT4gJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkUmVzdWx0Tm90ZSA9ICJhZGQiOwogICAgICAgICAgICAgICAgJFJldHVybkNvZGUgPSAiQ3JlYXRlZCI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIGVycm9ycy4uLgogICAgICAgICAgICBpZiAoICEkUmVzdWx0ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW1wb3J0RGF0YVNhdmU6IGZvcmNpbmcgQ3VzdG9tZXJVc2VyICgiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIkN1c3RvbWVyRW1haWwgIgogICAgICAgICAgICAgICAgICAgICAgICAuICRDdXN0b21lclVzZXJEYXRhe1VzZXJFbWFpbH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAiKSBpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJE9iamVjdERhdGEtPntDdXN0b21lckJhY2tlbmR9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gIiAoJFJlc3VsdE5vdGUpICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiIGZhaWxlZCAobGluZSAkUGFyYW17Q291bnRlcn0pLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFJldHVybkNvZGUgPSAiIjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZXN0b3JlIGN1c3RvbWVyIHVzZXIgZGF0YSBiYWNrZW5kIHJlZnMuLi4KICAgICAgICAgICAgZm9yIG15ICRDdXJyS2V5ICgga2V5cyglQmFja2VuZFJlZikgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPnskQ3VycktleX0gPSAkQmFja2VuZFJlZnskQ3VycktleX07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkltcG9ydERhdGFTYXZlOiB1cGRhdGluZyBDdXN0b21lclVzZXIgKCIKICAgICAgICAgICAgICAgICAgICAuICJDdXN0b21lckVtYWlsICIKICAgICAgICAgICAgICAgICAgICAuICRDdXN0b21lclVzZXJEYXRhe1VzZXJFbWFpbH0KICAgICAgICAgICAgICAgICAgICAuICIpIGZhaWxlZCAtIEN1c3RvbWVyVXNlciBleGlzdHMgaW4gb3RoZXIgYmFja2VuZC4iLAoKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIwogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgcmV0dXJuICggJFJlc3VsdCwgJFJldHVybkNvZGUgKTsKfQoKMTsK</File>
<File Location="Kernel/Language/de_CustomerUserImportExport.pm" Permission="644" Encode="Base64">IyAtLQojIEtlcm5lbC9MYW5ndWFnZS9kZV9DdXN0b21lclVzZXJJbXBvcnRFeHBvcnQucG0gLSBwcm92aWRlcyBnZXJtYW4gbGFuZ3VhZ2UKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNSBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHRyYW5zbGF0aW9uIGZvciBDdXN0b21lclVzZXJJbXBvcnRFeHBvcnQgbW9kdWxlCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAtLQojICRJZDogZGVfQ3VzdG9tZXJVc2VySW1wb3J0RXhwb3J0LnBtLHYgMS43IDIwMTUvMTEvMTMgMTU6MjA6MDMgdGxhbmdlIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfQ3VzdG9tZXJVc2VySW1wb3J0RXhwb3J0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCiMgLS0Kc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKICAgIG15ICRMYW5nID0gJFNlbGYtPntUcmFuc2xhdGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRMYW5nIG5lICdIQVNIJzsKCiAgICAjIHBvc3NpYmxlIGNoYXJzZXRzCiAgICAkU2VsZi0+e0NoYXJzZXR9ID0gWyd1dGYtOCcsIF07CgogICAgIyAkJFNUQVJUJCQKCiAgICAjIHRyYW5zbGF0aW9ucyBtaXNzaW5nIGluIEltcG9ydEV4cG9ydC4uLgogICAgJExhbmctPnsnQ29sdW1uIFNlcGVyYXRvcid9ICAgICAgICAgICA9ICdTcGFsdGVudHJlbm5lcic7CiAgICAkTGFuZy0+eydDaGFyc2V0J30gICAgICAgICAgICAgICAgICAgID0gJ1plaWNoZW5zYXR6JzsKICAgICRMYW5nLT57J1Jlc3RyaWN0IGV4cG9ydCBwZXIgc2VhcmNoJ30gPSAnRXhwb3J0IG1pdHRlbHMgU3VjaGUgZWluc2NocsOkbmtlbic7CgogICAgJExhbmctPnsnVmFsaWRJRCAobm90IHVzZWQgaW4gaW1wb3J0IGFueW1vcmUsIHVzZSBWYWxpZGl0eSBpbnN0ZWFkKSd9CiAgICAgICAgPSAnVmFsaWRJRCAod2lyZCBuaWNodCBpbSBJbXBvcnQgdmVyd2VuZGV0LCBiaXR0ZSBzdGF0dGRlc3NlbiBWYWxpZGl0eSBudXR6ZW4nOwogICAgJExhbmctPnsnRGVmYXVsdCBDdXN0b21lciBJRCd9ID0gJ1N0YW5kYXJkIEt1bmRlbi1JRCc7CiAgICAkTGFuZy0+eydNYWlsZG9tYWluLUN1c3RvbWVySUQgTWFwcGluZyAoc2VlIFN5c0NvbmZpZyknfQogICAgICAgID0gJ01haWxkb23DpG5lbi1LdW5kZW4tSUQgWnVvcmRudW5nIChzaWVoZSBTeXNDb25maWcpJzsKICAgICRMYW5nLT57J0RlZmF1bHQgRW1haWwnfSAgICAgICAgICAgICA9ICdTdGFuZGFyZCBFbWFpbCc7CiAgICAkTGFuZy0+eydSZXNldCBwYXNzd29yZCBpZiB1cGRhdGVkJ30gPSAnQmVpIFVwZGF0ZSBQYXNzd29ydCB6dXLDvGNrc2V0emVuJzsKICAgICRMYW5nLT57J1Bhc3N3b3JkLVN1ZmZpeCAobmV3IHBhc3N3b3JkID0gbG9naW4gKyBzdWZmaXgpJ30KICAgICAgICA9ICdQYXNzd29ydC1TdWZmaXggKG5ldWVzIFBhc3N3b3J0ID0gTG9naW4rU3VmZml4KSc7CiAgICAkTGFuZy0+eydGb3JjZSBpbXBvcnQgaW4gY29uZmlndXJlZCBjdXN0b21lciBiYWNrZW5kJ30gPQogICAgICAgICdFcnp3aW5nZSBJbXBvcnQgaW4ga29uZmlndXJpZXJ0ZW4gQmFja2VuZCc7CgogICAgJExhbmctPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWwuJ30gPQogICAgICAgICdPYmpla3QtQmFja2VuZCBNb2R1bCBSZWdpc3RyYXRpb24gZGVzIEltcG9ydC9FeHBvcnQgTW9kdWxzLic7CiAgICAkTGFuZy0+ewogICAgICAgICdEZWZpbmVzIHdoaWNoIGN1c3RvbWVyIElEIHRvIHVzZSBpZiBubyBjb21wYW55IGRlZmluZWQgLSBvbmx5IHJlbGV2YW50IGZvciBuZXcgY3VzdG9tZXIgdXNlcnMuJwogICAgICAgIH0gPQogICAgICAgICdEZWZpbmllcnQgd2VsY2hlIEt1bmRlbi1JRCBnZW51dHp0IHdpcmQsIGZhbGxzIG5pY2h0IGluIE1hcHBpbmcgZGVmaW5pZXJ0IC0gbnVyIGZ1ZXIgbmV1ZSBLdW5kZW5udXR6ZXJlaW50cmFlZ2UgcmVsZXZhbnQuJzsKICAgICRMYW5nLT57CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggZW1haWwgYWRkcmVzcyB0byB1c2UgaWYgbm90IGRlZmluZWQgLSBzdHJvbmdseSBkZXBlbmRzIG9uIGJhY2tlbmQgY29uZmlndXJhdGlvbiEhIS4nCiAgICAgICAgfSA9CiAgICAgICAgJ0RlZmluaWVydCB3ZWxjaGUgTWFpbGFkcmVzc2UgZ2VudXR6dCB3aXJkLCB3ZW5uIG5pY2h0IGdlZ2ViZW4gLSBzdGFyayBhYmhhZW5naWcgdm9uIEJhY2tlbmRrb25maWd1cmF0aW9uISEhLic7CiAgICAkTGFuZy0+ewogICAgICAgICdEZWZpbmVzIGEgbWFwcGluZyBvZiBlbWFpbCBkb21haW5zIHRvIGN1c3RvbWVyIElEcy4gQSBzcGVjaWFsIGtleSB2YWx1ZSBpcyBBTllUSElOR0VMU0UsIHdoaWNoIGlzIHNpbWlsYXIgdG8gZGVmYXVsdCBjdXN0b21lciBJRCBidXQgYWxzbyBhZmZlY3RzIHVwZGF0ZXMuJwogICAgICAgIH0gPQogICAgICAgICdEZWZpbmllcnQgZGFzIE1hcHBpbmcgdm9uIEVNYWlsLURvbWFpbnMgenUgS3VuZGVuSURzLiBFaW4gYmVzb25kZXJlciBTY2hsdWVzc2Vsd2VydCBpc3QgQU5ZVEhJTkdFTFNFLCB3ZWxjaGVzIHNpY2ggd2llIERlZmF1bHRDdXN0b21lcklEIHZlcmhhZWx0LCBhYmVyIGF1Y2ggZnVlciBBa3R1YWxpc2llcnVuZyB2ZXJ3ZW5kZXQgd2lyZC4nOwoKICAgICMgICAgJExhbmctPnsnJ30gICA9ICcnOwogICAgIyAgICAkTGFuZy0+eycnfSAgID0gJyc7CiAgICAjICAgICRMYW5nLT57Jyd9ICAgPSAnJzsKICAgICMgICAgJExhbmctPnsnJ30gICA9ICcnOwoKICAgIHJldHVybiAwOwoKICAgICMgJCRTVE9QJCQKfQoKIyAtLQoxOwo=</File>
<File Location="var/packagesetup/CustomerUserImportExport.pm" Permission="644" Encode="Base64">IyAtLQojIEN1c3RvbWVyVXNlckltcG9ydEV4cG9ydC5wbSAtIGNvZGUgcnVuIGR1cmluZyBwYWNrYWdlIGRlLS9pbnN0YWxsYXRpb24KIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNCBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUKIwojIHdyaXR0ZW4vZWRpdGVkIGJ5OgojICogTWFydGluKGRvdClCYWx6YXJlayhhdCljYXBlKGRhc2gpaXQuZGUKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZShkYXNoKWl0LmRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZShkYXNoKWl0LmRlCiMgKiBGcmFuayhkb3QpT2JlcmVuZGVyKGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIFRob21hcyhkb3QpTGFuZ2UoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojIC0tCiMgJElkOiBDdXN0b21lclVzZXJJbXBvcnRFeHBvcnQucG0sdiAxLjEyIDIwMTUvMTEvMTMgMTU6MjA6MDMgdGxhbmdlIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpDdXN0b21lclVzZXJJbXBvcnRFeHBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpDb25maWcnCik7Cgo9aGVhZDEgTkFNRQoKQ3VzdG9tZXJVc2VySW1wb3J0RXhwb3J0LnBtIC0gY29kZSB0byBleGNlY3V0ZSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24KCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6Q29uZmlnOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpMb2c7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok1haW47CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OlRpbWU7CiAgICB1c2UgS2VybmVsOjpTeXN0ZW06OkRCOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpYTUw7CgogICAgbXkgJENvbmZpZ09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKICAgIG15ICRMb2dPYmplY3QgICAgPSBLZXJuZWw6OlN5c3RlbTo6TG9nLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICApOwogICAgbXkgJE1haW5PYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6TWFpbi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgKTsKICAgIG15ICRUaW1lT2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpbWUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBteSAkREJPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo6REItPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICAgICBNYWluT2JqZWN0ICAgPT4gJE1haW5PYmplY3QsCiAgICApOwogICAgbXkgJFhNTE9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpYTUwtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICAgICBEQk9iamVjdCAgICAgPT4gJERCT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7CiAgICBteSAkQ29kZU9iamVjdCA9IHZhcjo6cGFja2FnZXNldHVwOjpPVFJTLUNpQ1MtSVRTTS5wbS0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAogICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICAgICBUaW1lT2JqZWN0ICAgPT4gJFRpbWVPYmplY3QsCiAgICAgICAgREJPYmplY3QgICAgID0+ICREQk9iamVjdCwKICAgICAgICBYTUxPYmplY3QgICAgPT4gJFhNTE9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgICRTZWxmLT5fQ3JlYXRlTWFwcGluZ3MoKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPl9DcmVhdGVNYXBwaW5ncygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPl9DcmVhdGVNYXBwaW5ncygpOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+X1JlbW92ZVJlbGF0ZWRNYXBwaW5ncygpOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbW92ZVJlbGF0ZWRNYXBwaW5ncygpIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRUZW1wbGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlTGlzdCgKICAgICAgICBPYmplY3QgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgRm9ybWF0ID0+ICdDU1YnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBpZiAoIHJlZigkVGVtcGxhdGVMaXN0KSBlcSAnQVJSQVknICYmIEB7JFRlbXBsYXRlTGlzdH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5UZW1wbGF0ZURlbGV0ZSgKICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVMaXN0LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9DcmVhdGVNYXBwaW5ncygpIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRlbXBsYXRlT2JqZWN0ID0gIkN1c3RvbWVyVXNlciI7CiAgICBteSAkVGVtcGxhdGVOYW1lICAgPSAiIjsKICAgIG15ICVUZW1wbGF0ZUxpc3QgICA9ICgpOwoKICAgIG15ICVDU0xpc3QgICAgICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclNvdXJjZUxpc3QoKTsKICAgIG15ICRGb3JjZUNTVk1hcHBpbmdDb25maWd1cmF0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KAogICAgICAgICdJbXBvcnRFeHBvcnQ6OkN1c3RvbWVyVXNlckltcG9ydEV4cG9ydDo6Rm9yY2VDU1ZNYXBwaW5nUmVjcmVhdGlvbicKICAgICkgfHwgJzAnOwoKICAgIG15ICRUZW1wbGF0ZUxpc3RSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlTGlzdCgKICAgICAgICBPYmplY3QgPT4gJFRlbXBsYXRlT2JqZWN0LAogICAgICAgIEZvcm1hdCA9PiAnQ1NWJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBpZiAoICRUZW1wbGF0ZUxpc3RSZWYgJiYgcmVmKCRUZW1wbGF0ZUxpc3RSZWYpIGVxICdBUlJBWScgKSB7CiAgICAgICAgZm9yIG15ICRDdXJyVGVtcGxhdGVJRCAoIEB7JFRlbXBsYXRlTGlzdFJlZn0gKSB7CiAgICAgICAgICAgIG15ICRUZW1wbGF0ZURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkQ3VyclRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRUZW1wbGF0ZURhdGFSZWYKICAgICAgICAgICAgICAgICYmIHJlZigkVGVtcGxhdGVEYXRhUmVmKSBlcSAnSEFTSCcKICAgICAgICAgICAgICAgICYmICRUZW1wbGF0ZURhdGFSZWYtPntPYmplY3R9CiAgICAgICAgICAgICAgICAmJiAkVGVtcGxhdGVEYXRhUmVmLT57TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFRlbXBsYXRlTGlzdHsgJFRlbXBsYXRlRGF0YVJlZi0+e09iamVjdH0gLiAnOjonIC4gJFRlbXBsYXRlRGF0YVJlZi0+e05hbWV9IH0KICAgICAgICAgICAgICAgICAgICA9ICRDdXJyVGVtcGxhdGVJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBDVVNUT01FUlVTRVJCQUNLRU5EOgogICAgZm9yIG15ICRDdXJyQ1VCYWNrZW5kS2V5ICgga2V5cyglQ1NMaXN0KSApIHsKICAgICAgICAkVGVtcGxhdGVOYW1lID0KICAgICAgICAgICAgJEN1cnJDVUJhY2tlbmRLZXkgLiAiIC0gIiAuICRDU0xpc3R7JEN1cnJDVUJhY2tlbmRLZXl9IC4gIiAoYXV0by1jcmVhdGVkIG1hcCkiOwoKICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIGNoZWNrIGlmIHRlbXBsYXRlIGFscmVhZHkgZXhpc3RzLi4uCiAgICAgICAgaWYgKCAkVGVtcGxhdGVMaXN0eyAkVGVtcGxhdGVPYmplY3QgLiAnOjonIC4gJFRlbXBsYXRlTmFtZSB9ICkgewogICAgICAgICAgICBpZiAoJEZvcmNlQ1NWTWFwcGluZ0NvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+VGVtcGxhdGVEZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVMaXN0eyAkVGVtcGxhdGVPYmplY3QgLiAnOjonIC4gJFRlbXBsYXRlTmFtZSB9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ1NWIG1hcHBpbmcgZGVsZXRlZCBmb3IgcmUtY3JlYXRpb24gPCIKICAgICAgICAgICAgICAgICAgICAgICAgLiAkVGVtcGxhdGVOYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIj4uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDU1YgbWFwcGluZyBhbHJlYWR5IGV4aXN0cyBhbmQgbm90IHJlLWNyZWF0ZWQgPCIKICAgICAgICAgICAgICAgICAgICAgICAgLiAkVGVtcGxhdGVOYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIj4uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENVU1RPTUVSVVNFUkJBQ0tFTkQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICMgYWRkIGEgdGVtcGxhdGUgY3VzdG9tZXIgdXNlcgogICAgICAgIG15ICRUZW1wbGF0ZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5UZW1wbGF0ZUFkZCgKICAgICAgICAgICAgT2JqZWN0ICA9PiAkVGVtcGxhdGVPYmplY3QsCiAgICAgICAgICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFRlbXBsYXRlTmFtZSwKICAgICAgICAgICAgQ29tbWVudCA9PiAiQXV0b21hdGljYWxseSBjcmVhdGVkIGR1cmluZyBDdXN0b21lclVzZXJJbXBvcnRFeHBvcnQgaW5zdGFsbGF0aW9uIiwKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgIyBjcmVhdGUgYXR0cmlidXRlIG1hcHBpbmcuLi4KICAgICAgICBteSBARWxlbWVudExpc3QgPSBxd3t9OwogICAgICAgIG15IEBNYXAgPQogICAgICAgICAgICBAeyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT57JEN1cnJDVUJhY2tlbmRLZXl9LT57J01hcCd9IH07CgogICAgICAgIGZvciBteSAkQ3VyckF0dHJpYnV0ZU1hcHBpbmcgKEBNYXApIHsKICAgICAgICAgICAgbXkgJEN1cnJBdHRyaWJ1dGUgPSB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkQ3VyckF0dHJpYnV0ZU1hcHBpbmctPlswXSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDdXJyQXR0cmlidXRlTWFwcGluZy0+WzBdLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgIyBpZiBWYWxpZElEIGlzIGF2YWlsYWJsZSAtIG9mZmVyIFZhbGlkIGluc3RlYWQuLgogICAgICAgICAgICBpZiAoICRDdXJyQXR0cmlidXRlTWFwcGluZy0+WzBdIGVxICdWYWxpZElEJyApIHsKICAgICAgICAgICAgICAgICRDdXJyQXR0cmlidXRlID0geyBLZXkgPT4gJ1ZhbGlkJywgVmFsdWUgPT4gJ1ZhbGlkaXR5JywgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoKCBARWxlbWVudExpc3QsICRDdXJyQXR0cmlidXRlICk7CgogICAgICAgIH0KCiAgICAgICAgbXkgJEV4cG9ydERhdGFTZXRzID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU2VwYXJhdG9yID0+ICdTZW1pY29sb24nLAogICAgICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFxARWxlbWVudExpc3QsCiAgICAgICAgICAgICAgICAgICAgRXhwb3J0RGF0YUdldCAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0KICAgICAgICBdOwoKICAgICAgICAjIGdldCBvYmplY3QgYXR0cmlidXRlcwogICAgICAgIG15ICRPYmplY3RBdHRyaWJ1dGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRFeHBvcnREYXRhU2V0cy0+WzBdLT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkQXR0cmlidXRlVmFsdWVzOwogICAgICAgIGZvcmVhY2ggbXkgJERlZmF1bHQgKCBAeyRPYmplY3RBdHRyaWJ1dGVMaXN0fSApIHsKICAgICAgICAgICAgaWYgKCAkRGVmYXVsdC0+e0tleX0gZXEgJ0N1c3RvbWVyQmFja2VuZCcgKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWVzLT57ICREZWZhdWx0LT57S2V5fSB9ID0gJEN1cnJDVUJhY2tlbmRLZXk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWVzLT57ICREZWZhdWx0LT57S2V5fSB9ID0gJERlZmF1bHQtPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICAkRXhwb3J0RGF0YVNldHMtPlswXS0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0gPSAkQXR0cmlidXRlVmFsdWVzOwoKICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAjIHJ1biBnZW5lcmFsIEV4cG9ydERhdGFHZXQuLi4KICAgICAgICBFWFBPUlREQVRBU0VUOgogICAgICAgIGZvciBteSAkQ3VycmVudEV4cG9ydERhdGFTZXQgKCBAeyRFeHBvcnREYXRhU2V0c30gKSB7CgogICAgICAgICAgICAjIGNoZWNrIFNvdXJjZUV4cG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICEkQ3VycmVudEV4cG9ydERhdGFTZXQtPntTb3VyY2VFeHBvcnREYXRhfQogICAgICAgICAgICAgICAgfHwgcmVmICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9IG5lICdIQVNIJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbmV4dCBFWFBPUlREQVRBU0VUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCB0aGUgb2JqZWN0IGRhdGEKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEN1cnJlbnRFeHBvcnREYXRhU2V0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfQogICAgICAgICAgICAgICAgJiYgcmVmICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0gZXEgJ0hBU0gnCiAgICAgICAgICAgICAgICAmJiAkQ3VycmVudEV4cG9ydERhdGFTZXQtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgc2F2ZSBvYmplY3QgZGF0YQogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgdGhlIGZvcm1hdCBkYXRhCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9LT57Rm9ybWF0RGF0YX0KICAgICAgICAgICAgICAgICYmIHJlZiAkQ3VycmVudEV4cG9ydERhdGFTZXQtPntTb3VyY2VFeHBvcnREYXRhfS0+e0Zvcm1hdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAgICAgJiYgJEN1cnJlbnRFeHBvcnREYXRhU2V0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHNhdmUgZm9ybWF0IGRhdGEKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+Rm9ybWF0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ3VycmVudEV4cG9ydERhdGFTZXQtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0RGF0YSA9PiAkQ3VycmVudEV4cG9ydERhdGFTZXQtPntTb3VyY2VFeHBvcnREYXRhfS0+e0Zvcm1hdERhdGF9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9CiAgICAgICAgICAgICAgICAmJiByZWYgJEN1cnJlbnRFeHBvcnREYXRhU2V0LT57U291cmNlRXhwb3J0RGF0YX0tPntNYXBwaW5nT2JqZWN0RGF0YX0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgJiYgJEN1cnJlbnRFeHBvcnREYXRhU2V0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ3VycmVudEV4cG9ydERhdGFTZXQtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCByb3dzCiAgICAgICAgICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICAgICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdERhdGEgKAogICAgICAgICAgICAgICAgICAgIEB7ICRDdXJyZW50RXhwb3J0RGF0YVNldC0+e1NvdXJjZUV4cG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IG1hcHBpbmcgcm93CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hcHBpbmdJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEN1cnJlbnRFeHBvcnREYXRhU2V0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5NYXBwaW5nT2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICAgICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+ICRNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgIH0gICAgI0VPIGZvciBteSAkQ3VyckNVQmFja2VuZEtleSAoIGtleXMoICVDU0xpc3QgKSApCgogICAgfQoKICAgIHJldHVybiAxOwoKfQoKMTsK</File>
<File Location="doc/en/USAGE_customeruserimportexport.pod" Permission="644" Encode="Base64">IyAkSWQ6IFVTQUdFX2N1c3RvbWVydXNlcmltcG9ydGV4cG9ydC5wb2QsdiAxLjQgMjAxMy8wMi8xMiAxMDo0MDoxNyB0dG8gRXhwICQKCj1oZWFkMSBHZW5lcmFsCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYW4gQ1NWLWJhc2VkIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgY3VzdG9tZXIgdXNlciBpdGVtcy4KClRoaXMgcGFja2FnZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZXMgaW1wb3J0LS9leHBvcnQgbWFwcGluZyBkdXJpbmcgcmUtL2luc3RhbGxhdGlvbiBmb3IgZWFjaCByZWdpc3RlcmVkIGN1c3RvbWVyIHVzZXIgYmFja2VuZCBhcyBsb25nIGFzIG5vIGVxdWFsbHkgbmFtZWQgbWFwcGluZyBleGlzdHMuCgo9b3ZlciA0IAoKPWl0ZW0gKiAiRm9yY2UgaW1wb3J0IGluIGNvbmZpZ3VyZWQgY3VzdG9tZXIgYmFja2VuZCI6IAoKICAgICAgICBpZiBlbmFibGVkLCB0aGUgZW50cnkgd2lsbCBiZSBhZGRlZC91cGRhdGVkIHRvL2luIHRoZSBjdXN0b21lciBkYXRhIGJhY2tlbmQgdG8gd2hpY2ggdGhlIG1hcHBpbmcgcmVmZXJzIGV2ZW4gaWYgdGhlIGxvZ2luIGV4aXN0cyBpbiBhbm90aGVyIGJhY2tlbmQuCgo9aXRlbSAqICJEZWZhdWx0IEN1c3RvbWVyIElEIjogCgogICAgICAgIGRlZmluZXMgYSBkZWZhdWx0IGdyb3VwIHRoYXQgaXMgYXNzaWduZWQgdG8gYSBuZXcgZmFxLWNhdGVnb3J5IGlmIG5vdCBzcGVjaWZpZWQgaW4gaW1wb3J0IGRhdGUKCj1pdGVtICogIk1haWxkb21haW4tQ3VzdG9tZXJJRCBNYXBwaW5nIjogCgogICAgICAgIGF1dG9tYXRpY2FsbHkgYnVpbGQgY3VzdG9tZXIgSUQgb3V0IG9mIG1haWwtZG9tYWluIChyZXF1aXJlcyBzb21lIFN5c0NvbmZpZyBzZXR0aW5ncyB3aGljaCBkb21haW4gc2hvdWxkIGJlIG1hcHBlZCB0byB3aGljaCBjdXN0b21lciBJRCkKICAgICAgICBDdXN0b21lclVzZXJJbXBvcnQ6OkVNYWlsRG9tYWluQ3VzdG9tZXJJRE1hcHBpbmcKCgo9aXRlbSAqICJEZWZhdWx0IEVtYWlsIjogCgogICAgICAgIGRlZmF1bHQgZW1haWwgYWRkcmVzcyBpZiBub3Qgc3BlY2lmaWVkIGluIGltcG9ydCBkYXRhIChzZWUgdW5pcXVlIGVtYWlsIGNvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbWVyIGJhY2tlbmRzKQoKPWl0ZW0gKiAiUmVzZXQgcGFzc3dvcmQgaWYgdXBkYXRlZCI6IAoKICAgICAgICByZXNldHMgdGhlIHVzZXIgcGFzc3dvcmQgdG8gdXNlciBsb2dpbiBpZiB1c2VyIGRhdGEgaXMgdXBkYXRlZCBpbiB3cml0YWJsZSBjdXN0b21lciBkYXRhIGJhY2tlbmQKCj1pdGVtICogIlBhc3N3b3JkLVN1ZmZpeCIKCiAgICAgICAgYSByZXNldCBwYXNzd29yZCB3aWxsIGJlIGlkZW50aWNhbCB3aXRoIHRoZSBsb2dpbiBmb2xsb3dlZCBieSB0aGlzIHN1ZmZpeAoKPWl0ZW0gKiAiRGVmYXVsdCBWYWxpZGl0eSIKCiAgICAgICAgaWYgbm8gdmFsaWQgaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQgaW4gaW1wb3J0IGRhdGEsIHRoaXMgdmFsaWQgaW5mb3JtYXRpb24gaXMgdXNlZAoKPWJhY2sKClRoZSBmaWVsZCAiVXNlckxvZ2luIiBpcyBhdXRvbWF0aWNhbGx5IHVzZWQgYXMgaWRlbnRpZmllciBmb3IgZXhpc3RpbmcgZW50cmllczogSWYgYSBDdXN0b21lciB3aXRoIHRoZSBnaXZlbiBVc2VyTG9naW4gYWxyZWFkeSBleGlzdHMgaXQgd2lsbCBiZSB1cGRhdGVkLiBPdGhlcndpc2UgYSBuZXcgQ3VzdG9tZXIgd2lsbCBiZSBjcmVhdGVkLgoKClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQK</File>
<File Location="doc/CHANGES_CustomerUserImportExport.md" Permission="644" Encode="Base64">IyBDaGFuZ2UgbG9nIG9mIEN1c3RvbWVyVXNlckltcG9ydEV4cG9ydAoqIENvcHlyaWdodCAoQykgMjAwNi0yMDE1IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZS8KKiAkSWQ6IENIQU5HRVNfQ3VzdG9tZXJVc2VySW1wb3J0RXhwb3J0Lm1kLHYgMS4xMSAyMDE1LzExLzEzIDE1OjIwOjAzIHRsYW5nZSBFeHAgJAoKIyByNS4wLjAgKDIwMTUvMTEvMTMpCiogKDIwMTUvMTEvMTMpIC0gQ1I6IFQjMjAxNTA4MjY5MDAwMDUxNyAoYWRkZWQgZnJhbWV3b3JrIE9UUlMgNS4wLngpICh0bGFuZ2UpCgojIHI0Ljk5LjgwICgyMDE1LzExLzExKQoqICgyMDE1LzA5LzA0KSAtIENSOiBUIzIwMTUwODI2OTAwMDA1MTcgKGNoYW5nZXMgZm9yIHVzZSB3aXRoIE9UUlMgNS4wLngpICh0bGFuZ2UpCgojIHI0LjAuMDIgKDIwMTUvMDgoMjYpCiogKDIwMTUvMDQvMTYpIC0gQnVnZml4OiBUIzIwMTUwNDE1OTAwMDA1ODEgKGZpeCBEZXNjcmlwdGlvbiBpbiBzb3BtKSAoc3JlaXNzKQoKIyByMS4xMS4xICgyMDE0LzEyLzAzKQoqICgyMDE0LzEyLzAzKSAtIENSOiBUMjAxNDEwMjk5MDAwMDUwOSAoZml4IHBhY2thZ2Ugc2V0dXApIChmb2JlcikKCiMgcjEuMTEuMCAoMjAxNC8xMi8wMSkKKiAoMjAxNC8xMS8wMykgLSBDUjogVDIwMTQxMDI5OTAwMDA1MDkgKGNoYW5nZXMgZm9yIHVzZSB3aXRoIE9UUlMgNC4wLngpIChmb2JlcikKCiMgcjEuMTAuMCAoMjAxMy8xMC8xNykKKiAoMjAxMy8xMC8xNikgLSBDUjogKHVzZSBDdXN0b21lcktleSBvZiBiYWNrZW5kIGFzIGlkZW50aWZpZXIpIChtaWxsaW5nZXIpCiogKDIwMTMvMTAvMTYpIC0gQ1I6IChjaGFuZ2VzIGZvciB1c2Ugd2l0aCBPVFJTIDMuMy54KSAobWlsbGluZ2VyKQoKIyByMS45LjIgKDIwMTMvMTAvMTYpCiogKDIwMTMvMTAvMTYpIC0gQnVnZml4OiBUMjAxMzEwMTY5MDAwMDMyMSAoYWRkZWQgbWlzc2luZyBvYmplY3QgY3JlYXRpb24pICh0dG8pCgojIHIxLjkuMSAoMjAxMy8xMC8xNCkKKiAoMjAxMy8wOC8yMykgLSBCdWdmaXg6IFQyMDEzMDcyNDkwMDAwMjg2IChhZGRlZCBpZGVudGlmaWVyIGZvciBpbXBvcnQpIChzbWVobGlnKQoqICgyMDEzLzA3LzI5KSAtIENSOiBUMjAxMzA3MTk5MDAwMDM3NiAoc2FuaXRpemUgIkNvdW50cnkiIGZpZWxkKSAodHRvKSA9PiBwcm92aWRlZCBieSBDeXJpbGxlIEJvbGx1IC0gbWVyY2kgYmVhdWNvdXAhCgojIHIxLjkuMCAoMjAxMy8wMi8xMikKKiAoMjAxMy8wMi8xMikgLSBDUjogVDIwMTMwMjEyOTAwMDAxMjkgKG1vZGlmaWNhdGlvbnMgZm9yIElUU00zLjEuNyBhbmQgZnJhbWV3b3JrIE9UUlMgMy4yLngpICh0dG8pCiogKDIwMTMvMDIvMTIpIC0gQ1I6IFQyMDEzMDIxMjkwMDAwMTI5IChhZGRlZCBTeXNjb25maWcgb3B0aW9uIGZvciBhdW90bS4gQ1NWLW1hcHBpbmcgY3JlYXRpb24gb24gcmVpbnN0YWxsL3VwZ3JhZGUpICh0dG8pCgojIHIxLjguMSAoMjAxMy8wMS8xMCkKKiAoMjAxMi8xMi8yMCkgLSBCdWdmaXg6IChmaXggd3JvbmcgcGFzc3dvcmQgc2V0L3Jlc2V0IGJlaGF2aW91cikgKGZvYmVyKSAKKiAoMjAxMi8wOS8yOCkgLSBDUjogKGRvIG5vdCByZXBsYWNlIFVzZXJFbWFpbCBhbmQgVXNlckN1c3RvbWVySUQgaWYgbm90IGdpdmVuIGJ5IGRlZmF1bHQgdmFsdWVzIHdoZW4gdXBkYXRpbmcpICh0dG8pCiogKDIwMTIvMDkvMjgpIC0gQ1I6IChyZW1vdmVkIFZhbHVlRGVmYXVsdCBmb3IgZGVmYXVsdCBtYWlsIGFkZHJlc3MgYW5kIHJlcXVpcmVkIGZsYWcgZm9yIGN1c3RvbWVyIElEKSAodHRvKQoKIyByMS44LjAgKDIwMTIvMDQvMTMpCiogKDIwMTIvMDMvMDgpIC0gQ1I6IFQyMDEyMDIyNzkwMDAwMjQ2IChjaGFuZ2VzIGZvciB1c2Ugd2l0aCBPVFJTIDMuMS54KSAoYWxpdHZpbm92YSkKKiAoMjAxMi8wMy8wOCkgLSBDUjogVDIwMTIwMjI3OTAwMDAyNDYgKGRlbGV0ZWQgImlkZW50aWZpZXIiIGNvbHVtbiBpbiBtYXBwaW5nIGNvbmZpZ3VyYXRpb24pIChhbGl0dmlub3ZhKQoqICgyMDEyLzAzLzA4KSAtIENSOiBUMjAxMjAyMjc5MDAwMDI0NiAoZGVsZXRlZCAiRXhwb3J0IHdpdGggbGFiZWxzIiBhdHRyaWJ1dGUpIChhbGl0dmlub3ZhKQoKIyByMS43LjEgKDIwMTEvMTIvMjIpCiogKDIwMTEvMTIvMjIpIC0gQ1I6IGFkZGVkIG9wdGlvbiAiRm9yY2UgaW1wb3J0IGluIGNvbmZpZ3VyZWQgY3VzdG9tZXIgYmFja2VuZCIgKHR0bykKKiAoMjAxMS8wMy8yMCkgLSBDUjogYWRkZWQgdXNhZ2UgaW5mb3JtYXRpb24gaW4gcG9kLWZpbGUgaW4gPE9UUlNfSE9NRT4vZG9jL2VuICh0dG8pCgojIHIxLjcuMCAoMjAxMS8wMi8xNikKKiAoMjAxMS8wMi8xNikgLSBDUjogY2hhbmdlcyBmb3IgdXNlIHdpdGggT1RSUyAzLjAueAoKIyByMS41LjIgKDIwMTAvMDUvMDcpCiogKDIwMTAvMDUvMDcpIC0gQnVnZml4OiBUMjAxMDA0Mjg5MDAwMDEyOChhbGwgaW1wb3J0ZWQgZW50cmllcyBhcmUgdmFsaWQgKS4KCiMgcjEuNS4xICgyMDEwLzA1LzAyKQoqICgyMDEwLzA1LzAxKSAtIEJ1Z2ZpeDogVDIwMTAwNDI4OTAwMDAxMjggKGV4cG9ydCBkZWxpdmVycyBvbmx5IHZhbGlkIGVudHJpZXMpCgojIHIxLjUuMCAoMjAxMC8wNC8xNykKKiAoMjAxMC8wNC8xNykgLSBDUjogc2V0IGNvcnJlY3QgYmFja2VuZCBJRCBpbiBkZWZhdWx0IHZhbHVlcyBvbiBhdXRvIG1hcHBpbmcgY3JlYXRpb24gZm9yIG11bHRpcGxlIGN1c3RvbWVyIGRhdGEgYmFja2VuZHMKKiAoMjAxMC8wNC8xNikgLSBDUjogYXV0b21hdGljIG1hcHBpbmcgY3JlYXRpb24gb24gcGFja2FnZSBpbnN0YWxsYXRpb24KKiAoMjAxMC8wNC8xNSkgLSBDUjogcmV3b3JrZWQgdGVtcGxhdGUgY29uZmlnIG9wdGlvbnMKKiAoMjAxMC8wNC8xNSkgLSBDUjogYWRkZWQgdW5pdC10ZXN0IGZpbGVzIChwcmVwYXJhdGlvbnMgb25seSkKKiAoMjAxMC8wNC8xNSkgLSBDUjogYWRkZWQgbGFuZ3VhZ2UgZmlsZQoqICgyMDEwLzAxLzI2KSAtIEJ1Z2ZpeDogaWdub3JlZCBpbXBvcnQgVmFsaWRJRCAoYWx3YXlzIHJlcGxhY2VkIGJ5IDEpLgoKIyByMS40LjIgKDIwMTAvMDEvMTgpCiogKDIwMTAvMDEvMTgpIC0gQnVnZml4OiBpZ25vcmVkIGNvbmZpZ3VyZWQgZGF0YSBiYWNrZW5kIHdoZW4gYWRkaW5nIG5ldyBDVS4gCgojIHIxLjQuMSAoMjAwOS8xMi8yMykKKiAoMjAwOS8xMi8yMykgLSBCdWdmaXg6IGZpeGVkIG1pc3NpbmcgY2hlY2sgZm9yIEVuY29kZU9iamVjdC4gCgojIHIxLjQuMCAoMjAwOS8wOS8yOCkKKiAoMjAwOS8xNC8xMCkgLSBDUjogRmlyc3QgcmVsZWFzZSBmb3IgZnJhbWV3b3JrIDIuNC54LiAKCiMgcjEuMy4yICgyMDA5LzA5LzI4KQoqICgyMDA5LzA5LzI4KSAtIENSOiBGaXJzdCByZWxhc2Ugb2YgZ2VuZXJhbCBjdXN0b21lciB1c2VyIGltcG9ydC0vZXhwb3J0IGJhY2tlbmQuCgo=</File>
<File Location="scripts/test/ImportExportObjectCustomerUser.t" Permission="644" Encode="Base64">IyAtLQojIEltcG9ydEV4cG9ydE9iamVjdEN1c3RvbWVyVXNlci50IC0gYWxsIGltcG9ydCBleHBvcnQgdGVzdHMgZm9yIHRoZSBDdXN0b21lclVzZXIgb2JqZWN0IGJhY2tlbmQKIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNSBjLmEucC5lLiBJVCBHbWJILCBodHRwOi8vd3d3LmNhcGUtaXQuZGUvCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZShkYXNoKWl0KGRvdClkZQojICogRnJhbmsoZG90KU9iZXJlbmRlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogSW1wb3J0RXhwb3J0T2JqZWN0Q3VzdG9tZXJVc2VyLnQsdiAxLjMgMjAxNS8xMS8xMyAxNToyMDowMyB0bGFuZ2UgRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgoKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwogICAgCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBhZGQgc29tZSB0ZXN0IHRlbXBsYXRlcyBmb3IgbGF0ZXIgY2hlY2tzCm15IEBUZW1wbGF0ZUlEczsKZm9yICggMSAuLiAzMCApIHsKCiAgICAjIGFkZCBhIHRlc3QgdGVtcGxhdGUgZm9yIGxhdGVyIGNoZWNrcwogICAgbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgICAgICBPYmplY3QgID0+ICdDdXN0b21lclVzZXInLAogICAgICAgIEZvcm1hdCAgPT4gJ1VuaXRUZXN0JyAuIGludCByYW5kIDFfMDAwXzAwMCwKICAgICAgICBOYW1lICAgID0+ICdVbml0VGVzdCcgLiBpbnQgcmFuZCAxXzAwMF8wMDAsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcHVzaCBAVGVtcGxhdGVJRHMsICRUZW1wbGF0ZUlEOwp9CgpteSAkVGVzdENvdW50ID0gMTsKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgT2JqZWN0TGlzdCB0ZXN0IDEgKGNoZWNrIENTViBpdGVtKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGdldCBvYmplY3QgbGlzdApteSAkT2JqZWN0TGlzdDEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RMaXN0KCk7CgojIGNoZWNrIG9iamVjdCBsaXN0CiRTZWxmLT5UcnVlKAogICAgJE9iamVjdExpc3QxICYmIHJlZiAkT2JqZWN0TGlzdDEgZXEgJ0hBU0gnICYmICRPYmplY3RMaXN0MS0+e0N1c3RvbWVyVXNlcn0sCiAgICAiVGVzdCAkVGVzdENvdW50OiBPYmplY3RMaXN0KCkgLSBDdXN0b21lclVzZXIgZXhpc3RzIiwKKTsKCiRUZXN0Q291bnQrKzsKCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojCiMKIyBUTyBETyAKIwojCgoK</File>
</Filelist>
</otobo_package>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment