line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
##---------------------------------------------------------------------------- |
2
|
|
|
|
|
|
|
## Stripe API - ~/lib/Net/API/Stripe/Payment/Settings.pm |
3
|
|
|
|
|
|
|
## Version v0.1.0 |
4
|
|
|
|
|
|
|
## Copyright(c) 2022 DEGUEST Pte. Ltd. |
5
|
|
|
|
|
|
|
## Author: Jacques Deguest <jack@deguest.jp> |
6
|
|
|
|
|
|
|
## Created 2022/07/15 |
7
|
|
|
|
|
|
|
## Modified 2022/07/15 |
8
|
|
|
|
|
|
|
## All rights reserved. |
9
|
|
|
|
|
|
|
## |
10
|
|
|
|
|
|
|
## |
11
|
|
|
|
|
|
|
## This program is free software; you can redistribute it and/or modify it |
12
|
|
|
|
|
|
|
## under the same terms as Perl itself. |
13
|
|
|
|
|
|
|
##---------------------------------------------------------------------------- |
14
|
|
|
|
|
|
|
BEGIN |
15
|
|
|
|
|
|
|
{ |
16
|
|
|
|
|
|
|
use strict; |
17
|
1
|
|
|
1
|
|
1637
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
34
|
|
18
|
1
|
|
|
1
|
|
6
|
use parent qw( Net::API::Stripe::Generic ); |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
31
|
|
19
|
1
|
|
|
1
|
|
5
|
use vars qw( $VERSION ); |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
6
|
|
20
|
1
|
|
|
1
|
|
72
|
our $VERSION = 'v0.1.0'; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
62
|
|
21
|
1
|
|
|
1
|
|
20
|
}; |
22
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
use strict; |
24
|
1
|
|
|
1
|
|
6
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
32
|
|
25
|
1
|
|
|
1
|
|
7
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
118
|
|
26
|
|
|
|
|
|
|
|
27
|
0
|
|
|
0
|
0
|
|
|
28
|
|
|
|
|
|
|
|
29
|
0
|
|
|
0
|
1
|
|
1; |
30
|
|
|
|
|
|
|
# NOTE: POD |
31
|
0
|
|
|
0
|
1
|
|
|
32
|
|
|
|
|
|
|
=encoding utf-8 |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
=head1 NAME |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
Net::API::Stripe::Payment::Settings - Stripe API |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
=head1 SYNOPSIS |
39
|
|
|
|
|
|
|
|
40
|
|
|
|
|
|
|
use Net::API::Stripe::Payment::Settings; |
41
|
|
|
|
|
|
|
my $this = Net::API::Stripe::Payment::Settings->new || die( Net::API::Stripe::Payment::Settings->error, "\n" ); |
42
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
=head1 VERSION |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
v0.1.0 |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
=head1 DESCRIPTION |
48
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
Configuration settings for the PaymentIntent that is generated when the invoice is finalized. |
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
=head1 METHODS |
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
=head2 payment_method_options |
54
|
|
|
|
|
|
|
|
55
|
|
|
|
|
|
|
Payment-method-specific configuration to provide to the invoice’s PaymentIntent. |
56
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
=over 4 |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
=item * C<acss_debit> hash |
60
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
If paying by acss_debit, this sub-hash contains details about the Canadian pre-authorized debit payment method options to pass to the invoice’s PaymentIntent. |
62
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
=over 8 |
64
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
=item * C<mandate_options> hash |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
Additional fields for Mandate creation |
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
=item * C<verification_method> enum |
70
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
Bank account verification method. |
72
|
|
|
|
|
|
|
|
73
|
|
|
|
|
|
|
Possible enum values |
74
|
|
|
|
|
|
|
|
75
|
|
|
|
|
|
|
=over 12 |
76
|
|
|
|
|
|
|
|
77
|
|
|
|
|
|
|
=item * C<automatic> |
78
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
Instant verification with fallback to microdeposits. |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
=item * Cinstant> |
82
|
|
|
|
|
|
|
|
83
|
|
|
|
|
|
|
Instant verification. |
84
|
|
|
|
|
|
|
|
85
|
|
|
|
|
|
|
=item * Cmicrodeposits> |
86
|
|
|
|
|
|
|
|
87
|
|
|
|
|
|
|
Verification using microdeposits. |
88
|
|
|
|
|
|
|
|
89
|
|
|
|
|
|
|
=back |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
=back |
92
|
|
|
|
|
|
|
|
93
|
|
|
|
|
|
|
=item * C<bancontact> hash |
94
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
If paying by bancontact, this sub-hash contains details about the Bancontact payment method options to pass to the invoice’s PaymentIntent. |
96
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
=over 8 |
98
|
|
|
|
|
|
|
|
99
|
|
|
|
|
|
|
=item * C<preferred_language> enum |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
Preferred language of the Bancontact authorization page that the customer is redirected to. |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
Possible enum values |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
=over 12 |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
=item * C<en> |
108
|
|
|
|
|
|
|
|
109
|
|
|
|
|
|
|
English |
110
|
|
|
|
|
|
|
|
111
|
|
|
|
|
|
|
=item * C<de> |
112
|
|
|
|
|
|
|
|
113
|
|
|
|
|
|
|
German |
114
|
|
|
|
|
|
|
|
115
|
|
|
|
|
|
|
=item * C<fr> |
116
|
|
|
|
|
|
|
|
117
|
|
|
|
|
|
|
French |
118
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
=item * C<nl> |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
Dutch |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
=back |
124
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
=back |
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
=item * C<card> hash |
128
|
|
|
|
|
|
|
|
129
|
|
|
|
|
|
|
If paying by card, this sub-hash contains details about the Card payment method options to pass to the invoice’s PaymentIntent. |
130
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
=over 8 |
132
|
|
|
|
|
|
|
|
133
|
|
|
|
|
|
|
=item * C<request_three_d_secure> enum advanced |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and other requirements. However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on manually requesting 3D Secure for more information on how this configuration interacts with Radar and our SCA Engine. |
136
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
Possible enum values |
138
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
=over 12 |
140
|
|
|
|
|
|
|
|
141
|
|
|
|
|
|
|
=item * C<automatic> |
142
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
Triggers 3D Secure authentication only if it is required. |
144
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
=item * C<any> |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
Requires 3D Secure authentication if it is available. |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
=back |
150
|
|
|
|
|
|
|
|
151
|
|
|
|
|
|
|
=back |
152
|
|
|
|
|
|
|
|
153
|
|
|
|
|
|
|
=item * C<customer_balance> hash |
154
|
|
|
|
|
|
|
|
155
|
|
|
|
|
|
|
If paying by customer_balance, this sub-hash contains details about the Bank transfer payment method options to pass to the invoice’s PaymentIntent. |
156
|
|
|
|
|
|
|
|
157
|
|
|
|
|
|
|
=over 8 |
158
|
|
|
|
|
|
|
|
159
|
|
|
|
|
|
|
=item * C<bank_transfer> hash |
160
|
|
|
|
|
|
|
|
161
|
|
|
|
|
|
|
Configuration for the bank transfer funding type, if the funding_type is set to bank_transfer. |
162
|
|
|
|
|
|
|
|
163
|
|
|
|
|
|
|
=over 12 |
164
|
|
|
|
|
|
|
|
165
|
|
|
|
|
|
|
=item * C<eu_bank_transfer> hash preview feature |
166
|
|
|
|
|
|
|
|
167
|
|
|
|
|
|
|
Configuration for eu_bank_transfer funding type. |
168
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
=over 16 |
170
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
=item * C<country> string |
172
|
|
|
|
|
|
|
|
173
|
|
|
|
|
|
|
The desired country code of the bank account information. Permitted values include: DE, ES, FR, IE, or NL. |
174
|
|
|
|
|
|
|
|
175
|
|
|
|
|
|
|
=back |
176
|
|
|
|
|
|
|
|
177
|
|
|
|
|
|
|
=item * C<type> string |
178
|
|
|
|
|
|
|
|
179
|
|
|
|
|
|
|
The bank transfer type that can be used for funding. Permitted values include: C<eu_bank_transfer>, C<gb_bank_transfer>, C<jp_bank_transfer>, or C<mx_bank_transfer>. |
180
|
|
|
|
|
|
|
|
181
|
|
|
|
|
|
|
=back |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
=item * C<funding_type> string |
184
|
|
|
|
|
|
|
|
185
|
|
|
|
|
|
|
The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: bank_transfer. |
186
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
=back |
188
|
|
|
|
|
|
|
|
189
|
|
|
|
|
|
|
=item * C<konbini> hash |
190
|
|
|
|
|
|
|
|
191
|
|
|
|
|
|
|
If paying by konbini, this sub-hash contains details about the Konbini payment method options to pass to the invoice’s PaymentIntent. |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
=item * C<us_bank_account> hash |
194
|
|
|
|
|
|
|
|
195
|
|
|
|
|
|
|
If paying by us_bank_account, this sub-hash contains details about the ACH direct debit payment method options to pass to the invoice’s PaymentIntent. |
196
|
|
|
|
|
|
|
|
197
|
|
|
|
|
|
|
=over 8 |
198
|
|
|
|
|
|
|
|
199
|
|
|
|
|
|
|
=item * C<financial_connections> hash preview feature |
200
|
|
|
|
|
|
|
|
201
|
|
|
|
|
|
|
Additional fields for Financial Connections Session creation |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
=over 12 |
204
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
=item * C<permissions> array of enum values |
206
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
The list of permissions to request. The payment_method permission must be included. |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
Possible enum values |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
=over 16 |
212
|
|
|
|
|
|
|
|
213
|
|
|
|
|
|
|
=item * C<payment_method> |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
Allows the creation of a payment method from the account. |
216
|
|
|
|
|
|
|
|
217
|
|
|
|
|
|
|
=item * C<balances> |
218
|
|
|
|
|
|
|
|
219
|
|
|
|
|
|
|
Allows accessing balance data from the account. |
220
|
|
|
|
|
|
|
|
221
|
|
|
|
|
|
|
=item * C<transactions> |
222
|
|
|
|
|
|
|
|
223
|
|
|
|
|
|
|
Allows accessing transactions data from the account. |
224
|
|
|
|
|
|
|
|
225
|
|
|
|
|
|
|
=back |
226
|
|
|
|
|
|
|
|
227
|
|
|
|
|
|
|
=back |
228
|
|
|
|
|
|
|
|
229
|
|
|
|
|
|
|
=item * C<verification_method> enum |
230
|
|
|
|
|
|
|
|
231
|
|
|
|
|
|
|
Bank account verification method. |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
Possible enum values |
234
|
|
|
|
|
|
|
|
235
|
|
|
|
|
|
|
=over 12 |
236
|
|
|
|
|
|
|
|
237
|
|
|
|
|
|
|
=item * C<automatic> |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
Instant verification with fallback to microdeposits. |
240
|
|
|
|
|
|
|
|
241
|
|
|
|
|
|
|
=item * C<instant> |
242
|
|
|
|
|
|
|
|
243
|
|
|
|
|
|
|
Instant verification only. |
244
|
|
|
|
|
|
|
|
245
|
|
|
|
|
|
|
=item * C<microdeposits> |
246
|
|
|
|
|
|
|
|
247
|
|
|
|
|
|
|
Verification using microdeposits. Cannot be used with Stripe Checkout or Hosted Invoices. |
248
|
|
|
|
|
|
|
|
249
|
|
|
|
|
|
|
=back |
250
|
|
|
|
|
|
|
|
251
|
|
|
|
|
|
|
=back |
252
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
=back |
254
|
|
|
|
|
|
|
|
255
|
|
|
|
|
|
|
=head2 payment_method_types array of enum values |
256
|
|
|
|
|
|
|
|
257
|
|
|
|
|
|
|
The list of payment method types (e.g. card) to provide to the invoice’s PaymentIntent. If not set, Stripe attempts to automatically determine the types to use by looking at the invoice’s default payment method, the subscription’s default payment method, the customer’s default payment method, and your invoice template settings. |
258
|
|
|
|
|
|
|
|
259
|
|
|
|
|
|
|
Possible enum values |
260
|
|
|
|
|
|
|
|
261
|
|
|
|
|
|
|
=over 4 |
262
|
|
|
|
|
|
|
|
263
|
|
|
|
|
|
|
=item * C<ach_credit_transfer> USD only |
264
|
|
|
|
|
|
|
|
265
|
|
|
|
|
|
|
ACH bank transfer |
266
|
|
|
|
|
|
|
|
267
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
268
|
|
|
|
|
|
|
|
269
|
|
|
|
|
|
|
=item * C<ach_debit> USD only |
270
|
|
|
|
|
|
|
|
271
|
|
|
|
|
|
|
ACH |
272
|
|
|
|
|
|
|
|
273
|
|
|
|
|
|
|
=item * C<acss_debit> USD and CAD |
274
|
|
|
|
|
|
|
|
275
|
|
|
|
|
|
|
Canadian pre-authorized debit |
276
|
|
|
|
|
|
|
|
277
|
|
|
|
|
|
|
=item * C<au_becs_debit> AUD only |
278
|
|
|
|
|
|
|
|
279
|
|
|
|
|
|
|
BECS Direct Debit |
280
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
=item * C<bacs_debit> GBP only |
282
|
|
|
|
|
|
|
|
283
|
|
|
|
|
|
|
Bacs Direct Debit |
284
|
|
|
|
|
|
|
|
285
|
|
|
|
|
|
|
=item * C<bancontact> EUR only |
286
|
|
|
|
|
|
|
|
287
|
|
|
|
|
|
|
Bancontact |
288
|
|
|
|
|
|
|
|
289
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
290
|
|
|
|
|
|
|
|
291
|
|
|
|
|
|
|
=item * C<boleto> BRL only |
292
|
|
|
|
|
|
|
|
293
|
|
|
|
|
|
|
Boleto |
294
|
|
|
|
|
|
|
|
295
|
|
|
|
|
|
|
=item * C<card> |
296
|
|
|
|
|
|
|
|
297
|
|
|
|
|
|
|
Card |
298
|
|
|
|
|
|
|
|
299
|
|
|
|
|
|
|
=item * C<customer_balance> EUR, GBP, and 3 other currencies |
300
|
|
|
|
|
|
|
|
301
|
|
|
|
|
|
|
Bank transfer |
302
|
|
|
|
|
|
|
|
303
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
304
|
|
|
|
|
|
|
|
305
|
|
|
|
|
|
|
=item * C<eps> EUR only |
306
|
|
|
|
|
|
|
|
307
|
|
|
|
|
|
|
EPS |
308
|
|
|
|
|
|
|
|
309
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
=item * C<fpx> MYR only |
312
|
|
|
|
|
|
|
|
313
|
|
|
|
|
|
|
FPX |
314
|
|
|
|
|
|
|
|
315
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
316
|
|
|
|
|
|
|
|
317
|
|
|
|
|
|
|
=item * C<giropay> EUR only |
318
|
|
|
|
|
|
|
|
319
|
|
|
|
|
|
|
giropay |
320
|
|
|
|
|
|
|
|
321
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
322
|
|
|
|
|
|
|
|
323
|
|
|
|
|
|
|
=item * C<grabpay> MYR and SGD |
324
|
|
|
|
|
|
|
|
325
|
|
|
|
|
|
|
GrabPay |
326
|
|
|
|
|
|
|
|
327
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
328
|
|
|
|
|
|
|
|
329
|
|
|
|
|
|
|
=item * C<ideal> EUR only |
330
|
|
|
|
|
|
|
|
331
|
|
|
|
|
|
|
iDEAL |
332
|
|
|
|
|
|
|
|
333
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
334
|
|
|
|
|
|
|
|
335
|
|
|
|
|
|
|
=item * C<konbini> JPY only |
336
|
|
|
|
|
|
|
|
337
|
|
|
|
|
|
|
Konbini |
338
|
|
|
|
|
|
|
|
339
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
340
|
|
|
|
|
|
|
|
341
|
|
|
|
|
|
|
=item * C<link> USD only |
342
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
Link |
344
|
|
|
|
|
|
|
|
345
|
|
|
|
|
|
|
=item * C<p24> EUR and PLN |
346
|
|
|
|
|
|
|
|
347
|
|
|
|
|
|
|
Przelewy24 |
348
|
|
|
|
|
|
|
|
349
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
350
|
|
|
|
|
|
|
|
351
|
|
|
|
|
|
|
=item * C<paynow> SGD only |
352
|
|
|
|
|
|
|
|
353
|
|
|
|
|
|
|
PayNow |
354
|
|
|
|
|
|
|
|
355
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
356
|
|
|
|
|
|
|
|
357
|
|
|
|
|
|
|
=item * C<promptpay> THB only |
358
|
|
|
|
|
|
|
|
359
|
|
|
|
|
|
|
PromptPay |
360
|
|
|
|
|
|
|
|
361
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
362
|
|
|
|
|
|
|
|
363
|
|
|
|
|
|
|
=item * C<sepa_debit> EUR only |
364
|
|
|
|
|
|
|
|
365
|
|
|
|
|
|
|
SEPA Direct Debit |
366
|
|
|
|
|
|
|
|
367
|
|
|
|
|
|
|
=item * C<sofort> EUR only |
368
|
|
|
|
|
|
|
|
369
|
|
|
|
|
|
|
SOFORT |
370
|
|
|
|
|
|
|
|
371
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
372
|
|
|
|
|
|
|
|
373
|
|
|
|
|
|
|
=item * C<us_bank_account> USD only |
374
|
|
|
|
|
|
|
|
375
|
|
|
|
|
|
|
ACH direct debit |
376
|
|
|
|
|
|
|
|
377
|
|
|
|
|
|
|
=item * C<wechat_pay> USD, EUR, and 11 other currencies |
378
|
|
|
|
|
|
|
|
379
|
|
|
|
|
|
|
WeChat Pay |
380
|
|
|
|
|
|
|
|
381
|
|
|
|
|
|
|
The collection_method must be send_invoice. |
382
|
|
|
|
|
|
|
|
383
|
|
|
|
|
|
|
=back |
384
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
=head1 AUTHOR |
386
|
|
|
|
|
|
|
|
387
|
|
|
|
|
|
|
Jacques Deguest E<lt>F<jack@deguest.jp>E<gt> |
388
|
|
|
|
|
|
|
|
389
|
|
|
|
|
|
|
=head1 SEE ALSO |
390
|
|
|
|
|
|
|
|
391
|
|
|
|
|
|
|
L<https://stripe.com/docs/api/invoices/object> |
392
|
|
|
|
|
|
|
|
393
|
|
|
|
|
|
|
L<https://stripe.com/docs/api/subscriptions/object> |
394
|
|
|
|
|
|
|
|
395
|
|
|
|
|
|
|
=head1 COPYRIGHT & LICENSE |
396
|
|
|
|
|
|
|
|
397
|
|
|
|
|
|
|
Copyright(c) 2022 DEGUEST Pte. Ltd. |
398
|
|
|
|
|
|
|
|
399
|
|
|
|
|
|
|
All rights reserved. |
400
|
|
|
|
|
|
|
|
401
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. |
402
|
|
|
|
|
|
|
|
403
|
|
|
|
|
|
|
=cut |