Commit Graph

485 Commits

Author SHA1 Message Date
Justin M. Keyes
bf6919f26b cleanup 2019-08-02 16:20:22 +02:00
Justin M. Keyes
4d830ca31b vim-patch:62e1bb4a111e
Update runtime files.
62e1bb4a11

NA: vim-patch:496555fd1821
2019-08-01 22:58:20 +02:00
Justin M. Keyes
31a5ec23eb vim-patch:723dd946f948
Update runtime files.
723dd946f9
2019-08-01 22:52:42 +02:00
Justin M. Keyes
a14fc7b159 vim-patch:f6b401090e81
Update runtime files
f6b401090e
2019-08-01 22:26:04 +02:00
Justin M. Keyes
47b4eb110d vim-patch:4c92e75dd4dd
Update runtime files.
4c92e75dd4

vim-patch:c854898881c0
Revert change accidentally included in runtime file updates.  Closes vim/vim#3998.
c854898881
2019-08-01 16:51:53 +02:00
Justin M. Keyes
57fa9add79 vim-patch:314dd79cac2a
Update runtime files.
314dd79cac
2019-07-29 20:50:07 +02:00
Justin M. Keyes
6fed505100 vim-patch:d09091d4955c
Update runtime files.
d09091d495
2019-07-29 20:50:07 +02:00
Justin M. Keyes
4cab90ad8c vim-patch:c8c884926750
Update runtime files.
c8c8849267
2019-07-29 20:50:07 +02:00
Justin M. Keyes
aa680f6acb vim-patch:9d87a37ee9d8
Update runtime files.
9d87a37ee9
2019-07-29 20:50:07 +02:00
Justin M. Keyes
c8f34a9a3e vim-patch:d47d52232bf2
Update runtime files.
d47d52232b
2019-07-29 20:50:07 +02:00
Justin M. Keyes
80dda68926 vim-patch:ba3ff539303c
Update runtime files
ba3ff53930
2019-07-29 20:50:07 +02:00
Daniel Hahler
10fd5ae277 vim-patch:7.4.2213: runtime parts with EndOfBuffer port #10635
Problem:    Cannot highlight the "~" lines at the end of a window differently.
Solution:   Add the EndOfBuffer highlighting. (Marco Hinz, James McCoy)
58b853460a

