Robert Schmidt
05d393a399
Encapsulate cmake asn1c call, suppress useless output
...
Encapsulate the asn1c call from cmake in a cmake function run_asn1c().
As a notable change to the previous manual add_custom_command()
invocation, in suppresses the output of asn1c by default [1] and stores
it in a log file. In case of asn1c4 error, the output will output on
stdout.
Use the new run_asn1c() in all occasions for code generation.
[1] it is quite verbose, with many warnings that we cannot influence nor
suppress, and lists all generated files which is verified by the build
system automatically, anyway.
2025-04-09 14:35:29 +00:00
Robert Schmidt
fdb2abebd0
Add cmake option to select asn1c, and test asn1c parameters
...
CMake now takes the option ASN1C_EXEC to select an asn1c to use for
compilation. For instance, run with
cmake .. -GNinja -DASN1C_EXEC=/opt/asn1c/bin/asn1c
or
./build_oai --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c
to select the alternative asn1c. For instance, this is important for the
CI to allow to build multiple versions of OAI in parallel that might use
different commits of OAI.
Further, this patch introduces functionality to check for the support of
asn1c options that we require, and alerts the user if they are missing,
alongside a message of how to resolve the problem.
2023-06-02 10:42:02 +02:00
Cedric Roux
c0c3a737ed
asn1c: use better version of asn1c
...
We don't work much on asn1c. The version we use has several bugs.
There is an active community out there that fixes bugs and improves
asn1c. Let's use their version.
2023-06-01 18:26:00 +02:00
Robert Schmidt
2a93484f2b
Generate and build S1AP ASN.1 during build time
2022-12-02 15:42:42 +01:00
yilmazt
7bb5320716
develop-nr up-to-date as of 8.8.19
2019-08-08 17:44:19 +02:00
Bi-Ruei, Chiu
6b4419ad13
Update ASN.1 to newest version
...
LTE-RRC 15.6.0
NR-RRC 15.6.0
S1AP 15.6.0
X2AP 15.6.0 and 14.7.0
2019-07-29 20:35:33 +08:00
yilmazt
7719314983
Merge branch 'develop' into develop-nr
2019-05-17 17:11:31 +02:00
Robert Schmidt
030e11ba9a
Merge branch 'develop' into feature-127-protocol-split
2019-02-21 20:18:35 +01:00
Cedric Roux
aea6b4b5a6
fix a lot of file mode
...
For whatever reason most of the files had their permission
changed from 644 to 755, which is not wanted.
2019-01-07 16:22:28 +01:00
Raymond Knopp
d24f521a5a
Merge remote-tracking branch 'origin/develop' into enhancement-ltem
...
Conflicts:
openair1/PHY/INIT/lte_init.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/edci.c
openair1/PHY/LTE_TRANSPORT/if4_tools.c
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/print_stats.c
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/transport_eNB.h
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
openair1/PHY/impl_defs_lte.h
openair1/SCHED/fapi_l1.c
openair1/SCHED/phy_procedures_lte_eNb.c
openair2/COMMON/rrc_messages_types.h
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_paramdef.h
openair2/LAYER2/MAC/config.c
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler_RA.c
openair2/LAYER2/MAC/eNB_scheduler_bch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/rar_tools.c
openair2/LAYER2/MAC/ue_procedures.c
openair2/PHY_INTERFACE/IF_Module.c
openair2/RRC/LITE/rrc_common.c
openair2/RRC/LTE/L2_interface_ue.c
openair2/RRC/LTE/MESSAGES/asn1_msg.c
openair2/RRC/LTE/rrc_eNB.c
targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-ru.c
2018-10-29 07:54:17 +01:00
Bi-Ruei, Chiu
c35867e910
Upgrade ASN.1 of S1AP and X2AP to 15.3.0
2018-10-17 20:37:33 +08:00
Calvin HSU
b58ef54608
Merge remote-tracking branch 'origin/develop' into feature-127-protocol-split
2018-08-28 12:22:59 +02:00
Raymond Knopp
b93b7073ca
Merge remote-tracking branch 'origin/develop' into develop-nr
...
Conflicts:
ci-scripts/Jenkinsfile-gitlab
ci-scripts/buildOnVM.sh
ci-scripts/checkCodingFormattingRules.sh
ci-scripts/createVM.sh
ci-scripts/destroyAllRunningVM.sh
ci-scripts/reportBuildLocally.sh
cmake_targets/CMakeLists.txt
cmake_targets/build_oai
cmake_targets/tools/build_helper
common/utils/LOG/log.h
openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
openair1/PHY/TOOLS/file_output.c
openair1/PHY/TOOLS/lte_dfts.c
openair1/PHY/TOOLS/tools_defs.h
openair1/PHY/defs_eNB.h
openair1/PHY/impl_defs_lte.h
openair1/SCHED_UE/phy_procedures_lte_ue.c
openair2/COMMON/platform_constants.h
openair2/COMMON/platform_types.h
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/main.c
openair2/RRC/LTE/L2_interface.c
openair2/RRC/LTE/MESSAGES/asn1_msg.c
openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
openair2/RRC/LTE/rrc_UE.c
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB_S1AP.c
openair2/UTIL/LOG/log.c
openair3/S1AP/s1ap_common.h
openair3/S1AP/s1ap_eNB.c
openair3/S1AP/s1ap_eNB_context_management_procedures.c
openair3/S1AP/s1ap_eNB_decoder.c
openair3/S1AP/s1ap_eNB_decoder.h
openair3/S1AP/s1ap_eNB_handlers.c
openair3/S1AP/s1ap_eNB_nas_procedures.c
openair3/S1AP/s1ap_eNB_overload.c
openair3/S1AP/s1ap_eNB_trace.c
openair3/TEST/EPC_TEST/play_scenario_decode.c
openair3/TEST/EPC_TEST/play_scenario_s1ap.c
openair3/TEST/EPC_TEST/play_scenario_s1ap_compare_ie.c
targets/COMMON/openairinterface5g_limits.h
targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
targets/RT/USER/lte-ran.c
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ue.c
targets/SIMU/USER/oaisim_functions.c
2018-08-25 18:20:44 +02:00
Bi-Ruei, Chiu
79827d6bac
Add missing S1AP 15.2.0 ASN.1 S1AP-Containers module
2018-08-16 16:36:41 +08:00
Bi-Ruei, Chiu
0071fb6173
Add ASN files of LTE-RRC, S1AP and X2AP of 2018 Jun release
2018-07-13 10:04:46 +08:00
Bi-Ruei, Chiu
a247907d3a
Use an un-official community collaboration version of asn1c
...
1. It's no need to modify LTE-RRC's ASN.1 file for enabling option group
feature in generate_asn1.
2. It's no need to patch the C header files generated from
LTE-RRC/S1AP/X2AP's ASN.1 in fix_asn1.
3. It's no need to pre-process S1AP/X2AP's ASN.1 for enabling information
object class feature by asn1tostruct.py.
This commit requires an un-official version of asn1c which are
collaboration of asn1c community members and `build_helper` is modified
in this commit accordingly :
https://github.com/brchiu/asn1c/tree/velichkov_s1ap_plus_option_group
This asn1c can also convert ASN.1 of 5G NR RRC (38.331, v15.1.0) and
generate C files with -findirect-choice command line option without
tweaking ASN.1 file.
Examples for how to use this asn1c for S1AP are in S1AP files, e.g.
s1ap_eNB_nas_procedures.c and s1ap_eNB_handler.c.
There is an modified openair-cn (based on tag 0.5.0) with this new asn1c at :
https://github.com/brchiu/openair-cn/tree/new-asn1c
Basic S1AP interaction and data transfer operation between OAI eNB and
this modified openair-cn has been tested.
Note: Community version of asn1c is keeping evolved to provide better usage.
2018-07-13 10:04:46 +08:00
Nikos Makris
3aabed57d2
Applied patch for aper asn1c - Compile with flag --pdcp-split
2018-04-27 15:24:17 +03:00
Bi-Ruei, Chiu
7321aab67e
Add S1AP R14 based on new asn1c
...
This feature requires an un-official version of asn1c :
https://github.com/velichkov/asn1c/tree/s1ap
2018-03-28 00:19:01 +08:00
Raymond Knopp
51a9107c14
Merge branch 'RU-RAU-split' of https://gitlab.eurecom.fr/oai/openairinterface5g into RU-RAU-split
...
Conflicts:
openair1/SCHED/phy_procedures_lte_eNb.c
openair2/ENB_APP/enb_config.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/RRC/LITE/MESSAGES/asn1_msg.c
targets/RT/USER/lte-ru.c
2017-10-25 00:40:20 +02:00
Cedric Roux
1b1f941e3c
upgrade license to version 1.1
2017-10-23 12:22:13 +02:00
khalidhamdy
d847f3cad5
solving some errors
2017-08-14 11:04:50 +02:00
Cedric Roux
b0662e4bbe
update licensing information in remaining files
...
The text has been updated in all those files.
modified: README.txt
modified: cmake_targets/CMakeLists.txt
modified: cmake_targets/at_commands/CMakeLists.txt
modified: cmake_targets/autotests/core.py
modified: cmake_targets/autotests/log.py
modified: cmake_targets/autotests/openair.py
modified: cmake_targets/autotests/run_exec_autotests.bash
modified: cmake_targets/autotests/run_exec_lte-softmodem_tests.py
modified: cmake_targets/autotests/tools/configure_cots_bandrich_ue.py
modified: cmake_targets/autotests/tools/configure_cots_huaweiE398_ue.py
modified: cmake_targets/autotests/tools/configure_usrpb210.py
modified: cmake_targets/autotests/tools/find_usb_path.bash
modified: cmake_targets/autotests/tools/free_mem.bash
modified: cmake_targets/autotests/tools/iperf3_script
modified: cmake_targets/autotests/tools/iperf3_script_phone
modified: cmake_targets/autotests/tools/iperf_script
modified: cmake_targets/autotests/tools/iperf_script_phone
modified: cmake_targets/autotests/tools/lib_autotest.py
modified: cmake_targets/autotests/tools/search_repl.py
modified: cmake_targets/build_oai
modified: cmake_targets/tools/asn1tostruct.py
modified: cmake_targets/tools/build_helper
modified: cmake_targets/tools/build_test_epc_tools
modified: cmake_targets/tools/example_enb_exmimo_mme_hss.txt
modified: cmake_targets/tools/example_oaisim_enb_ue_mme_virtual.txt
modified: cmake_targets/tools/indent_source_code
modified: cmake_targets/tools/init_exmimo2
modified: cmake_targets/tools/init_nas_nos1
modified: cmake_targets/tools/perf_oai.bash
modified: cmake_targets/tools/run_enb_s1_exmimo
modified: cmake_targets/tools/run_enb_s1_usrp
modified: cmake_targets/tools/run_enb_ue_virt_noS1
modified: cmake_targets/tools/run_enb_ue_virt_s1
modified: openair2/DOCS/TEMPLATES/README/Readme.doxy
modified: openair2/DOCS/TEMPLATES/README/readme.txt
modified: openair2/Makefile
modified: openair2/UTIL/OCG/Readme.doxy
modified: openair2/UTIL/OCG/readme.txt
modified: openair2/UTIL/OSD/recep.php
modified: openair2/X2AP/MESSAGES/ASN1/asn1tostruct.py
modified: openair3/DOCS/DOXYGEN/Makefile.am
modified: openair3/DOCS/Latex/EPC/Makefile
modified: openair3/DOCS/Makefile.am
modified: openair3/GTPV1-U/Makefile.am
modified: openair3/GTPV1-U/Makefile.eNB
modified: openair3/NAS/TEST/AS_SIMULATOR/Makefile
modified: openair3/NAS/TEST/NETWORK/Makefile
modified: openair3/NAS/TEST/USER/Makefile
modified: openair3/NAS/TOOLS/Makefile
modified: openair3/NAS/UE/API/USER/Makefile
modified: openair3/NAS/UE/API/USER/tst/Makefile
modified: openair3/NAS/UE/API/USIM/Makefile
modified: openair3/S1AP/MESSAGES/ASN1/asn1tostruct.py
modified: openair3/TEST/Makefile.am
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/gpib_send.cc
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_config_exmimo.cc
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_get_frame.cc
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_get_num_detected_cards.cc
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_send_frame.cc
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_stop.cc
modified: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/oarf_stop_without_reset.cc
modified: targets/PROJECTS/E-MBMS/build_all.bash
modified: targets/PROJECTS/E-MBMS/start_enb.bash
modified: targets/PROJECTS/E-MBMS/start_ue.bash
modified: targets/PROJECTS/E-MBMS/utils.bash
modified: targets/PROJECTS/GENERIC-LTE-EPC/interfaces.bash
modified: targets/PROJECTS/GENERIC-LTE-EPC/networks.bash
modified: targets/PROJECTS/GENERIC-LTE-EPC/start_enb_and_ue_virt.bash
modified: targets/PROJECTS/GENERIC-LTE-EPC/start_ue.bash
modified: targets/PROJECTS/GENERIC-LTE-EPC/utils.bash
modified: targets/PROJECTS/GENERIC-LTE-EPC/virtual_box.bash
modified: targets/SCRIPTS/install_asn1c_0.9.24.modified.bash
modified: targets/TEST/OAI/case01.py
modified: targets/TEST/OAI/case02.py
modified: targets/TEST/OAI/case03.py
modified: targets/TEST/OAI/case04.py
modified: targets/TEST/OAI/case05.py
modified: targets/TEST/OAI/case11.py
modified: targets/TEST/OAI/case12.py
modified: targets/TEST/OAI/case13.py
modified: targets/TEST/OAI/core.py
modified: targets/TEST/OAI/log.py
modified: targets/TEST/OAI/openair.py
modified: targets/TEST/OAI/test01.py
modified: targets/TEST/OAI/test02.py
modified: targets/TEST/PDCP/readme.txt
modified: targets/build_helper.bash
modified: targets/build_oai.bash
modified: targets/perf_oai.bash
2016-09-28 11:17:33 +02:00
Cedric Roux
74316f6b69
remove COPYING files
...
Most of them were the GPL.
It is useless to have a copy of the license in every
sub-directory.
From now on, there is only the LICENSE in the top
directory of the distribution.
deleted: common/utils/COPYING
deleted: common/utils/hashtable/COPYING
deleted: common/utils/itti/COPYING
deleted: common/utils/itti_analyzer/COPYING
deleted: common/utils/itti_analyzer/common/COPYING
deleted: common/utils/itti_analyzer/libbuffers/COPYING
deleted: common/utils/itti_analyzer/libparser/COPYING
deleted: common/utils/itti_analyzer/libresolver/COPYING
deleted: common/utils/itti_analyzer/libui/COPYING
deleted: openair1/COPYING
deleted: openair1/PHY/CODING/COPYING
deleted: openair1/PHY/CODING/TESTBENCH/COPYING
deleted: openair1/PHY/COPYING
deleted: openair1/PHY/INIT/COPYING
deleted: openair1/PHY/LTE_ESTIMATION/COPYING
deleted: openair1/PHY/LTE_REFSIG/COPYING
deleted: openair1/PHY/LTE_TRANSPORT/COPYING
deleted: openair1/PHY/MODULATION/COPYING
deleted: openair1/PHY/TOOLS/COPYING
deleted: openair1/SCHED/COPYING
deleted: openair1/SIMULATION/COPYING
deleted: openair1/SIMULATION/ETH_TRANSPORT/COPYING
deleted: openair1/SIMULATION/LTE_PHY/COPYING
deleted: openair1/SIMULATION/RF/COPYING
deleted: openair1/SIMULATION/TOOLS/COPYING
deleted: openair2/COMMON/COPYING
deleted: openair2/DOCS/TEMPLATES/CODE/COPYING
deleted: openair2/LAYER2/COPYING
deleted: openair2/LAYER2/MAC/COPYING
deleted: openair2/LAYER2/PDCP_v10.1.0/COPYING
deleted: openair2/LAYER2/RLC/AM_v9.3.0/COPYING
deleted: openair2/LAYER2/RLC/COPYING
deleted: openair2/LAYER2/RLC/TM_v9.3.0/COPYING
deleted: openair2/LAYER2/RLC/UM_v9.3.0/COPYING
deleted: openair2/NETWORK_DRIVER/LITE/COPYING
deleted: openair2/NETWORK_DRIVER/MESH/COPYING
deleted: openair2/NETWORK_DRIVER/UE_IP/COPYING
deleted: openair2/PHY_INTERFACE/COPYING
deleted: openair2/RRC/L2_INTERFACE/COPYING
deleted: openair2/RRC/LITE/COPYING
deleted: openair2/RRC/LITE/MESSAGES/COPYING
deleted: openair2/RRC/NAS/COPYING
deleted: openair2/RRM_4_RRC_LITE/COPYING
deleted: openair2/RRM_4_RRC_LITE/src/COPYING
deleted: openair2/RRM_4_RRC_LITE/src/radio_resources/COPYING
deleted: openair2/UTIL/BIGPHYS/COPYING
deleted: openair2/UTIL/CLI/COPYING
deleted: openair2/UTIL/FIFO/COPYING
deleted: openair2/UTIL/LISTS/COPYING
deleted: openair2/UTIL/LOG/COPYING
deleted: openair2/UTIL/MATH/COPYING
deleted: openair2/UTIL/MEM/COPYING
deleted: openair2/UTIL/OCG/COPYING
deleted: openair2/UTIL/OMG/COPYING
deleted: openair2/UTIL/OMV/COPYING
deleted: openair2/UTIL/OPT/COPYING
deleted: openair2/UTIL/OSA/COPYING
deleted: openair2/UTIL/OSD/COPYING
deleted: openair2/UTIL/OTG/COPYING
deleted: openair2/UTIL/SCTP/COPYING
deleted: openair2/UTIL/TIMER/COPYING
deleted: openair2/UTIL/TRACE/COPYING
deleted: openair2/X2AP/COPYING
deleted: openair3/COPYING
deleted: openair3/DOCS/COPYING
deleted: openair3/DOCS/DOXYGEN/COPYING
deleted: openair3/DOCS/Latex/COPYING
deleted: openair3/DOCS/Latex/DefaultBearer/COPYING
deleted: openair3/DOCS/Latex/EPC/COPYING
deleted: openair3/NAS/COMMON/API/NETWORK/COPYING
deleted: openair3/NAS/COMMON/COPYING
deleted: openair3/NAS/COMMON/EMM/MSG/COPYING
deleted: openair3/NAS/COMMON/ESM/MSG/COPYING
deleted: openair3/NAS/COMMON/IES/COPYING
deleted: openair3/NAS/COMMON/UTIL/COPYING
deleted: openair3/NAS/COPYING
deleted: openair3/NAS/TEST/AS_SIMULATOR/COPYING
deleted: openair3/NAS/TEST/COPYING
deleted: openair3/NAS/TEST/MSC/COPYING
deleted: openair3/NAS/TEST/NETWORK/COPYING
deleted: openair3/NAS/TEST/USER/COPYING
deleted: openair3/NAS/TOOLS/COPYING
deleted: openair3/NAS/UE/API/USER/COPYING
deleted: openair3/NAS/UE/API/USIM/COPYING
deleted: openair3/NAS/UE/EMM/SAP/COPYING
deleted: openair3/NAS/UE/ESM/SAP/COPYING
deleted: openair3/S1AP/COPYING
deleted: openair3/S1AP/MESSAGES/ASN1/COPYING
deleted: openair3/S1AP/MESSAGES/ASN1/R10.5/COPYING
deleted: openair3/S1AP/MESSAGES/ASN1/R8.10/COPYING
deleted: openair3/S1AP/MESSAGES/ASN1/R9.8/COPYING
deleted: openair3/S1AP/MESSAGES/COPYING
deleted: openair3/SCTP/COPYING
deleted: openair3/SECU/COPYING
deleted: openair3/TEST/COPYING
deleted: openair3/UTILS/COPYING
deleted: targets/ARCH/COMMON/COPYING
deleted: targets/ARCH/ETHERNET/USERSPACE/LIB/COPYING
deleted: targets/ARCH/EXMIMO/DEFS/COPYING
deleted: targets/ARCH/EXMIMO/DRIVER/eurecom/COPYING
deleted: targets/ARCH/EXMIMO/DRIVER/exmimo3/COPYING
deleted: targets/ARCH/EXMIMO/DRIVER/telecomparistech/COPYING
deleted: targets/ARCH/EXMIMO/USERSPACE/LIB/COPYING
deleted: targets/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/COPYING
deleted: targets/ARCH/EXMIMO/USERSPACE/OCTAVE/COPYING
deleted: targets/ARCH/USRP/USERSPACE/LIB/COPYING
deleted: targets/COMMON/COPYING
deleted: targets/COPYING
deleted: targets/PROJECTS/CENTOS-LTE-EPC-INTEGRATION/COPYING
deleted: targets/PROJECTS/COPYING
deleted: targets/PROJECTS/GENERIC-LTE-EPC/COPYING
deleted: targets/RT/USER/COPYING
deleted: targets/SIMU/PROC/COPYING
deleted: targets/SIMU/USER/COPYING
2016-09-28 10:45:02 +02:00
Cedric Roux
f4e97b50fa
download asn1c from oai gitlab
...
the official asn1c repository at github posed problems to
some people in the past. It's better to have it locally
for such a critical piece of the software.
2016-08-18 15:29:33 +02:00
Cedric Roux
f514c0656d
more warning removals: add const to asn1cpatch_3.p0 and update fix_asn1
2016-03-27 16:51:16 +02:00
Cedric Roux
04eed3bd6e
remove "unused variable" and "set but not used" warnings
2016-03-25 23:58:58 +01:00
gauthier
1b86363795
Remaining TODO: handle diff MME_UE_S1AP_ID, asn1c compare not tested
2015-12-08 15:08:02 +01:00
gauthier
e547fa8724
Able to begin replay a scenario...debug needed
2015-12-04 11:16:47 +01:00
gauthier
610e07a96c
For backup only, dont compile, TODO missing patch for asn1c compiler
2015-12-01 16:55:41 +01:00
gauthier
7b5431a62c
renamed openair-cn to openair3
...
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7886 818b1a75-f10b-46b9-bf7c-635c3b92a50f
2015-10-06 16:53:42 +00:00