standalone-ruby 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -22
  3. data/lib/data/bat-cmd/default_bat_cmd.txt +9 -9
  4. data/lib/data/c_compilers/tcc/include/_mingw.h +54 -0
  5. data/lib/data/c_compilers/tcc/include/assert.h +71 -0
  6. data/lib/data/c_compilers/tcc/include/conio.h +159 -0
  7. data/lib/data/c_compilers/tcc/include/ctype.h +232 -0
  8. data/lib/data/c_compilers/tcc/include/dir.h +26 -0
  9. data/lib/data/c_compilers/tcc/include/direct.h +95 -0
  10. data/lib/data/c_compilers/tcc/include/dirent.h +96 -0
  11. data/lib/data/c_compilers/tcc/include/dos.h +110 -0
  12. data/lib/data/c_compilers/tcc/include/errno.h +117 -0
  13. data/lib/data/c_compilers/tcc/include/excpt.h +20 -0
  14. data/lib/data/c_compilers/tcc/include/fcntl.h +135 -0
  15. data/lib/data/c_compilers/tcc/include/fenv.h +85 -0
  16. data/lib/data/c_compilers/tcc/include/float.h +224 -0
  17. data/lib/data/c_compilers/tcc/include/inttypes.h +275 -0
  18. data/lib/data/c_compilers/tcc/include/io.h +296 -0
  19. data/lib/data/c_compilers/tcc/include/limits.h +115 -0
  20. data/lib/data/c_compilers/tcc/include/locale.h +100 -0
  21. data/lib/data/c_compilers/tcc/include/malloc.h +87 -0
  22. data/lib/data/c_compilers/tcc/include/math.h +438 -0
  23. data/lib/data/c_compilers/tcc/include/mem.h +8 -0
  24. data/lib/data/c_compilers/tcc/include/memory.h +9 -0
  25. data/lib/data/c_compilers/tcc/include/process.h +158 -0
  26. data/lib/data/c_compilers/tcc/include/setjmp.h +72 -0
  27. data/lib/data/c_compilers/tcc/include/share.h +44 -0
  28. data/lib/data/c_compilers/tcc/include/signal.h +111 -0
  29. data/lib/data/c_compilers/tcc/include/stdarg.h +16 -0
  30. data/lib/data/c_compilers/tcc/include/stdbool.h +10 -0
  31. data/lib/data/c_compilers/tcc/include/stddef.h +26 -0
  32. data/lib/data/c_compilers/tcc/include/stdint.h +184 -0
  33. data/lib/data/c_compilers/tcc/include/stdio.h +413 -0
  34. data/lib/data/c_compilers/tcc/include/stdlib.h +482 -0
  35. data/lib/data/c_compilers/tcc/include/string.h +206 -0
  36. data/lib/data/c_compilers/tcc/include/sys/fcntl.h +8 -0
  37. data/lib/data/c_compilers/tcc/include/sys/file.h +9 -0
  38. data/lib/data/c_compilers/tcc/include/sys/locking.h +52 -0
  39. data/lib/data/c_compilers/tcc/include/sys/stat.h +190 -0
  40. data/lib/data/c_compilers/tcc/include/sys/time.h +3 -0
  41. data/lib/data/c_compilers/tcc/include/sys/timeb.h +82 -0
  42. data/lib/data/c_compilers/tcc/include/sys/types.h +118 -0
  43. data/lib/data/c_compilers/tcc/include/sys/unistd.h +9 -0
  44. data/lib/data/c_compilers/tcc/include/sys/utime.h +89 -0
  45. data/lib/data/c_compilers/tcc/include/tchar.h +367 -0
  46. data/lib/data/c_compilers/tcc/include/time.h +219 -0
  47. data/lib/data/c_compilers/tcc/include/unistd.h +10 -0
  48. data/lib/data/c_compilers/tcc/include/values.h +4 -0
  49. data/lib/data/c_compilers/tcc/include/varargs.h +11 -0
  50. data/lib/data/c_compilers/tcc/include/wchar.h +318 -0
  51. data/lib/data/c_compilers/tcc/include/wctype.h +127 -0
  52. data/lib/data/c_compilers/tcc/include/winapi/basetsd.h +119 -0
  53. data/lib/data/c_compilers/tcc/include/winapi/basetyps.h +144 -0
  54. data/lib/data/c_compilers/tcc/include/winapi/winbase.h +1852 -0
  55. data/lib/data/c_compilers/tcc/include/winapi/wincon.h +207 -0
  56. data/lib/data/c_compilers/tcc/include/winapi/windef.h +240 -0
  57. data/lib/data/c_compilers/tcc/include/winapi/windows.h +176 -0
  58. data/lib/data/c_compilers/tcc/include/winapi/winerror.h +1054 -0
  59. data/lib/data/c_compilers/tcc/include/winapi/wingdi.h +2843 -0
  60. data/lib/data/c_compilers/tcc/include/winapi/winnetwk.h +346 -0
  61. data/lib/data/c_compilers/tcc/include/winapi/winnls.h +651 -0
  62. data/lib/data/c_compilers/tcc/include/winapi/winnt.h +2667 -0
  63. data/lib/data/c_compilers/tcc/include/winapi/winreg.h +159 -0
  64. data/lib/data/c_compilers/tcc/include/winapi/winsvc.h +309 -0
  65. data/lib/data/c_compilers/tcc/include/winapi/winuser.h +3472 -0
  66. data/lib/data/c_compilers/tcc/include/winapi/winver.h +133 -0
  67. data/lib/data/c_compilers/tcc/lib/gdi32.def +337 -0
  68. data/lib/data/c_compilers/tcc/lib/kernel32.def +763 -0
  69. data/lib/data/c_compilers/tcc/lib/libtcc1.a +0 -0
  70. data/lib/data/c_compilers/tcc/lib/msvcrt.def +782 -0
  71. data/lib/data/c_compilers/tcc/lib/user32.def +654 -0
  72. data/lib/data/c_compilers/tcc/tcc.exe +0 -0
  73. data/lib/data/exe_templates/launcher_stub.c +30 -0
  74. data/lib/data/exe_templates/launcher_stub.cpp +31 -0
  75. data/lib/data/launcher_templates/vbs/default_vbs.txt +7 -0
  76. data/lib/data/launcher_templates/vbs/vbs_gui.txt +8 -0
  77. data/lib/data/resource_files/default.rc +17 -0
  78. data/lib/data/tcc/include/_mingw.h +54 -54
  79. data/lib/data/tcc/include/assert.h +71 -71
  80. data/lib/data/tcc/include/conio.h +159 -159
  81. data/lib/data/tcc/include/ctype.h +232 -232
  82. data/lib/data/tcc/include/dir.h +26 -26
  83. data/lib/data/tcc/include/direct.h +95 -95
  84. data/lib/data/tcc/include/dirent.h +96 -96
  85. data/lib/data/tcc/include/dos.h +110 -110
  86. data/lib/data/tcc/include/errno.h +117 -117
  87. data/lib/data/tcc/include/excpt.h +20 -20
  88. data/lib/data/tcc/include/fcntl.h +135 -135
  89. data/lib/data/tcc/include/fenv.h +85 -85
  90. data/lib/data/tcc/include/float.h +224 -224
  91. data/lib/data/tcc/include/inttypes.h +275 -275
  92. data/lib/data/tcc/include/io.h +296 -296
  93. data/lib/data/tcc/include/limits.h +115 -115
  94. data/lib/data/tcc/include/locale.h +100 -100
  95. data/lib/data/tcc/include/malloc.h +87 -87
  96. data/lib/data/tcc/include/math.h +438 -438
  97. data/lib/data/tcc/include/mem.h +8 -8
  98. data/lib/data/tcc/include/memory.h +9 -9
  99. data/lib/data/tcc/include/process.h +158 -158
  100. data/lib/data/tcc/include/setjmp.h +72 -72
  101. data/lib/data/tcc/include/share.h +44 -44
  102. data/lib/data/tcc/include/signal.h +111 -111
  103. data/lib/data/tcc/include/stdarg.h +16 -16
  104. data/lib/data/tcc/include/stdbool.h +10 -10
  105. data/lib/data/tcc/include/stddef.h +26 -26
  106. data/lib/data/tcc/include/stdint.h +184 -184
  107. data/lib/data/tcc/include/stdio.h +413 -413
  108. data/lib/data/tcc/include/stdlib.h +482 -482
  109. data/lib/data/tcc/include/string.h +206 -206
  110. data/lib/data/tcc/include/sys/fcntl.h +8 -8
  111. data/lib/data/tcc/include/sys/file.h +9 -9
  112. data/lib/data/tcc/include/sys/locking.h +52 -52
  113. data/lib/data/tcc/include/sys/stat.h +190 -190
  114. data/lib/data/tcc/include/sys/time.h +3 -3
  115. data/lib/data/tcc/include/sys/timeb.h +82 -82
  116. data/lib/data/tcc/include/sys/types.h +118 -118
  117. data/lib/data/tcc/include/sys/unistd.h +9 -9
  118. data/lib/data/tcc/include/sys/utime.h +89 -89
  119. data/lib/data/tcc/include/tchar.h +367 -367
  120. data/lib/data/tcc/include/time.h +219 -219
  121. data/lib/data/tcc/include/unistd.h +10 -10
  122. data/lib/data/tcc/include/values.h +4 -4
  123. data/lib/data/tcc/include/varargs.h +11 -11
  124. data/lib/data/tcc/include/wchar.h +318 -318
  125. data/lib/data/tcc/include/wctype.h +127 -127
  126. data/lib/data/tcc/include/winapi/basetsd.h +119 -119
  127. data/lib/data/tcc/include/winapi/basetyps.h +144 -144
  128. data/lib/data/tcc/include/winapi/winbase.h +1852 -1852
  129. data/lib/data/tcc/include/winapi/wincon.h +207 -207
  130. data/lib/data/tcc/include/winapi/windef.h +240 -240
  131. data/lib/data/tcc/include/winapi/windows.h +176 -176
  132. data/lib/data/tcc/include/winapi/winerror.h +1054 -1054
  133. data/lib/data/tcc/include/winapi/wingdi.h +2843 -2843
  134. data/lib/data/tcc/include/winapi/winnetwk.h +346 -346
  135. data/lib/data/tcc/include/winapi/winnls.h +651 -651
  136. data/lib/data/tcc/include/winapi/winnt.h +2667 -2667
  137. data/lib/data/tcc/include/winapi/winreg.h +159 -159
  138. data/lib/data/tcc/include/winapi/winsvc.h +309 -309
  139. data/lib/data/tcc/include/winapi/winuser.h +3472 -3472
  140. data/lib/data/tcc/include/winapi/winver.h +133 -133
  141. data/lib/data/tcc/lib/gdi32.def +337 -337
  142. data/lib/data/tcc/lib/kernel32.def +763 -763
  143. data/lib/data/tcc/lib/msvcrt.def +782 -782
  144. data/lib/data/tcc/lib/user32.def +654 -654
  145. data/lib/data/vbs/default_vbs.txt +7 -7
  146. data/lib/data/vbs/vbs_gui.txt +8 -8
  147. data/lib/displayer.rb +66 -0
  148. data/lib/exe_packer.rb +82 -0
  149. data/lib/launcher.rb +84 -0
  150. data/lib/launcher_handler.rb +53 -0
  151. data/lib/logger_helper.rb +24 -0
  152. data/lib/parameter_parser.rb +210 -0
  153. data/lib/ruby_copy.rb +26 -0
  154. data/lib/sfx_generator.rb +11 -0
  155. data/lib/standalone_ruby.rb +1 -1
  156. data/lib/utils/launcher_handler.rb +110 -110
  157. data/lib/version/version.rb +1 -1
  158. metadata +85 -3