Includes minor doc parts from 7.4.1304 for runtime/doc/eval.txt.
2019-07-28 13:27:03 +02:00
Daniel Hahler
256608a13b
vim-patch:b1c9198af (#10634)
Vim 8.1 release

Update version number and information.  Fix a couple of tests.
b1c9198afb
2019-07-28 11:48:07 +02:00
Abdelhakeem
b6278bbf12 API: Context: save/restore 2019-07-27 22:14:58 +02:00
Justin M. Keyes
afef973262
doc [ci skip] #10383
- test/README.md: document luassert `TableFormatLevel`
- CONTRIBUTING.md: absorb parts of the old "Development tips" wiki page
2019-07-19 21:32:04 +02:00
Justin M. Keyes
58dd5fcc01
jobstop(): close channel before process_stop() #10522
fix #9799
regression of #7081
Helped-by: Björn Linse <bjorn.linse@gmail.com>

Problem: :UpdateRemotePlugins (which calls rpcstop()) sometimes crashes:

    remote/host: python3 host registered plugins []
    nvim: ../src/nvim/event/wstream.c:78:
      _Bool wstream_write(Stream *, WBuffer *): Assertion `!stream->closed' failed.
    Aborted (core dumped)

  Order of events (channel 163, see logs below):

    1. Channel's in-stream (0x2ba86c0) is **closed** by `f_rpcstop`..`process_stop`.
    2. `receive_msgpack` parses the channel out-stream (0x2ba8860)
    3. Invokes "nvim_command_output" API method.
    4. Writes result to the **closed** in-stream  => **abort**

  - af993da435 (`receive_msgpack`) tried to hack around same/similar issue.
  - Hack was removed in 5215e3205a.

Solution: in jobstop(), close the channel before process_stop().

Log:

    DEBUG 2019-07-16T20:54:12.191 25159 stream_close:96: closing Stream: 0x2b01a90
    DEBUG 2019-07-16T20:54:12.210 25159 process_spawn:124: new: pid=28407 argv=[/usr/bin/python3]
    DEBUG 2019-07-16T20:54:12.210 25159 rpc_start:72: rpc ch 163 in-stream=0x2ba86c0 out-stream=0x2ba8860
    INFO  2019-07-16T20:54:12.210 25159 channel_create_event:199: new channel 163 (function <SNR>61_on_exit[4]..<SNR>60_job_exit_cb[101]..<SNR>60_decrement_job_count[8]..remote#host#UpdateRemotePlugins[6]..<SNR>31_RegistrationCommands[15]..remote#host#Require[10]..provider#pythonx#Require[13]..provider#Poll:3) : {"id": 163, "client": {}, "mode": "rpc", "stream": "job"}
    DEBUG 2019-07-16T20:54:12.211 25159 log_server_msg:729: RPC ->ch 163: [request]  [0, 1, "poll", []]
    DEBUG 2019-07-16T20:54:12.355 25159 receive_msgpack:227: ch 163: parsing 21 bytes from msgpack Stream: 0x2ba8860
    DEBUG 2019-07-16T20:54:12.355 25159 log_client_msg:766: RPC <-ch 163: [request]  [0, 1, "vim_get_api_info", []]
    DEBUG 2019-07-16T20:54:12.355 25159 RPC: <-ch 163: invoke nvim_get_api_info
    DEBUG 2019-07-16T20:54:12.357 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 1, nil, [163, {"version"=>{"major"=>0, "minor"=>4, }, ...
    DEBUG 2019-07-16T20:54:12.377 25159 receive_msgpack:227: ch 163: parsing 85 bytes from msgpack Stream: 0x2ba8860
    DEBUG 2019-07-16T20:54:12.377 25159 log_client_msg:766: RPC <-ch 163: [request]  [0, 2, "nvim_eval", ["((&number||&relativenumber) ? &numberwidth : 0) + &foldcolumn"]]
    DEBUG 2019-07-16T20:54:12.377 25159 handle_request:359: RPC: scheduled nvim_eval
    DEBUG 2019-07-16T20:54:12.377 25159 log_client_msg:766: RPC <-ch 163: [response] [1, 1, nil, "ok"]
    DEBUG 2019-07-16T20:54:12.378 25159 log_server_msg:729: RPC ->ch 163: [request]  [0, 2, "specs", ["/home/vagrant/.config/nvim/rplugin/python3/__pycache__"]]
    DEBUG 2019-07-16T20:54:12.378 25159 RPC: <-ch 163: invoke nvim_eval
    DEBUG 2019-07-16T20:54:12.379 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 2, nil, 0]
    DEBUG 2019-07-16T20:54:12.379 25159 receive_msgpack:227: ch 163: parsing 5 bytes from msgpack Stream: 0x2ba8860
    DEBUG 2019-07-16T20:54:12.379 25159 log_client_msg:766: RPC <-ch 163: [response] [1, 2, nil, 0]
    DEBUG 2019-07-16T20:54:12.380 25159 log_server_msg:729: RPC ->ch 163: [request]  [0, 3, "specs", ["/home/vagrant/.config/nvim/rplugin/python3/foo.py"]]
    DEBUG 2019-07-16T20:54:12.380 25159 receive_msgpack:227: ch 163: parsing 79 bytes from msgpack Stream: 0x2ba8860
    DEBUG 2019-07-16T20:54:12.380 25159 log_client_msg:766: RPC <-ch 163: [request]  [0, 3, "nvim_command", ["redir =>a |exe "sil sign place buffer=".bufnr('')|redir end"]]
    DEBUG 2019-07-16T20:54:12.381 25159 handle_request:359: RPC: scheduled nvim_command
    DEBUG 2019-07-16T20:54:12.381 25159 RPC: <-ch 163: invoke nvim_command
    DEBUG 2019-07-16T20:54:12.381 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 3, nil, nil]
    DEBUG 2019-07-16T20:54:12.381 25159 receive_msgpack:227: ch 163: parsing 5 bytes from msgpack Stream: 0x2ba8860
    DEBUG 2019-07-16T20:54:12.381 25159 log_client_msg:766: RPC <-ch 163: [response] [1, 3, nil, 0]
    DEBUG 2019-07-16T20:54:12.382 25159 stream_close:95: trace:
      log_callstack at /home/vagrant/neovim/build/../src/nvim/log.c:256
      stream_close at /home/vagrant/neovim/build/../src/nvim/event/stream.c:95
      stream_may_close at /home/vagrant/neovim/build/../src/nvim/event/stream.c:111
      process_stop at /home/vagrant/neovim/build/../src/nvim/event/process.c:230
      f_jobstop at /home/vagrant/neovim/build/../src/nvim/eval.c:12231
      f_rpcstop at /home/vagrant/neovim/build/../src/nvim/eval.c:14533
      call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6564
      get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
      ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
      do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
      do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
      call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
      call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
      get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
      eval7 at /home/vagrant/neovim/build/../src/nvim/eval.c:4407
      eval6 at /home/vagrant/neovim/build/../src/nvim/eval.c:4104
      eval5 at /home/vagrant/neovim/build/../src/nvim/eval.c:3985
      eval4 at /home/vagrant/neovim/build/../src/nvim/eval.c:3688
      eval3 at /home/vagrant/neovim/build/../src/nvim/eval.c:3606
      eval2 at /home/vagrant/neovim/build/../src/nvim/eval.c:3537
      eval1 at /home/vagrant/neovim/build/../src/nvim/eval.c:3464
      eval0 at /home/vagrant/neovim/build/../src/nvim/eval.c:3424
      ex_let_const at /home/vagrant/neovim/build/../src/nvim/eval.c:1604
      ex_let at /home/vagrant/neovim/build/../src/nvim/eval.c:1546
      do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
      do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
      call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
      call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
      get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
      ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
      do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
      do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
      do_ucmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:5803
      do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2243
      do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
      call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
      call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
      get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
      ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
      do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
      do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
      call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
      call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
      get_func_tv at /home/vagrant/neovim/build/../src/nvim/eval.c:6304
      ex_call at /home/vagrant/neovim/build/../src/nvim/eval.c:2903
      do_one_cmd at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:2249
      do_cmdline at /home/vagrant/neovim/build/../src/nvim/ex_docmd.c:593
      call_user_func at /home/vagrant/neovim/build/../src/nvim/eval.c:22666
      call_func at /home/vagrant/neovim/build/../src/nvim/eval.c:6550
      callback_call at /home/vagrant/neovim/build/../src/nvim/eval.c:17917
      channel_callback_call at /home/vagrant/neovim/build/../src/nvim/channel.c:675
      on_channel_event at /home/vagrant/neovim/build/../src/nvim/channel.c:581
      multiqueue_process_events at /home/vagrant/neovim/build/../src/nvim/event/multiqueue.c:147
      nv_event at /home/vagrant/neovim/build/../src/nvim/normal.c:7987
      normal_execute at /home/vagrant/neovim/build/../src/nvim/normal.c:1133
      state_enter at /home/vagrant/neovim/build/../src/nvim/state.c:73
      normal_enter at /home/vagrant/neovim/build/../src/nvim/normal.c:462
      main at /home/vagrant/neovim/build/../src/nvim/main.c:570
      ?? ??:0
      _start at ??:?
    DEBUG 2019-07-16T20:54:12.417 25159 stream_close:96: closing Stream: 0x2ba86c0
    INFO  2019-07-16T20:54:12.417 25159 os_proc_tree_kill:96: sending SIGTERM to process group: -28407
    DEBUG 2019-07-16T20:54:12.417 25159 receive_msgpack:227: ch 163: parsing 31 bytes from msgpack Stream: 0x2ba8860
    DEBUG 2019-07-16T20:54:12.417 25159 log_client_msg:766: RPC <-ch 163: [request]  [0, 4, "nvim_command_output", ["echo a"]]
    DEBUG 2019-07-16T20:54:12.417 25159 handle_request:359: RPC: scheduled nvim_command_output
    DEBUG 2019-07-16T20:54:12.424 25159 RPC: <-ch 163: invoke nvim_command_output
    DEBUG 2019-07-16T20:54:12.424 25159 log_server_msg:729: RPC ->ch 163: [response] [1, 4, [0, "Vim(echo):E121: Undefined variable: a"], nil]
    ERROR 2019-07-16T20:54:12.424 25159 wstream_write:78: xxx stream=0x2ba86c0
    DEBUG 2019-07-16T20:54:12.425 25159 wstream_write:79: trace:
      log_callstack at /home/vagrant/neovim/build/../src/nvim/log.c:256
      wstream_write at /home/vagrant/neovim/build/../src/nvim/event/wstream.c:82
      channel_write at /home/vagrant/neovim/build/../src/nvim/msgpack_rpc/channel.c:407
      request_event at /home/vagrant/neovim/build/../src/nvim/msgpack_rpc/channel.c:383
      multiqueue_process_events at /home/vagrant/neovim/build/../src/nvim/event/multiqueue.c:147
      nv_event at /home/vagrant/neovim/build/../src/nvim/normal.c:7987
      normal_execute at /home/vagrant/neovim/build/../src/nvim/normal.c:1133
      state_enter at /home/vagrant/neovim/build/../src/nvim/state.c:73
      normal_enter at /home/vagrant/neovim/build/../src/nvim/normal.c:462
      main at /home/vagrant/neovim/build/../src/nvim/main.c:570
      ?? ??:0
      _start at ??:?
2019-07-17 11:13:57 +02:00
Shougo Matsushita
3f6346b732 vim-patch:8.1.1610: there is no way to add or load a buffer without side effects
Problem:    There is no way to add or load a buffer without side effects.
Solution:   Add the bufadd() and bufload() functions.
15e248e37f
2019-07-06 17:09:56 +09:00
Justin M. Keyes
2ef6f28e11
doc [ci skip] #10177
ref #10278 #10279 #10353
2019-06-30 00:09:45 +02:00
Justin M. Keyes
79450f2da9
Merge #10250 from blueyed/vim-8.0.1039
vim-patch:8.0.{10{39,53,55},1274}: cannot change a line in not current buffer
2019-06-25 02:36:07 +02:00
rhysd
3d5a800278 vim-patch:8.1.1554: docs and tests for :const can be improved
Problem:    Docs and tests for :const can be improved.
Solution:   Improve documentation, add a few more tests. (Ryuichi Hayashida,
            closes vim/vim#4551)
1c196e7b17
2019-06-24 09:31:30 +09:00
rhysd
1c90c19f62 vim-patch:8.1.1539: not easy to define a variable and lock it
Problem:    Not easy to define a variable and lock it.
Solution:   Add ":const".
9937a05543
2019-06-24 09:30:51 +09:00
Daniel Hahler
9485061baa vim-patch:8.0.1039: cannot change a line in not current buffer
Problem:    Cannot change a line in a buffer other than the current one.
Solution:   Add setbufline(). (Yasuhiro Matsumoto, Ozaki Kiichi, closes vim/vim#1953)
b31cf2bb0b
2019-06-17 23:43:26 +02:00
Jan Edmund Lazo
e6a1bea1eb vim-patch:8.0.0931: getwininfo() does not indicate a terminal window
Problem:    getwininfo() does not indicate a terminal window.
Solution:   Add "terminal" to the dictionary.
69905d108b
2019-06-13 19:39:55 -04:00
Justin M. Keyes
04e2ba85b1
doc [ci skip] #10129
- document lua vim.loop #10123
2019-06-10 15:53:42 +02:00
Jan Edmund Lazo
0b4c53fc23 vim-patch:8.0.1305: writefile() never calls fsync() #10153
Problem:    Writefile() never calls fsync().
Solution:   Follow the 'fsync' option with override to enable or disable.
7567d0b115
2019-06-09 00:12:28 +02:00
Justin M. Keyes
8a33cb32ba Merge #10086 'vim-patch:8.1.{902,1114}' 2019-06-02 23:32:28 +02:00
Justin M. Keyes
ed24a297e5
doc [ci skip] #10097
- fix broken links (|buffered| was renamed to |channel-buffered|)
- rewrite `:h channel-lines`
2019-06-01 20:14:29 +02:00
erw7
bfc44a91ac vim-patch:8.1.1114: confusing overloaded operator "." for string concatenation
Problem:    Confusing overloaded operator "." for string concatenation.
Solution:   Add ".." for string concatenation.  Also "let a ..= b".
0f248b006c
2019-05-29 12:54:42 +09:00
erw7
d46aaa0746 vim-patch:8.1.0902: incomplete set of assignment operators
Problem:    Incomplete set of assignment operators.
Solution:   Add /=, *= and %=. (Ozaki Kiichi, closes vim/vim#3931)
ff697e6cef
2019-05-29 12:05:56 +09:00
Jan Edmund Lazo
21f160746a vim-patch:8.1.0020: cannot tell whether a register is executing or recording
Problem:    Cannot tell whether a register is being used for executing or
            recording.
Solution:   Add reg_executing() and reg_recording(). (Hirohito Higashi,
            closes vim/vim#2745)  Rename the global variables for consistency.  Store
            the register name in reg_executing.
0b6d911e5d
2019-05-26 20:24:11 -04:00
Andrej Zieger
237cecd81b vim-patch:8.1.0039: cannot easily delete lines in another buffer
Problem:    Cannot easily delete lines in another buffer.
Solution:   Add deletebufline().
d79a26219d
2019-05-26 19:32:32 +02:00
Andrej Zieger
fa07cc215d vim-patch:8.1.0717: there is no function for the ":sign jump" command
Problem:    There is no function for the ":sign jump" command.
Solution:   Add the sign_jump() function. (Yegappan Lakshmanan, closes vim/vim#3780)
6b7b7190aa
2019-05-26 19:32:32 +02:00
Andrej Zieger
f43900f686 vim-patch:8.1.0702: ":sign place" only uses the current buffer
Problem:    ":sign place" only uses the current buffer.
Solution:   List signs for all buffers when there is no buffer argument.
            Fix error message for invalid buffer name in sign_place().
            (Yegappan Lakshmanan, closes vim/vim#3774)
b589f95b38
2019-05-26 19:32:32 +02:00
Andrej Zieger
e70609cfac vim-patch:8.1.0697: ":sign place" requires the buffer argument
Problem:    ":sign place" requires the buffer argument.
Solution:   Make the argument optional.  Also update the help and clean up the
            sign test. (Yegappan Lakshmanan, closes vim/vim#3767)
b328cca254
2019-05-26 19:32:32 +02:00
Andrej Zieger
3ee55edd2e vim-patch:8.1.0644: finding next sign ID is inefficient
Problem:    Finding next sign ID is inefficient.
Solution:   Add next_sign_id. (Yegappan Lakshmanan, closes vim/vim#3717)
6436cd83f9
2019-05-26 19:32:31 +02:00
Andrej Zieger
fb9abd7d99 vim-patch:8.1.0614: placing signs can be complicated
Problem:    Placing signs can be complicated.
Solution:   Add functions for defining and placing signs.  Introduce a group
            name to avoid different plugins using the same signs. (Yegappan
            Lakshmanan, closes vim/vim#3652)
162b71479b
2019-05-26 19:32:31 +02:00
Björn Linse
aabda31d54
Merge pull request #9547 from bfredl/rpc_multiline_err
messages: use proper multiline errors for rpcrequest and API wrappers
2019-05-26 18:11:49 +02:00
Björn Linse
8ed54bbec3 messages: use proper multiline error message for rpcrequest and API wrappers 2019-05-26 15:42:16 +02:00
Jan Edmund Lazo
f60af8694b vim-patch:8.1.0307: there is no good way to get the window layout
Problem:    There is no good way to get the window layout.
Solution:   Add the winlayout() function. (Yegappan Lakshmanan)
0f6b4f06de
2019-05-26 07:27:50 -04:00
Justin M. Keyes
4769deb36a
doc #10017
- gen_vimdoc.py: fancy "bullet"
- rework `:help channel-callback`
- rename `:help buffered` to `:help channel-buffered`
2019-05-25 10:00:41 +02:00
Jan Edmund Lazo
783aa6b507 vim-patch:8.0.1514: getting the list of changes is not easy
Problem:    Getting the list of changes is not easy.
Solution:   Add the getchangelist() function. (Yegappan Lakshmanan,
            closes vim/vim#2634)
07ad816525
2019-05-20 13:33:59 -04:00
Jan Edmund Lazo
41828a7302 vim-patch:8.0.1497: getting the jump list requires parsing the output of :jumps
Problem:    Getting the jump list requires parsing the output of :jumps.
Solution:   Add getjumplist(). (Yegappan Lakshmanan, closes vim/vim#2609)
4f50588ba3
2019-05-19 23:15:47 -04:00
Marco Hinz
720cb36cea
doc: update setqflist() 2019-05-05 14:05:25 +02:00
Marco Hinz
e6c21c4bc0
vim-patch:8.0.1782: no simple way to label quickfix entries
Problem:    No simple way to label quickfix entries.
Solution:   Add the "module" item, to be used instead of the file name for
            display purposes. (Martin Szamotulski)

d76ce85266
2019-05-05 13:46:19 +02:00
Justin M. Keyes
afd947e0c3 doc [ci skip]
ref #9886
2019-05-01 00:18:43 +02:00
Justin M. Keyes
e22c475156 Merge #9951 'vim-patch:8.1.0519: save/restore tag stack' 2019-04-30 23:41:34 +02:00
Justin M. Keyes
04f0bc97b7 vim-patch:8.1.0401: can't get swap name of another buffer
Problem:    Can't get swap name of another buffer.
Solution:   Add swapname(). (Ozaki Kiichi, closes vim/vim#3441)
110bd60985
2019-04-29 21:19:45 +02:00
Justin M. Keyes
39e3783c69 vim-patch:8.1.0314: add swapinfo() "dirty" item
Problem:    Build failure without the +eval feature. (Brenton Horne)
Solution:   Add #ifdef.  Also add the "dirty" item.
47ad5656e1
2019-04-29 21:19:45 +02:00
Justin M. Keyes
24b7462b3c vim-patch:8.1.0313: information about a swap file is unavailable
Problem:    Information about a swap file is unavailable.
Solution:   Add swapinfo(). (Enzo Ferber)
00f123a565
2019-04-29 19:55:42 +02:00
Jan Edmund Lazo
a0d723db55 vim-patch:8.0.1563: getwinposx() timeout #9955
Problem:    Timeout of getwinposx() can be too short. (lilydjwg)
Solution:   Add getwinpos(). (closes vim/vim#2689)
3f54fd319f
2019-04-29 11:53:44 +02:00