1
// Copyright 2024 Moonbeam foundation
2
// This file is part of Moonbeam.
3

            
4
// Moonbeam is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8

            
9
// Moonbeam is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13

            
14
// You should have received a copy of the GNU General Public License
15
// along with Moonbeam.  If not, see <http://www.gnu.org/licenses/>.
16

            
17
//! Autogenerated weights for `pallet_xcm`
18
//!
19
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 42.0.0
20
//! DATE: 2024-10-10, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
21
//! WORST CASE MAP SIZE: `1000000`
22
//! HOSTNAME: `ip-10-0-0-176`, CPU: `Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz`
23
//! WASM-EXECUTION: Compiled, CHAIN: Some("moonbase-dev"), DB CACHE: 1024
24

            
25
// Executed Command:
26
// ./target/production/moonbeam
27
// benchmark
28
// pallet
29
// --chain=moonbase-dev
30
// --steps=50
31
// --repeat=20
32
// --pallet=pallet_xcm
33
// --extrinsic=*
34
// --wasm-execution=compiled
35
// --header=./file_header.txt
36
// --template=./benchmarking/frame-weight-template.hbs
37
// --output=./runtime/common/src/weights/
38

            
39
#![cfg_attr(rustfmt, rustfmt_skip)]
40
#![allow(unused_parens)]
41
#![allow(unused_imports)]
42

            
43
use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
44
use sp_std::marker::PhantomData;
45

            
46
/// Weights for `pallet_xcm`.
47
pub struct WeightInfo<T>(PhantomData<T>);
48
impl<T: frame_system::Config> pallet_xcm::WeightInfo for WeightInfo<T> {
49
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
50
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
51
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
52
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
53
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
54
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
55
	/// Storage: `ParachainSystem::HostConfiguration` (r:1 w:0)
56
	/// Proof: `ParachainSystem::HostConfiguration` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
57
	/// Storage: `ParachainSystem::PendingUpwardMessages` (r:1 w:1)
58
	/// Proof: `ParachainSystem::PendingUpwardMessages` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
59
	fn send() -> Weight {
60
		// Proof Size summary in bytes:
61
		//  Measured:  `145`
62
		//  Estimated: `3610`
63
		// Minimum execution time: 19_042_000 picoseconds.
64
		Weight::from_parts(19_413_000, 3610)
65
			.saturating_add(T::DbWeight::get().reads(5_u64))
66
			.saturating_add(T::DbWeight::get().writes(2_u64))
67
	}
68
	/// Storage: `Benchmark::Override` (r:0 w:0)
69
	/// Proof: `Benchmark::Override` (`max_values`: None, `max_size`: None, mode: `Measured`)
70
	fn teleport_assets() -> Weight {
71
		// Proof Size summary in bytes:
72
		//  Measured:  `0`
73
		//  Estimated: `0`
74
		// Minimum execution time: 18_446_744_073_709_551_000 picoseconds.
75
		Weight::from_parts(18_446_744_073_709_551_000, 0)
76
	}
77
	/// Storage: `PolkadotXcm::ShouldRecordXcm` (r:1 w:0)
78
	/// Proof: `PolkadotXcm::ShouldRecordXcm` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
79
	/// Storage: `System::Account` (r:1 w:1)
80
	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`)
81
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
82
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
83
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
84
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
85
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
86
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
87
	/// Storage: `ParachainSystem::RelevantMessagingState` (r:1 w:0)
88
	/// Proof: `ParachainSystem::RelevantMessagingState` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
89
	/// Storage: `XcmpQueue::OutboundXcmpStatus` (r:1 w:1)
90
	/// Proof: `XcmpQueue::OutboundXcmpStatus` (`max_values`: Some(1), `max_size`: Some(1282), added: 1777, mode: `MaxEncodedLen`)
91
	/// Storage: `XcmpQueue::OutboundXcmpMessages` (r:0 w:1)
92
	/// Proof: `XcmpQueue::OutboundXcmpMessages` (`max_values`: None, `max_size`: Some(105506), added: 107981, mode: `MaxEncodedLen`)
93
	fn reserve_transfer_assets() -> Weight {
94
		// Proof Size summary in bytes:
95
		//  Measured:  `519`
96
		//  Estimated: `3984`
97
		// Minimum execution time: 88_374_000 picoseconds.
98
		Weight::from_parts(89_856_000, 3984)
99
			.saturating_add(T::DbWeight::get().reads(7_u64))
100
			.saturating_add(T::DbWeight::get().writes(4_u64))
101
	}
102
	/// Storage: `PolkadotXcm::ShouldRecordXcm` (r:1 w:0)
103
	/// Proof: `PolkadotXcm::ShouldRecordXcm` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
104
	/// Storage: `System::Account` (r:1 w:1)
105
	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(116), added: 2591, mode: `MaxEncodedLen`)
106
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
107
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
108
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
109
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
110
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
111
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
112
	/// Storage: `ParachainSystem::HostConfiguration` (r:1 w:0)
113
	/// Proof: `ParachainSystem::HostConfiguration` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
114
	/// Storage: `ParachainSystem::PendingUpwardMessages` (r:1 w:1)
115
	/// Proof: `ParachainSystem::PendingUpwardMessages` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
116
52
	fn transfer_assets() -> Weight {
117
52
		// Proof Size summary in bytes:
118
52
		//  Measured:  `217`
119
52
		//  Estimated: `3682`
120
52
		// Minimum execution time: 79_196_000 picoseconds.
121
52
		Weight::from_parts(81_249_000, 3682)
122
52
			.saturating_add(T::DbWeight::get().reads(7_u64))
123
52
			.saturating_add(T::DbWeight::get().writes(3_u64))
124
52
	}
125
	/// Storage: `PolkadotXcm::ShouldRecordXcm` (r:1 w:0)
126
	/// Proof: `PolkadotXcm::ShouldRecordXcm` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
127
	fn execute() -> Weight {
128
		// Proof Size summary in bytes:
129
		//  Measured:  `69`
130
		//  Estimated: `1554`
131
		// Minimum execution time: 9_650_000 picoseconds.
132
		Weight::from_parts(9_992_000, 1554)
133
			.saturating_add(T::DbWeight::get().reads(1_u64))
134
	}
135
	/// Storage: `PolkadotXcm::SupportedVersion` (r:0 w:1)
136
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
137
	fn force_xcm_version() -> Weight {
138
		// Proof Size summary in bytes:
139
		//  Measured:  `0`
140
		//  Estimated: `0`
141
		// Minimum execution time: 6_475_000 picoseconds.
142
		Weight::from_parts(6_696_000, 0)
143
			.saturating_add(T::DbWeight::get().writes(1_u64))
144
	}
145
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:0 w:1)
146
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
147
	fn force_default_xcm_version() -> Weight {
148
		// Proof Size summary in bytes:
149
		//  Measured:  `0`
150
		//  Estimated: `0`
151
		// Minimum execution time: 1_918_000 picoseconds.
152
		Weight::from_parts(2_054_000, 0)
153
			.saturating_add(T::DbWeight::get().writes(1_u64))
154
	}
155
	/// Storage: `PolkadotXcm::VersionNotifiers` (r:1 w:1)
156
	/// Proof: `PolkadotXcm::VersionNotifiers` (`max_values`: None, `max_size`: None, mode: `Measured`)
157
	/// Storage: `PolkadotXcm::QueryCounter` (r:1 w:1)
158
	/// Proof: `PolkadotXcm::QueryCounter` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
159
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
160
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
161
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
162
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
163
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
164
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
165
	/// Storage: `ParachainSystem::HostConfiguration` (r:1 w:0)
166
	/// Proof: `ParachainSystem::HostConfiguration` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
167
	/// Storage: `ParachainSystem::PendingUpwardMessages` (r:1 w:1)
168
	/// Proof: `ParachainSystem::PendingUpwardMessages` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
169
	/// Storage: `PolkadotXcm::Queries` (r:0 w:1)
170
	/// Proof: `PolkadotXcm::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`)
171
	fn force_subscribe_version_notify() -> Weight {
172
		// Proof Size summary in bytes:
173
		//  Measured:  `145`
174
		//  Estimated: `3610`
175
		// Minimum execution time: 24_728_000 picoseconds.
176
		Weight::from_parts(25_317_000, 3610)
177
			.saturating_add(T::DbWeight::get().reads(7_u64))
178
			.saturating_add(T::DbWeight::get().writes(5_u64))
179
	}
180
	/// Storage: `PolkadotXcm::VersionNotifiers` (r:1 w:1)
181
	/// Proof: `PolkadotXcm::VersionNotifiers` (`max_values`: None, `max_size`: None, mode: `Measured`)
182
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
183
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
184
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
185
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
186
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
187
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
188
	/// Storage: `ParachainSystem::HostConfiguration` (r:1 w:0)
189
	/// Proof: `ParachainSystem::HostConfiguration` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
190
	/// Storage: `ParachainSystem::PendingUpwardMessages` (r:1 w:1)
191
	/// Proof: `ParachainSystem::PendingUpwardMessages` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
192
	/// Storage: `PolkadotXcm::Queries` (r:0 w:1)
193
	/// Proof: `PolkadotXcm::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`)
194
	fn force_unsubscribe_version_notify() -> Weight {
195
		// Proof Size summary in bytes:
196
		//  Measured:  `328`
197
		//  Estimated: `3793`
198
		// Minimum execution time: 26_048_000 picoseconds.
199
		Weight::from_parts(26_349_000, 3793)
200
			.saturating_add(T::DbWeight::get().reads(6_u64))
201
			.saturating_add(T::DbWeight::get().writes(4_u64))
202
	}
203
	/// Storage: `PolkadotXcm::XcmExecutionSuspended` (r:0 w:1)
204
	/// Proof: `PolkadotXcm::XcmExecutionSuspended` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
205
	fn force_suspension() -> Weight {
206
		// Proof Size summary in bytes:
207
		//  Measured:  `0`
208
		//  Estimated: `0`
209
		// Minimum execution time: 1_927_000 picoseconds.
210
		Weight::from_parts(2_087_000, 0)
211
			.saturating_add(T::DbWeight::get().writes(1_u64))
212
	}
213
	/// Storage: `PolkadotXcm::SupportedVersion` (r:5 w:2)
214
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
215
	fn migrate_supported_version() -> Weight {
216
		// Proof Size summary in bytes:
217
		//  Measured:  `125`
218
		//  Estimated: `13490`
219
		// Minimum execution time: 26_137_000 picoseconds.
220
		Weight::from_parts(26_716_000, 13490)
221
			.saturating_add(T::DbWeight::get().reads(5_u64))
222
			.saturating_add(T::DbWeight::get().writes(2_u64))
223
	}
224
	/// Storage: `PolkadotXcm::VersionNotifiers` (r:5 w:2)
225
	/// Proof: `PolkadotXcm::VersionNotifiers` (`max_values`: None, `max_size`: None, mode: `Measured`)
226
	fn migrate_version_notifiers() -> Weight {
227
		// Proof Size summary in bytes:
228
		//  Measured:  `129`
229
		//  Estimated: `13494`
230
		// Minimum execution time: 26_263_000 picoseconds.
231
		Weight::from_parts(26_632_000, 13494)
232
			.saturating_add(T::DbWeight::get().reads(5_u64))
233
			.saturating_add(T::DbWeight::get().writes(2_u64))
234
	}
235
	/// Storage: `PolkadotXcm::VersionNotifyTargets` (r:6 w:0)
236
	/// Proof: `PolkadotXcm::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
237
	fn already_notified_target() -> Weight {
238
		// Proof Size summary in bytes:
239
		//  Measured:  `178`
240
		//  Estimated: `16018`
241
		// Minimum execution time: 32_203_000 picoseconds.
242
		Weight::from_parts(33_363_000, 16018)
243
			.saturating_add(T::DbWeight::get().reads(6_u64))
244
	}
245
	/// Storage: `PolkadotXcm::VersionNotifyTargets` (r:2 w:1)
246
	/// Proof: `PolkadotXcm::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
247
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
248
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
249
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
250
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
251
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
252
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
253
	/// Storage: `ParachainSystem::HostConfiguration` (r:1 w:0)
254
	/// Proof: `ParachainSystem::HostConfiguration` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
255
	/// Storage: `ParachainSystem::PendingUpwardMessages` (r:1 w:1)
256
	/// Proof: `ParachainSystem::PendingUpwardMessages` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
257
	fn notify_current_targets() -> Weight {
258
		// Proof Size summary in bytes:
259
		//  Measured:  `212`
260
		//  Estimated: `6152`
261
		// Minimum execution time: 26_635_000 picoseconds.
262
		Weight::from_parts(27_070_000, 6152)
263
			.saturating_add(T::DbWeight::get().reads(7_u64))
264
			.saturating_add(T::DbWeight::get().writes(3_u64))
265
	}
266
	/// Storage: `PolkadotXcm::VersionNotifyTargets` (r:4 w:0)
267
	/// Proof: `PolkadotXcm::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
268
	fn notify_target_migration_fail() -> Weight {
269
		// Proof Size summary in bytes:
270
		//  Measured:  `139`
271
		//  Estimated: `11029`
272
		// Minimum execution time: 19_271_000 picoseconds.
273
		Weight::from_parts(19_750_000, 11029)
274
			.saturating_add(T::DbWeight::get().reads(4_u64))
275
	}
276
	/// Storage: `PolkadotXcm::VersionNotifyTargets` (r:5 w:2)
277
	/// Proof: `PolkadotXcm::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
278
	fn migrate_version_notify_targets() -> Weight {
279
		// Proof Size summary in bytes:
280
		//  Measured:  `136`
281
		//  Estimated: `13501`
282
		// Minimum execution time: 26_793_000 picoseconds.
283
		Weight::from_parts(27_041_000, 13501)
284
			.saturating_add(T::DbWeight::get().reads(5_u64))
285
			.saturating_add(T::DbWeight::get().writes(2_u64))
286
	}
287
	/// Storage: `PolkadotXcm::VersionNotifyTargets` (r:5 w:2)
288
	/// Proof: `PolkadotXcm::VersionNotifyTargets` (`max_values`: None, `max_size`: None, mode: `Measured`)
289
	/// Storage: `PolkadotXcm::SupportedVersion` (r:1 w:0)
290
	/// Proof: `PolkadotXcm::SupportedVersion` (`max_values`: None, `max_size`: None, mode: `Measured`)
291
	/// Storage: `PolkadotXcm::VersionDiscoveryQueue` (r:1 w:1)
292
	/// Proof: `PolkadotXcm::VersionDiscoveryQueue` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
293
	/// Storage: `PolkadotXcm::SafeXcmVersion` (r:1 w:0)
294
	/// Proof: `PolkadotXcm::SafeXcmVersion` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
295
	/// Storage: `ParachainSystem::HostConfiguration` (r:1 w:0)
296
	/// Proof: `ParachainSystem::HostConfiguration` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
297
	/// Storage: `ParachainSystem::PendingUpwardMessages` (r:1 w:1)
298
	/// Proof: `ParachainSystem::PendingUpwardMessages` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
299
	fn migrate_and_notify_old_targets() -> Weight {
300
		// Proof Size summary in bytes:
301
		//  Measured:  `212`
302
		//  Estimated: `13577`
303
		// Minimum execution time: 40_286_000 picoseconds.
304
		Weight::from_parts(41_933_000, 13577)
305
			.saturating_add(T::DbWeight::get().reads(10_u64))
306
			.saturating_add(T::DbWeight::get().writes(4_u64))
307
	}
308
	/// Storage: `PolkadotXcm::QueryCounter` (r:1 w:1)
309
	/// Proof: `PolkadotXcm::QueryCounter` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
310
	/// Storage: `PolkadotXcm::Queries` (r:0 w:1)
311
	/// Proof: `PolkadotXcm::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`)
312
	fn new_query() -> Weight {
313
		// Proof Size summary in bytes:
314
		//  Measured:  `69`
315
		//  Estimated: `1554`
316
		// Minimum execution time: 4_114_000 picoseconds.
317
		Weight::from_parts(4_338_000, 1554)
318
			.saturating_add(T::DbWeight::get().reads(1_u64))
319
			.saturating_add(T::DbWeight::get().writes(2_u64))
320
	}
321
	/// Storage: `PolkadotXcm::Queries` (r:1 w:1)
322
	/// Proof: `PolkadotXcm::Queries` (`max_values`: None, `max_size`: None, mode: `Measured`)
323
	fn take_response() -> Weight {
324
		// Proof Size summary in bytes:
325
		//  Measured:  `7706`
326
		//  Estimated: `11171`
327
		// Minimum execution time: 25_456_000 picoseconds.
328
		Weight::from_parts(25_962_000, 11171)
329
			.saturating_add(T::DbWeight::get().reads(1_u64))
330
			.saturating_add(T::DbWeight::get().writes(1_u64))
331
	}
332
	/// Storage: `PolkadotXcm::ShouldRecordXcm` (r:1 w:0)
333
	/// Proof: `PolkadotXcm::ShouldRecordXcm` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
334
	/// Storage: `PolkadotXcm::AssetTraps` (r:1 w:1)
335
	/// Proof: `PolkadotXcm::AssetTraps` (`max_values`: None, `max_size`: None, mode: `Measured`)
336
	fn claim_assets() -> Weight {
337
		// Proof Size summary in bytes:
338
		//  Measured:  `126`
339
		//  Estimated: `3591`
340
		// Minimum execution time: 38_680_000 picoseconds.
341
		Weight::from_parts(39_600_000, 3591)
342
			.saturating_add(T::DbWeight::get().reads(2_u64))
343
			.saturating_add(T::DbWeight::get().writes(1_u64))
344
	}
345
}