Recherche avancée

Médias (0)

Mot : - Tags -/protocoles

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (64)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

Sur d’autres sites (6345)

  • What is Web Log Analytics and Why You Should Use It

    26 juin 2024, par Erin

    Can’t use JavaScript tracking on your website ? Need a more secure and privacy-friendly way to understand your website visitors ? Web log analytics is your answer. This method pulls data directly from your server logs, offering a secure and privacy-respecting alternative.  

    In this blog, we cover what web log analytics is, how it compares to JavaScript tracking, who it is best suited for, and why it might be the right choice for you. 

    What are server logs ? 

    Before diving in, let’s start with the basics : What are server logs ? Think of your web server as a diary that notes every visit to your website. Each time someone visits, the server records details like : 

    • User agent : Information about the visitor’s browser and operating system. 
    • Timestamp : The exact time the request was made. 
    • Requested URL : The specific page or resource the visitor requested. 

    These “diary entries” are called server logs, and they provide a detailed record of all interactions with your website. 

    Server log example 

    Here’s what a server log looks like : 

    192.XXX.X.X – – [24/Jun/2024:14:32:01 +0000] “GET /index.html HTTP/1.1” 200 1024 “https://www.example.com/referrer.html” “Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” 

    192.XXX.X.X – – [24/Jun/2024:14:32:02 +0000] “GET /style.css HTTP/1.1” 200 3456 “https://www.example.com/index.html” “Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” 

    192.XXX.X.X – – [24/Jun/2024:14:32:03 +0000] “GET /script.js HTTP/1.1” 200 7890 “https://www.example.com/index.html” “Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” 

    192.XXX.X.X – – [24/Jun/2024:14:32:04 +0000] “GET /images/logo.png HTTP/1.1” 200 1234 “https://www.example.com/index.html” “Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” 

    Breakdown of the log entry 

    Each line in the server log represents a single request made by a visitor to your website. Here’s a detailed breakdown of what each part means : 

    • IP Address : 192.XXX.X.X 
      • This is the IP address of the visitor’s device. 
    • User Identifier : – – 
      • These fields are typically used for user identification and authentication, which are not applicable here, hence the hyphens. 
    • Timestamp : [24/Jun/2024:14:32:01 +0000] 
        • The date and time of the request, including the timezone. 
    • Request Line : “GET /index.html HTTP/1.1” 
      • The request method (GET), the requested resource (/index.html), and the HTTP version (HTTP/1.1). 
    • Response Code : 200 
      • The HTTP status code indicates the result of the request (200 means OK). 
    • Response Size : 1024 
      • The size of the response in bytes. 
    • Referrer :https://www.example.com/referrer.html 
      • The URL of the referring page that led the visitor to the current page. 
    • User Agent : “Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36” 
      • Information about the visitor’s browser and operating system. 

    In the example above, there are multiple log entries for different resources (HTML page, CSS file, JavaScript file, and an image). This shows that when a visitor loads a webpage, multiple requests are made to load all the necessary resources. 

    What is web log analytics ? 

    Web log analytics is one of many methods for tracking visitors to your site.  

    Web log analytics is the process of analysing server log files to track and understand website visitors. Unlike traditional methods that use JavaScript tracking codes embedded in web pages, web log analytics pulls data directly from these server logs. 

    How it works : 

    1. Visitor request : A visitor’s browser requests your website. 
    2. Server logging : The server logs the request details. 
    3. Analysis : These logs are analysed to extract useful information about your visitors and their activities. 

    Web log analytics vs. JavaScript tracking 

    JavaScript tracking 

    JavaScript tracking is the most common method used to track website visitors. It involves embedding a JavaScript code snippet into your web pages. This code collects data on visitor interactions and sends it to a web analytics platform. 

    Web log analytics vs JavaScript tracking

    Differences and benefits :

    Privacy : 

    • Web log analytics : Since it doesn’t require embedding tracking codes, it is considered less intrusive and helps maintain higher privacy standards. 
    • JavaScript tracking : Embeds tracking codes directly on your website, which can be more invasive and raise privacy concerns. 

    Ease of setup : 

    • Web log analytics : No need to modify your website’s code. All you need is access to your server logs. 
    • JavaScript tracking : Requires adding tracking code on your web pages. This is generally an easier setup process.  

    Data collection : 

    • Web log analytics : Contain requests of users with adblockers (ghostery, adblock, adblock plus, privacy badger, etc.) sometimes making it more accurate. However, it may miss certain interactive elements like screen resolution or user events. It may also over-report data.  
    • JavaScript tracking : Can collect a wide range of data, including Custom dimensions, Ecommerce tracking, Heatmaps, Session recordings, Media and Form analytics, etc. 

    Why choose web log analytics ? 

    Enhanced privacy 

    Avoiding embedded tracking codes means there’s no JavaScript running on your visitors’ browsers. This significantly reduces the risk of data leakage and enhances overall privacy. 

    Comprehensive data collection 

    It isn’t affected by ad blockers or browser tracking protections, ensuring you capture more complete and accurate data about your visitors. 

    Historical data analysis 

    You can import and analyse historical log files, giving you insights into long-term visitor behaviour and trends. 

    Simple setup 

    Since it relies on server logs, there’s no need to alter your website’s code. This makes setup straightforward and minimises potential technical issues. 

    Who should use web log analytics ? 

    Web log analytics is particularly suited for businesses that prioritise data privacy and security.

    Organisations that handle sensitive data, such as banks, healthcare providers, and government agencies, can benefit from the enhanced privacy.  

    By avoiding JavaScript tracking, these entities minimise data exposure and comply with strict privacy regulations like Sarbanes Oxley and PCI. 

    Why use Matomo for web log analytics ? 

    Matomo stands out as a top choice for web log analytics because it prioritises privacy and data ownership

    Screenshot example of the Matomo dashboard

    Here’s why : 

    • Complete data control : You own all your data, so you don’t have to worry about third-party access. 
    • IP anonymisation : Matomo anonymises IP addresses to further protect user privacy. 
    • Bot filtering : Automatically excludes bots from your reports, ensuring you get accurate data. 
    • Simple migration : You can easily switch from other tools like AWStats by importing your historical logs into Matomo. 
    • Server log recognition : Recognises most server log formats (Apache, Nginx, IIS, etc.). 

    Start using web log analytics 

    Web log analytics offers a secure, privacy-focused alternative to traditional JavaScript tracking methods. By analysing server logs, you get valuable insights into your website traffic while maintaining high privacy standards.  

    If you’re serious about privacy and want reliable data, give Matomo’s web log analytics a try.  

    Start your 21-day free trial now. No credit card required. 

  • FFmpeg av_dump_format showing incorrect output, but ffprobe displays correct metadata

    29 janvier, par グルグル

    I use ffmpeg 7.1 source build on windows and compilation configuration as follow :

    


    configuration:
  --toolchain=msvc
  --arch=x86_64
  --enable-x86asm
  --enable-asm
  --enable-shared
  --enable-w32threads
  --prefix=/D/build


    


    When I use av_dump_format to print metadata of test.mp3, it display the incorrect information.

    


    extern "C"&#xA;{&#xA;#include <libavformat></libavformat>avformat.h>&#xA;}&#xA;&#xA;int main()&#xA;{ &#xA;    av_log_set_level(AV_LOG_DEBUG);&#xA;&#xA;    auto url = "D:/music/test.mp3";&#xA;&#xA;    AVFormatContext* fmt;&#xA;    auto ret = avformat_open_input(&amp;fmt, url, nullptr, nullptr);&#xA;    if (ret &lt; 0)&#xA;    {&#xA;        av_log(nullptr, AV_LOG_ERROR, "Cannot open %s format : %s", url, av_err2str(ret));&#xA;        exit(EXIT_FAILURE);&#xA;    }&#xA;&#xA;    av_dump_format(fmt, 0, url, 0);&#xA;}&#xA;

    &#xA;

    output

    &#xA;

    [AVFormatContext @ 000001768E65BC40] Opening &#x27;D:/music/test.mp3&#x27; for reading&#xA;[file @ 000001768E65C180] Setting default whitelist &#x27;file,crypto,data&#x27;&#xA;[mp3 @ 000001768E65BC40] Format mp3 probed with size=4096 and score=51&#xA;id3v2 ver:4 flags:00 len:35&#xA;[mp3 @ 000001768E65BC40] pad 576 576&#xA;[mp3 @ 000001768E65BC40] Skipping 0 bytes of junk at 462.&#xA;Input #0, mp3, from &#x27;D:/music/test.mp3&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf58.76.100&#xA;  Duration: N/A, bitrate: N/A&#xA;  Stream #0:0, 0, 1/14112000: Audio: mp3, 0 channels&#xA;      Metadata:&#xA;        encoder         : Lavc58.13&#xA;

    &#xA;

    You can see the Stream info is useless.

    &#xA;

    But I use ffprobe which is built with same configuration to print metadata of test.mp3.

    &#xA;

    It's display normal.

    &#xA;

    ffprobe version 7.0.1 Copyright (c) 2007-2024 the FFmpeg developers&#xA;  built with Microsoft (R) C/C&#x2B;&#x2B; Optimizing Compiler Version 19.41.34123 for x64&#xA;  configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --prefix=/D/build&#xA;  WARNING: library configuration mismatch&#xA;  avutil      configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  avcodec     configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  avformat    configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  avdevice    configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  avfilter    configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  swscale     configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  swresample  configuration: --toolchain=msvc --arch=x86_64 --enable-x86asm --enable-asm --enable-shared --enable-w32threads --disable-programs --disable-doc --disable-static --prefix=/D/build&#xA;  libavutil      59.  8.100 / 59. 39.100&#xA;  libavcodec     61.  3.100 / 61. 19.100&#xA;  libavformat    61.  1.100 / 61.  7.100&#xA;  libavdevice    61.  1.100 / 61.  3.100&#xA;  libavfilter    10.  1.100 / 10.  4.100&#xA;  libswscale      8.  1.100 /  8.  3.100&#xA;  libswresample   5.  1.100 /  5.  3.100&#xA;Input #0, mp3, from &#x27;D:\music\test.mp3&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf58.76.100&#xA;  Duration: 00:05:00.12, start: 0.025057, bitrate: 128 kb/s&#xA;  Stream #0:0: Audio: mp3 (mp3float), 44100 Hz, stereo, fltp, 128 kb/s&#xA;      Metadata:&#xA;        encoder         : Lavc58.13&#xA;

    &#xA;

    Why is av_dump_format not correctly showing stream information ? How can I fix it ?

    &#xA;

  • FFmpeg and reserved color primaries [closed]

    21 janvier, par Yoz

    I am trying to get thumbnails from a hevc video downloaded from https://github.com/stashapp/stash/issues/4124#issuecomment-1720057183 and it works with most recent ffmpeg 7.1 (installed via homebrew on mac) printing :

    &#xA;

    ffmpeg -i input.mp4 -frames:v 1 out.jpg&#xA;

    &#xA;

    ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers&#xA;  built with Apple clang version 16.0.0 (clang-1600.0.26.4)&#xA;  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1_4 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags=&#x27;-Wl,-ld_classic&#x27; --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon&#xA;  libavutil      59. 39.100 / 59. 39.100&#xA;  libavcodec     61. 19.100 / 61. 19.100&#xA;  libavformat    61.  7.100 / 61.  7.100&#xA;  libavdevice    61.  3.100 / 61.  3.100&#xA;  libavfilter    10.  4.100 / 10.  4.100&#xA;  libswscale      8.  3.100 /  8.  3.100&#xA;  libswresample   5.  3.100 /  5.  3.100&#xA;  libpostproc    58.  3.100 / 58.  3.100&#xA;[hevc @ 0x134f07530] VPS 0 does not exist&#xA;[hevc @ 0x134f07530] SPS 0 does not exist.&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;input.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : mp42&#xA;    minor_version   : 512&#xA;    compatible_brands: mp42iso2mp41&#xA;    creation_time   : 2023-09-14T19:46:05.000000Z&#xA;    encoder         : HandBrake 1.5.1 2022011000&#xA;  Duration: 00:01:26.05, start: 0.000000, bitrate: 231 kb/s&#xA;  Stream #0:0[0x1](und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, bt709/reserved/bt709), 648x648 [SAR 1:1 DAR 1:1], 188 kb/s, 30 fps, 30 tbr, 90k tbn (default)&#xA;      Metadata:&#xA;        creation_time   : 2023-09-14T19:46:05.000000Z&#xA;        handler_name    : VideoHandler&#xA;        vendor_id       : [0][0][0][0]&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 36 kb/s (default)&#xA;      Metadata:&#xA;        creation_time   : 2023-09-14T19:46:05.000000Z&#xA;        handler_name    : Mono&#xA;        vendor_id       : [0][0][0][0]&#xA;[hevc @ 0x1358065c0] VPS 0 does not exist&#xA;[hevc @ 0x1358065c0] SPS 0 does not exist.&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native))&#xA;Press [q] to stop, [?] for help&#xA;Output #0, image2, to &#x27;out.jpg&#x27;:&#xA;  Metadata:&#xA;    major_brand     : mp42&#xA;    minor_version   : 512&#xA;    compatible_brands: mp42iso2mp41&#xA;    encoder         : Lavf61.7.100&#xA;  Stream #0:0(und): Video: mjpeg, yuv420p(pc, bt709/reserved/bt709, progressive), 648x648 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 30 fps, 30 tbn (default)&#xA;      Metadata:&#xA;        creation_time   : 2023-09-14T19:46:05.000000Z&#xA;        handler_name    : VideoHandler&#xA;        vendor_id       : [0][0][0][0]&#xA;        encoder         : Lavc61.19.100 mjpeg&#xA;      Side data:&#xA;        cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A&#xA;[image2 @ 0x134f16080] The specified filename &#x27;out.jpg&#x27; does not contain an image sequence pattern or a pattern is invalid.&#xA;[image2 @ 0x134f16080] Use a pattern such as %03d for an image sequence or use the -update option (with -frames:v 1 if needed) to write a single image.&#xA;[out#0/image2 @ 0x134f10480] video:5KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown&#xA;frame=    1 fps=0.0 q=5.1 Lsize=N/A time=00:00:00.03 bitrate=N/A speed=4.07x   &#xA;

    &#xA;

    however, when I use custom compiled ffmpeg.wasm it fails with :

    &#xA;

    ffmpeg version N-118050-ga518b5540d Copyright (c) 2000-2024 the FFmpeg developers&#xA;  built with emcc (Emscripten gcc/clang-like replacement &#x2B; linker emulating GNU ld) 3.1.73 (ac676d5e437525d15df5fd46bc2c208ec6d376a3)&#xA;  configuration: --target-os=none --arch=x86_32 --enable-cross-compile --enable-version3 --enable-zlib --enable-libaom --disable-encoder=libaom_av1 --enable-libopenh264 --enable-libkvazaar --enable-libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libopus --enable-libwebp --enable-libsvtav1 --enable-librubberband --disable-x86asm --disable-inline-asm --disable-stripping --disable-programs --disable-doc --disable-debug --disable-runtime-cpudetect --disable-autodetect --extra-cflags=&#x27;-O3 -flto -I/ffmpeg-wasm/build/include -pthread -msimd128&#x27; --extra-cxxflags=&#x27;-O3 -flto -I/ffmpeg-wasm/build/include -pthread -msimd128&#x27; --extra-ldflags=&#x27;-O3 -flto -I/ffmpeg-wasm/build/include -pthread -msimd128 -L/ffmpeg-wasm/build/lib&#x27; --pkg-config-flags=--static --nm=emnm --ar=emar --ranlib=emranlib --cc=emcc --cxx=em&#x2B;&#x2B; --objcc=emcc --dep-cc=emcc --enable-gpl --enable-libx264 --enable-libx265&#xA;  libavutil      59. 49.100 / 59. 49.100&#xA;  libavcodec     61. 26.100 / 61. 26.100&#xA;  libavformat    61.  9.100 / 61.  9.100&#xA;  libavdevice    61.  4.100 / 61.  4.100&#xA;  libavfilter    10.  6.101 / 10.  6.101&#xA;  libswscale      8. 12.100 /  8. 12.100&#xA;  libswresample   5.  4.100 /  5.  4.100&#xA;  libpostproc    58.  4.100 / 58.  4.100&#xA;[hevc @ 0x38d0000] VPS 0 does not exist&#xA;[hevc @ 0x38d0000] SPS 0 does not exist.&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;input.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : mp42&#xA;    minor_version   : 512&#xA;    compatible_brands: mp42iso2mp41&#xA;    creation_time   : 2023-09-14T19:46:05.000000Z&#xA;    encoder         : HandBrake 1.5.1 2022011000&#xA;  Duration: 00:01:26.05, start: 0.000000, bitrate: 231 kb/s&#xA;  Stream #0:0[0x1](und): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, bt709/reserved/bt709), 648x648 [SAR 1:1 DAR 1:1], 188 kb/s, 30 fps, 30 tbr, 90k tbn (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-09-14T19:46:05.000000Z&#xA;      handler_name    : VideoHandler&#xA;      vendor_id       : [0][0][0][0]&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 36 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2023-09-14T19:46:05.000000Z&#xA;      handler_name    : Mono&#xA;      vendor_id       : [0][0][0][0]&#xA;[hevc @ 0x38d0300] VPS 0 does not exist&#xA;[hevc @ 0x38d0300] SPS 0 does not exist.&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (hevc (native) -> mjpeg (native))&#xA;Press [q] to stop, [?] for help&#xA;[swscaler @ 0x8ca0000] Unsupported input (Not supported): fmt:yuv420p csp:bt709 prim:reserved trc:bt709 -> fmt:yuv420p csp:bt709 prim:reserved trc:bt709&#xA;[vf#0:0 @ 0x3830900] Error while filtering: Not supported&#xA;[vf#0:0 @ 0x3830900] Task finished with error code: -138 (Not supported)&#xA;[vost#0:0/mjpeg @ 0x385ae40] [enc:mjpeg @ 0x3878b80] Could not open encoder before EOF&#xA;[vf#0:0 @ 0x3830900] Terminating thread with return code -138 (Not supported)&#xA;[vost#0:0/mjpeg @ 0x385ae40] Task finished with error code: -28 (Invalid argument)&#xA;[vost#0:0/mjpeg @ 0x385ae40] Terminating thread with return code -28 (Invalid argument)&#xA;[out#0/image2 @ 0x3851580] Nothing was written into output file, because at least one of its streams received no packets.&#xA;frame=    0 fps=0.0 q=0.0 Lsize=       0KiB time=N/A bitrate=N/A speed=N/A    &#xA;Conversion failed!&#xA;Process finished with exit code -138.&#xA;

    &#xA;

    I figured out the issue is color primaries prim:reserved, and the command can be updated to a working one by re-writing input primaries as following :

    &#xA;

    ffmpeg -i input.mp4 -vf "colorspace=all=bt709:iprimaries=bt709" -frames:v 1 out.jpg&#xA;

    &#xA;

    However, I would like to compile ffmpeg.wasm so that it handles reserved primaries just like the one from homebrew.

    &#xA;

    Any idea what the compiled ffmpeg.wasm is missing ?

    &#xA;