@@ -1,111 +1,111 @@
1
- /*
2
- * signal.h
3
- *
4
- * A way to set handlers for exceptional conditions (also known as signals).
5
- *
6
- * This file is part of the Mingw32 package.
7
- *
8
- * Contributors:
9
- * Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
10
- *
11
- * THIS SOFTWARE IS NOT COPYRIGHTED
12
- *
13
- * This source code is offered for use in the public domain. You may
14
- * use, modify or distribute it freely.
15
- *
16
- * This code is distributed in the hope that it will be useful but
17
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18
- * DISCLAIMED. This includes but is not limited to warranties of
19
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20
- *
21
- * $Revision: 1.2 $
22
- * $Author: bellard $
23
- * $Date: 2005/04/17 13:14:29 $
24
- *
25
- */
26
-
27
- #ifndef _SIGNAL_H_
28
- #define _SIGNAL_H_
29
-
30
- /* All the headers include this file. */
31
- #include <_mingw.h>
32
-
33
- /*
34
- * The actual signal values. Using other values with signal
35
- * produces a SIG_ERR return value.
36
- *
37
- * NOTE: SIGINT is produced when the user presses Ctrl-C.
38
- * SIGILL has not been tested.
39
- * SIGFPE doesn't seem to work?
40
- * SIGSEGV does not catch writing to a NULL pointer (that shuts down
41
- * your app; can you say "segmentation violation core dump"?).
42
- * SIGTERM comes from what kind of termination request exactly?
43
- * SIGBREAK is indeed produced by pressing Ctrl-Break.
44
- * SIGABRT is produced by calling abort.
45
- * TODO: The above results may be related to not installing an appropriate
46
- * structured exception handling frame. Results may be better if I ever
47
- * manage to get the SEH stuff down.
48
- */
49
- #define SIGINT 2 /* Interactive attention */
50
- #define SIGILL 4 /* Illegal instruction */
51
- #define SIGFPE 8 /* Floating point error */
52
- #define SIGSEGV 11 /* Segmentation violation */
53
- #define SIGTERM 15 /* Termination request */
54
- #define SIGBREAK 21 /* Control-break */
55
- #define SIGABRT 22 /* Abnormal termination (abort) */
56
-
57
- #define NSIG 23 /* maximum signal number + 1 */
58
-
59
- #ifndef RC_INVOKED
60
-
61
- #ifndef _SIG_ATOMIC_T_DEFINED
62
- typedef int sig_atomic_t;
63
- #define _SIG_ATOMIC_T_DEFINED
64
- #endif
65
-
66
- /*
67
- * The prototypes (below) are the easy part. The hard part is figuring
68
- * out what signals are available and what numbers they are assigned
69
- * along with appropriate values of SIG_DFL and SIG_IGN.
70
- */
71
-
72
- /*
73
- * A pointer to a signal handler function. A signal handler takes a
74
- * single int, which is the signal it handles.
75
- */
76
- typedef void (*__p_sig_fn_t)(int);
77
-
78
- /*
79
- * These are special values of signal handler pointers which are
80
- * used to send a signal to the default handler (SIG_DFL), ignore
81
- * the signal (SIG_IGN), or indicate an error return (SIG_ERR).
82
- */
83
- #define SIG_DFL ((__p_sig_fn_t) 0)
84
- #define SIG_IGN ((__p_sig_fn_t) 1)
85
- #define SIG_ERR ((__p_sig_fn_t) -1)
86
-
87
- #ifdef __cplusplus
88
- extern "C" {
89
- #endif
90
-
91
- /*
92
- * Call signal to set the signal handler for signal sig to the
93
- * function pointed to by handler. Returns a pointer to the
94
- * previous handler, or SIG_ERR if an error occurs. Initially
95
- * unhandled signals defined above will return SIG_DFL.
96
- */
97
- __p_sig_fn_t signal(int, __p_sig_fn_t);
98
-
99
- /*
100
- * Raise the signal indicated by sig. Returns non-zero on success.
101
- */
102
- int raise (int);
103
-
104
- #ifdef __cplusplus
105
- }
106
- #endif
107
-
108
- #endif /* Not RC_INVOKED */
109
-
110
- #endif /* Not _SIGNAL_H_ */
111
-
1
+ /*
2
+ * signal.h
3
+ *
4
+ * A way to set handlers for exceptional conditions (also known as signals).
5
+ *
6
+ * This file is part of the Mingw32 package.
7
+ *
8
+ * Contributors:
9
+ * Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
10
+ *
11
+ * THIS SOFTWARE IS NOT COPYRIGHTED
12
+ *
13
+ * This source code is offered for use in the public domain. You may
14
+ * use, modify or distribute it freely.
15
+ *
16
+ * This code is distributed in the hope that it will be useful but
17
+ * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18
+ * DISCLAIMED. This includes but is not limited to warranties of
19
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20
+ *
21
+ * $Revision: 1.2 $
22
+ * $Author: bellard $
23
+ * $Date: 2005/04/17 13:14:29 $
24
+ *
25
+ */
26
+
27
+ #ifndef _SIGNAL_H_
28
+ #define _SIGNAL_H_
29
+
30
+ /* All the headers include this file. */
31
+ #include <_mingw.h>
32
+
33
+ /*
34
+ * The actual signal values. Using other values with signal
35
+ * produces a SIG_ERR return value.
36
+ *
37
+ * NOTE: SIGINT is produced when the user presses Ctrl-C.
38
+ * SIGILL has not been tested.
39
+ * SIGFPE doesn't seem to work?
40
+ * SIGSEGV does not catch writing to a NULL pointer (that shuts down
41
+ * your app; can you say "segmentation violation core dump"?).
42
+ * SIGTERM comes from what kind of termination request exactly?
43
+ * SIGBREAK is indeed produced by pressing Ctrl-Break.
44
+ * SIGABRT is produced by calling abort.
45
+ * TODO: The above results may be related to not installing an appropriate
46
+ * structured exception handling frame. Results may be better if I ever
47
+ * manage to get the SEH stuff down.
48
+ */
49
+ #define SIGINT 2 /* Interactive attention */
50
+ #define SIGILL 4 /* Illegal instruction */
51
+ #define SIGFPE 8 /* Floating point error */
52
+ #define SIGSEGV 11 /* Segmentation violation */
53
+ #define SIGTERM 15 /* Termination request */
54
+ #define SIGBREAK 21 /* Control-break */
55
+ #define SIGABRT 22 /* Abnormal termination (abort) */
56
+
57
+ #define NSIG 23 /* maximum signal number + 1 */
58
+
59
+ #ifndef RC_INVOKED
60
+
61
+ #ifndef _SIG_ATOMIC_T_DEFINED
62
+ typedef int sig_atomic_t;
63
+ #define _SIG_ATOMIC_T_DEFINED
64
+ #endif
65
+
66
+ /*
67
+ * The prototypes (below) are the easy part. The hard part is figuring
68
+ * out what signals are available and what numbers they are assigned
69
+ * along with appropriate values of SIG_DFL and SIG_IGN.
70
+ */
71
+
72
+ /*
73
+ * A pointer to a signal handler function. A signal handler takes a
74
+ * single int, which is the signal it handles.
75
+ */
76
+ typedef void (*__p_sig_fn_t)(int);
77
+
78
+ /*
79
+ * These are special values of signal handler pointers which are
80
+ * used to send a signal to the default handler (SIG_DFL), ignore
81
+ * the signal (SIG_IGN), or indicate an error return (SIG_ERR).
82
+ */
83
+ #define SIG_DFL ((__p_sig_fn_t) 0)
84
+ #define SIG_IGN ((__p_sig_fn_t) 1)
85
+ #define SIG_ERR ((__p_sig_fn_t) -1)
86
+
87
+ #ifdef __cplusplus
88
+ extern "C" {
89
+ #endif
90
+
91
+ /*
92
+ * Call signal to set the signal handler for signal sig to the
93
+ * function pointed to by handler. Returns a pointer to the
94
+ * previous handler, or SIG_ERR if an error occurs. Initially
95
+ * unhandled signals defined above will return SIG_DFL.
96
+ */
97
+ __p_sig_fn_t signal(int, __p_sig_fn_t);
98
+
99
+ /*
100
+ * Raise the signal indicated by sig. Returns non-zero on success.
101
+ */
102
+ int raise (int);
103
+
104
+ #ifdef __cplusplus
105
+ }
106
+ #endif
107
+
108
+ #endif /* Not RC_INVOKED */
109
+
110
+ #endif /* Not _SIGNAL_H_ */
111
+
@@ -1,16 +1,16 @@
1
- #ifndef _STDARG_H
2
- #define _STDARG_H
3
-
4
- typedef char *va_list;
5
-
6
- /* only correct for i386 */
7
- #define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3)
8
- #define va_arg(ap,type) (ap += (sizeof(type)+3)&~3, *(type *)(ap - ((sizeof(type)+3)&~3)))
9
- #define va_copy(dest, src) (dest) = (src)
10
- #define va_end(ap)
11
-
12
- /* fix a buggy dependency on GCC in libio.h */
13
- typedef va_list __gnuc_va_list;
14
- #define _VA_LIST_DEFINED
15
-
16
- #endif
1
+ #ifndef _STDARG_H
2
+ #define _STDARG_H
3
+
4
+ typedef char *va_list;
5
+
6
+ /* only correct for i386 */
7
+ #define va_start(ap,last) ap = ((char *)&(last)) + ((sizeof(last)+3)&~3)
8
+ #define va_arg(ap,type) (ap += (sizeof(type)+3)&~3, *(type *)(ap - ((sizeof(type)+3)&~3)))
9
+ #define va_copy(dest, src) (dest) = (src)
10
+ #define va_end(ap)
11
+
12
+ /* fix a buggy dependency on GCC in libio.h */
13
+ typedef va_list __gnuc_va_list;
14
+ #define _VA_LIST_DEFINED
15
+
16
+ #endif
@@ -1,10 +1,10 @@
1
- #ifndef _STDBOOL_H
2
- #define _STDBOOL_H
3
-
4
- /* ISOC99 boolean */
5
-
6
- #define bool _Bool
7
- #define true 1
8
- #define false 0
9
-
10
- #endif /* _STDBOOL_H */
1
+ #ifndef _STDBOOL_H
2
+ #define _STDBOOL_H
3
+
4
+ /* ISOC99 boolean */
5
+
6
+ #define bool _Bool
7
+ #define true 1
8
+ #define false 0
9
+
10
+ #endif /* _STDBOOL_H */
@@ -1,26 +1,26 @@
1
- #ifndef _STDDEF_H
2
- #define _STDDEF_H
3
-
4
- #define NULL ((void *)0)
5
- typedef __SIZE_TYPE__ size_t;
6
- typedef __WCHAR_TYPE__ wchar_t;
7
- typedef __PTRDIFF_TYPE__ ptrdiff_t;
8
- #define offsetof(type, field) ((size_t) &((type *)0)->field)
9
-
10
- /* need to do that because of glibc 2.1 bug (should have a way to test
11
- presence of 'long long' without __GNUC__, or TCC should define
12
- __GNUC__ ? */
13
- #if !defined(__int8_t_defined) && !defined(__dietlibc__)
14
- #define __int8_t_defined
15
- typedef char int8_t;
16
- typedef short int int16_t;
17
- typedef int int32_t;
18
- typedef long long int int64_t;
19
- #endif
20
-
21
- #ifdef __i386__
22
- void *_alloca(size_t);
23
- #define alloca _alloca
24
- #endif
25
-
26
- #endif
1
+ #ifndef _STDDEF_H
2
+ #define _STDDEF_H
3
+
4
+ #define NULL ((void *)0)
5
+ typedef __SIZE_TYPE__ size_t;
6
+ typedef __WCHAR_TYPE__ wchar_t;
7
+ typedef __PTRDIFF_TYPE__ ptrdiff_t;
8
+ #define offsetof(type, field) ((size_t) &((type *)0)->field)
9
+
10
+ /* need to do that because of glibc 2.1 bug (should have a way to test
11
+ presence of 'long long' without __GNUC__, or TCC should define
12
+ __GNUC__ ? */
13
+ #if !defined(__int8_t_defined) && !defined(__dietlibc__)
14
+ #define __int8_t_defined
15
+ typedef char int8_t;
16
+ typedef short int int16_t;
17
+ typedef int int32_t;
18
+ typedef long long int int64_t;
19
+ #endif
20
+
21
+ #ifdef __i386__
22
+ void *_alloca(size_t);
23
+ #define alloca _alloca
24
+ #endif
25
+
26
+ #endif