• Would allowing preseed to be a tarball a good idea?

    From Glen Huang@21:1/5 to All on Wed Feb 16 10:20:01 2022
    Hi,

    Currently, the preseed file needs to be a text file. I find it to be a bit limiting, especially if you want to do some non-trivial scripting in either early_command or late_command (let's call them runners). There are basically four options to address it
    AFAIK:

    1. Strictly use one-liners in runners.
    2. Bundle the scripts in the install media, to be called by the runners.
    3. Make runners download the scripts and then run them.
    4. Embed the scripts in preseed and then make runners redownload it, parse the scripts out and run them.

    All of them are flawed:

    1. If done manually, this is really awkward, and since in-target uses chroot under the hood, you can’t use redirects directly, not without sh -c, also awkward.
    2. The official install media can no longer be used directly, and for a lot environments using a custom install media is not an option.
    3. This means you need to set up a web server that the installer can access, which is quite painful, and the installer might not have access to the Internet.
    4. This is the approach I currently take. However, it’s also quite awkward, since each line of the embedded content has to be commented out, and you also have to invent ad hoc file delimiters, and it doesn’t work for binary files (unless (en|de)coded
    by base64 of course).

    I think there are many cases that require non-trial scripting. A strong one could be doing provisioning in late_command.

    I wonder if allowing preseed to be a tarball would be a good idea? It could define a content structure like this:

    early_commands/ # run executables in it at the point of early_command late_commands/ # run executables in it at the point of late_command late_in_target_commands/ # run executables in it at the point of late_command, chrooted to /target
    in_target_files/ # files in it are copied to /target after installation finishes, maybe before late_command

    Thoughts?

    Regards,
    Glen

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Glen Huang@21:1/5 to All on Wed Feb 16 10:40:01 2022
    Forgot a few things.

    1. #4 also means the preseed file needs be downloaded twice, since the one downloaded by the installer is immediately removed once the preseed is loaded into debconf db, before early_command.
    2. Files parsed out in #4 needs to be stored somewhere. No matter where you place them, there is no guarantee that (future versions of) d-i won’t touch them.
    3. The tarball should contain a /preseed file to provide the preseed.

    Regards,
    Glen

    On Feb 16, 2022, at 5:19 PM, Glen Huang <heyhgl@gmail.com> wrote:

    Hi,

    Currently, the preseed file needs to be a text file. I find it to be a bit limiting, especially if you want to do some non-trivial scripting in either early_command or late_command (let's call them runners). There are basically four options to address
    it AFAIK:

    1. Strictly use one-liners in runners.
    2. Bundle the scripts in the install media, to be called by the runners.
    3. Make runners download the scripts and then run them.
    4. Embed the scripts in preseed and then make runners redownload it, parse the scripts out and run them.

    All of them are flawed:

    1. If done manually, this is really awkward, and since in-target uses chroot under the hood, you can’t use redirects directly, not without sh -c, also awkward.
    2. The official install media can no longer be used directly, and for a lot environments using a custom install media is not an option.
    3. This means you need to set up a web server that the installer can access, which is quite painful, and the installer might not have access to the Internet.
    4. This is the approach I currently take. However, it’s also quite awkward, since each line of the embedded content has to be commented out, and you also have to invent ad hoc file delimiters, and it doesn’t work for binary files (unless (en|de)
    coded by base64 of course).

    I think there are many cases that require non-trial scripting. A strong one could be doing provisioning in late_command.

    I wonder if allowing preseed to be a tarball would be a good idea? It could define a content structure like this:

    early_commands/ # run executables in it at the point of early_command late_commands/ # run executables in it at the point of late_command late_in_target_commands/ # run executables in it at the point of late_command, chrooted to /target
    in_target_files/ # files in it are copied to /target after installation finishes, maybe before late_command

    Thoughts?

    Regards,
    Glen

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Philip Hands@21:1/5 to Glen Huang on Wed Feb 16 10:50:01 2022
    Glen Huang <heyhgl@gmail.com> writes:

    Hi,

    Currently, the preseed file needs to be a text file. I find it to be a
    bit limiting, especially if you want to do some non-trivial scripting
    in either early_command or late_command (let's call them runners).
    There are basically four options to address it AFAIK:

    You can do rather complicated stuff actually, as seen in my (somewhat
    rusty) example here:

    https://hands.com/d-i/

    which has loads of scripts and conditional actions going on, and is
    intended to work either from a remote server, or from a directory that
    d-i can see, which ought to cover at least a couple of your cases.

    I've not tested that against recent releases, but it should give you
    some ideas.

    Cheers, Phil.

    P.S. if you were to decide to use that framework for your work I'd
    suggest talking to me about it first so you don't base your work on
    parts of it I'm just about to remove, as I'm just doing a bit of a
    redesign and update to get it going again with bullseye.
    --
    |)| Philip Hands [+44 (0)20 8530 9560] HANDS.COM Ltd.
    |-| http://www.hands.com/ http://ftp.uk.debian.org/
    |(| Hugo-Klemm-Strasse 34, 21075 Hamburg, GERMANY

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEE3/FBWs4yJ/zyBwfW0EujoAEl1cAFAmIMyIUACgkQ0EujoAEl 1cCBAw/9ECHeKsDpCQ8umkX8loEtf4HZNYRYDQnR2RWpr8mn7jn6NJVPIqDH44oJ qPU9o4MmRKrBx3d9UehPYZOZiVShGsTAv1va6KArS6K35AcURhdjQoggbJdA30gP qOzt6yvaqSPCa7jECdpwveTCpiVpLJkTdL+ZoREFKnNxYNsVB0FQwiDRWMMkcLFg 4k72SdSnnCcC7gTOyfps66zUPmqctOY/anV5rQy+xpeEmiEEppwNhTB/PkxvdBgt 7ZjJIJetBtx70sF0BBb6q0q99avFT7sbM4lussT5LVTpdSmLdLOIknHKL2rkiWxl o3mSEjskMerr8dqn3/zoZLr6qvwbnMSFJAHo7eMjmBLGocjrGNtj2LdPMFNA4vDA i8zmu8HXTQM1BT47dZBgVgKR0c/Vlz50QwWUbq8eda4G/9YT2AaruVdRjneTQxo2 ZP98BnI8l1CAg1HxGYUn9D4PKDGA0YHe0+ntKtohvBnDLGWG/OLkOThyuz3I6prL ykbKL9s1IfSFjaVlnTOAz/QZntijVUI8H4yVFSgDOpxEctu29LqL/fe9XdN37QZU h4MwGMFzB4a/GBE2zgdXrkShAH5nWA5ffPaMssIOpBL5wl4XHYXNsT0M74jV9xGq jqi6Uxg0dxfQ/o4
  • From Geert Stappers@21:1/5 to Glen Huang on Wed Feb 16 11:00:02 2022
    On Wed, Feb 16, 2022 at 05:32:23PM +0800, Glen Huang wrote:
    On Feb 16, 2022, at 5:19 PM, Glen Huang <heyhgl@gmail.com> wrote:

    Hi,

    Currently, the preseed file needs to be a text file. I find it to
    be a bit limiting, especially if you want to do some non-trivial
    scripting in either early_command or late_command (let's call them runners). There are basically four options to address it AFAIK:

    1. Strictly use one-liners in runners.
    2. Bundle the scripts in the install media, to be called by the
    runners.
    3. Make runners download the scripts and then run them.
    4. Embed the scripts in preseed and then make runners redownload it,
    parse the scripts out and run them.

    All of them are flawed:

    1. If done manually, this is really awkward, and since in-target
    uses chroot under the hood, you can’t use redirects directly,
    not without sh -c, also awkward.
    2. The official install media can no longer be used directly, and
    for a lot environments using a custom install media is not an option.
    3. This means you need to set up a web server that the installer
    can access, which is quite painful, and the installer might not have
    access to the Internet.
    4. This is the approach I currently take. However, it’s also
    quite awkward, since each line of the embedded content has to be
    commented out, and you also have to invent ad hoc file delimiters,
    and it doesn’t work for binary files (unless (en|de)coded by base64
    of course).

    I think there are many cases that require non-trial scripting. A
    strong one could be doing provisioning in late_command.

    I wonder if allowing preseed to be a tarball would be a good idea? It
    could define a content structure like this:

    early_commands/ # run executables in it at the point of early_command late_commands/ # run executables in it at the point of late_command late_in_target_commands/ # run executables in it at the point of late_command, chrooted to /target
    in_target_files/ # files in it are copied to /target after installation finishes, maybe before late_command

    Forgot a few things.

    1. #4 also means the preseed file needs be downloaded twice, since
    the one downloaded by the installer is immediately removed once the
    preseed is loaded into debconf db, before early_command.
    2. Files parsed out in #4 needs to be stored somewhere. No matter
    where you place them, there is no guarantee that (future versions of)
    d-i won’t touch them.
    3. The tarball should contain a /preseed file to provide the preseed.

    Thoughts?

    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script


    Groeten
    Geert Stappers
    --
    Silence is hard to parse

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Glen Huang@21:1/5 to All on Thu Feb 17 05:40:01 2022
    @Philip
    On Feb 16, 2022, at 5:48 PM, Philip Hands <phil@hands.com> wrote:

    Glen Huang <heyhgl@gmail.com> writes:

    Hi,

    Currently, the preseed file needs to be a text file. I find it to be a
    bit limiting, especially if you want to do some non-trivial scripting
    in either early_command or late_command (let's call them runners).
    There are basically four options to address it AFAIK:

    You can do rather complicated stuff actually, as seen in my (somewhat
    rusty) example here:

    https://hands.com/d-i/

    I learned a few tricks, thanks for sharing it.

    I didn’t know about preseed/run, somehow missed it when reading the doc for the first time. It does #3 in a pretty elegant way, and with pressef_fetch, they basically allow me to treat the web server as a tarball.

    @Geert
    On Feb 16, 2022, at 5:50 PM, Geert Stappers <stappers@stappers.nl> wrote:

    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script

    If I’m not wrong, this requires repackaging the installer media?

    ---

    I do still think a direct tarball support would be icing on the cake. You can upload it to some public service and maybe shorten the url and then directly use it, obviating the needs for setting up a web server. But I agree the current utilities provided
    by the installer already make things a breeze, so I wouldn’t complain. :)

    Regards,
    Glen

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Geert Stappers@21:1/5 to Glen Huang on Thu Feb 17 21:50:01 2022
    On Thu, Feb 17, 2022 at 12:37:04PM +0800, Glen Huang wrote:

    @Philip
    On Feb 16, 2022, at 5:48 PM, Philip Hands <phil@hands.com> wrote:

    Glen Huang <heyhgl@gmail.com> writes:

    Hi,

    Currently, the preseed file needs to be a text file. I find it to be a
    bit limiting, especially if you want to do some non-trivial scripting
    in either early_command or late_command (let's call them runners).
    There are basically four options to address it AFAIK:

    You can do rather complicated stuff actually, as seen in my (somewhat rusty) example here:

    https://hands.com/d-i/

    I learned a few tricks, thanks for sharing it.

    I didn’t know about preseed/run, somehow missed it when reading
    the doc for the first time. It does #3 in a pretty elegant way, and
    with pressef_fetch, they basically allow me to treat the web server
    as a tarball.

    @Geert
    On Feb 16, 2022, at 5:50 PM, Geert Stappers <stappers@stappers.nl> wrote:

    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script

    If I’m not wrong, this requires repackaging the installer media?


    Nope, append is append, not repackaging.


    I do still think a direct tarball support would be icing on the
    cake. You can upload it to some public service and maybe shorten the
    url and then directly use it, obviating the needs for setting up a web server.

    Yes, having a webserver with your extras will you gain you the benefits
    of getting the desired extras.

    So go for it :-)


    But I agree the current utilities provided by the installer
    already make things a breeze, so I wouldn’t complain. :)

    (-: I ignore complains, but do listen to improvement proposals :-)



    Regards,
    Glen

    Groeten
    Geert Stappers
    --
    Silence is hard to parse

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Glen Huang@21:1/5 to Geert Stappers on Fri Feb 18 09:00:01 2022
    On Feb 18, 2022, at 4:48 AM, Geert Stappers <stappers@stappers.nl> wrote:

    On Feb 16, 2022, at 5:50 PM, Geert Stappers <stappers@stappers.nl> wrote: >>>
    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script

    If I’m not wrong, this requires repackaging the installer media?

    Nope, append is append, not repackaging.

    The ideas sounds very interesting, but due to my limited knowledge with regard to initrd, I have no idea what it means to “append” to it. Googling “debian initrd append” or "initrd append” or "initrd appendix” revealed nothing useful AFAICS.
    I wonder if you could point me to some documents/manuals where I’d have a better chance understanding it?

    My current mental model is like this: initrd bundles a temporary fs to facilitate the startup process. You can change the files it contains using a tool like cpio. So shouldn't appending files to it mean changing the initrd file? If initrd file needs to
    be changed, shouldn’t the installer media also be changed to incorporate the changed initrd file?

    Regards,
    Glen
    <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">On Feb 18, 2022, at 4:48 AM, Geert Stappers &lt;<a href="mailto:
    stappers@stappers.nl" class="">stappers@stappers.nl</a>&gt; wrote:<br class=""><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px;
    font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -
    webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class="">On Feb 16, 2022, at 5:50 PM, Geert Stappers &lt;<a href="mailto:stappers@stappers.nl" class="">stappers@stappers.nl</a>&gt; wrote:<br class=""><br class="">
    The initrd of d-i can indeed be extended / appended.<br class="">And in the "appendix" goes the desired extras. Then<br class=""><br class="">d-i &nbsp;preseed/early_commands &nbsp;/myextras/early_script<br class=""></blockquote><br class="">If I’m not
    wrong, this requires repackaging the installer media?<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-
    align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style:
    normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display:
    inline !important;" class="">Nope, append is append, &nbsp;not repackaging.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal;
    text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></div></blockquote></div><br class=""><div class="">The ideas sounds very
    interesting, but due to my limited knowledge with regard to initrd, I have no idea what it means to “append” to it. Googling “debian initrd append” or "initrd append” or "initrd appendix” revealed nothing useful AFAICS. I wonder if you could
    point me to some documents/manuals where I’d have a better chance understanding it?</div><div class=""><br class=""></div><div class="">My current mental model is like this: initrd bundles a temporary fs to facilitate the startup process. You can
    change the files it contains using a tool like cpio. So shouldn't appending files to it mean changing the initrd file? If initrd file needs to be changed, shouldn’t the installer media also be changed to incorporate the changed initrd file?</div><div
    class=""><br class=""></div><div class="">Regards,</div><div class="">Glen</div></body></html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Geert Stappers@21:1/5 to Glen Huang on Fri Feb 18 15:40:01 2022
    On Fri, Feb 18, 2022 at 03:55:30PM +0800, Glen Huang wrote:
    On Feb 18, 2022, at 4:48 AM, Geert Stappers wrote:
    On Feb 16, 2022, at 5:50 PM, Geert Stappers wrote:

    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script

    If I’m not wrong, this requires repackaging the installer media?

    Nope, append is append, not repackaging.

    The ideas sounds very interesting, but due to my limited knowledge
    with regard to initrd, I have no idea what it means to “append”
    to it. Googling “debian initrd append” or "initrd append” or
    "initrd appendix” revealed nothing useful AFAICS. I wonder if you
    could point me to some documents/manuals where I’d have a better
    chance understanding it?

    https://wiki.debian.org/DebianInstaller/NetbootFirmware#The_Solution:_Add_Firmware_to_Initramfs


    My current mental model is like this: initrd bundles a temporary fs to facilitate the startup process. You can change the files it contains
    using a tool like cpio. So shouldn't appending files to it mean changing
    the initrd file? If initrd file needs to be changed, shouldn’t the installer media also be changed to incorporate the changed initrd file?

    Regards,
    Glen


    Groeten
    Geert Stappers
    --
    Silence is hard to parse

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Geert Stappers@21:1/5 to Geert Stappers on Fri Feb 18 16:10:01 2022
    On Fri, Feb 18, 2022 at 03:32:37PM +0100, Geert Stappers wrote:
    On Fri, Feb 18, 2022 at 03:55:30PM +0800, Glen Huang wrote:
    On Feb 18, 2022, at 4:48 AM, Geert Stappers wrote:
    On Feb 16, 2022, at 5:50 PM, Geert Stappers wrote:

    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script

    If I’m not wrong, this requires repackaging the installer media?

    Nope, append is append, not repackaging.

    The ideas sounds very interesting, but due to my limited knowledge
    with regard to initrd, I have no idea what it means to “append”
    to it. Googling “debian initrd append” or "initrd append” or
    "initrd appendix” revealed nothing useful AFAICS. I wonder if you
    could point me to some documents/manuals where I’d have a better
    chance understanding it?

    https://wiki.debian.org/DebianInstaller/NetbootFirmware#The_Solution:_Add_Firmware_to_Initramfs


    My current mental model is like this: initrd bundles a temporary fs to facilitate the startup process. You can change the files it contains
    using a tool like cpio. So shouldn't appending files to it mean changing the initrd file? If initrd file needs to be changed, shouldn’t the installer media also be changed to incorporate the changed initrd file?


    IIRC I have seen boot loaders that accept multiple 'initrd=path/to/file'
    and assemble those initrd pieces to one single initrd for the kernel.



    Groeten
    Geert Stappers
    --
    Silence is hard to parse

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Glen Huang@21:1/5 to stappers@stappers.nl on Sun Feb 20 11:40:01 2022
    On Fri, Feb 18, 2022 at 10:32 PM Geert Stappers <stappers@stappers.nl> wrote:

    On Fri, Feb 18, 2022 at 03:55:30PM +0800, Glen Huang wrote:
    On Feb 18, 2022, at 4:48 AM, Geert Stappers wrote:
    On Feb 16, 2022, at 5:50 PM, Geert Stappers wrote:

    The initrd of d-i can indeed be extended / appended.
    And in the "appendix" goes the desired extras. Then

    d-i preseed/early_commands /myextras/early_script

    If I’m not wrong, this requires repackaging the installer media?

    Nope, append is append, not repackaging.

    The ideas sounds very interesting, but due to my limited knowledge
    with regard to initrd, I have no idea what it means to “append”
    to it. Googling “debian initrd append” or "initrd append” or
    "initrd appendix” revealed nothing useful AFAICS. I wonder if you
    could point me to some documents/manuals where I’d have a better
    chance understanding it?

    https://wiki.debian.org/DebianInstaller/NetbootFirmware#The_Solution:_Add_Firmware_to_Initramfs

    Thanks, now I get what appending means. How do I make the installer media, say netinst ISO, to load the new initrd file (which isn’t covered in the wiki if I’m not wrong)? I thought it required rebuilding the ISO?

    Regards,
    Glen

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From VDRU VDRU@21:1/5 to All on Sun Feb 20 16:10:01 2022
    Adding a tar dependency to the boot process doesn't sound great,
    especially when it's unnecessary.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Glen Huang@21:1/5 to All on Mon Feb 21 05:20:01 2022
    The installer already supports tar (via busybox) if I'm not mistaken.

    Regards,
    Glen

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Philip Hands@21:1/5 to Glen Huang on Tue Feb 22 10:00:02 2022
    Glen Huang <heyhgl@gmail.com> writes:

    The installer already supports tar (via busybox) if I'm not mistaken.

    You are not mistaken, and even if that were not the case such a
    dependency would have no impact on the boot process.

    Cheers, Phil.
    --
    |)| Philip Hands [+44 (0)20 8530 9560] HANDS.COM Ltd.
    |-| http://www.hands.com/ http://ftp.uk.debian.org/
    |(| Hugo-Klemm-Strasse 34, 21075 Hamburg, GERMANY

    --=-=-Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAEBCgAdFiEE3/FBWs4yJ/zyBwfW0EujoAEl1cAFAmIUpHUACgkQ0EujoAEl 1cAkZxAAsb6xNg9OnIr27COH6jypGBgDmIi8mtINtlNMOb5ag/YASGAvqFU78Wpu gX0PjDkVjTWQI/rHUd7Qf2PcD9jfyKrYlwi74CKi1CNVIWQnrJoIvMgt8dezugNZ Yu1TKmIQ6DpsOzXuUbozWZzLtAyZtwpa0YvSwWtXgEBRoFSv8W0KMnu4XBiL3045 1hbSCZkPP35nGjuYrvrnuGPg7dNem8MbHut9AZTjGWAGBVX4AA5YtsGIMtuCCEMD qXufI4oMS33BViPap9xsXOe8kxtZolNsygldlx5ooeWbF9/hhx6JwzLGoEpj1uy6 lx3NHgGJO4k13Db0DMe2tF+yNs/pvbnNL6oGoNnuwSf4Qa2S+QwNrMfNpzojE0DS kN59Psmem0c+KgiF2/5Ey5pq6NL9R+YcJaPDZYBkb+b9+ah9QVuRk6Meu53iAcuY 8+lM9ktqSARq+DIGTIfy9JAwQSc536tPofQVotfxpUXM/OKGUZcRsoXdSTpnTDgi 1sL5Yydux37iQMS4MzsH1AhPNLN02LlNvEpfMO9bYhc3q4aMm1lFsPRheri2u2xa md8AaVcXhDyNgFowEqu9hrft1/t6Dgb/enLT5MPmRuUHw1qtG0pVGRl3leteBNEc jb9XLEkLulVaEsO