From 2ef2fc0b72d889a7d1105f6cb535744d8b23bad4 Mon Sep 17 00:00:00 2001 From: Henrique Nogara Date: Tue, 16 Apr 2024 10:41:44 -0300 Subject: [PATCH] Mesh 2149/staking-pallet-update-part-1 (#1623) * Update to new macro * Add polymesh specific types * Add polymesh changes to extrinsics * Make methods and structs pub; Add slash impl * Add missing impl; Change visibility * Add new associated types * Fix tests; Change vec to BoundedVec; Change Module to Pallet * Add genesis build; Add hooks; Compile tests * Change storage to OptionQuery * Fix some tests * Compile benchmarks * Fix benchmark run * Fix warnings * Remove files * Remove warnings; Add benchmarks * Cargo fmt * Cargo fmt * Remove breaking changes; Fix integration tests * Fix integration tests * Use StorageMap instead of CountedMap; Add PolymeshStorageVersion * Fix test functions * Fix storage version check. * Remove old code; Move comment --------- Co-authored-by: Robert G. Jakabosky --- pallets/runtime/common/src/runtime.rs | 5 +- .../develop/src/benchmarks/pallet_session.rs | 14 +- pallets/runtime/tests/src/staking/mock.rs | 23 +- pallets/runtime/tests/src/staking/mod.rs | 165 +- pallets/staking/src/benchmarking.rs | 85 +- pallets/staking/src/inflation.rs | 15 +- pallets/staking/src/lib.rs | 3922 ++--------------- pallets/staking/src/migration.rs | 0 pallets/staking/src/offchain_election.rs | 47 +- pallets/staking/src/pallet/impls.rs | 1417 ++++++ pallets/staking/src/pallet/mod.rs | 2117 +++++++++ pallets/staking/src/rustfmt.toml | 1 - pallets/staking/src/slashing.rs | 428 +- pallets/staking/src/testing_utils.rs | 63 +- pallets/staking/src/types.rs | 152 + pallets/staking/src/weights.rs | 44 +- primitives/src/lib.rs | 3 +- scripts/check_storage_versions.sh | 2 +- scripts/cli/polymesh-meta.json | 2 +- .../cli/src/interfaces/augment-api-consts.ts | 63 +- .../cli/src/interfaces/augment-api-errors.ts | 123 +- .../cli/src/interfaces/augment-api-events.ts | 114 +- .../cli/src/interfaces/augment-api-query.ts | 127 +- scripts/cli/src/interfaces/augment-api-tx.ts | 632 +-- scripts/cli/src/interfaces/augment-types.ts | 8 +- scripts/cli/src/interfaces/default/types.ts | 37 +- scripts/cli/src/interfaces/definitions.ts | 2 +- scripts/cli/src/interfaces/lookup.ts | 832 ++-- scripts/cli/src/interfaces/registry.ts | 22 +- scripts/cli/src/interfaces/types-lookup.ts | 886 ++-- 30 files changed, 6349 insertions(+), 5002 deletions(-) create mode 100644 pallets/staking/src/migration.rs create mode 100644 pallets/staking/src/pallet/impls.rs create mode 100644 pallets/staking/src/pallet/mod.rs delete mode 100644 pallets/staking/src/rustfmt.toml create mode 100644 pallets/staking/src/types.rs diff --git a/pallets/runtime/common/src/runtime.rs b/pallets/runtime/common/src/runtime.rs index 0dce708ea1..287f216394 100644 --- a/pallets/runtime/common/src/runtime.rs +++ b/pallets/runtime/common/src/runtime.rs @@ -235,7 +235,6 @@ macro_rules! misc_pallet_impls { } impl pallet_staking::Config for Runtime { - const MAX_NOMINATIONS: u32 = pallet_staking::MAX_NOMINATIONS; type Currency = Balances; type UnixTime = Timestamp; type CurrencyToVote = frame_support::traits::U128CurrencyToVote; @@ -266,10 +265,10 @@ macro_rules! misc_pallet_impls { type FixedYearlyReward = FixedYearlyReward; type PalletsOrigin = OriginCaller; type MinimumBond = MinimumBond; - // The unsigned solution weight targeted by the OCW. We set it to the maximum possible value of - // a single extrinsic. type OffchainSolutionWeightLimit = polymesh_runtime_common::OffchainSolutionWeightLimit; type WeightInfo = polymesh_weights::pallet_staking::SubstrateWeight; + type MaxNominations = pallet_staking::MaxNominations; + type MaxUnlockingChunks = pallet_staking::MaxUnlockingChunks; } impl pallet_authority_discovery::Config for Runtime { diff --git a/pallets/runtime/develop/src/benchmarks/pallet_session.rs b/pallets/runtime/develop/src/benchmarks/pallet_session.rs index 673c5d10cc..82fcb6e1cb 100644 --- a/pallets/runtime/develop/src/benchmarks/pallet_session.rs +++ b/pallets/runtime/develop/src/benchmarks/pallet_session.rs @@ -24,12 +24,10 @@ use codec::Decode; use core::convert::TryInto; use frame_benchmarking::benchmarks; -use frame_support::traits::{Currency, OnInitialize}; +use frame_support::traits::{Currency, Get, OnInitialize}; use frame_system::RawOrigin; use pallet_session::{Call, Pallet as Session}; -use pallet_staking::{ - benchmarking::create_validator_with_nominators_with_balance, MAX_NOMINATIONS, -}; +use pallet_staking::benchmarking::create_validator_with_nominators_with_balance; use polymesh_common_utilities::{benchs::AccountIdOf, TestUtilsFn}; use sp_runtime::traits::TrailingZeroInput; use sp_std::prelude::*; @@ -65,14 +63,14 @@ impl>> ValidatorInfo { let balance: u32 = (4_000 * POLY).try_into().unwrap(); let stash = create_validator_with_nominators_with_balance::( nominators, - MAX_NOMINATIONS as u32, + ::MaxNominations::get(), balance, false, ) .unwrap() .0 .account(); - let controller = pallet_staking::Module::::bonded(&stash).expect("not stash"); + let controller = pallet_staking::Pallet::::bonded(&stash).expect("not stash"); let keys = T::Keys::decode(&mut TrailingZeroInput::zeroes()).unwrap(); let proof: Vec = vec![0, 1, 2, 3]; @@ -97,7 +95,7 @@ benchmarks! { } set_keys { - let n = MAX_NOMINATIONS as u32; + let n = ::MaxNominations::get() as u32; let validator = ValidatorInfo::::build(n).unwrap(); let proof = validator.proof.clone(); let keys = validator.keys.clone(); @@ -105,7 +103,7 @@ benchmarks! { }: _(RawOrigin::Signed(validator.controller), keys, proof) purge_keys { - let n = MAX_NOMINATIONS as u32; + let n = ::MaxNominations::get() as u32; let validator = ValidatorInfo::::build(n).unwrap(); let controller = RawOrigin::Signed(validator.controller.clone()); diff --git a/pallets/runtime/tests/src/staking/mock.rs b/pallets/runtime/tests/src/staking/mock.rs index 95ea89ffe9..d25a227d59 100644 --- a/pallets/runtime/tests/src/staking/mock.rs +++ b/pallets/runtime/tests/src/staking/mock.rs @@ -29,7 +29,7 @@ use frame_support::{ OnFinalize, OnInitialize, OnUnbalanced, OneSessionHandler, SortedMembers, }, weights::constants::RocksDbWeight, - IterableStorageMap, StorageDoubleMap, StorageMap, StorageValue, + StorageDoubleMap, StorageMap, }; use frame_system::{EnsureRoot, EnsureSignedBy}; use pallet_group as group; @@ -69,8 +69,10 @@ use sp_staking::{ }; use std::{cell::RefCell, collections::BTreeMap}; +use pallet_staking::types::SlashingSwitch; + pub const INIT_TIMESTAMP: u64 = 30_000; -pub const BLOCK_TIME: u64 = 1000; +pub const BLOCK_TIME: u64 = 1_000; /// The AccountId alias in this test module. pub(crate) type AccountId = u64; @@ -272,7 +274,7 @@ impl pallet_treasury::Config for Test { impl pallet_authorship::Config for Test { type FindAuthor = Author11; - type EventHandler = pallet_staking::Module; + type EventHandler = pallet_staking::Pallet; } parameter_types! { pub const MinimumPeriod: u64 = 5; @@ -586,7 +588,6 @@ impl SortedMembers for TwoThousand { } impl Config for Test { - const MAX_NOMINATIONS: u32 = pallet_staking::MAX_NOMINATIONS; type Currency = Balances; type UnixTime = Timestamp; type CurrencyToVote = frame_support::traits::SaturatingCurrencyToVote; @@ -619,6 +620,8 @@ impl Config for Test { type MaxVariableInflationTotalIssuance = MaxVariableInflationTotalIssuance; type FixedYearlyReward = FixedYearlyReward; type MinimumBond = MinimumBond; + type MaxNominations = pallet_staking::MaxNominations; + type MaxUnlockingChunks = pallet_staking::MaxUnlockingChunks; } impl frame_system::offchain::SendTransactionTypes for Test @@ -1275,7 +1278,7 @@ pub(crate) fn reward_all_elected() { .into_iter() .map(|v| (v, 1)); - >::reward_by_ids(rewards) + >::reward_by_ids(rewards) } pub(crate) fn validator_controllers() -> Vec { @@ -1293,7 +1296,7 @@ pub(crate) fn on_offence_in_era( slash_fraction: &[Perbill], era: EraIndex, ) { - let bonded_eras = staking::BondedEras::get(); + let bonded_eras = staking::BondedEras::::get(); for &(bonded_era, start_session) in bonded_eras.iter() { if bonded_era == era { let _ = Staking::on_offence( @@ -1478,10 +1481,8 @@ pub(crate) fn prepare_submission_with( } = Staking::do_phragmen::(iterations).unwrap(); let winners = winners.into_iter().map(|(who, _)| who).collect::>(); - let mut staked = sp_npos_elections::assignment_ratio_to_staked( - assignments, - Staking::slashable_balance_of_fn(), - ); + let mut staked = + sp_npos_elections::assignment_ratio_to_staked(assignments, Staking::weight_of_fn()); // apply custom tweaks. awesome for testing. tweak(&mut staked); @@ -1518,7 +1519,7 @@ pub(crate) fn prepare_submission_with( let score = if compute_real_score { let staked = sp_npos_elections::assignment_ratio_to_staked( assignments_reduced.clone(), - Staking::slashable_balance_of_fn(), + Staking::weight_of_fn(), ); let support_map = to_supports::(staked.as_slice()); diff --git a/pallets/runtime/tests/src/staking/mod.rs b/pallets/runtime/tests/src/staking/mod.rs index 6133efb70b..e1153a6f9e 100644 --- a/pallets/runtime/tests/src/staking/mod.rs +++ b/pallets/runtime/tests/src/staking/mod.rs @@ -100,9 +100,8 @@ use chrono::prelude::Utc; use codec::Decode; use frame_support::{ assert_noop, assert_ok, - storage::{IterableStorageMap, StorageDoubleMap, StorageValue}, + storage::StorageDoubleMap, traits::{Currency, Get, OnFinalize, OnInitialize, ReservableCurrency}, - StorageMap, }; use mock::*; use pallet_balances::Error as BalancesError; @@ -123,6 +122,10 @@ use sp_staking::{ SessionIndex, }; +use pallet_staking::types::{ + ElectionCompute, ElectionSize, ElectionStatus, PermissionedIdentityPrefs, SlashingSwitch, +}; + #[test] fn force_unstake_works() { ExtBuilder::default().build_and_execute(|| { @@ -190,7 +193,7 @@ fn basic_setup_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![] }) ); @@ -201,7 +204,7 @@ fn basic_setup_works() { stash: 21, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![] }) ); @@ -224,7 +227,7 @@ fn basic_setup_works() { stash: 101, total: 500, active: 500, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![] }) ); @@ -318,10 +321,10 @@ fn rewards_should_work() { Payee::::insert(21, RewardDestination::Controller); Payee::::insert(101, RewardDestination::Controller); - >::reward_by_ids(vec![(11, 50)]); - >::reward_by_ids(vec![(11, 50)]); + >::reward_by_ids(vec![(11, 50)]); + >::reward_by_ids(vec![(11, 50)]); // This is the second validator of the current elected set. - >::reward_by_ids(vec![(21, 50)]); + >::reward_by_ids(vec![(21, 50)]); // Compute total payout now for whole duration of the session. let total_payout_0 = current_total_payout_for_duration(reward_time_per_era()); @@ -358,7 +361,7 @@ fn rewards_should_work() { ); assert_eq!( *mock::staking_events().last().unwrap(), - RawEvent::EraPayout(0, total_payout_0, maximum_payout - total_payout_0) + Event::EraPayout(0, total_payout_0, maximum_payout - total_payout_0) ); mock::make_all_reward_payment(0); @@ -384,7 +387,7 @@ fn rewards_should_work() { assert_eq_error_rate!(Balances::total_balance(&101), init_balance_101, 2); assert_eq_uvec!(Session::validators(), vec![11, 21]); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); // Compute total payout now for whole duration as other parameter won't change let total_payout_1 = current_total_payout_for_duration(reward_time_per_era()); @@ -396,7 +399,7 @@ fn rewards_should_work() { ); assert_eq!( *mock::staking_events().last().unwrap(), - RawEvent::EraPayout(1, total_payout_1, maximum_payout - total_payout_1) + Event::EraPayout(1, total_payout_1, maximum_payout - total_payout_1) ); mock::make_all_reward_payment(1); @@ -509,7 +512,7 @@ fn staking_should_work() { stash: 3, total: 1500, active: 1500, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![0], }) ); @@ -568,7 +571,7 @@ fn no_candidate_emergency_condition() { Validators::::insert(11, prefs.clone()); // set the minimum validator count. - MinimumValidatorCount::put(10); + MinimumValidatorCount::::put(10); // try to chill let _ = Staking::chill(Origin::signed(10)); @@ -638,8 +641,8 @@ fn nominating_and_rewards_should_work() { // the total reward for era 0 let total_payout_0 = current_total_payout_for_duration(reward_time_per_era()); - >::reward_by_ids(vec![(41, 1)]); - >::reward_by_ids(vec![(31, 1)]); + >::reward_by_ids(vec![(41, 1)]); + >::reward_by_ids(vec![(31, 1)]); mock::start_active_era(1); @@ -684,8 +687,8 @@ fn nominating_and_rewards_should_work() { // the total reward for era 1 let total_payout_1 = current_total_payout_for_duration(reward_time_per_era()); - >::reward_by_ids(vec![(21, 2)]); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(21, 2)]); + >::reward_by_ids(vec![(11, 1)]); mock::start_active_era(2); @@ -912,7 +915,7 @@ fn forcing_new_era_works() { assert_eq!(Staking::active_era().unwrap().index, 1); // no era change. - ForceEra::put(Forcing::ForceNone); + ForceEra::::put(Forcing::ForceNone); start_session(4); assert_eq!(Staking::active_era().unwrap().index, 1); start_session(5); @@ -924,14 +927,14 @@ fn forcing_new_era_works() { // back to normal. // this immediately starts a new session. - ForceEra::put(Forcing::NotForcing); + ForceEra::::put(Forcing::NotForcing); start_session(8); assert_eq!(Staking::active_era().unwrap().index, 1); // There is one session delay start_session(9); assert_eq!(Staking::active_era().unwrap().index, 2); // forceful change - ForceEra::put(Forcing::ForceAlways); + ForceEra::::put(Forcing::ForceAlways); start_session(10); assert_eq!(Staking::active_era().unwrap().index, 2); // There is one session delay start_session(11); @@ -940,10 +943,10 @@ fn forcing_new_era_works() { assert_eq!(Staking::active_era().unwrap().index, 4); // just one forceful change - ForceEra::put(Forcing::ForceNew); + ForceEra::::put(Forcing::ForceNew); start_session(13); assert_eq!(Staking::active_era().unwrap().index, 5); - assert_eq!(ForceEra::get(), Forcing::NotForcing); + assert_eq!(ForceEra::::get(), Forcing::NotForcing); start_session(14); assert_eq!(Staking::active_era().unwrap().index, 6); start_session(15); @@ -1047,14 +1050,14 @@ fn reward_destination_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(reward_time_per_era()); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); mock::start_active_era(1); mock::make_all_reward_payment(0); @@ -1070,7 +1073,7 @@ fn reward_destination_works() { stash: 11, total: 1000 + total_payout_0, active: 1000 + total_payout_0, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![0], }) ); @@ -1080,7 +1083,7 @@ fn reward_destination_works() { // Compute total payout now for whole duration as other parameter won't change let total_payout_1 = current_total_payout_for_duration(reward_time_per_era()); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); mock::start_active_era(2); mock::make_all_reward_payment(1); @@ -1101,7 +1104,7 @@ fn reward_destination_works() { stash: 11, total: 1000 + total_payout_0, active: 1000 + total_payout_0, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![0, 1], }) ); @@ -1114,7 +1117,7 @@ fn reward_destination_works() { // Compute total payout now for whole duration as other parameter won't change let total_payout_2 = current_total_payout_for_duration(reward_time_per_era()); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); mock::start_active_era(3); mock::make_all_reward_payment(2); @@ -1130,7 +1133,7 @@ fn reward_destination_works() { stash: 11, total: 1000 + total_payout_0, active: 1000 + total_payout_0, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![0, 1, 2], }) ); @@ -1167,7 +1170,7 @@ fn validator_payment_prefs_work() { // Compute total payout now for whole duration as other parameter won't change let total_payout_1 = current_total_payout_for_duration(reward_time_per_era()); let exposure_1 = Staking::eras_stakers(Staking::active_era().unwrap().index, 11); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); mock::start_active_era(2); mock::make_all_reward_payment(1); @@ -1206,7 +1209,7 @@ fn bond_extra_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1223,7 +1226,7 @@ fn bond_extra_works() { stash: 11, total: 1000 + 100, active: 1000 + 100, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1240,7 +1243,7 @@ fn bond_extra_works() { stash: 11, total: 1000000, active: 1000000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1280,7 +1283,7 @@ fn bond_extra_and_withdraw_unbonded_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1302,7 +1305,7 @@ fn bond_extra_and_withdraw_unbonded_works() { stash: 11, total: 1000 + 100, active: 1000 + 100, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1327,7 +1330,7 @@ fn bond_extra_and_withdraw_unbonded_works() { stash: 11, total: 1000 + 100, active: 1000 + 100, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1403,7 +1406,7 @@ fn bond_extra_and_withdraw_unbonded_works() { stash: 11, total: 100, active: 100, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![] }), ); @@ -1414,7 +1417,7 @@ fn bond_extra_and_withdraw_unbonded_works() { fn too_many_unbond_calls_should_not_work() { ExtBuilder::default().build_and_execute(|| { // locked at era 0 until 3 - for _ in 0..MAX_UNLOCKING_CHUNKS - 1 { + for _ in 0..pallet_staking::MaxUnlockingChunks::get() - 1 { assert_ok!(Staking::unbond(Origin::signed(10), 1)); } @@ -1472,7 +1475,7 @@ fn rebond_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1510,7 +1513,7 @@ fn rebond_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1549,7 +1552,7 @@ fn rebond_works() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1617,7 +1620,7 @@ fn rebond_is_fifo() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -1762,15 +1765,15 @@ fn reward_to_stake_works() { stash: 21, total: 69, active: 69, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }, ); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(reward_time_per_era()); - >::reward_by_ids(vec![(11, 1)]); - >::reward_by_ids(vec![(21, 1)]); + >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(21, 1)]); // New era --> rewards are paid --> stakes are changed mock::start_active_era(1); @@ -2330,7 +2333,7 @@ fn reward_from_authorship_event_handler_works() { assert_eq!(>::author(), Some(11)); - >::note_author(11); + >::note_author(11); // Not mandatory but must be coherent with rewards assert_eq_uvec!(Session::validators(), vec![11, 21]); @@ -2352,9 +2355,9 @@ fn add_reward_points_fns_works() { // Not mandatory but must be coherent with rewards assert_eq!(Session::validators(), vec![21, 11]); - >::reward_by_ids(vec![(21, 1), (11, 1), (11, 1)]); + >::reward_by_ids(vec![(21, 1), (11, 1), (11, 1)]); - >::reward_by_ids(vec![(21, 1), (11, 1), (11, 1)]); + >::reward_by_ids(vec![(21, 1), (11, 1), (11, 1)]); assert_eq!( ErasRewardPoints::::get(Staking::active_era().unwrap().index), @@ -2399,7 +2402,7 @@ fn era_is_always_same_length() { ); let session = Session::current_index(); - ForceEra::put(Forcing::ForceNew); + ForceEra::::put(Forcing::ForceNew); advance_session(); advance_session(); assert_eq!(current_era(), 3); @@ -2823,7 +2826,7 @@ fn garbage_collection_after_slashing() { assert_eq!(Balances::free_balance(11), 256_000 - 25_600); assert!(SlashingSpans::::get(&11).is_some()); - assert_eq!(SpanSlash::::get(&(11, 0)).amount_slashed(), &25_600); + assert_eq!(SpanSlash::::get(&(11, 0)).amount(), &25_600); on_offence_now( &[OffenceDetails { @@ -2853,7 +2856,7 @@ fn garbage_collection_after_slashing() { assert_ok!(Staking::reap_stash(Origin::none(), 11, 2)); assert!(SlashingSpans::::get(&11).is_none()); - assert_eq!(SpanSlash::::get(&(11, 0)).amount_slashed(), &0); + assert_eq!(SpanSlash::::get(&(11, 0)).amount(), &0); }) } @@ -3487,7 +3490,7 @@ mod offchain_phragmen { .build() .execute_with(|| { run_to_block(12); - ForceEra::put(Forcing::ForceNew); + ForceEra::::put(Forcing::ForceNew); run_to_block(13); assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); @@ -3507,7 +3510,7 @@ mod offchain_phragmen { .election_lookahead(3) .build() .execute_with(|| { - ForceEra::put(Forcing::ForceAlways); + ForceEra::::put(Forcing::ForceAlways); run_to_block(16); assert_eq!(Staking::era_election_status(), ElectionStatus::Closed); @@ -3533,7 +3536,7 @@ mod offchain_phragmen { .election_lookahead(3) .build() .execute_with(|| { - ForceEra::put(Forcing::ForceNone); + ForceEra::::put(Forcing::ForceNone); run_to_block(36); assert_session_era!(3, 0); @@ -3583,7 +3586,7 @@ mod offchain_phragmen { // some election must have happened by now. /*assert_eq!( staking_events().into_iter().last().unwrap(), - RawEvent::StakingElection(ElectionCompute::OnChain), + Event::StakingElection(ElectionCompute::OnChain), );*/ }) } @@ -3643,7 +3646,7 @@ mod offchain_phragmen { .execute_with(|| { run_to_block(12); assert_eq!(Staking::era_election_status(), ElectionStatus::Open(12)); - assert!(Staking::snapshot_validators().is_some()); + assert!(!Staking::snapshot_validators().is_none()); let (compact, winners, score) = prepare_submission_with(true, true, 2, |_| {}); assert_ok!(submit_solution(Origin::signed(10), winners, compact, score,)); @@ -3654,7 +3657,7 @@ mod offchain_phragmen { staking_events().into_iter() .last() .unwrap(), - RawEvent::SolutionStored(ElectionCompute::Signed), + Event::SolutionStored(ElectionCompute::Signed), );*/ run_to_block(15); @@ -3664,7 +3667,7 @@ mod offchain_phragmen { staking_events().into_iter() .last() .unwrap(), - RawEvent::StakingElection(ElectionCompute::Signed), + Event::StakingElection(ElectionCompute::Signed), );*/ }) } @@ -3692,7 +3695,7 @@ mod offchain_phragmen { staking_events().into_iter() .last() .unwrap(), - RawEvent::StakingElection(ElectionCompute::Signed), + Event::StakingElection(ElectionCompute::Signed), );*/ }) } @@ -3912,9 +3915,9 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - ValidatorCount::put(3); + ValidatorCount::::put(3); let (compact, winners, score) = prepare_submission_with(true, true, 2, |_| {}); - ValidatorCount::put(4); + ValidatorCount::::put(4); assert_eq!(winners.len(), 3); @@ -3961,9 +3964,9 @@ mod offchain_phragmen { build_offchain_phragmen_test_ext(); run_to_block(12); - ValidatorCount::put(3); + ValidatorCount::::put(3); let (compact, winners, score) = prepare_submission_with(true, true, 2, |_| {}); - ValidatorCount::put(4); + ValidatorCount::::put(4); assert_eq!(winners.len(), 3); @@ -4352,7 +4355,7 @@ mod offchain_phragmen { .execute_with(|| { build_offchain_phragmen_test_ext(); run_to_block(12); - ValidatorCount::put(10); + ValidatorCount::::put(10); // Add did to user provide_did_to_user(70); @@ -4572,13 +4575,13 @@ fn claim_reward_at_the_last_era_and_no_double_claim_and_invalid_claim() { Payee::::insert(11, RewardDestination::Controller); Payee::::insert(101, RewardDestination::Controller); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(reward_time_per_era()); mock::start_active_era(1); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); // Change total issuance in order to modify total payout let _ = Balances::deposit_creating(&999, 1_000_000_000); // Compute total payout now for whole duration as other parameter won't change @@ -4587,7 +4590,7 @@ fn claim_reward_at_the_last_era_and_no_double_claim_and_invalid_claim() { mock::start_active_era(2); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); // Change total issuance in order to modify total payout let _ = Balances::deposit_creating(&999, 1_000_000_000); // Compute total payout now for whole duration as other parameter won't change @@ -4763,7 +4766,7 @@ fn test_max_nominator_rewarded_per_validator_and_cant_steal_someone_else_reward( } mock::start_active_era(1); - >::reward_by_ids(vec![(11, 1)]); + >::reward_by_ids(vec![(11, 1)]); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(3 * 1000); assert!(total_payout_0 > 100); // Test is meaningful if reward something @@ -4849,7 +4852,7 @@ fn test_payout_stakers() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![1] }) ); @@ -4870,7 +4873,7 @@ fn test_payout_stakers() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: (1..=14).collect() }) ); @@ -4892,7 +4895,7 @@ fn test_payout_stakers() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![15, 98] }) ); @@ -4907,7 +4910,7 @@ fn test_payout_stakers() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![15, 23, 42, 69, 98] }) ); @@ -4993,7 +4996,7 @@ fn bond_during_era_correctly_populates_claimed_rewards() { stash: 9, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -5005,7 +5008,7 @@ fn bond_during_era_correctly_populates_claimed_rewards() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: (0..5).collect(), }) ); @@ -5017,7 +5020,7 @@ fn bond_during_era_correctly_populates_claimed_rewards() { stash: 13, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: (15..99).collect(), }) ); @@ -5268,7 +5271,7 @@ fn should_initialize_stakers_and_validators() { stash: 11, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -5279,7 +5282,7 @@ fn should_initialize_stakers_and_validators() { stash: 21, total: 1000, active: 1000, - unlocking: vec![], + unlocking: Default::default(), claimed_rewards: vec![], }) ); @@ -5581,10 +5584,10 @@ fn test_reward_scheduling() { Payee::::insert(21, RewardDestination::Controller); Payee::::insert(101, RewardDestination::Controller); - >::reward_by_ids(vec![(11, 50)]); - >::reward_by_ids(vec![(11, 50)]); + >::reward_by_ids(vec![(11, 50)]); + >::reward_by_ids(vec![(11, 50)]); // This is the second validator of the current elected set. - >::reward_by_ids(vec![(21, 50)]); + >::reward_by_ids(vec![(21, 50)]); // Compute total payout now for whole duration as other parameter won't change let total_payout_0 = current_total_payout_for_duration(3 * 1000); @@ -5835,7 +5838,7 @@ fn test_multiple_validators_from_an_entity() { // Can change commission of existing nodes, // even after hitting the operator node limit. - ValidatorCommissionCap::put(Perbill::one()); + ValidatorCommissionCap::::put(Perbill::one()); assert_ok!(Staking::validate( Origin::signed(51), ValidatorPrefs { diff --git a/pallets/staking/src/benchmarking.rs b/pallets/staking/src/benchmarking.rs index 10c91f62cb..b8a739a950 100644 --- a/pallets/staking/src/benchmarking.rs +++ b/pallets/staking/src/benchmarking.rs @@ -17,20 +17,22 @@ //! Staking pallet benchmarking. -use super::*; -use crate::Module as Staking; -use testing_utils::*; - pub use frame_benchmarking::{account, benchmarks, whitelist_account, whitelisted_caller}; +use frame_support::dispatch::DispatchError; +use frame_support::traits::Imbalance; use frame_system::RawOrigin; -use polymesh_common_utilities::{ - benchs::{AccountIdOf, UserBuilder}, - TestUtilsFn, -}; use sp_runtime::traits::One; -use polymesh_primitives::{ - Permissions, -}; +use sp_runtime::Percent; + +use polymesh_common_utilities::benchs::{AccountIdOf, UserBuilder}; +use polymesh_common_utilities::TestUtilsFn; +use polymesh_primitives::{IdentityId, Permissions}; + +use super::*; +use crate::types::ElectionStatus; +use crate::Pallet as Staking; +use testing_utils::*; + const SEED: u32 = 0; const MAX_SPANS: u32 = 100; const MAX_VALIDATORS: u32 = 1000; @@ -38,6 +40,8 @@ const MAX_SLASHES: u32 = 1000; const INIT_BALANCE: u32 = 10_000_000; const MAX_STASHES: u32 = 100; +type Identity = pallet_identity::Module; + macro_rules! whitelist_account { ($acc:expr) => { let x = $acc.account(); @@ -138,7 +142,7 @@ pub fn create_validator_with_nominators_with_balance::put(1); // Start a new Era let new_validators = Staking::::new_era(SessionIndex::one()).unwrap(); @@ -154,7 +158,7 @@ pub fn create_validator_with_nominators_with_balance::get().unwrap(); ErasRewardPoints::::insert(current_era, reward); // Create reward pool @@ -176,7 +180,7 @@ fn payout_stakers_>>( .unwrap() .0 .account(); - let current_era = CurrentEra::get().unwrap(); + let current_era = CurrentEra::::get().unwrap(); >::insert( current_era, validator.clone(), @@ -245,7 +249,7 @@ benchmarks! { add_slashing_spans::(&stash.account(), s); let amount = 50u32; // Half of total Staking::::unbond(controller.origin().into(), amount.into()).unwrap(); - CurrentEra::put(EraIndex::max_value()); + CurrentEra::::put(EraIndex::max_value()); let ledger = Ledger::::get(&controller.account()).expect("ledger not created before"); let original_total: BalanceOf = ledger.total; whitelist_account!(controller); @@ -265,7 +269,7 @@ benchmarks! { add_slashing_spans::(&stash.account(), s); let amount = INIT_BALANCE; Staking::::unbond(controller.origin().into(), amount.into()).unwrap(); - CurrentEra::put(EraIndex::max_value()); + CurrentEra::::put(EraIndex::max_value()); let ledger = Ledger::::get(&controller.account()).expect("ledger not created before"); let original_total: BalanceOf = ledger.total; whitelist_account!(controller); @@ -343,8 +347,6 @@ benchmarks! { } */ - - set_min_bond_threshold { let origin = RawOrigin::Root; }: _(origin, 10000u32.into()) @@ -391,7 +393,7 @@ benchmarks! { // Worst case scenario, MAX_NOMINATIONS nominate { - let n in 1 .. MAX_NOMINATIONS as u32; + let n in 1 .. T::MaxNominations::get(); clear_validators_and_nominators::(); let (stash, controller) = create_stash_controller::(n + 1, INIT_BALANCE)?; let validators = create_validators::(n, INIT_BALANCE)?; @@ -432,17 +434,17 @@ benchmarks! { let c in 0 .. MAX_VALIDATORS; }: _(RawOrigin::Root, c) verify { - assert_eq!(ValidatorCount::get(), c); + assert_eq!(ValidatorCount::::get(), c); } force_no_eras {}: _(RawOrigin::Root) - verify { assert_eq!(ForceEra::get(), Forcing::ForceNone); } + verify { assert_eq!(ForceEra::::get(), Forcing::ForceNone); } force_new_era {}: _(RawOrigin::Root) - verify { assert_eq!(ForceEra::get(), Forcing::ForceNew); } + verify { assert_eq!(ForceEra::::get(), Forcing::ForceNew); } force_new_era_always {}: _(RawOrigin::Root) - verify { assert_eq!(ForceEra::get(), Forcing::ForceAlways); } + verify { assert_eq!(ForceEra::::get(), Forcing::ForceAlways); } // Worst case scenario, the list of invulnerables is very long. set_invulnerables { @@ -512,7 +514,7 @@ benchmarks! { rebond { // User account seed let u in 0 .. 1000; - let l in 1 .. MAX_UNLOCKING_CHUNKS as u32; + let l in 1 .. T::MaxUnlockingChunks::get(); clear_validators_and_nominators::(); let (_, controller) = create_stash_controller::(u, INIT_BALANCE).unwrap(); let mut staking_ledger = Ledger::::get(controller.account()).unwrap(); @@ -521,7 +523,7 @@ benchmarks! { era: EraIndex::zero(), }; for _ in 0 .. l { - staking_ledger.unlocking.push(unlock_chunk.clone()) + staking_ledger.unlocking.push(unlock_chunk.clone()); } Ledger::::insert(controller.account(), staking_ledger.clone()); let original_bonded: BalanceOf = staking_ledger.active; @@ -535,8 +537,8 @@ benchmarks! { set_history_depth { let e in 1 .. 100; - HistoryDepth::put(e); - CurrentEra::put(e); + HistoryDepth::::put(e); + CurrentEra::::put(e); for i in 0 .. e { let acc: T::AccountId = account("validator", i, 10000); >::insert(i, acc.clone(), Exposure::>::default()); @@ -545,11 +547,11 @@ benchmarks! { >::insert(i, BalanceOf::::one()); >::insert(i, EraRewardPoints::::default()); >::insert(i, BalanceOf::::one()); - ErasStartSessionIndex::insert(i, i); + ErasStartSessionIndex::::insert(i, i); } }: _(RawOrigin::Root, EraIndex::zero(), u32::max_value()) verify { - assert_eq!(HistoryDepth::get(), 0); + assert_eq!(HistoryDepth::::get(), 0); } reap_stash { @@ -568,7 +570,7 @@ benchmarks! { let v in 1 .. 10; let n in 1 .. 100; - create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS as usize, false, None).unwrap(); + create_validators_with_nominators_for_era::(v, n, T::MaxNominations::get() as usize, false, None).unwrap(); let session_index = SessionIndex::one(); }: { let validators = Staking::::new_era(session_index).ok_or("`new_era` failed")?; @@ -578,12 +580,12 @@ benchmarks! { payout_all { let v in 1 .. 10; let n in 1 .. 100; - create_validators_with_nominators_for_era::(v, n, MAX_NOMINATIONS as usize, false, None).unwrap(); + create_validators_with_nominators_for_era::(v, n, T::MaxNominations::get() as usize, false, None).unwrap(); // Start a new Era let new_validators = Staking::::new_era(SessionIndex::one()).unwrap(); assert_eq!(new_validators.len(), v as usize); - let current_era = CurrentEra::get().unwrap(); + let current_era = CurrentEra::::get().unwrap(); let mut points_total = 0; let mut points_individual = Vec::new(); let mut payout_calls_arg = Vec::new(); @@ -614,7 +616,7 @@ benchmarks! { } do_slash { - let l in 1 .. MAX_UNLOCKING_CHUNKS as u32; + let l in 1 .. T::MaxUnlockingChunks::get(); let (stash, controller) = create_stash_controller::(0, INIT_BALANCE)?; let mut staking_ledger = Ledger::::get(controller.account()).unwrap(); let unlock_chunk = UnlockChunk::> { @@ -622,7 +624,7 @@ benchmarks! { era: EraIndex::zero(), }; for _ in 0 .. l { - staking_ledger.unlocking.push(unlock_chunk.clone()) + staking_ledger.unlocking.push(unlock_chunk.clone()); } Ledger::::insert(controller.account(), staking_ledger); let balance_before = T::Currency::free_balance(&stash.account()); @@ -631,7 +633,8 @@ benchmarks! { &stash.account(), 10u32.into(), &mut BalanceOf::::zero(), - &mut NegativeImbalanceOf::::zero() + &mut NegativeImbalanceOf::::zero(), + EraIndex::zero() ); } verify { let balance_after = T::Currency::free_balance(&stash.account()); @@ -649,12 +652,12 @@ benchmarks! { // number of winners, also ValidatorCount. let w in 16 .. 100; - assert!(w as usize >= MAX_NOMINATIONS as usize, "doesn't support lower value"); + assert!(w as usize >= T::MaxNominations::get() as usize, "doesn't support lower value"); let winners = create_validators_with_nominators_for_era::( v, n, - MAX_NOMINATIONS as usize, + T::MaxNominations::get() as usize, false, Some(w), ).unwrap(); @@ -663,7 +666,7 @@ benchmarks! { assert!(>::create_stakers_snapshot().0); // set number of winners - ValidatorCount::put(w); + ValidatorCount::::put(w); // create a assignments in total for the w winners. let (winners, assignments) = create_assignments_for_offchain::(a, winners).unwrap(); @@ -699,7 +702,7 @@ benchmarks! { // submit a very bad solution on-chain { // this is needed to fool the chain to accept this solution. - ValidatorCount::put(1); + ValidatorCount::::put(1); let (winners, compact, score, size) = get_single_winner_solution::(single_winner).unwrap(); assert!( >::submit_election_solution( @@ -713,7 +716,7 @@ benchmarks! { // new solution has been accepted. assert_eq!(>::queued_score().unwrap(), score); - ValidatorCount::put(w); + ValidatorCount::::put(w); } }: { let result = >::submit_election_solution( @@ -798,7 +801,7 @@ benchmarks! { Staking::::validate(key.origin().into(), validator_prefs).expect("Validate fails"); // Checks that the stash key is in validators storage assert_eq!(>::contains_key(&key.account), true); - } + } }: _(RawOrigin::Root, validator_did, signatories.clone()) verify { for key in signatories { diff --git a/pallets/staking/src/inflation.rs b/pallets/staking/src/inflation.rs index 13c91d449e..c8c5dedca4 100644 --- a/pallets/staking/src/inflation.rs +++ b/pallets/staking/src/inflation.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2019-2021 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -44,12 +44,12 @@ where const MILLISECONDS_PER_YEAR: u64 = 1000 * 3600 * 24 * 36525 / 100; let portion = Perbill::from_rational(era_duration as u64, MILLISECONDS_PER_YEAR); + let payout = portion + * yearly_inflation + .calculate_for_fraction_times_denominator(npos_token_staked, total_tokens.clone()); - let payout = portion * yearly_inflation.calculate_for_fraction_times_denominator( - npos_token_staked, - total_tokens.clone(), - ); - // Have fixed rewards kicked in? + // Polymesh Change: Have fixed rewards kicked in? + // ----------------------------------------------------------------- if total_tokens >= max_inflated_issuance { let fixed_payout = portion * non_inflated_yearly_reward; if fixed_payout <= payout { @@ -57,6 +57,7 @@ where return (fixed_payout.clone(), fixed_payout); } } + // ------------------------------------------------------------------ let maximum = portion * (yearly_inflation.maximum * total_tokens); (payout, maximum) } @@ -173,7 +174,5 @@ mod test { ), (49_965_776_850_000, 49_965_776_850_000) ); - - } } diff --git a/pallets/staking/src/lib.rs b/pallets/staking/src/lib.rs index 29a9b58af3..663604081b 100644 --- a/pallets/staking/src/lib.rs +++ b/pallets/staking/src/lib.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2017-2021 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,29 +15,17 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Modified by Polymesh Association - 13rd March 2020 -// - Validator has posses CDD check -// - Validator should be a compliant first before adding into the potential validator list. -// - Nominators should posses a valid CDD check to be a potential nominator. To facilitate -// `nominate()` -// dispatchable gets modified. -// - Introduce `validate_cdd_expiry_nominators()` to remove the nominators from the potential -// nominators list -// when there CDD check get expired. -// - Commission are capped. -// - Validators stash account should stake a minimum bonding amount to be a potential validator. - -//! # Staking Module +//! # Staking Pallet //! -//! The Staking module is used to manage funds at stake by network maintainers. +//! The Staking pallet is used to manage funds at stake by network maintainers. //! -//! - [`staking::Config`](./trait.Config.html) -//! - [`Call`](./enum.Call.html) -//! - [`Module`](./struct.Module.html) +//! - [`Config`] +//! - [`Call`] +//! - [`Pallet`] //! //! ## Overview //! -//! The Staking module is the means by which a set of network maintainers (known as _authorities_ in +//! The Staking pallet is the means by which a set of network maintainers (known as _authorities_ in //! some contexts and _validators_ in others) are chosen based upon those who voluntarily place //! funds under deposit. Under deposit, those funds are rewarded under normal operation but are held //! at pain of _slash_ (expropriation) should the staked maintainer be found not to be discharging @@ -71,22 +59,22 @@ //! //! #### Staking //! -//! Almost any interaction with the Staking module requires a process of _**bonding**_ (also known -//! as being a _staker_). To become *bonded*, a fund-holding account known as the _stash account_, +//! Almost any interaction with the Staking pallet requires a process of _**bonding**_ (also known +//! as being a _staker_). To become *bonded*, a fund-holding register known as the _stash account_, //! which holds some or all of the funds that become frozen in place as part of the staking process, //! is paired with an active **controller** account, which issues instructions on how they shall be //! used. //! -//! An account pair can become bonded using the [`bond`](./enum.Call.html#variant.bond) call. +//! An account pair can become bonded using the [`bond`](Call::bond) call. //! //! Stash accounts can change their associated controller using the -//! [`set_controller`](./enum.Call.html#variant.set_controller) call. +//! [`set_controller`](Call::set_controller) call. //! //! There are three possible roles that any staked account pair can be in: `Validator`, `Nominator` -//! and `Idle` (defined in [`StakerStatus`](./enum.StakerStatus.html)). There are three +//! and `Idle` (defined in [`StakerStatus`]). There are three //! corresponding instructions to change between roles, namely: -//! [`validate`](./enum.Call.html#variant.validate), -//! [`nominate`](./enum.Call.html#variant.nominate), and [`chill`](./enum.Call.html#variant.chill). +//! [`validate`](Call::validate), +//! [`nominate`](Call::nominate), and [`chill`](Call::chill). //! //! #### Validating //! @@ -98,10 +86,7 @@ //! by nominators and their votes. //! //! An account can become a validator candidate via the -//! [`validate`](./enum.Call.html#variant.validate) call. -//! But only those validators are in effect whose compliance status is active via -//! [`add_permissioned_validator`](./enum.Call.html#variant.validate) call & there _stash_ accounts -//! has valid CDD claim. Compliance status can only provided by the [`T::RequiredAddOrigin`]. +//! [`validate`](Call::validate) call. //! //! #### Nomination //! @@ -113,13 +98,18 @@ //! the misbehaving/offline validators as much as possible, simply because the nominators will also //! lose funds if they vote poorly. //! -//! An account can become a nominator via the [`nominate`](enum.Call.html#variant.nominate) call. -//! Potential accounts should posses a valid CDD claim having an expiry greater -//! than the [`BondingDuration`](./struct.BondingDuration.html). +//! An account can become a nominator via the [`nominate`](Call::nominate) call. +//! +//! #### Voting +//! +//! Staking is closely related to elections; actual validators are chosen from among all potential +//! validators via election by the potential validators and nominators. To reduce use of the phrase +//! "potential validators and nominators", we often use the term **voters**, who are simply +//! the union of potential validators and nominators. //! //! #### Rewards and Slash //! -//! The **reward and slashing** procedure is the core of the Staking module, attempting to _embrace +//! The **reward and slashing** procedure is the core of the Staking pallet, attempting to _embrace //! valid behavior_ while _punishing any misbehavior or lack of availability_. //! //! Rewards must be claimed for each era before it gets too old by `$HISTORY_DEPTH` using the @@ -132,7 +122,7 @@ //! determined, a value is deducted from the balance of the validator and all the nominators who //! voted for this validator (values are deducted from the _stash_ account of the slashed entity). //! -//! Slashing logic is further described in the documentation of the `slashing` module. +//! Slashing logic is further described in the documentation of the `slashing` pallet. //! //! Similar to slashing, rewards are also shared among a validator and its associated nominators. //! Yet, the reward funds are not always transferred to the stash account and can be configured. See @@ -144,42 +134,50 @@ //! This means that if they are a nominator, they will not be considered as voters anymore and if //! they are validators, they will no longer be a candidate for the next election. //! -//! An account can step back via the [`chill`](enum.Call.html#variant.chill) call. +//! An account can step back via the [`chill`](Call::chill) call. //! //! ### Session managing //! -//! The module implement the trait `SessionManager`. Which is the only API to query new validator +//! The pallet implement the trait `SessionManager`. Which is the only API to query new validator //! set and allowing these validator set to be rewarded once their era is ended. //! //! ## Interface //! //! ### Dispatchable Functions //! -//! The dispatchable functions of the Staking module enable the steps needed for entities to accept -//! and change their role, alongside some helper functions to get/set the metadata of the module. +//! The dispatchable functions of the Staking pallet enable the steps needed for entities to accept +//! and change their role, alongside some helper functions to get/set the metadata of the pallet. //! //! ### Public Functions //! -//! The Staking module contains many public storage items and (im)mutable functions. +//! The Staking pallet contains many public storage items and (im)mutable functions. //! //! ## Usage //! //! ### Example: Rewarding a validator by id. //! //! ``` -//! use frame_support::{decl_module, dispatch}; -//! use frame_system::ensure_signed; //! use pallet_staking::{self as staking}; //! -//! pub trait Config: staking::Config {} +//! #[frame_support::pallet] +//! pub mod pallet { +//! use super::*; +//! use frame_support::pallet_prelude::*; +//! use frame_system::pallet_prelude::*; +//! +//! #[pallet::pallet] +//! pub struct Pallet(_); //! -//! decl_module! { -//! pub struct Module for enum Call where origin: T::RuntimeOrigin { +//! #[pallet::config] +//! pub trait Config: frame_system::Config + staking::Config {} +//! +//! #[pallet::call] +//! impl Pallet { //! /// Reward a validator. -//! #[weight = 0] -//! pub fn reward_myself(origin) -> dispatch::DispatchResult { +//! #[pallet::weight(0)] +//! pub fn reward_myself(origin: OriginFor) -> DispatchResult { //! let reported = ensure_signed(origin)?; -//! >::reward_by_ids(vec![(reported, 10)]); +//! >::reward_by_ids(vec![(reported, 10)]); //! Ok(()) //! } //! } @@ -192,7 +190,7 @@ //! ### Era payout //! //! The era payout is computed using yearly inflation curve defined at -//! [`T::RewardCurve`](./trait.Config.html#associatedtype.RewardCurve) as such: +//! [`Config::EraPayout`] as such: //! //! ```nocompile //! staker_payout = yearly_inflation(npos_token_staked / total_tokens) * total_tokens / era_per_year @@ -203,7 +201,7 @@ //! remaining_payout = max_yearly_inflation * total_tokens / era_per_year - staker_payout //! ``` //! The remaining reward is send to the configurable end-point -//! [`T::RewardRemainder`](./trait.Config.html#associatedtype.RewardRemainder). +//! [`Config::RewardRemainder`]. //! //! ### Reward Calculation //! @@ -215,29 +213,28 @@ //! //! Total reward is split among validators and their nominators depending on the number of points //! they received during the era. Points are added to a validator using -//! [`reward_by_ids`](./enum.Call.html#variant.reward_by_ids) or -//! [`reward_by_indices`](./enum.Call.html#variant.reward_by_indices). +//! [`reward_by_ids`](Pallet::reward_by_ids). //! -//! [`Module`](./struct.Module.html) implements -//! [`pallet_authorship::EventHandler`](../pallet_authorship/trait.EventHandler.html) to add reward +//! [`Pallet`] implements +//! [`pallet_authorship::EventHandler`] to add reward //! points to block producer and block producer of referenced uncles. //! //! The validator and its nominator split their reward as following: //! -//! The validator can declare an amount, named -//! [`commission`](./struct.ValidatorPrefs.html#structfield.commission), that does not get shared -//! with the nominators at each reward payout through its -//! [`ValidatorPrefs`](./struct.ValidatorPrefs.html). This value gets deducted from the total reward -//! that is paid to the validator and its nominators. The remaining portion is split among the -//! validator and all of the nominators that nominated the validator, proportional to the value -//! staked behind this validator (_i.e._ dividing the -//! [`own`](./struct.Exposure.html#structfield.own) or -//! [`others`](./struct.Exposure.html#structfield.others) by -//! [`total`](./struct.Exposure.html#structfield.total) in [`Exposure`](./struct.Exposure.html)). +//! The validator can declare an amount, named [`commission`](ValidatorPrefs::commission), that does +//! not get shared with the nominators at each reward payout through its [`ValidatorPrefs`]. This +//! value gets deducted from the total reward that is paid to the validator and its nominators. The +//! remaining portion is split pro rata among the validator and the top +//! [`Config::MaxNominatorRewardedPerValidator`] nominators that nominated the validator, +//! proportional to the value staked behind the validator (_i.e._ dividing the +//! [`own`](Exposure::own) or [`others`](Exposure::others) by [`total`](Exposure::total) in +//! [`Exposure`]). Note that the pro rata division of rewards uses the total exposure behind the +//! validator, *not* just the exposure of the validator and the top +//! [`Config::MaxNominatorRewardedPerValidator`] nominators. //! //! All entities who receive a reward have the option to choose their reward destination through the -//! [`Payee`](./struct.Payee.html) storage item (see -//! [`set_payee`](enum.Call.html#variant.set_payee)), to be one of the following: +//! [`Payee`] storage item (see +//! [`set_payee`](Call::set_payee)), to be one of the following: //! //! - Controller account, (obviously) not increasing the staked value. //! - Stash account, not increasing the staked value. @@ -248,15 +245,15 @@ //! Any funds already placed into stash can be the target of the following operations: //! //! The controller account can free a portion (or all) of the funds using the -//! [`unbond`](enum.Call.html#variant.unbond) call. Note that the funds are not immediately +//! [`unbond`](Call::unbond) call. Note that the funds are not immediately //! accessible. Instead, a duration denoted by -//! [`BondingDuration`](./trait.Config.html#associatedtype.BondingDuration) (in number of eras) must +//! [`Config::BondingDuration`] (in number of eras) must //! pass until the funds can actually be removed. Once the `BondingDuration` is over, the -//! [`withdraw_unbonded`](./enum.Call.html#variant.withdraw_unbonded) call can be used to actually +//! [`withdraw_unbonded`](Call::withdraw_unbonded) call can be used to actually //! withdraw the funds. //! //! Note that there is a limitation to the number of fund-chunks that can be scheduled to be -//! unlocked in the future via [`unbond`](enum.Call.html#variant.unbond). In case this maximum +//! unlocked in the future via [`unbond`](Call::unbond). In case this maximum //! (`MAX_UNLOCKING_CHUNKS`) is reached, the bonded account _must_ first wait until a successful //! call to `withdraw_unbonded` to remove some of the chunks. //! @@ -273,117 +270,68 @@ //! //! ## GenesisConfig //! -//! The Staking module depends on the [`GenesisConfig`](./struct.GenesisConfig.html). The +//! The Staking pallet depends on the [`GenesisConfig`]. The //! `GenesisConfig` is optional and allow to set some initial stakers. //! //! ## Related Modules //! //! - [Balances](../pallet_balances/index.html): Used to manage values at stake. //! - [Session](../pallet_session/index.html): Used to manage sessions. Also, a list of new -//! validators is stored in the Session module's `Validators` at the end of each era. +//! validators is stored in the Session pallet's `Validators` at the end of each era. -#![recursion_limit = "256"] #![cfg_attr(not(feature = "std"), no_std)] +#![recursion_limit = "256"] -#[cfg(any(feature = "runtime-benchmarks"))] +#[cfg(feature = "runtime-benchmarks")] pub mod benchmarking; #[cfg(any(feature = "runtime-benchmarks"))] pub mod testing_utils; -pub mod slashing; -pub mod offchain_election; pub mod inflation; +pub mod offchain_election; +pub mod slashing; +pub mod types; pub mod weights; -use core::fmt; -use crate::_feps::NposSolution; -use codec::{Decode, Encode, HasCompact}; +mod pallet; + +use codec::{Decode, Encode, HasCompact, MaxEncodedLen}; use frame_support::{ - decl_error, decl_event, decl_module, decl_storage, - dispatch::{ - DispatchErrorWithPostInfo, DispatchResult, DispatchResultWithPostInfo, WithPostDispatchInfo, - DispatchClass::Operational, - Pays, Weight, - }, - ensure, - storage::IterableStorageMap, - traits::{ - schedule::{Anon, DispatchTime, HIGHEST_PRIORITY}, - Currency, CurrencyToVote, EnsureOrigin, EstimateNextNewSession, Get, Imbalance, IsSubType, - LockIdentifier, LockableCurrency, OnUnbalanced, UnixTime, WithdrawReasons, - }, - weights::{ - constants::{WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS}, - }, - Twox64Concat, + traits::{Currency, Get}, + weights::Weight, + BoundedVec, CloneNoBound, EqNoBound, PartialEqNoBound, RuntimeDebugNoBound, }; -use frame_system::{ - self as system, ensure_none, ensure_root, ensure_signed, offchain::SendTransactionTypes, - RawOrigin, -}; -use pallet_identity as identity; -use pallet_session::historical; -use polymesh_common_utilities::{identity::Config as IdentityConfig, Context, GC_DID, constants::GC_PALLET_ID}; -use polymesh_primitives::{IdentityId, storage_migration_ver, storage_migrate_on}; use scale_info::TypeInfo; -use frame_election_provider_support::{ - generate_solution_type, -}; -use sp_npos_elections::{ - seq_phragmen, to_support_map, - Assignment, BalancingConfig, ElectionResult as PrimitiveElectionResult, ElectionScore, - EvaluateSupport, ExtendedBalance, - PerThing128, Supports, SupportMap, VoteWeight, -}; use sp_runtime::{ - curve::PiecewiseLinear, - traits::{ - AtLeast32BitUnsigned, CheckedSub, Convert, Dispatchable, SaturatedConversion, Saturating, - StaticLookup, Zero, AccountIdConversion, - }, - transaction_validity::{ - InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity, - TransactionValidityError, ValidTransaction, - }, - ModuleError, - DispatchError, PerU16, Perbill, Percent, Permill, RuntimeDebug, + traits::{Convert, Saturating, StaticLookup, Zero}, + Perbill, RuntimeDebug, }; -#[cfg(feature = "std")] -use sp_runtime::{Deserialize, Serialize}; use sp_staking::{ - offence::{DisableStrategy, Offence, OffenceDetails, OffenceError, OnOffenceHandler, ReportOffence}, + offence::{Offence, OffenceError, ReportOffence}, SessionIndex, }; -use sp_std::{ - collections::btree_map::BTreeMap, - convert::{From, TryInto}, - mem::{size_of}, - prelude::*, - result, -}; +use sp_std::{collections::btree_map::BTreeMap, prelude::*}; pub use weights::WeightInfo; -const STAKING_ID: LockIdentifier = *b"staking "; -pub const MAX_UNLOCKING_CHUNKS: usize = 32; -/// Maximum number of validators accounted for the weight estimation of `set_commission_cap`. -pub const MAX_ALLOWED_VALIDATORS: u32 = 150; +pub use pallet::pallet::*; -pub(crate) const LOG_TARGET: &'static str = "staking"; +use frame_election_provider_support::generate_solution_type; +use frame_support::parameter_types; +use frame_support::traits::LockIdentifier; +use sp_runtime::PerU16; +use sp_staking::offence::{DisableStrategy, OffenceDetails, OnOffenceHandler}; +use sp_std::mem::size_of; -// syntactic sugar for logging. -#[macro_export] -macro_rules! log { - ($level:tt, $patter:expr $(, $values:expr)* $(,)?) => { - log::$level!( - target: crate::LOG_TARGET, - $patter $(, $values)* - ) - }; -} +use crate::_feps::NposSolution; +use crate::types::SlashingSwitch; + +// Polymesh Change: Constants and type definitions +// ----------------------------------------------------------------- +const STAKING_ID: LockIdentifier = *b"staking "; +pub const MAX_ALLOWED_VALIDATORS: u32 = 150; /// Data type used to index nominators in the compact type pub type NominatorIndex = u32; - /// Data type used to index validators in the compact type. pub type ValidatorIndex = u16; @@ -400,9 +348,6 @@ pub(crate) const MAX_NOMINATORS: usize = NominatorIndex::max_value() as usize; /// Counter for the number of eras that have passed. pub type EraIndex = u32; -/// Counter for the number of "reward" points earned by a given validator. -pub type RewardPoint = u32; - // Note: Maximum nomination limit is set here -- 16. generate_solution_type!( #[compact] @@ -414,23 +359,6 @@ generate_solution_type!( >(16) ); -pub const MAX_NOMINATIONS: u32 = ::LIMIT as u32; - -/// Accuracy used for on-chain election. -pub type ChainAccuracy = Perbill; - -/// Accuracy used for off-chain election. This better be small. -pub type OffchainAccuracy = PerU16; - -/// The balance type of this module. -pub type BalanceOf = - <::Currency as Currency<::AccountId>>::Balance; - -pub type PositiveImbalanceOf = - <::Currency as Currency<::AccountId>>::PositiveImbalance; -pub type NegativeImbalanceOf = - <::Currency as Currency<::AccountId>>::NegativeImbalance; - #[cfg(debug_assertions)] impl CompactAssignments { pub fn push_votes1(&mut self, v: (NominatorIndex, ValidatorIndex)) { @@ -439,13 +367,58 @@ impl CompactAssignments { pub fn get_votes3( &mut self, - ) -> &mut Vec<(NominatorIndex, [(ValidatorIndex, OffchainAccuracy); 2], ValidatorIndex)> { + ) -> &mut Vec<( + NominatorIndex, + [(ValidatorIndex, OffchainAccuracy); 2], + ValidatorIndex, + )> { &mut self.votes3 } } +/// Accuracy used for on-chain election. +pub type ChainAccuracy = Perbill; + +/// Accuracy used for off-chain election. This better be small. +pub type OffchainAccuracy = PerU16; + +parameter_types! { + pub MaxNominations: u32 = ::LIMIT as u32; + pub MaxUnlockingChunks: u32 = 32; +} +// ----------------------------------------------------------------- + +pub(crate) const LOG_TARGET: &str = "runtime::staking"; + +// syntactic sugar for logging. +#[macro_export] +macro_rules! log { + ($level:tt, $patter:expr $(, $values:expr)* $(,)?) => { + log::$level!( + target: crate::LOG_TARGET, + concat!("[{:?}] 💸 ", $patter), >::block_number() $(, $values)* + ) + }; +} + +/// Counter for the number of "reward" points earned by a given validator. +pub type RewardPoint = u32; + +/// The balance type of this pallet. +pub type BalanceOf = + <::Currency as Currency<::AccountId>>::Balance; + +type PositiveImbalanceOf = <::Currency as Currency< + ::AccountId, +>>::PositiveImbalance; +pub type NegativeImbalanceOf = <::Currency as Currency< + ::AccountId, +>>::NegativeImbalance; + +type AccountIdLookupOf = <::Lookup as StaticLookup>::Source; + /// Information regarding the active era (era in used in session). -#[derive(Encode, Decode, RuntimeDebug, TypeInfo)] +#[derive(Encode, Decode, RuntimeDebug, TypeInfo, MaxEncodedLen)] pub struct ActiveEraInfo { /// Index of era. pub index: EraIndex, @@ -469,7 +442,7 @@ pub struct EraRewardPoints { impl Default for EraRewardPoints { fn default() -> Self { - Self { + EraRewardPoints { total: Default::default(), individual: BTreeMap::new(), } @@ -478,8 +451,7 @@ impl Default for EraRewardPoints { /// Indicates the initial status of the staker. #[derive(RuntimeDebug, TypeInfo)] -#[derive(Clone)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize, Clone))] pub enum StakerStatus { /// Chilling. Idle, @@ -490,7 +462,17 @@ pub enum StakerStatus { } /// A destination account for payment. -#[derive(PartialEq, Eq, Copy, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] +#[derive( + PartialEq, + Eq, + Copy, + Clone, + Encode, + Decode, + RuntimeDebug, + TypeInfo, + MaxEncodedLen +)] pub enum RewardDestination { /// Pay into the stash account, increasing the amount at stake accordingly. Staked, @@ -509,7 +491,17 @@ impl Default for RewardDestination { } /// Preference of what happens regarding validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] +#[derive( + PartialEq, + Eq, + Clone, + Encode, + Decode, + RuntimeDebug, + TypeInfo, + Default, + MaxEncodedLen +)] pub struct ValidatorPrefs { /// Reward that validator takes up-front; only the rest is split between themselves and /// nominators. @@ -521,51 +513,18 @@ pub struct ValidatorPrefs { pub blocked: bool, } -impl Default for ValidatorPrefs { - fn default() -> Self { - ValidatorPrefs { - commission: Default::default(), - blocked: false, - } - } -} - -// Polymesh-Note: -// Our validators are permissioned, -// and we allow limiting the number of validators an identity can run. -// ----------------------------------------------------------------------------- - -/// Preference of an identity regarding validation. -#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] -pub struct PermissionedIdentityPrefs { - /// Intended number of validators an identity wants to run. - /// - /// Act as a hard limit on the number of validators an identity can run. - /// However, it can be amended using governance. - /// - /// The count satisfies `count < MaxValidatorPerIdentity * Self::validator_count()`. - pub intended_count: u32, - /// Keeps track of the running number of validators of a DID. - pub running_count: u32, -} - -impl Default for PermissionedIdentityPrefs { - fn default() -> Self { - // By default only 1 validator is allowed to run by an identity. - Self::new(1) - } -} - -impl PermissionedIdentityPrefs { - pub fn new(count: u32) -> Self { - Self { intended_count: count, running_count: 0 } - } -} -// ----------------------------------------------------------------------------- - /// Just a Balance/BlockNumber tuple to encode when a chunk of funds will be unlocked. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] -pub struct UnlockChunk { +#[derive( + PartialEq, + Eq, + Clone, + Encode, + Decode, + RuntimeDebug, + TypeInfo, + MaxEncodedLen +)] +pub struct UnlockChunk { /// Amount of funds to be unlocked. #[codec(compact)] pub value: Balance, @@ -575,55 +534,79 @@ pub struct UnlockChunk { } /// The ledger of a (bonded) stash. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] -pub struct StakingLedger { +#[derive( + PartialEqNoBound, + EqNoBound, + CloneNoBound, + Encode, + Decode, + RuntimeDebugNoBound, + TypeInfo +)] +#[scale_info(skip_type_params(T))] +pub struct StakingLedger { /// The stash account whose balance is actually locked and at stake. - pub stash: AccountId, + pub stash: T::AccountId, /// The total amount of the stash's balance that we are currently accounting for. /// It's just `active` plus all the `unlocking` balances. #[codec(compact)] - pub total: Balance, + pub total: BalanceOf, /// The total amount of the stash's balance that will be at stake in any forthcoming /// rounds. #[codec(compact)] - pub active: Balance, - /// Any balance that is becoming free, which may eventually be transferred out - /// of the stash (assuming it doesn't get slashed first). - pub unlocking: Vec>, + pub active: BalanceOf, + /// Any balance that is becoming free, which may eventually be transferred out of the stash + /// (assuming it doesn't get slashed first). It is assumed that this will be treated as a first + /// in, first out queue where the new (higher value) eras get pushed on the back. + pub unlocking: Vec>>, /// List of eras for which the stakers behind a validator have claimed rewards. Only updated /// for validators. pub claimed_rewards: Vec, } -impl< - AccountId, - Balance: HasCompact + Copy + Saturating + AtLeast32BitUnsigned, -> StakingLedger { +impl StakingLedger { + /// Initializes the default object using the given `validator`. + pub fn default_from(stash: T::AccountId) -> Self { + Self { + stash, + total: Zero::zero(), + active: Zero::zero(), + unlocking: Default::default(), + claimed_rewards: Default::default(), + } + } + /// Remove entries from `unlocking` that are sufficiently old and reduce the /// total by the sum of their balances. fn consolidate_unlocked(self, current_era: EraIndex) -> Self { let mut total = self.total; - let unlocking = self.unlocking.into_iter() - .filter(|chunk| if chunk.era > current_era { - true - } else { - total = total.saturating_sub(chunk.value); - false + let unlocking = self + .unlocking + .into_iter() + .filter(|chunk| { + if chunk.era > current_era { + true + } else { + total = total.saturating_sub(chunk.value); + false + } }) - .collect(); + .collect::>(); Self { stash: self.stash, total, active: self.active, unlocking, - claimed_rewards: self.claimed_rewards + claimed_rewards: self.claimed_rewards, } } /// Re-bond funds that were scheduled for unlocking. - fn rebond(mut self, value: Balance) -> Self { - let mut unlocking_balance: Balance = Zero::zero(); + /// + /// Returns the updated ledger, and the amount actually rebonded. + fn rebond(mut self, value: BalanceOf) -> (Self, BalanceOf) { + let mut unlocking_balance = BalanceOf::::zero(); while let Some(last) = self.unlocking.last_mut() { if unlocking_balance + last.value <= value { @@ -639,56 +622,69 @@ impl< } if unlocking_balance >= value { - break + break; } } - self + (self, unlocking_balance) } -} -impl StakingLedger where - Balance: AtLeast32BitUnsigned + Saturating + Copy, -{ - /// Slash the validator for a given amount of balance. This can grow the value - /// of the slash in the case that the validator has less than `minimum_balance` - /// active funds. Returns the amount of funds actually slashed. + /// Slash the staker for a given amount of balance. + /// + /// This implements a proportional slashing system, whereby we set our preference to slash as + /// such: + /// + /// - If any unlocking chunks exist that are scheduled to be unlocked at `slash_era + + /// bonding_duration` and onwards, the slash is divided equally between the active ledger and + /// the unlocking chunks. + /// - If no such chunks exist, then only the active balance is slashed. + /// + /// Note that the above is only a *preference*. If for any reason the active ledger, with or + /// without some portion of the unlocking chunks that are more justified to be slashed are not + /// enough, then the slashing will continue and will consume as much of the active and unlocking + /// chunks as needed. /// - /// Slashes from `active` funds first, and then `unlocking`, starting with the - /// chunks that are closest to unlocking. - fn slash( + /// This will never slash more than the given amount. If any of the chunks become dusted, the + /// last chunk is slashed slightly less to compensate. Returns the amount of funds actually + /// slashed. + /// + /// `slash_era` is the era in which the slash (which is being enacted now) actually happened. + /// + /// This calls `Config::OnStakerSlash::on_slash` with information as to how the slash was + /// applied. + pub fn slash( &mut self, - mut value: Balance, - minimum_balance: Balance, - ) -> Balance { + mut value: BalanceOf, + minimum_balance: BalanceOf, + ) -> BalanceOf { let pre_total = self.total; let total = &mut self.total; let active = &mut self.active; - let slash_out_of = | - total_remaining: &mut Balance, - target: &mut Balance, - value: &mut Balance, - | { - let mut slash_from_target = (*value).min(*target); + let slash_out_of = |total_remaining: &mut BalanceOf, + target: &mut BalanceOf, + value: &mut BalanceOf| { + let mut slash_from_target = (*value).min(*target); - if !slash_from_target.is_zero() { - *target -= slash_from_target; - - // don't leave a dust balance in the staking system. - if *target <= minimum_balance { - slash_from_target += *target; - *value += sp_std::mem::replace(target, Zero::zero()); - } + if !slash_from_target.is_zero() { + *target -= slash_from_target; - *total_remaining = total_remaining.saturating_sub(slash_from_target); - *value -= slash_from_target; + // don't leave a dust balance in the staking system. + if *target <= minimum_balance { + slash_from_target += *target; + *value += sp_std::mem::replace(target, Zero::zero()); } - }; + + *total_remaining = total_remaining.saturating_sub(slash_from_target); + *value -= slash_from_target; + } + }; slash_out_of(total, active, &mut value); - let i = self.unlocking.iter_mut() + let i = self + .unlocking + .iter_mut() .map(|chunk| { slash_out_of(total, &mut chunk.value, &mut value); chunk.value @@ -704,10 +700,21 @@ impl StakingLedger where } /// A record of the nominations made by a specific account. -#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] -pub struct Nominations { +#[derive( + PartialEqNoBound, + EqNoBound, + Clone, + Encode, + Decode, + RuntimeDebugNoBound, + TypeInfo, + MaxEncodedLen +)] +#[codec(mel_bound())] +#[scale_info(skip_type_params(T))] +pub struct Nominations { /// The targets of nomination. - pub targets: Vec, + pub targets: BoundedVec, /// The era the nominations were submitted. /// /// Except for initial nominations which are considered submitted at era 0. @@ -720,7 +727,17 @@ pub struct Nominations { } /// The amount of exposure (to slashing) than an individual nominator has. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] +#[derive( + PartialEq, + Eq, + PartialOrd, + Ord, + Clone, + Encode, + Decode, + RuntimeDebug, + TypeInfo +)] pub struct IndividualExposure { /// The stash account of the nominator in question. pub who: AccountId, @@ -730,7 +747,17 @@ pub struct IndividualExposure { } /// A snapshot of the stake backing a single validator in the system. -#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Encode, Decode, RuntimeDebug, TypeInfo)] +#[derive( + PartialEq, + Eq, + PartialOrd, + Ord, + Clone, + Encode, + Decode, + RuntimeDebug, + TypeInfo +)] pub struct Exposure { /// The total balance backing this validator. #[codec(compact)] @@ -742,7 +769,7 @@ pub struct Exposure { pub others: Vec>, } -impl Default for Exposure { +impl Default for Exposure { fn default() -> Self { Self { total: Default::default(), @@ -759,91 +786,32 @@ pub struct UnappliedSlash { /// The stash ID of the offending validator. pub validator: AccountId, /// The validator's own slash. - own: Balance, + pub own: Balance, /// All other slashed stakers and amounts. - others: Vec<(AccountId, Balance)>, + pub others: Vec<(AccountId, Balance)>, /// Reporters of the offence; bounty payout recipients. - reporters: Vec, + pub reporters: Vec, /// The amount of payout. pub payout: Balance, } -/// Indicate how an election round was computed. -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, RuntimeDebug, TypeInfo)] -pub enum ElectionCompute { - /// Result was forcefully computed on chain at the end of the session. - OnChain, - /// Result was submitted and accepted to the chain via a signed transaction. - Signed, - /// Result was submitted and accepted to the chain via an unsigned transaction (by an - /// authority). - Unsigned, -} - -/// The result of an election round. -#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] -pub struct ElectionResult { - /// Flat list of validators who have been elected. - elected_stashes: Vec, - /// Flat list of new exposures, to be updated in the [`Exposure`] storage. - exposures: Vec<(AccountId, Exposure)>, - /// Type of the result. This is kept on chain only to track and report the best score's - /// submission type. An optimisation could remove this. - pub compute: ElectionCompute, -} - -/// The status of the upcoming (offchain) election. -#[derive(PartialEq, Eq, Clone, Encode, Decode, TypeInfo, RuntimeDebug)] -pub enum ElectionStatus { - /// Nothing has and will happen for now. submission window is not open. - Closed, - /// The submission window has been open since the contained block number. - Open(BlockNumber), -} - -/// Some indications about the size of the election. This must be submitted with the solution. -/// -/// Note that these values must reflect the __total__ number, not only those that are present in the -/// solution. In short, these should be the same size as the size of the values dumped in -/// `SnapshotValidators` and `SnapshotNominators`. -#[derive(PartialEq, Eq, Clone, Copy, Encode, Decode, TypeInfo, RuntimeDebug, Default)] -pub struct ElectionSize { - /// Number of validators in the snapshot of the current election round. - #[codec(compact)] - pub validators: ValidatorIndex, - /// Number of nominators in the snapshot of the current election round. - #[codec(compact)] - pub nominators: NominatorIndex, -} - - -impl ElectionStatus { - pub fn is_open_at(&self, n: BlockNumber) -> bool { - *self == Self::Open(n) - } - - pub fn is_closed(&self) -> bool { - match self { - Self::Closed => true, - _ => false +impl UnappliedSlash { + /// Initializes the default object using the given `validator`. + pub fn default_from(validator: AccountId) -> Self { + Self { + validator, + own: Zero::zero(), + others: vec![], + reporters: vec![], + payout: Zero::zero(), } } - - pub fn is_open(&self) -> bool { - !self.is_closed() - } -} - -impl Default for ElectionStatus { - fn default() -> Self { - Self::Closed - } } /// Means for interacting with a specialized version of the `session` trait. /// /// This is needed because `Staking` sets the `ValidatorIdOf` of the `pallet_session::Config` -pub trait SessionInterface: frame_system::Config { +pub trait SessionInterface { /// Disable the validator at the given index, returns `false` if the validator was already /// disabled or the index is out of bounds. fn disable_validator(validator_index: u32) -> bool; @@ -853,7 +821,8 @@ pub trait SessionInterface: frame_system::Config { fn prune_historical_up_to(up_to: SessionIndex); } -impl SessionInterface<::AccountId> for T where +impl SessionInterface<::AccountId> for T +where T: pallet_session::Config::AccountId>, T: pallet_session::historical::Config< FullIdentification = Exposure<::AccountId, BalanceOf>, @@ -861,8 +830,10 @@ impl SessionInterface<::AccountId> for T w >, T::SessionHandler: pallet_session::SessionHandler<::AccountId>, T::SessionManager: pallet_session::SessionManager<::AccountId>, - T::ValidatorIdOf: - Convert<::AccountId, Option<::AccountId>>, + T::ValidatorIdOf: Convert< + ::AccountId, + Option<::AccountId>, + >, { fn disable_validator(validator_index: u32) -> bool { >::disable_index(validator_index) @@ -877,150 +848,48 @@ impl SessionInterface<::AccountId> for T w } } -type Identity = identity::Module; - -pub trait Config: - frame_system::Config + SendTransactionTypes> + pallet_babe::Config + IdentityConfig -{ - /// The staking balance. - type Currency: LockableCurrency; - - /// Time used for computing era duration. - /// - /// It is guaranteed to start being called from the first `on_finalize`. Thus value at genesis - /// is not used. - type UnixTime: UnixTime; - - /// Convert a balance into a number used for election calculation. This must fit into a `u64` - /// but is allowed to be sensibly lossy. The `u64` is used to communicate with the - /// [`sp_npos_elections`] crate which accepts u64 numbers and does operations in 128. - /// Consequently, the backward convert is used convert the u128s from sp-elections back to a - /// [`BalanceOf`]. - type CurrencyToVote: CurrencyToVote>; - - /// Maximum number of nominations per nominator. - const MAX_NOMINATIONS: u32; - - /// Tokens have been minted and are unused for validator-reward. - /// See [Era payout](./index.html#era-payout). - type RewardRemainder: OnUnbalanced>; - - /// The overarching event type. - type RuntimeEvent: From> + Into<::RuntimeEvent>; - - /// Handler for the unbalanced reduction when slashing a staker. - type Slash: OnUnbalanced>; - - /// Handler for the unbalanced increment when rewarding a staker. - type Reward: OnUnbalanced>; - - /// Number of sessions per era. - type SessionsPerEra: Get; - - /// Number of eras that staked funds must remain bonded for. - type BondingDuration: Get; - - /// Number of eras that slashes are deferred by, after computation. - /// - /// This should be less than the bonding duration. Set to 0 if slashes - /// should be applied immediately, without opportunity for intervention. - type SlashDeferDuration: Get; - - /// The origin which can cancel a deferred slash. Root can always do this. - type SlashCancelOrigin: EnsureOrigin; - - /// Interface for interacting with a session module. - type SessionInterface: self::SessionInterface; - - /// The NPoS reward curve used to define yearly inflation. - /// See [Era payout](./index.html#era-payout). - type RewardCurve: Get<&'static PiecewiseLinear<'static>>; - - /// Something that can estimate the next session change, accurately or as a best effort guess. - type NextNewSession: EstimateNextNewSession; - - /// The number of blocks before the end of the era from which election submissions are allowed. - /// - /// Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will - /// be used. - /// - /// This is bounded by being within the last session. Hence, setting it to a value more than the - /// length of a session will be pointless. - type ElectionLookahead: Get; - - /// The overarching call type. - type Call: Dispatchable + From> + IsSubType> + Clone; - - /// Maximum number of balancing iterations to run in the offchain submission. - /// - /// If set to 0, balance_solution will not be executed at all. - type MaxIterations: Get; - - /// The threshold of improvement that should be provided for a new solution to be accepted. - type MinSolutionScoreBump: Get; - - /// The maximum number of nominators rewarded for each validator. +/// Handler for determining how much of a balance should be paid out on the current era. +pub trait EraPayout { + /// Determine the payout for this era. /// - /// For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim - /// their reward. This used to limit the i/o cost for the nominator payout. - type MaxNominatorRewardedPerValidator: Get; - - /// The fraction of the validator set that is safe to be offending. - /// After the threshold is reached a new era will be forced. - type OffendingValidatorsThreshold: Get; - - /// A configuration for base priority of unsigned transactions. - /// - /// This is exposed so that it can be tuned for particular runtime, when - /// multiple pallets send unsigned transactions. - type UnsignedPriority: Get; - - /// Maximum weight that the unsigned transaction can have. - /// - /// Chose this value with care. On one hand, it should be as high as possible, so the solution - /// can contain as many nominators/validators as possible. On the other hand, it should be small - /// enough to fit in the block. - type OffchainSolutionWeightLimit: Get; - - /// Weight information for extrinsics in this pallet. - type WeightInfo: WeightInfo; - - /// Required origin for adding a potential validator (can always be Root). - type RequiredAddOrigin: EnsureOrigin; - - /// Required origin for removing a validator (can always be Root). - type RequiredRemoveOrigin: EnsureOrigin; - - /// Required origin for changing validator commission. - type RequiredCommissionOrigin: EnsureOrigin; - - /// To schedule the rewards for the stakers after the end of era. - type RewardScheduler: Anon::Call, Self::PalletsOrigin>; - - /// Overarching type of all pallets origins. - type PalletsOrigin: From>; - - /// Maximum amount of validators that can run by an identity. - /// It will be MaxValidatorPerIdentity * Self::validator_count(). - type MaxValidatorPerIdentity: Get; - - /// Maximum amount of total issuance after which fixed rewards kicks in. - type MaxVariableInflationTotalIssuance: Get>; - - /// Yearly total reward amount that gets distributed when fixed rewards kicks in. - type FixedYearlyReward: Get>; + /// Returns the amount to be paid to stakers in this era, as well as whatever else should be + /// paid out ("the rest"). + fn era_payout( + total_staked: Balance, + total_issuance: Balance, + era_duration_millis: u64, + ) -> (Balance, Balance); +} - /// Minimum bond amount. - type MinimumBond: Get>; +impl EraPayout for () { + fn era_payout( + _total_staked: Balance, + _total_issuance: Balance, + _era_duration_millis: u64, + ) -> (Balance, Balance) { + (Default::default(), Default::default()) + } } /// Mode of era-forcing. -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, RuntimeDebug, TypeInfo)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +#[derive( + Copy, + Clone, + PartialEq, + Eq, + Encode, + Decode, + RuntimeDebug, + TypeInfo, + MaxEncodedLen +)] +#[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] pub enum Forcing { /// Not forcing anything - just let whatever happen. NotForcing, /// Force a new era, then reset to `NotForcing` as soon as it is done. + /// Note that this will force to trigger an election until a new era is triggered, if the + /// election failed, the next session end will trigger a new election again, until success. ForceNew, /// Avoid a new era indefinitely. ForceNone, @@ -1029,2797 +898,113 @@ pub enum Forcing { } impl Default for Forcing { - fn default() -> Self { Forcing::NotForcing } -} - -/// Switch used to change the "victim" for slashing. Victims can be -/// validators, both validators and nominators, or no-one. -#[derive(Copy, Clone, PartialEq, Eq, Encode, Decode, TypeInfo, RuntimeDebug)] -#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] -pub enum SlashingSwitch { - /// Allow validators but not nominators to get slashed. - Validator, - /// Allow both validators and nominators to get slashed. - ValidatorAndNominator, - /// Forbid slashing. - None, -} - -impl Default for SlashingSwitch { fn default() -> Self { - Self::None + Forcing::NotForcing } } -// A value placed in storage that represents the current version of the Staking storage. This value -// is used by the `on_runtime_upgrade` logic to determine whether we run storage migration logic. -// This should match directly with the semantic versions of the Rust crate. -#[derive(Encode, Decode, Clone, Copy, PartialEq, Eq, RuntimeDebug, TypeInfo)] -enum Releases { - V1_0_0Ancient, - V2_0_0, - V3_0_0, - V4_0_0, - V5_0_0, - V6_0_0, - V6_0_1, - V7_0_0, -} +/// A `Convert` implementation that finds the stash of the given controller account, +/// if any. +pub struct StashOf(sp_std::marker::PhantomData); -impl Default for Releases { - fn default() -> Self { - Releases::V6_0_1 +impl Convert> for StashOf { + fn convert(controller: T::AccountId) -> Option { + >::ledger(&controller).map(|l| l.stash) } } -decl_storage! { - trait Store for Module as Staking { - /// Number of eras to keep in history. - /// - /// Information is kept for eras in `[current_era - history_depth; current_era]`. - /// - /// Must be more than the number of eras delayed by session otherwise. I.e. active era must - /// always be in history. I.e. `active_era > current_era - history_depth` must be - /// guaranteed. - HistoryDepth get(fn history_depth) config(): u32 = 84; - - /// The ideal number of staking participants. - pub ValidatorCount get(fn validator_count) config(): u32; - - /// Minimum number of staking participants before emergency conditions are imposed. - pub MinimumValidatorCount get(fn minimum_validator_count) config(): u32; - - /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're - /// easy to initialize and the performance hit is minimal (we expect no more than four - /// invulnerables) and restricted to testnets. - pub Invulnerables get(fn invulnerables) config(): Vec; - - /// Map from all locked "stash" accounts to the controller account. - pub Bonded get(fn bonded): map hasher(twox_64_concat) T::AccountId => Option; - - /// Map from all (unlocked) "controller" accounts to the info regarding the staking. - pub Ledger get(fn ledger): - map hasher(blake2_128_concat) T::AccountId - => Option>>; - - /// Where the reward payment should be made. Keyed by stash. - pub Payee get(fn payee): map hasher(twox_64_concat) T::AccountId => RewardDestination; - - /// The map from (wannabe) validator stash key to the preferences of that validator. - pub Validators get(fn validators): - map hasher(twox_64_concat) T::AccountId => ValidatorPrefs; - - /// The map from nominator stash key to the set of stash keys of all validators to nominate. - pub Nominators get(fn nominators): - map hasher(twox_64_concat) T::AccountId => Option>; - - /// The current era index. - /// - /// This is the latest planned era, depending on how the Session pallet queues the validator - /// set, it might be active or not. - pub CurrentEra get(fn current_era): Option; - - /// The active era information, it holds index and start. - /// - /// The active era is the era being currently rewarded. Validator set of this era must be - /// equal to [`SessionInterface::validators`]. - pub ActiveEra get(fn active_era): Option; - - /// The session index at which the era start for the last `HISTORY_DEPTH` eras. - /// - /// Note: This tracks the starting session (i.e. session index when era start being active) - /// for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`. - pub ErasStartSessionIndex get(fn eras_start_session_index): - map hasher(twox_64_concat) EraIndex => Option; - - /// Exposure of validator at era. - /// - /// This is keyed first by the era index to allow bulk deletion and then the stash account. - /// - /// Is it removed after `HISTORY_DEPTH` eras. - /// If stakers hasn't been set or has been removed then empty exposure is returned. - pub ErasStakers get(fn eras_stakers): - double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId - => Exposure>; - - /// Clipped Exposure of validator at era. - /// - /// This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the - /// `T::MaxNominatorRewardedPerValidator` biggest stakers. - /// (Note: the field `total` and `own` of the exposure remains unchanged). - /// This is used to limit the i/o cost for the nominator payout. - /// - /// This is keyed fist by the era index to allow bulk deletion and then the stash account. - /// - /// Is it removed after `HISTORY_DEPTH` eras. - /// If stakers hasn't been set or has been removed then empty exposure is returned. - pub ErasStakersClipped get(fn eras_stakers_clipped): - double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId - => Exposure>; - - /// Similar to `ErasStakers`, this holds the preferences of validators. - /// - /// This is keyed first by the era index to allow bulk deletion and then the stash account. - /// - /// Is it removed after `HISTORY_DEPTH` eras. - // If prefs hasn't been set or has been removed then 0 commission is returned. - pub ErasValidatorPrefs get(fn eras_validator_prefs): - double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId - => ValidatorPrefs; - - /// The total validator era payout for the last `HISTORY_DEPTH` eras. - /// - /// Eras that haven't finished yet or has been removed doesn't have reward. - pub ErasValidatorReward get(fn eras_validator_reward): - map hasher(twox_64_concat) EraIndex => Option>; +/// A typed conversion from stash account ID to the active exposure of nominators +/// on that account. +/// +/// Active exposure is the exposure of the validator set currently validating, i.e. in +/// `active_era`. It can differ from the latest planned exposure in `current_era`. +pub struct ExposureOf(sp_std::marker::PhantomData); - /// Rewards for the last `HISTORY_DEPTH` eras. - /// If reward hasn't been set or has been removed then 0 reward is returned. - pub ErasRewardPoints get(fn eras_reward_points): - map hasher(twox_64_concat) EraIndex => EraRewardPoints; +impl Convert>>> + for ExposureOf +{ + fn convert(validator: T::AccountId) -> Option>> { + >::active_era() + .map(|active_era| >::eras_stakers(active_era.index, &validator)) + } +} - /// The total amount staked for the last `HISTORY_DEPTH` eras. - /// If total hasn't been set or has been removed then 0 stake is returned. - pub ErasTotalStake get(fn eras_total_stake): - map hasher(twox_64_concat) EraIndex => BalanceOf; +/// Filter historical offences out and only allow those from the bonding period. +pub struct FilterHistoricalOffences { + _inner: sp_std::marker::PhantomData<(T, R)>, +} - /// Mode of era forcing. - pub ForceEra get(fn force_era) config(): Forcing; +impl ReportOffence + for FilterHistoricalOffences, R> +where + T: Config, + R: ReportOffence, + O: Offence, +{ + fn report_offence(reporters: Vec, offence: O) -> Result<(), OffenceError> { + // Disallow any slashing from before the current bonding period. + let offence_session = offence.session_index(); + let bonded_eras = BondedEras::::get(); - /// The percentage of the slash that is distributed to reporters. - /// - /// The rest of the slashed value is handled by the `Slash`. - pub SlashRewardFraction get(fn slash_reward_fraction) config(): Perbill; + if bonded_eras + .first() + .filter(|(_, start)| offence_session >= *start) + .is_some() + { + R::report_offence(reporters, offence) + } else { + >::deposit_event(Event::::OldSlashingReportDiscarded(offence_session)); + Ok(()) + } + } - /// The amount of currency given to reporters of a slash event which was - /// canceled by extraordinary circumstances (e.g. governance). - pub CanceledSlashPayout get(fn canceled_payout) config(): BalanceOf; + fn is_known_offence(offenders: &[Offender], time_slot: &O::TimeSlot) -> bool { + R::is_known_offence(offenders, time_slot) + } +} - /// All unapplied slashes that are queued for later. - pub UnappliedSlashes: - map hasher(twox_64_concat) EraIndex => Vec>>; +/// Configurations of the benchmarking of the pallet. +pub trait BenchmarkingConfig { + /// The maximum number of validators to use. + type MaxValidators: Get; + /// The maximum number of nominators to use. + type MaxNominators: Get; +} - /// A mapping from still-bonded eras to the first session index of that era. - /// - /// Must contains information for eras for the range: - /// `[active_era - bounding_duration; active_era]` - pub BondedEras: Vec<(EraIndex, SessionIndex)>; +/// A mock benchmarking config for pallet-staking. +/// +/// Should only be used for testing. +#[cfg(feature = "std")] +pub struct TestBenchmarkingConfig; - /// All slashing events on validators, mapped by era to the highest slash proportion - /// and slash value of the era. - pub ValidatorSlashInEra: - double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId - => Option<(Perbill, BalanceOf)>; +#[cfg(feature = "std")] +impl BenchmarkingConfig for TestBenchmarkingConfig { + type MaxValidators = frame_support::traits::ConstU32<100>; + type MaxNominators = frame_support::traits::ConstU32<100>; +} - /// All slashing events on nominators, mapped by era to the highest slash value of the era. - pub NominatorSlashInEra: - double_map hasher(twox_64_concat) EraIndex, hasher(twox_64_concat) T::AccountId - => Option>; +// Polymesh Change: Impl EventHandler, SessionManager, OnOffenceHandler +// ----------------------------------------------------------------- - /// Slashing spans for stash accounts. - pub SlashingSpans get(fn slashing_spans): map hasher(twox_64_concat) T::AccountId => Option; - - /// Records information about the maximum slash of a stash within a slashing span, - /// as well as how much reward has been paid out. - pub SpanSlash: - map hasher(twox_64_concat) (T::AccountId, slashing::SpanIndex) - => slashing::SpanRecord>; - - /// The earliest era for which we have a pending, unapplied slash. - EarliestUnappliedSlash: Option; - - /// Indices of validators that have offended in the active era and whether they are currently - /// disabled. - /// - /// This value should be a superset of disabled validators since not all offences lead to the - /// validator being disabled (if there was no slash). This is needed to track the percentage of - /// validators that have offended in the current era, ensuring a new era is forced if - /// `OffendingValidatorsThreshold` is reached. The vec is always kept sorted so that we can find - /// whether a given validator has previously offended using binary search. It gets cleared when - /// the era ends. - pub OffendingValidators get(fn offending_validators): Vec<(u32, bool)>; - - /// Snapshot of validators at the beginning of the current election window. This should only - /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. - pub SnapshotValidators get(fn snapshot_validators): Option>; - - /// Snapshot of nominators at the beginning of the current election window. This should only - /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. - pub SnapshotNominators get(fn snapshot_nominators): Option>; - - /// The next validator set. At the end of an era, if this is available (potentially from the - /// result of an offchain worker), it is immediately used. Otherwise, the on-chain election - /// is executed. - pub QueuedElected get(fn queued_elected): Option>>; - - /// The score of the current [`QueuedElected`]. - pub QueuedScore get(fn queued_score): Option; - - /// Flag to control the execution of the offchain election. When `Open(_)`, we accept - /// solutions to be submitted. - pub EraElectionStatus get(fn era_election_status): ElectionStatus; - - /// True if the current **planned** session is final. Note that this does not take era - /// forcing into account. - pub IsCurrentSessionFinal get(fn is_current_session_final): bool = false; - - /// Entities that are allowed to run operator/validator nodes. - pub PermissionedIdentity get(fn permissioned_identity): - map hasher(twox_64_concat) IdentityId => Option; - - // Polymesh-Note: Polymesh specific changes to allow flexibility in commission. - /// Every validator has commission that should be in the range [0, Cap]. - pub ValidatorCommissionCap get(fn validator_commission_cap) config(): Perbill; - - /// The minimum amount with which a validator can bond. - pub MinimumBondThreshold get(fn min_bond_threshold) config(): BalanceOf; - - // Polymesh-Note: Polymesh specific change to provide slashing switch for validators & Nominators. - pub SlashingAllowedFor get(fn slashing_allowed_for) config(): SlashingSwitch; - - /// True if network has been upgraded to this version. - /// Storage version of the pallet. - /// - /// This is set to v6.0.1 for new networks. - StorageVersion build(|_: &GenesisConfig| Releases::V6_0_1): Releases; - - /// Polymesh Storage version. - PolymeshStorageVersion get(fn storage_version) build(|_| Version::new(1)): Version; - } - add_extra_genesis { - config(stakers): - Vec<(IdentityId, T::AccountId, T::AccountId, BalanceOf, StakerStatus)>; - build(|config: &GenesisConfig| { - for &(did, ref stash, ref controller, balance, ref status) in &config.stakers { - assert!( - T::Currency::free_balance(&stash) >= balance, - "Stash does not have enough balance to bond." - ); - let _ = >::bond( - T::RuntimeOrigin::from(Some(stash.clone()).into()), - T::Lookup::unlookup(controller.clone()), - balance, - RewardDestination::Staked, - ); - let _ = match status { - StakerStatus::Validator => { - if >::permissioned_identity(&did).is_none() { - // Adding identity directly in the storage by assuming it is CDD'ed - PermissionedIdentity::insert(&did, PermissionedIdentityPrefs::new(3)); - >::deposit_event(RawEvent::PermissionedIdentityAdded(GC_DID, did)); - } - let mut prefs = ValidatorPrefs::default(); - // Setting the cap value here. - prefs.commission = config.validator_commission_cap; - >::validate( - T::RuntimeOrigin::from(Some(controller.clone()).into()), - prefs, - ) - }, - StakerStatus::Nominator(votes) => { - >::nominate( - T::RuntimeOrigin::from(Some(controller.clone()).into()), - votes.iter().map(|l| T::Lookup::unlookup(l.clone())).collect(), - ) - }, _ => Ok(()) - }; - } - }); - } -} - -storage_migration_ver!(1); - -pub mod migrations { - use super::*; - - #[derive(Decode)] - struct OldValidatorPrefs { - #[codec(compact)] - pub commission: Perbill - } - impl OldValidatorPrefs { - fn upgraded(self) -> ValidatorPrefs { - ValidatorPrefs { - commission: self.commission, - .. Default::default() - } - } - } - pub fn migrate_to_blockable() -> frame_support::weights::Weight { - Validators::::translate::(|_, p| Some(p.upgraded())); - ErasValidatorPrefs::::translate::(|_, _, p| Some(p.upgraded())); - T::BlockWeights::get().max_block - } -} - -decl_event!( - pub enum Event where Balance = BalanceOf, ::AccountId { - /// The era payout has been set; the first balance is the validator-payout; the second is - /// the remainder from the maximum amount of reward. - /// \[era_index, validator_payout, remainder\] - EraPayout(EraIndex, Balance, Balance), - /// The staker has been rewarded by this amount. \[stash_identity, stash, amount\] - Reward(IdentityId, AccountId, Balance), - /// One validator (and its nominators) has been slashed by the given amount. - /// \[validator, amount\] - Slash(AccountId, Balance), - /// An old slashing report from a prior era was discarded because it could - /// not be processed. \[session_index\] - OldSlashingReportDiscarded(SessionIndex), - /// A new set of stakers was elected with the given \[compute\]. - StakingElection(ElectionCompute), - /// A new solution for the upcoming election has been stored. \[compute\] - SolutionStored(ElectionCompute), - /// An account has bonded this amount. \[did, stash, amount\] - /// - /// NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably, - /// it will not be emitted for staking rewards when they are added to stake. - Bonded(IdentityId, AccountId, Balance), - /// An account has unbonded this amount. \[did, stash, amount\] - Unbonded(IdentityId, AccountId, Balance), - /// User has updated their nominations - Nominated(IdentityId, AccountId, Vec), - /// An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance` - /// from the unlocking queue. \[stash, amount\] - Withdrawn(AccountId, Balance), - /// An DID has issued a candidacy. See the transaction for who. - /// GC identity , Validator's identity. - PermissionedIdentityAdded(IdentityId, IdentityId), - /// The given member was removed. See the transaction for who. - /// GC identity , Validator's identity. - PermissionedIdentityRemoved(IdentityId, IdentityId), - /// Remove the nominators from the valid nominators when there CDD expired. - /// Caller, Stash accountId of nominators - InvalidatedNominators(IdentityId, AccountId, Vec), - /// When commission cap get updated. - /// (old value, new value) - CommissionCapUpdated(IdentityId, Perbill, Perbill), - /// Min bond threshold was updated (new value). - MinimumBondThresholdUpdated(Option, Balance), - /// When scheduling of reward payments get interrupted. - RewardPaymentSchedulingInterrupted(AccountId, EraIndex, DispatchError), - /// Update for whom balance get slashed. - SlashingAllowedForChanged(SlashingSwitch), - } -); - -decl_error! { - /// Error for the staking module. - pub enum Error for Module { - /// Not a controller account. - NotController, - /// Not a stash account. - NotStash, - /// Stash is already bonded. - AlreadyBonded, - /// Controller is already paired. - AlreadyPaired, - /// Targets cannot be empty. - EmptyTargets, - /// Slash record index out of bounds. - InvalidSlashIndex, - /// Can not bond with value less than minimum balance. - InsufficientValue, - /// Can not schedule more unlock chunks. - NoMoreChunks, - /// Can not rebond without unlocking chunks. - NoUnlockChunk, - /// Attempting to target a stash that still has funds. - FundedTarget, - /// Invalid era to reward. - InvalidEraToReward, - /// Items are not sorted and unique. - NotSortedAndUnique, - /// Rewards for this era have already been claimed for this validator. - AlreadyClaimed, - /// The submitted result is received out of the open window. - OffchainElectionEarlySubmission, - /// The submitted result is not as good as the one stored on chain. - OffchainElectionWeakSubmission, - /// The snapshot data of the current window is missing. - SnapshotUnavailable, - /// Incorrect number of winners were presented. - OffchainElectionBogusWinnerCount, - /// One of the submitted winners is not an active candidate on chain (index is out of range - /// in snapshot). - OffchainElectionBogusWinner, - /// Error while building the assignment type from the compact. This can happen if an index - /// is invalid, or if the weights _overflow_. - OffchainElectionBogusCompact, - /// One of the submitted nominators is not an active nominator on chain. - OffchainElectionBogusNominator, - /// One of the submitted nominators has an edge to which they have not voted on chain. - OffchainElectionBogusNomination, - /// One of the submitted nominators has an edge which is submitted before the last non-zero - /// slash of the target. - OffchainElectionSlashedNomination, - /// A self vote must only be originated from a validator to ONLY themselves. - OffchainElectionBogusSelfVote, - /// The submitted result has unknown edges that are not among the presented winners. - OffchainElectionBogusEdge, - /// The claimed score does not match with the one computed from the data. - OffchainElectionBogusScore, - /// The election size is invalid. - OffchainElectionBogusElectionSize, - /// The call is not allowed at the given time due to restrictions of election period. - CallNotAllowed, - /// Incorrect number of slashing spans provided. - IncorrectSlashingSpans, - /// Permissioned validator already exists. - AlreadyExists, - /// Permissioned validator not exists. - NotExists, - /// Updates with same value. - NoChange, - /// Given potential validator identity is invalid. - InvalidValidatorIdentity, - /// Validator prefs are not in valid range. - InvalidValidatorCommission, - /// Validator or nominator stash identity does not exist. - StashIdentityDoesNotExist, - /// Validator stash identity was not permissioned. - StashIdentityNotPermissioned, - /// Nominator stash was not CDDed. - StashIdentityNotCDDed, - /// Running validator count hit the intended count. - HitIntendedValidatorCount, - /// When the intended number of validators to run is >= 2/3 of `validator_count`. - IntendedCountIsExceedingConsensusLimit, - /// When the amount to be bonded is less than `MinimumBond` - BondTooSmall, - /// Internal state has become somehow corrupted and the operation cannot continue. - BadState, - /// Too many nomination targets supplied. - TooManyTargets, - /// A nomination target was supplied that was blocked or otherwise not a validator. - BadTarget, - /// Validator should have minimum 50k POLYX bonded. - InvalidValidatorUnbondAmount, - } -} - -decl_module! { - pub struct Module for enum Call where origin: T::RuntimeOrigin { - /// Number of sessions per era. - const SessionsPerEra: SessionIndex = T::SessionsPerEra::get(); - - /// Number of eras that staked funds must remain bonded for. - const BondingDuration: EraIndex = T::BondingDuration::get(); - - /// Number of eras that slashes are deferred by, after computation. - /// - /// This should be less than the bonding duration. - /// Set to 0 if slashes should be applied immediately, without opportunity for - /// intervention. - const SlashDeferDuration: EraIndex = T::SlashDeferDuration::get(); - - /// The number of blocks before the end of the era from which election submissions are allowed. - /// - /// Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will - /// be used. - /// - /// This is bounded by being within the last session. Hence, setting it to a value more than the - /// length of a session will be pointless. - const ElectionLookahead: T::BlockNumber = T::ElectionLookahead::get(); - - /// Maximum number of balancing iterations to run in the offchain submission. - /// - /// If set to 0, balance_solution will not be executed at all. - const MaxIterations: u32 = T::MaxIterations::get(); - - /// The threshold of improvement that should be provided for a new solution to be accepted. - const MinSolutionScoreBump: Perbill = T::MinSolutionScoreBump::get(); - - /// The maximum number of nominators rewarded for each validator. - /// - /// For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim - /// their reward. This used to limit the i/o cost for the nominator payout. - const MaxNominatorRewardedPerValidator: u32 = T::MaxNominatorRewardedPerValidator::get(); - - /// Maximum number of validators for each permissioned identity. - /// - /// Max number of validators count = `MaxValidatorPerIdentity * Self::validator_count()`. - const MaxValidatorPerIdentity: Permill = T::MaxValidatorPerIdentity::get(); - - /// Maximum amount of `T::currency::total_issuance()` after that non-inflated rewards get paid. - const MaxVariableInflationTotalIssuance: BalanceOf = T::MaxVariableInflationTotalIssuance::get(); - - /// Total year rewards that gets paid during fixed reward schedule. - const FixedYearlyReward: BalanceOf = T::FixedYearlyReward::get(); - - /// Minimum amount of POLYX that must be bonded for a new bond. - const MinimumBond: BalanceOf = T::MinimumBond::get(); - - type Error = Error; - - fn deposit_event() = default; - - fn on_runtime_upgrade() -> Weight { - use polymesh_primitives::migrate::migrate_map_keys_and_value; - - if StorageVersion::get() == Releases::V5_0_0 { - let intended_count = Self::get_allowed_validator_count(); - let current_validators = >::iter().map(|(k, _)| k).collect::>(); - migrate_map_keys_and_value::<_,PermissionedIdentityPrefs,Twox64Concat,IdentityId,_,_>(b"Staking", b"PermissionedIdentity", b"PermissionedIdentity", |id: IdentityId, v: bool| { - if v { - let running_count = current_validators - .iter() - .filter_map(>::get_identity) - .filter(|v_id| id == *v_id) - .count() as u32; - Some((id, PermissionedIdentityPrefs {intended_count, running_count })) - } else { - None - } - }); - - StorageVersion::put(Releases::V6_0_0); - } - - // Fix `running_count` of validators - if StorageVersion::get() == Releases::V6_0_0 { - let current_validators = >::iter().map(|(k, _)| >::get_identity(&k).unwrap_or_default()).collect::>(); - let permissioned_validators = PermissionedIdentity::iter().collect::>(); - for (permissioned_validator, mut prefs) in permissioned_validators { - // Since hashmaps aren't natively supported in wasm and the `current_validators` set is expected to be quite small (~20) - // It's fine to use this naive and slow iterative method rather than adding anything complex to cache count. - prefs.running_count = current_validators - .iter() - .filter(|&&cv| cv == permissioned_validator) - .count() as u32; - PermissionedIdentity::insert(permissioned_validator, prefs); - } - StorageVersion::put(Releases::V6_0_1); - } - - if StorageVersion::get() == Releases::V6_0_1 { - StorageVersion::put(Releases::V7_0_0); - migrations::migrate_to_blockable::(); - } - - storage_migrate_on!(PolymeshStorageVersion, 1, { - >::iter().for_each(|(k,_)| >::add_account_key_ref_count(&k)); - }); - - Weight::from_ref_time(1_000) - } - - /// sets `ElectionStatus` to `Open(now)` where `now` is the block number at which the - /// election window has opened, if we are at the last session and less blocks than - /// `T::ElectionLookahead` is remaining until the next new session schedule. The offchain - /// worker, if applicable, will execute at the end of the current block, and solutions may - /// be submitted. - fn on_initialize(now: T::BlockNumber) -> Weight { - let mut consumed_weight = Weight::zero(); - let mut add_weight = |reads: u64, writes: u64, weight| { - consumed_weight += T::DbWeight::get().reads_writes(reads, writes); - consumed_weight += weight; - }; - - if - // if we don't have any ongoing offchain compute. - Self::era_election_status().is_closed() && - // either current session final based on the plan, or we're forcing. - (Self::is_current_session_final() || Self::will_era_be_forced()) - { - let (maybe_next_session_change, estimate_next_new_session_weight) = T::NextNewSession::estimate_next_new_session(now); - if let Some(next_session_change) = maybe_next_session_change { - if let Some(remaining) = next_session_change.checked_sub(&now) { - if remaining <= T::ElectionLookahead::get() && !remaining.is_zero() { - // create snapshot. - let (did_snapshot, snapshot_weight) = Self::create_stakers_snapshot(); - add_weight(0, 0, snapshot_weight); - if did_snapshot { - // Set the flag to make sure we don't waste any compute here in the same era - // after we have triggered the offline compute. - >::put( - ElectionStatus::::Open(now) - ); - add_weight(0, 1, Weight::zero()); - log!(info, "💸 Election window is Open({:?}). Snapshot created", now); - } else { - log!(warn, "💸 Failed to create snapshot at {:?}.", now); - } - } - } - } else { - log!(warn, "💸 Estimating next session change failed."); - } - add_weight(0, 0, estimate_next_new_session_weight) - } - // For `era_election_status`, `is_current_session_final`, `will_era_be_forced` - add_weight(3, 0, Weight::zero()); - // Additional read from `on_finalize` - add_weight(1, 0, Weight::zero()); - consumed_weight - } - - /// Check if the current block number is the one at which the election window has been set - /// to open. If so, it runs the offchain worker code. - fn offchain_worker(now: T::BlockNumber) { - use offchain_election::{set_check_offchain_execution_status, compute_offchain_election}; - - if Self::era_election_status().is_open_at(now) { - let offchain_status = set_check_offchain_execution_status::(now); - if let Err(why) = offchain_status { - log!(warn, "💸 skipping offchain worker in open election window due to [{:?}]", why); - } else { - if let Err(e) = compute_offchain_election::() { - log!(error, "💸 Error in election offchain worker: {:?}", e); - } else { - log!(debug, "💸 Executed offchain worker thread without errors."); - } - } - } - } - - fn on_finalize() { - // Set the start of the first era. - if let Some(mut active_era) = Self::active_era() { - if active_era.start.is_none() { - let now_as_millis_u64 = T::UnixTime::now().as_millis().saturated_into::(); - active_era.start = Some(now_as_millis_u64); - // This write only ever happens once, we don't include it in the weight in general - ActiveEra::put(active_era); - } - } - // `on_finalize` weight is tracked in `on_initialize` - } - - fn integrity_test() { - sp_io::TestExternalities::new_empty().execute_with(|| - assert!( - T::SlashDeferDuration::get() < T::BondingDuration::get() || T::BondingDuration::get() == 0, - "As per documentation, slash defer duration ({}) should be less than bonding duration ({}).", - T::SlashDeferDuration::get(), - T::BondingDuration::get(), - ) - ); - } - - /// Take the origin account as a stash and lock up `value` of its balance. `controller` will - /// be the account that controls it. - /// - /// `value` must be more than the `minimum_balance` specified by `T::Currency`. - /// - /// The dispatch origin for this call must be _Signed_ by the stash account. - /// - /// Emits `Bonded`. - /// - /// # - /// - Independent of the arguments. Moderate complexity. - /// - O(1). - /// - Three extra DB entries. - /// - /// NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned - /// unless the `origin` falls below _existential deposit_ and gets removed as dust. - /// ------------------ - /// Weight: O(1) - /// DB Weight: - /// - Read: Bonded, Ledger, [Origin Account], Current Era, History Depth, Locks - /// - Write: Bonded, Payee, [Origin Account], Locks, Ledger - /// # - #[weight = ::WeightInfo::bond()] - pub fn bond(origin, - controller: ::Source, - #[compact] value: BalanceOf, - payee: RewardDestination, - ) { - let stash = ensure_signed(origin)?; - - ensure!(value >= T::MinimumBond::get(), Error::::BondTooSmall); - - if >::contains_key(&stash) { - Err(Error::::AlreadyBonded)? - } - - let controller = T::Lookup::lookup(controller)?; - - if >::contains_key(&controller) { - Err(Error::::AlreadyPaired)? - } - - // reject a bond which is considered to be _dust_. - if value < T::Currency::minimum_balance() { - Err(Error::::InsufficientValue)? - } - - system::Pallet::::inc_consumers(&stash).map_err(|_| Error::::BadState)?; - - // You're auto-bonded forever, here. We might improve this by only bonding when - // you actually validate/nominate and remove once you unbond __everything__. - >::insert(&stash, &controller); - >::insert(&stash, payee); - - let current_era = CurrentEra::get().unwrap_or(0); - let history_depth = Self::history_depth(); - let last_reward_era = current_era.saturating_sub(history_depth); - - let stash_balance = T::Currency::free_balance(&stash); - let value = value.min(stash_balance); - // Polymesh-Note: - // Add `stash`'s DID to event. - // ----------------------------------------------------------------- - let did = Context::current_identity::().unwrap_or_default(); - Self::deposit_event(RawEvent::Bonded(did, stash.clone(), value)); - // ----------------------------------------------------------------- - let item = StakingLedger { - stash, - total: value, - active: value, - unlocking: vec![], - claimed_rewards: (last_reward_era..current_era).collect(), - }; - Self::update_ledger(&controller, &item); - } - - /// Add some extra amount that have appeared in the stash `free_balance` into the balance up - /// for staking. - /// - /// Use this if there are additional funds in your stash account that you wish to bond. - /// Unlike [`bond`] or [`unbond`] this function does not impose any limitation on the amount - /// that can be added. - /// - /// The dispatch origin for this call must be _Signed_ by the stash, not the controller and - /// it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// Emits `Bonded`. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - O(1). - /// - One DB entry. - /// ------------ - /// DB Weight: - /// - Read: Era Election Status, Bonded, Ledger, [Origin Account], Locks - /// - Write: [Origin Account], Locks, Ledger - /// # - #[weight = ::WeightInfo::bond_extra()] - pub fn bond_extra(origin, #[compact] max_additional: BalanceOf) { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let stash = ensure_signed(origin)?; - - let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; - let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - - let stash_balance = T::Currency::free_balance(&stash); - if let Some(extra) = stash_balance.checked_sub(&ledger.total) { - let extra = extra.min(max_additional); - ledger.total += extra; - ledger.active += extra; - // last check: the new active amount of ledger must be more than ED. - ensure!(ledger.active >= T::Currency::minimum_balance(), Error::::InsufficientValue); - // Polymesh-Note: - // Add `stash`'s DID to event. - // ------------------------------------------------------------- - let did = Context::current_identity::().unwrap_or_default(); - Self::deposit_event(RawEvent::Bonded(did, stash, extra)); - // ------------------------------------------------------------- - Self::update_ledger(&controller, &ledger); - } - } - - /// Schedule a portion of the stash to be unlocked ready for transfer out after the bond - /// period ends. If this leaves an amount actively bonded less than - /// T::Currency::minimum_balance(), then it is increased to the full amount. - /// - /// Once the unlock period is done, you can call `withdraw_unbonded` to actually move - /// the funds out of management ready for transfer. - /// - /// No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`) - /// can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need - /// to be called first to remove some of the chunks (if possible). - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// And, it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// Emits `Unbonded`. - /// - /// See also [`Call::withdraw_unbonded`]. - /// - /// # - /// - Independent of the arguments. Limited but potentially exploitable complexity. - /// - Contains a limited number of reads. - /// - Each call (requires the remainder of the bonded balance to be above `minimum_balance`) - /// will cause a new entry to be inserted into a vector (`Ledger.unlocking`) kept in storage. - /// The only way to clean the aforementioned storage item is also user-controlled via - /// `withdraw_unbonded`. - /// - One DB entry. - /// ---------- - /// Weight: O(1) - /// DB Weight: - /// - Read: EraElectionStatus, Ledger, CurrentEra, Locks, \[Origin Account\] - /// - Write: Locks, Ledger, \[Origin Account\] - /// - #[weight = ::WeightInfo::unbond()] - pub fn unbond(origin, #[compact] value: BalanceOf) { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let controller = ensure_signed(origin)?; - let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - - ensure!( - ledger.unlocking.len() < MAX_UNLOCKING_CHUNKS, - Error::::NoMoreChunks, - ); - // check if validator - if >::contains_key(&ledger.stash) { - // check that the remaining bond balance is at least equal to minimum bond threshold - ensure!(ledger.active.saturating_sub(value) >= >::get(), Error::::InvalidValidatorUnbondAmount); - } - Self::unbond_balance(controller, &mut ledger, value); - } - - /// Remove any unlocked chunks from the `unlocking` queue from our management. - /// - /// This essentially frees up that balance to be used by the stash account to do - /// whatever it wants. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// And, it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// Emits `Withdrawn`. - /// - /// See also [`Call::unbond`]. - /// - /// # - /// - Could be dependent on the `origin` argument and how much `unlocking` chunks exist. - /// It implies `consolidate_unlocked` which loops over `Ledger.unlocking`, which is - /// indirectly user-controlled. See [`unbond`] for more detail. - /// - Contains a limited number of reads, yet the size of which could be large based on `ledger`. - /// - Writes are limited to the `origin` account key. - /// --------------- - /// Complexity O(S) where S is the number of slashing spans to remove - /// Update: - /// - Reads: EraElectionStatus, Ledger, Current Era, Locks, [Origin Account] - /// - Writes: [Origin Account], Locks, Ledger - /// Kill: - /// - Reads: EraElectionStatus, Ledger, Current Era, Bonded, Slashing Spans, [Origin - /// Account], Locks - /// - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, - /// [Origin Account], Locks - /// - Writes Each: SpanSlash * S - /// NOTE: Weight annotation is the kill scenario, we refund otherwise. - /// # - #[weight = ::WeightInfo::withdraw_unbonded_kill(*num_slashing_spans)] - pub fn withdraw_unbonded(origin, num_slashing_spans: u32) -> DispatchResultWithPostInfo { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let controller = ensure_signed(origin)?; - let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let (stash, old_total) = (ledger.stash.clone(), ledger.total); - if let Some(current_era) = Self::current_era() { - ledger = ledger.consolidate_unlocked(current_era) - } - - let post_info_weight = if ledger.unlocking.is_empty() && ledger.active <= T::Currency::minimum_balance() { - // This account must have called `unbond()` with some value that caused the active - // portion to fall below existential deposit + will have no more unlocking chunks - // left. We can now safely remove all staking-related information. - Self::kill_stash(&stash, num_slashing_spans)?; - // remove the lock. - T::Currency::remove_lock(STAKING_ID, &stash); - // This is worst case scenario, so we use the full weight and return None - None - } else { - // This was the consequence of a partial unbond. just update the ledger and move on. - Self::update_ledger(&controller, &ledger); - - // This is only an update, so we use less overall weight. - Some(::WeightInfo::withdraw_unbonded_update(num_slashing_spans)) - }; - - // `old_total` should never be less than the new total because - // `consolidate_unlocked` strictly subtracts balance. - if ledger.total < old_total { - // Already checked that this won't overflow by entry condition. - let value = old_total - ledger.total; - Self::deposit_event(RawEvent::Withdrawn(stash, value)); - } - - Ok(post_info_weight.into()) - } - - /// Declare the desire to validate for the origin controller. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// And, it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains a limited number of reads. - /// - Writes are limited to the `origin` account key. - /// ----------- - /// Weight: O(1) - /// DB Weight: - /// - Read: Era Election Status, Ledger - /// - Write: Nominators, Validators - /// # - #[weight = ::WeightInfo::validate()] - pub fn validate(origin, prefs: ValidatorPrefs) { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let stash = &ledger.stash; - - // Polymesh-Note - Make sure stash has valid permissioned identity. - // ----------------------------------------------------------------- - let id = >::get_identity(stash).ok_or(Error::::StashIdentityDoesNotExist)?; - let mut id_pref = Self::permissioned_identity(id).ok_or(Error::::StashIdentityNotPermissioned)?; - ensure!(ledger.active >= >::get(), Error::::InsufficientValue); - // Ensures that the passed commission is within the cap. - ensure!(prefs.commission <= Self::validator_commission_cap(), Error::::InvalidValidatorCommission); - // Updates the running count. - if !>::contains_key(stash) { - // Ensure identity doesn't run more validators than the intended count. - ensure!(id_pref.running_count < id_pref.intended_count, Error::::HitIntendedValidatorCount); - id_pref.running_count += 1; - >::add_account_key_ref_count(&stash); - } - PermissionedIdentity::insert(id, id_pref); - // ----------------------------------------------------------------- - - >::remove(stash); - >::insert(stash, prefs); - } - - /// Declare the desire to nominate `targets` for the origin controller. - /// - /// Effects will be felt at the beginning of the next era. This can only be called when - /// [`EraElectionStatus`] is `Closed`. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// And, it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// # - /// - The transaction's complexity is proportional to the size of `targets` (N) - /// which is capped at CompactAssignments::LIMIT (MAX_NOMINATIONS). - /// - Both the reads and writes follow a similar pattern. - /// --------- - /// Weight: O(N) - /// where N is the number of targets - /// DB Weight: - /// - Reads: Era Election Status, Ledger, Current Era - /// - Writes: Validators, Nominators - /// # - #[weight = ::WeightInfo::nominate(targets.len() as u32)] - pub fn nominate(origin, targets: Vec<::Source>) { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let stash = &ledger.stash; - ensure!(!targets.is_empty(), Error::::EmptyTargets); - ensure!(targets.len() <= T::MAX_NOMINATIONS as usize, Error::::TooManyTargets); - - let old = Nominators::::get(stash).map_or_else(Vec::new, |x| x.targets); - - // A Claim_key can have multiple claim value provided by different claim issuers. - // So here we iterate every CDD claim provided to the nominator If any claim is greater than - // the threshold value of timestamp i.e current_timestamp + Bonding duration - // then nominator is added into the nominator pool. - - // Fetch the nominator DID. - let nominate_identity = >::get_identity(stash) - .ok_or(Error::::StashIdentityDoesNotExist)?; - - // Ensure DID is CDDed. - let duration = (Self::get_bonding_duration_period() as u32).into(); - ensure!( - >::fetch_cdd(nominate_identity, duration).is_some(), - Error::::StashIdentityNotCDDed, - ); - - let targets = targets.into_iter() - .map(|t| T::Lookup::lookup(t).map_err(DispatchError::from)) - .map(|n| n.and_then(|n| if old.contains(&n) || !Validators::::get(&n).blocked { - Ok(n) - } else { - Err(Error::::BadTarget.into()) - })) - .collect::, _>>()?; - let targets2 = targets.clone(); - - let nominations = Nominations { - targets, - // initial nominations are considered submitted at era 0. See `Nominations` doc - submitted_in: Self::current_era().unwrap_or(0), - suppressed: false, - }; - - // Polymesh-Note: Decrement the running count by 1 + emit event. - // ----------------------------------------------------------------- - Self::release_running_validator(&stash); - Self::deposit_event(RawEvent::Nominated(nominate_identity, stash.clone(), targets2)); - // ----------------------------------------------------------------- - - >::remove(stash); - >::insert(stash, &nominations); - } - - /// Declare no desire to either validate or nominate. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// And, it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains one read. - /// - Writes are limited to the `origin` account key. - /// -------- - /// Weight: O(1) - /// DB Weight: - /// - Read: EraElectionStatus, Ledger - /// - Write: Validators, Nominators - /// # - #[weight = ::WeightInfo::chill()] - pub fn chill(origin) { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - Self::chill_stash(&ledger.stash); - } - - /// (Re-)set the payment target for a controller. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains a limited number of reads. - /// - Writes are limited to the `origin` account key. - /// --------- - /// - Weight: O(1) - /// - DB Weight: - /// - Read: Ledger - /// - Write: Payee - /// # - #[weight = ::WeightInfo::set_payee()] - pub fn set_payee(origin, payee: RewardDestination) { - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let stash = &ledger.stash; - >::insert(stash, payee); - } - - /// (Re-)set the controller of a stash. - /// - /// Effects will be felt at the beginning of the next era. - /// - /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. - /// - /// # - /// - Independent of the arguments. Insignificant complexity. - /// - Contains a limited number of reads. - /// - Writes are limited to the `origin` account key. - /// ---------- - /// Weight: O(1) - /// DB Weight: - /// - Read: Bonded, Ledger New Controller, Ledger Old Controller - /// - Write: Bonded, Ledger New Controller, Ledger Old Controller - /// # - #[weight = ::WeightInfo::set_controller()] - pub fn set_controller(origin, controller: ::Source) { - let stash = ensure_signed(origin)?; - let old_controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; - let controller = T::Lookup::lookup(controller)?; - if >::contains_key(&controller) { - Err(Error::::AlreadyPaired)? - } - if controller != old_controller { - >::insert(&stash, &controller); - if let Some(l) = >::take(&old_controller) { - >::insert(&controller, l); - } - } - } - - /// Sets the ideal number of validators. - /// - /// The dispatch origin must be Root. - /// - /// # - /// Weight: O(1) - /// Write: Validator Count - /// # - #[weight = ::WeightInfo::set_validator_count(*new)] - fn set_validator_count(origin, #[compact] new: u32) { - ensure_root(origin)?; - ValidatorCount::put(new); - } - - /// Increments the ideal number of validators. - /// - /// The dispatch origin must be Root. - /// - /// # - /// Same as [`set_validator_count`]. - /// # - #[weight = ::WeightInfo::increase_validator_count()] - fn increase_validator_count(origin, #[compact] additional: u32) { - ensure_root(origin)?; - ValidatorCount::mutate(|n| *n += additional); - } - - /// Scale up the ideal number of validators by a factor. - /// - /// The dispatch origin must be Root. - /// - /// # - /// Same as [`set_validator_count`]. - /// # - #[weight = ::WeightInfo::scale_validator_count()] - fn scale_validator_count(origin, factor: Percent) { - ensure_root(origin)?; - ValidatorCount::mutate(|n| *n += factor * *n); - } - - /// Governance committee on 2/3 rds majority can introduce a new potential identity - /// to the pool of permissioned entities who can run validators. Staking module uses `PermissionedIdentity` - /// to ensure validators have completed KYB compliance and considers them for validation. - /// - /// # Arguments - /// * origin Required origin for adding a potential validator. - /// * identity Validator's IdentityId. - /// * intended_count No. of validators given identity intends to run. - #[weight = ::WeightInfo::add_permissioned_validator()] - pub fn add_permissioned_validator(origin, identity: IdentityId, intended_count: Option) { - T::RequiredAddOrigin::ensure_origin(origin)?; - ensure!(Self::permissioned_identity(&identity).is_none(), Error::::AlreadyExists); - // Validate the cdd status of the identity. - ensure!(>::has_valid_cdd(identity), Error::::InvalidValidatorIdentity); - let pref = match intended_count { - Some(count) => { - // Maximum allowed validator count is always less than the `MaxValidatorPerIdentity of validator_count()`. - ensure!(count < Self::get_allowed_validator_count(), Error::::IntendedCountIsExceedingConsensusLimit); - PermissionedIdentityPrefs::new(count) - } - None => PermissionedIdentityPrefs::default(), - }; - - // Change identity status to be Permissioned - PermissionedIdentity::insert(&identity, pref); - Self::deposit_event(RawEvent::PermissionedIdentityAdded(GC_DID, identity)); - } - - /// Remove an identity from the pool of (wannabe) validator identities. Effects are known in the next session. - /// Staking module checks `PermissionedIdentity` to ensure validators have - /// completed KYB compliance - /// - /// # Arguments - /// * origin Required origin for removing a potential validator. - /// * identity Validator's IdentityId. - #[weight = ::WeightInfo::remove_permissioned_validator()] - pub fn remove_permissioned_validator(origin, identity: IdentityId) { - T::RequiredRemoveOrigin::ensure_origin(origin)?; - ensure!(Self::permissioned_identity(&identity).is_some(), Error::::NotExists); - // Change identity status to be Non-Permissioned - PermissionedIdentity::remove(&identity); - - Self::deposit_event(RawEvent::PermissionedIdentityRemoved(GC_DID, identity)); - } - - /// Validate the nominators CDD expiry time. - /// - /// If an account from a given set of address is nominating then - /// check the CDD expiry time of it and if it is expired - /// then the account should be unbonded and removed from the nominating process. - /// - /// # - /// - Depends on passed list of AccountId. - /// - Depends on the no. of claim issuers an accountId has for the CDD expiry. - /// # - #[weight = 1_000_000_000] - pub fn validate_cdd_expiry_nominators(origin, targets: Vec) { - ensure_root(origin.clone())?; - - let mut expired_nominators = Vec::new(); - ensure!(!targets.is_empty(), "targets cannot be empty"); - // Iterate provided list of accountIds (These accountIds should be stash type account). - for target in targets.iter() - // Nominator must be vouching for someone. - .filter(|target| Self::nominators(target).is_some()) - // Access the DIDs of the nominators whose CDDs have expired. - .filter(|target| { - // Fetch all the claim values provided by the trusted service providers - // There is a possibility that nominator will have more than one claim for the same key, - // So we iterate all of them and if any one of the claim value doesn't expire then nominator posses - // valid CDD otherwise it will be removed from the pool of the nominators. - // If the target has no DID, it's also removed. - >::get_identity(&target) - .filter(|did| >::has_valid_cdd(*did)) - .is_none() - }) - { - // Un-bonding the balance that bonded with the controller account of a Stash account - // This unbonded amount only be accessible after completion of the BondingDuration - // Controller account need to call the dispatchable function `withdraw_unbond` to withdraw fund. - - let controller = Self::bonded(target).ok_or(Error::::NotStash)?; - let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - let active_balance = ledger.active; - if ledger.unlocking.len() < MAX_UNLOCKING_CHUNKS { - Self::unbond_balance(controller, &mut ledger, active_balance); - - expired_nominators.push(target.clone()); - // Free the nominator from the valid nominator list - >::remove(target); - } - } - Self::deposit_event(RawEvent::InvalidatedNominators(GC_DID, GC_PALLET_ID.into_account_truncating(), expired_nominators)); - } - - /// Changes commission rate which applies to all validators. Only Governance - /// committee is allowed to change this value. - /// - /// # Arguments - /// * `new_cap` the new commission cap. - #[weight = (::WeightInfo::set_commission_cap(MAX_ALLOWED_VALIDATORS), Operational, Pays::Yes)] - pub fn set_commission_cap(origin, new_cap: Perbill) { - T::RequiredCommissionOrigin::ensure_origin(origin.clone())?; - - // Update the cap, assuming it changed, or error. - let old_cap = ValidatorCommissionCap::try_mutate(|cap| -> Result<_, DispatchError> { - ensure!(*cap != new_cap, Error::::NoChange); - Ok(core::mem::replace(cap, new_cap)) - })?; - // Update `commission` in each validator prefs to `min(comission, new_cap)`. - >::translate(|_, mut prefs: ValidatorPrefs| { - prefs.commission = prefs.commission.min(new_cap); - Some(prefs) - }); - - Self::deposit_event(RawEvent::CommissionCapUpdated(GC_DID, old_cap, new_cap)); - } - - /// Changes min bond value to be used in validate(). Only Governance - /// committee is allowed to change this value. - /// - /// # Arguments - /// * `new_value` the new minimum - #[weight = (::WeightInfo::set_min_bond_threshold(), Operational, Pays::Yes)] - pub fn set_min_bond_threshold(origin, new_value: BalanceOf) { - T::RequiredCommissionOrigin::ensure_origin(origin.clone())?; - >::put(new_value); - Self::deposit_event(RawEvent::MinimumBondThresholdUpdated(Some(GC_DID), new_value)); - } - - /// Force there to be no new eras indefinitely. - /// - /// The dispatch origin must be Root. - /// - /// # - /// - No arguments. - /// - Weight: O(1) - /// - Write: ForceEra - /// # - #[weight = ::WeightInfo::force_no_eras()] - fn force_no_eras(origin) { - ensure_root(origin)?; - ForceEra::put(Forcing::ForceNone); - } - - /// Force there to be a new era at the end of the next session. After this, it will be - /// reset to normal (non-forced) behaviour. - /// - /// The dispatch origin must be Root. - /// - /// # - /// - No arguments. - /// - Weight: O(1) - /// - Write ForceEra - /// # - #[weight = ::WeightInfo::force_new_era()] - fn force_new_era(origin) { - ensure_root(origin)?; - ForceEra::put(Forcing::ForceNew); - } - - /// Set the validators who cannot be slashed (if any). - /// - /// The dispatch origin must be Root. - /// - /// # - /// - O(V) - /// - Write: Invulnerables - /// # - #[weight = ::WeightInfo::set_invulnerables(invulnerables.len() as u32)] - fn set_invulnerables(origin, invulnerables: Vec) { - ensure_root(origin)?; - >::put(invulnerables); - } - - /// Force a current staker to become completely unstaked, immediately. - /// - /// The dispatch origin must be Root. - /// - /// # - /// O(S) where S is the number of slashing spans to be removed - /// Reads: Bonded, Slashing Spans, Account, Locks - /// Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Account, Locks - /// Writes Each: SpanSlash * S - /// # - #[weight = ::WeightInfo::force_unstake(*num_slashing_spans)] - pub fn force_unstake(origin, stash: T::AccountId, num_slashing_spans: u32) { - ensure_root(origin)?; - - // remove all staking-related information. - Self::kill_stash(&stash, num_slashing_spans)?; - - // remove the lock. - T::Currency::remove_lock(STAKING_ID, &stash); - } - - /// Force there to be a new era at the end of sessions indefinitely. - /// - /// The dispatch origin must be Root. - /// - /// # - /// - Weight: O(1) - /// - Write: ForceEra - /// # - #[weight = ::WeightInfo::force_new_era_always()] - pub fn force_new_era_always(origin) { - ensure_root(origin)?; - ForceEra::put(Forcing::ForceAlways); - } - - /// Cancel enactment of a deferred slash. - /// - /// Can be called by the `T::SlashCancelOrigin`. - /// - /// Parameters: era and indices of the slashes for that era to kill. - /// - /// # - /// Complexity: O(U + S) - /// with U unapplied slashes weighted with U=1000 - /// and S is the number of slash indices to be canceled. - /// - Read: Unapplied Slashes - /// - Write: Unapplied Slashes - /// # - #[weight = ::WeightInfo::cancel_deferred_slash(slash_indices.len() as u32)] - pub fn cancel_deferred_slash(origin, era: EraIndex, slash_indices: Vec) { - T::SlashCancelOrigin::ensure_origin(origin)?; - - ensure!(!slash_indices.is_empty(), Error::::EmptyTargets); - ensure!(is_sorted_and_unique(&slash_indices), Error::::NotSortedAndUnique); - - let mut unapplied = ::UnappliedSlashes::get(&era); - let last_item = slash_indices[slash_indices.len() - 1]; - ensure!((last_item as usize) < unapplied.len(), Error::::InvalidSlashIndex); - - for (removed, index) in slash_indices.into_iter().enumerate() { - let index = (index as usize) - removed; - unapplied.remove(index); - } - - ::UnappliedSlashes::insert(&era, &unapplied); - } - - // Polymesh-Note - Weight changes to 1/4 of the actual weight that is calculated using the - // upstream benchmarking process. - // - /// Pay out all the stakers behind a single validator for a single era. - /// - /// - `validator_stash` is the stash account of the validator. Their nominators, up to - /// `T::MaxNominatorRewardedPerValidator`, will also receive their rewards. - /// - `era` may be any era between `[current_era - history_depth; current_era]`. - /// - /// The origin of this call must be _Signed_. Any account can call this function, even if - /// it is not one of the stakers. - /// - /// This can only be called when [`EraElectionStatus`] is `Closed`. - /// - /// # - /// - Time complexity: at most O(MaxNominatorRewardedPerValidator). - /// - Contains a limited number of reads and writes. - /// ----------- - /// N is the Number of payouts for the validator (including the validator) - /// Weight: - /// - Reward Destination Staked: O(N) - /// - Reward Destination Controller (Creating): O(N) - /// DB Weight: - /// - Read: EraElectionStatus, CurrentEra, HistoryDepth, ErasValidatorReward, - /// ErasStakersClipped, ErasRewardPoints, ErasValidatorPrefs (8 items) - /// - Read Each: Bonded, Ledger, Payee, Locks, System Account (5 items) - /// - Write Each: System Account, Locks, Ledger (3 items) - /// # - #[weight = ::WeightInfo::payout_stakers(T::MaxNominatorRewardedPerValidator::get() as u32)] - pub fn payout_stakers(origin, validator_stash: T::AccountId, era: EraIndex) -> DispatchResult { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - ensure_signed(origin)?; - Self::do_payout_stakers(validator_stash, era) - } - - /// Rebond a portion of the stash scheduled to be unlocked. - /// - /// The dispatch origin must be signed by the controller, and it can be only called when - /// [`EraElectionStatus`] is `Closed`. - /// - /// # - /// - Time complexity: O(L), where L is unlocking chunks - /// - Bounded by `MAX_UNLOCKING_CHUNKS`. - /// - Storage changes: Can't increase storage, only decrease it. - /// --------------- - /// - DB Weight: - /// - Reads: EraElectionStatus, Ledger, Locks, [Origin Account] - /// - Writes: [Origin Account], Locks, Ledger - /// # - #[weight = ::WeightInfo::rebond(MAX_UNLOCKING_CHUNKS as u32)] - pub fn rebond(origin, #[compact] value: BalanceOf) -> DispatchResultWithPostInfo { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - let controller = ensure_signed(origin)?; - let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; - ensure!(!ledger.unlocking.is_empty(), Error::::NoUnlockChunk); - - let ledger = ledger.rebond(value); - // last check: the new active amount of ledger must be more than ED. - ensure!(ledger.active >= T::Currency::minimum_balance(), Error::::InsufficientValue); - - Self::update_ledger(&controller, &ledger); - Ok(Some( - Weight::from_ref_time(35u64 * WEIGHT_REF_TIME_PER_MICROS - + 50u64 * WEIGHT_REF_TIME_PER_NANOS * (ledger.unlocking.len() as u64)) - + T::DbWeight::get().reads_writes(3, 2) - ).into()) - } - - /// Set `HistoryDepth` value. This function will delete any history information - /// when `HistoryDepth` is reduced. - /// - /// Parameters: - /// - `new_history_depth`: The new history depth you would like to set. - /// - `era_items_deleted`: The number of items that will be deleted by this dispatch. - /// This should report all the storage items that will be deleted by clearing old - /// era history. Needed to report an accurate weight for the dispatch. Trusted by - /// `Root` to report an accurate number. - /// - /// Origin must be root. - /// - /// # - /// - E: Number of history depths removed, i.e. 10 -> 7 = 3 - /// - Weight: O(E) - /// - DB Weight: - /// - Reads: Current Era, History Depth - /// - Writes: History Depth - /// - Clear Prefix Each: Era Stakers, EraStakersClipped, ErasValidatorPrefs - /// - Writes Each: ErasValidatorReward, ErasRewardPoints, ErasTotalStake, ErasStartSessionIndex - /// # - #[weight = ::WeightInfo::set_history_depth(*_era_items_deleted)] - pub fn set_history_depth(origin, - #[compact] new_history_depth: EraIndex, - #[compact] _era_items_deleted: u32, - ) { - ensure_root(origin)?; - if let Some(current_era) = Self::current_era() { - HistoryDepth::mutate(|history_depth| { - let last_kept = current_era.checked_sub(*history_depth).unwrap_or(0); - let new_last_kept = current_era.checked_sub(new_history_depth).unwrap_or(0); - for era_index in last_kept..new_last_kept { - Self::clear_era_information(era_index); - } - *history_depth = new_history_depth - }) - } - } - - /// Remove all data structure concerning a staker/stash once its balance is at the minimum. - /// This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone - /// and the target `stash` must have no funds left beyond the ED. - /// - /// This can be called from any origin. - /// - /// - `stash`: The stash account to reap. Its balance must be zero. - /// - /// # - /// Complexity: O(S) where S is the number of slashing spans on the account. - /// DB Weight: - /// - Reads: Stash Account, Bonded, Slashing Spans, Locks - /// - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Stash Account, Locks - /// - Writes Each: SpanSlash * S - /// # - #[weight = ::WeightInfo::reap_stash(*num_slashing_spans)] - pub fn reap_stash(_origin, stash: T::AccountId, num_slashing_spans: u32) { - let at_minimum = T::Currency::total_balance(&stash) == T::Currency::minimum_balance(); - ensure!(at_minimum, Error::::FundedTarget); - Self::kill_stash(&stash, num_slashing_spans)?; - T::Currency::remove_lock(STAKING_ID, &stash); - } - - /// Submit an election result to the chain. If the solution: - /// - /// 1. is valid. - /// 2. has a better score than a potentially existing solution on chain. - /// - /// then, it will be _put_ on chain. - /// - /// A solution consists of two pieces of data: - /// - /// 1. `winners`: a flat vector of all the winners of the round. - /// 2. `assignments`: the compact version of an assignment vector that encodes the edge - /// weights. - /// - /// Both of which may be computed using _phragmen_, or any other algorithm. - /// - /// Additionally, the submitter must provide: - /// - /// - The `score` that they claim their solution has. - /// - /// Both validators and nominators will be represented by indices in the solution. The - /// indices should respect the corresponding types ([`ValidatorIndex`] and - /// [`NominatorIndex`]). Moreover, they should be valid when used to index into - /// [`SnapshotValidators`] and [`SnapshotNominators`]. Any invalid index will cause the - /// solution to be rejected. These two storage items are set during the election window and - /// may be used to determine the indices. - /// - /// A solution is valid if: - /// - /// 0. It is submitted when [`EraElectionStatus`] is `Open`. - /// 1. Its claimed score is equal to the score computed on-chain. - /// 2. Presents the correct number of winners. - /// 3. All indexes must be value according to the snapshot vectors. All edge values must - /// also be correct and should not overflow the granularity of the ratio type (i.e. 256 - /// or billion). - /// 4. For each edge, all targets are actually nominated by the voter. - /// 5. Has correct self-votes. - /// - /// A solutions score is consisted of 3 parameters: - /// - /// 1. `min { support.total }` for each support of a winner. This value should be maximized. - /// 2. `sum { support.total }` for each support of a winner. This value should be minimized. - /// 3. `sum { support.total^2 }` for each support of a winner. This value should be - /// minimized (to ensure less variance) - /// - /// # - /// The transaction is assumed to be the longest path, a better solution. - /// - Initial solution is almost the same. - /// - Worse solution is retraced in pre-dispatch-checks which sets its own weight. - /// # - #[weight = (T::OffchainSolutionWeightLimit::get(), Operational)] - pub fn submit_election_solution( - origin, - winners: Vec, - compact: CompactAssignments, - score: ElectionScore, - era: EraIndex, - size: ElectionSize, - ) -> DispatchResultWithPostInfo { - let _who = ensure_signed(origin)?; - Self::check_and_replace_solution( - winners, - compact, - ElectionCompute::Signed, - score, - era, - size, - ) - } - - /// Unsigned version of `submit_election_solution`. - /// - /// Note that this must pass the [`ValidateUnsigned`] check which only allows transactions - /// from the local node to be included. In other words, only the block author can include a - /// transaction in the block. - /// - /// # - /// See [`submit_election_solution`]. - /// # - #[weight = (T::OffchainSolutionWeightLimit::get(), Operational)] - pub fn submit_election_solution_unsigned( - origin, - winners: Vec, - compact: CompactAssignments, - score: ElectionScore, - era: EraIndex, - size: ElectionSize, - ) -> DispatchResultWithPostInfo { - ensure_none(origin)?; - let adjustments = Self::check_and_replace_solution( - winners, - compact, - ElectionCompute::Unsigned, - score, - era, - size, - ).expect( - "An unsigned solution can only be submitted by validators; A validator should \ - always produce correct solutions, else this block should not be imported, thus \ - effectively depriving the validators from their authoring reward. Hence, this panic - is expected." - ); - - Ok(adjustments) - } - - // Polymesh-Note: Change it from `ensure_signed` to `ensure_root` in the favour of reward scheduling. - /// System version of `payout_stakers()`. Only be called by the root origin. - #[weight = ::WeightInfo::payout_stakers(T::MaxNominatorRewardedPerValidator::get() as u32)] - pub fn payout_stakers_by_system(origin, validator_stash: T::AccountId, era: EraIndex) -> DispatchResult { - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - ensure_root(origin)?; - Self::do_payout_stakers(validator_stash, era) - } - - /// Switch slashing status on the basis of given `SlashingSwitch`. Can only be called by root. - /// - /// # Arguments - /// * origin - AccountId of root. - /// * slashing_switch - Switch used to set the targets for slashing. - #[weight = ::WeightInfo::change_slashing_allowed_for()] - pub fn change_slashing_allowed_for(origin, slashing_switch: SlashingSwitch) { - // Ensure origin should be root. - ensure_root(origin)?; - SlashingAllowedFor::put(slashing_switch); - Self::deposit_event(RawEvent::SlashingAllowedForChanged(slashing_switch)); - } - - /// Update the intended validator count for a given DID. - /// - /// # Arguments - /// * origin which must be the required origin for adding a potential validator. - /// * identity to add as a validator. - /// * new_intended_count New value of intended count. - #[weight = ::WeightInfo::update_permissioned_validator_intended_count()] - pub fn update_permissioned_validator_intended_count(origin, identity: IdentityId, new_intended_count: u32) -> DispatchResult { - T::RequiredAddOrigin::ensure_origin(origin)?; - ensure!(Self::get_allowed_validator_count() > new_intended_count, Error::::IntendedCountIsExceedingConsensusLimit); - PermissionedIdentity::try_mutate(&identity, |pref| { - pref.as_mut() - .ok_or_else(|| Error::::NotExists.into()) - .map(|p| p.intended_count = new_intended_count) - }) - } - - - /// GC forcefully chills a validator. - /// Effects will be felt at the beginning of the next era. - /// And, it can be only called when [`EraElectionStatus`] is `Closed`. - /// - /// # Arguments - /// * origin which must be a GC. - /// * identity must be permissioned to run operator/validator nodes. - /// * stash_keys contains the secondary keys of the permissioned identity - /// - /// # Errors - /// * `BadOrigin` The origin was not a GC member. - /// * `CallNotAllowed` The call is not allowed at the given time due to restrictions of election period. - /// * `NotExists` Permissioned validator doesn't exist. - /// * `NotStash` Not a stash account for the permissioned identity. - #[weight = ::WeightInfo::chill_from_governance(stash_keys.len() as u32)] - pub fn chill_from_governance(origin, identity: IdentityId, stash_keys: Vec) -> DispatchResult { - Self::base_chill_from_governance(origin, identity, stash_keys) - } - - } -} - -impl Module { - /// Returns the allowed validator count. - fn get_allowed_validator_count() -> u32 { - (T::MaxValidatorPerIdentity::get() * Self::validator_count()).max(1) - } - - /// The total balance that can be slashed from a stash account as of right now. - pub fn slashable_balance_of(stash: &T::AccountId) -> BalanceOf { - // Weight note: consider making the stake accessible through stash. - Self::bonded(stash).and_then(Self::ledger).map(|l| l.active).unwrap_or_default() - } - - /// Internal impl of [`Self::slashable_balance_of`] that returns [`VoteWeight`]. - pub fn slashable_balance_of_vote_weight(stash: &T::AccountId, issuance: BalanceOf) -> VoteWeight { - T::CurrencyToVote::to_vote(Self::slashable_balance_of(stash), issuance) - } - - /// Returns a closure around `slashable_balance_of_vote_weight` that can be passed around. - /// - /// This prevents call sites from repeatedly requesting `total_issuance` from backend. But it is - /// important to be only used while the total issuance is not changing. - pub fn slashable_balance_of_fn() -> Box VoteWeight> { - // NOTE: changing this to unboxed `impl Fn(..)` return type and the module will still - // compile, while some types in mock fail to resolve. - let issuance = T::Currency::total_issuance(); - Box::new(move |who: &T::AccountId| -> VoteWeight { - Self::slashable_balance_of_vote_weight(who, issuance) - }) - } - - /// Dump the list of validators and nominators into vectors and keep them on-chain. - /// - /// This data is used to efficiently evaluate election results. returns `true` if the operation - /// is successful. - pub fn create_stakers_snapshot() -> (bool, Weight) { - let mut consumed_weight = Weight::zero(); - let mut add_db_reads_writes = |reads, writes| { - consumed_weight += T::DbWeight::get().reads_writes(reads, writes); - }; - let mut validators = Vec::new(); - for (validator, _) in >::iter() - // Polymesh-Note: Ensure that validator is CDDed + has enough bonded. - // ----------------------------------------------------------------- - .filter(|(v, _)| { - Self::is_active_balance_above_min_bond(&v) && Self::is_validator_compliant(&v) - }) - // ----------------------------------------------------------------- - { - validators.push(validator); - } - let mut nominators = >::iter().map(|(n, _)| n).collect::>(); - - let num_validators = validators.len(); - let num_nominators = nominators.len(); - add_db_reads_writes((num_validators + num_nominators) as u64, 0); - - if - num_validators > MAX_VALIDATORS || - num_nominators.saturating_add(num_validators) > MAX_NOMINATORS - { - log!( - warn, - "💸 Snapshot size too big [{} <> {}][{} <> {}].", - num_validators, - MAX_VALIDATORS, - num_nominators, - MAX_NOMINATORS, - ); - (false, consumed_weight) - } else { - // all validators nominate themselves; - nominators.extend(validators.clone()); - - >::put(validators); - >::put(nominators); - add_db_reads_writes(0, 2); - (true, consumed_weight) - } - } - - /// Clears both snapshots of stakers. - pub fn kill_stakers_snapshot() { - >::kill(); - >::kill(); - } - - fn do_payout_stakers( - validator_stash: T::AccountId, - era: EraIndex, - ) -> DispatchResult { - // Validate input data - let current_era = CurrentEra::get().ok_or(Error::::InvalidEraToReward)?; - ensure!(era <= current_era, Error::::InvalidEraToReward); - let history_depth = Self::history_depth(); - ensure!(era >= current_era.saturating_sub(history_depth), Error::::InvalidEraToReward); - - // Note: if era has no reward to be claimed, era may be future. better not to update - // `ledger.claimed_rewards` in this case. - let era_payout = >::get(&era) - .ok_or_else(|| Error::::InvalidEraToReward)?; - - let controller = Self::bonded(&validator_stash).ok_or(Error::::NotStash)?; - let mut ledger = >::get(&controller).ok_or_else(|| Error::::NotController)?; - - ledger.claimed_rewards.retain(|&x| x >= current_era.saturating_sub(history_depth)); - match ledger.claimed_rewards.binary_search(&era) { - Ok(_) => Err(Error::::AlreadyClaimed)?, - Err(pos) => ledger.claimed_rewards.insert(pos, era), - } - - let exposure = >::get(&era, &ledger.stash); - - /* Input data seems good, no errors allowed after this point */ - - >::insert(&controller, &ledger); - - // Get Era reward points. It has TOTAL and INDIVIDUAL - // Find the fraction of the era reward that belongs to the validator - // Take that fraction of the eras rewards to split to nominator and validator - // - // Then look at the validator, figure out the proportion of their reward - // which goes to them and each of their nominators. - - let era_reward_points = >::get(&era); - let total_reward_points = era_reward_points.total; - let validator_reward_points = era_reward_points.individual.get(&ledger.stash) - .map(|points| *points) - .unwrap_or_else(|| Zero::zero()); - - // Nothing to do if they have no reward points. - if validator_reward_points.is_zero() { return Ok(())} - - // This is the fraction of the total reward that the validator and the - // nominators will get. - let validator_total_reward_part = Perbill::from_rational( - validator_reward_points, - total_reward_points, - ); - - // This is how much validator + nominators are entitled to. - let validator_total_payout = validator_total_reward_part * era_payout; - - let validator_prefs = Self::eras_validator_prefs(&era, &validator_stash); - // Validator first gets a cut off the top. - let validator_commission = validator_prefs.commission; - let validator_commission_payout = validator_commission * validator_total_payout; - - let validator_leftover_payout = validator_total_payout - validator_commission_payout; - // Now let's calculate how this is split to the validator. - let validator_exposure_part = Perbill::from_rational( - exposure.own, - exposure.total, - ); - let validator_staking_payout = validator_exposure_part * validator_leftover_payout; - - // We can now make total validator payout: - if let Some(imbalance) = Self::make_payout( - &ledger.stash, - validator_staking_payout + validator_commission_payout - ) { - // Polymesh-Note: Provide DID of stash account. - // ----------------------------------------------------------------- - let did = >::get_identity(&ledger.stash).unwrap_or_default(); - Self::deposit_event(RawEvent::Reward(did, ledger.stash, imbalance.peek())); - // ----------------------------------------------------------------- - } - - // Lets now calculate how this is split to the nominators. - // Reward only the clipped exposures. Note this is not necessarily sorted. - for nominator in exposure.others.iter() { - let nominator_exposure_part = Perbill::from_rational( - nominator.value, - exposure.total, - ); - - let nominator_reward: BalanceOf = nominator_exposure_part * validator_leftover_payout; - // We can now make nominator payout: - if let Some(imbalance) = Self::make_payout(&nominator.who, nominator_reward) { - // Polymesh-Note: Provide DID of nominator account. - // ------------------------------------------------------------- - let did = >::get_identity(&nominator.who).unwrap_or_default(); - Self::deposit_event(RawEvent::Reward(did, nominator.who.clone(), imbalance.peek())); - // ------------------------------------------------------------- - } - } - - Ok(()) - } - - /// Update the ledger for a controller. - /// - /// This will also update the stash lock. - fn update_ledger( - controller: &T::AccountId, - ledger: &StakingLedger> - ) { - T::Currency::set_lock( - STAKING_ID, - &ledger.stash, - ledger.total, - WithdrawReasons::all(), - ); - >::insert(controller, ledger); - } - - /// Chill a stash account. - fn chill_stash(stash: &T::AccountId) { - // Polymesh-Note: Decrement the running count by 1. - // --------------------------------------------------------------------- - Self::release_running_validator(stash); - // --------------------------------------------------------------------- - >::remove(stash); - >::remove(stash); - } - - // Polymesh-Note: - // ------------------------------------------------------------------------- - /// Decrease the running count of validators by 1 for the stash identity. - fn release_running_validator(stash: &T::AccountId) { - if !>::contains_key(stash) { - return; - } - if let Some(id) = >::get_identity(stash) { - PermissionedIdentity::mutate(&id, |pref| { - if let Some(p) = pref { - if p.running_count > 0 { - p.running_count -= 1; - >::remove_account_key_ref_count(&stash); - } - } - }); - } - } - // ------------------------------------------------------------------------- - - /// Actually make a payment to a staker. This uses the currency's reward function - /// to pay the right payee for the given staker account. - fn make_payout(stash: &T::AccountId, amount: BalanceOf) -> Option> { - let dest = Self::payee(stash); - match dest { - RewardDestination::Controller => Self::bonded(stash) - .and_then(|controller| - Some(T::Currency::deposit_creating(&controller, amount)) - ), - RewardDestination::Stash => - T::Currency::deposit_into_existing(stash, amount).ok(), - RewardDestination::Staked => Self::bonded(stash) - .and_then(|c| Self::ledger(&c).map(|l| (c, l))) - .and_then(|(controller, mut l)| { - l.active += amount; - l.total += amount; - let r = T::Currency::deposit_into_existing(stash, amount).ok(); - Self::update_ledger(&controller, &l); - r - }), - RewardDestination::Account(dest_account) => { - Some(T::Currency::deposit_creating(&dest_account, amount)) - } - } - } - - /// Plan a new session potentially trigger a new era. - fn new_session(session_index: SessionIndex) -> Option> { - if let Some(current_era) = Self::current_era() { - // Initial era has been set. - - let current_era_start_session_index = Self::eras_start_session_index(current_era) - .unwrap_or_else(|| { - frame_support::print("Error: start_session_index must be set for current_era"); - 0 - }); - - let era_length = session_index.checked_sub(current_era_start_session_index) - .unwrap_or(0); // Must never happen. - - match ForceEra::get() { - Forcing::ForceNew => ForceEra::kill(), - Forcing::ForceAlways => (), - Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), - _ => { - // Either `ForceNone`, or `NotForcing && era_length < T::SessionsPerEra::get()`. - if era_length + 1 == T::SessionsPerEra::get() { - IsCurrentSessionFinal::put(true); - } else if era_length >= T::SessionsPerEra::get() { - // Should only happen when we are ready to trigger an era but we have ForceNone, - // otherwise previous arm would short circuit. - Self::close_election_window(); - } - return None - }, - } - - // new era. - Self::new_era(session_index) - } else { - // Set initial era - Self::new_era(session_index) - } - } - - /// Basic and cheap checks that we perform in validate unsigned, and in the execution. - /// - /// State reads: ElectionState, CurrentEr, QueuedScore. - /// - /// This function does weight refund in case of errors, which is based upon the fact that it is - /// called at the very beginning of the call site's function. - pub fn pre_dispatch_checks(score: ElectionScore, era: EraIndex) -> DispatchResultWithPostInfo { - // discard solutions that are not in-time - // check window open - ensure!( - Self::era_election_status().is_open(), - Error::::OffchainElectionEarlySubmission.with_weight(T::DbWeight::get().reads(1)), - ); - - // check current era. - if let Some(current_era) = Self::current_era() { - ensure!( - current_era == era, - Error::::OffchainElectionEarlySubmission.with_weight(T::DbWeight::get().reads(2)), - ) - } - - // assume the given score is valid. Is it better than what we have on-chain, if we have any? - if let Some(queued_score) = Self::queued_score() { - ensure!( - score.strict_threshold_better(queued_score, T::MinSolutionScoreBump::get()), - Error::::OffchainElectionWeakSubmission.with_weight(T::DbWeight::get().reads(3)), - ) - } - - Ok(None::.into()) - } - - /// Checks a given solution and if correct and improved, writes it on chain as the queued result - /// of the next round. This may be called by both a signed and an unsigned transaction. - pub fn check_and_replace_solution( - winners: Vec, - compact_assignments: CompactAssignments, - compute: ElectionCompute, - claimed_score: ElectionScore, - era: EraIndex, - election_size: ElectionSize, - ) -> DispatchResultWithPostInfo { - // Do the basic checks. era, claimed score and window open. - let _ = Self::pre_dispatch_checks(claimed_score, era)?; - - // before we read any further state, we check that the unique targets in compact is same as - // compact. is a all in-memory check and easy to do. Moreover, it ensures that the solution - // is not full of bogus edges that can cause lots of reads to SlashingSpans. Thus, we can - // assume that the storage access of this function is always O(|winners|), not - // O(|compact.edge_count()|). - ensure!( - compact_assignments.unique_targets().len() == winners.len(), - Error::::OffchainElectionBogusWinnerCount, - ); - - // Check that the number of presented winners is sane. Most often we have more candidates - // than we need. Then it should be `Self::validator_count()`. Else it should be all the - // candidates. - let snapshot_validators_length = >::decode_len() - .map(|l| l as u32) - .ok_or_else(|| Error::::SnapshotUnavailable)?; - - // size of the solution must be correct. - ensure!( - snapshot_validators_length == u32::from(election_size.validators), - Error::::OffchainElectionBogusElectionSize, - ); - - // check the winner length only here and when we know the length of the snapshot validators - // length. - let desired_winners = Self::validator_count().min(snapshot_validators_length); - ensure!(winners.len() as u32 == desired_winners, Error::::OffchainElectionBogusWinnerCount); - - let snapshot_nominators_len = >::decode_len() - .map(|l| l as u32) - .ok_or_else(|| Error::::SnapshotUnavailable)?; - - // rest of the size of the solution must be correct. - ensure!( - snapshot_nominators_len == election_size.nominators, - Error::::OffchainElectionBogusElectionSize, - ); - - // decode snapshot validators. - let snapshot_validators = Self::snapshot_validators() - .ok_or(Error::::SnapshotUnavailable)?; - - // check if all winners were legit; this is rather cheap. Replace with accountId. - let winners = winners.into_iter().map(|widx| { - // NOTE: at the moment, since staking is explicitly blocking any offence until election - // is closed, we don't check here if the account id at `snapshot_validators[widx]` is - // actually a validator. If this ever changes, this loop needs to also check this. - snapshot_validators.get(widx as usize).cloned().ok_or(Error::::OffchainElectionBogusWinner) - }).collect::, Error>>()?; - - // decode the rest of the snapshot. - let snapshot_nominators = Self::snapshot_nominators() - .ok_or(Error::::SnapshotUnavailable)?; - - // helpers - let nominator_at = |i: NominatorIndex| -> Option { - snapshot_nominators.get(i as usize).cloned() - }; - let validator_at = |i: ValidatorIndex| -> Option { - snapshot_validators.get(i as usize).cloned() - }; - - // un-compact. - let assignments = compact_assignments.into_assignment( - nominator_at, - validator_at, - ).map_err(|e| { - // log the error since it is not propagated into the runtime error. - log!(warn, "💸 un-compacting solution failed due to {:?}", e); - Error::::OffchainElectionBogusCompact - })?; - - // check all nominators actually including the claimed vote. Also check correct self votes. - // Note that we assume all validators and nominators in `assignments` are properly bonded, - // because they are coming from the snapshot via a given index. - for Assignment { who, distribution } in assignments.iter() { - let is_validator = >::contains_key(&who); - let maybe_nomination = Self::nominators(&who); - - if !(maybe_nomination.is_some() ^ is_validator) { - // all of the indices must map to either a validator or a nominator. If this is ever - // not the case, then the locking system of staking is most likely faulty, or we - // have bigger problems. - log!(error, "💸 detected an error in the staking locking and snapshot."); - // abort. - return Err(Error::::OffchainElectionBogusNominator.into()); - } - - if !is_validator { - // a normal vote - let nomination = maybe_nomination.expect( - "exactly one of `maybe_validator` and `maybe_nomination.is_some` is true. \ - is_validator is false; maybe_nomination is some; qed" - ); - - // NOTE: we don't really have to check here if the sum of all edges are the - // nominator correct. Un-compacting assures this by definition. - - for (t, _) in distribution { - // each target in the provided distribution must be actually nominated by the - // nominator after the last non-zero slash. - if nomination.targets.iter().find(|&tt| tt == t).is_none() { - return Err(Error::::OffchainElectionBogusNomination.into()); - } - - if ::SlashingSpans::get(&t).map_or( - false, - |spans| nomination.submitted_in < spans.last_nonzero_slash(), - ) { - return Err(Error::::OffchainElectionSlashedNomination.into()); - } - } - } else { - // a self vote - ensure!(distribution.len() == 1, Error::::OffchainElectionBogusSelfVote); - ensure!(distribution[0].0 == *who, Error::::OffchainElectionBogusSelfVote); - // defensive only. A compact assignment of length one does NOT encode the weight and - // it is always created to be 100%. - ensure!( - distribution[0].1 == OffchainAccuracy::one(), - Error::::OffchainElectionBogusSelfVote, - ); - } - } - - // convert into staked assignments. - let staked_assignments = sp_npos_elections::assignment_ratio_to_staked( - assignments, - Self::slashable_balance_of_fn(), - ); - - // build the support map thereof in order to evaluate. - let supports_map = to_support_map::(&staked_assignments); - let supports = supports_map.clone().into_iter().collect::>(); - - // Check if the score is the same as the claimed one. - let submitted_score = (&supports).evaluate(); - ensure!(submitted_score == claimed_score, Error::::OffchainElectionBogusScore); - - // At last, alles Ok. Exposures and store the result. - let exposures = Self::collect_exposure(supports_map); - log!( - info, - "💸 A better solution (with compute {:?} and score {:?}) has been validated and stored on chain.", - compute, - submitted_score, - ); - - // write new results. - >::put(ElectionResult { - elected_stashes: winners, - compute, - exposures, - }); - QueuedScore::put(submitted_score); - - // emit event. - Self::deposit_event(RawEvent::SolutionStored(compute)); - - Ok(None::.into()) - } - - /// Start a session potentially starting an era. - fn start_session(start_session: SessionIndex) { - let next_active_era = Self::active_era().map(|e| e.index + 1).unwrap_or(0); - // This is only `Some` when current era has already progressed to the next era, while the - // active era is one behind (i.e. in the *last session of the active era*, or *first session - // of the new current era*, depending on how you look at it). - if let Some(next_active_era_start_session_index) = - Self::eras_start_session_index(next_active_era) - { - if next_active_era_start_session_index == start_session { - Self::start_era(start_session); - } else if next_active_era_start_session_index < start_session { - // This arm should never happen, but better handle it than to stall the staking - // pallet. - frame_support::print("Warning: A session appears to have been skipped."); - Self::start_era(start_session); - } - } - - // disable all offending validators that have been disabled for the whole era - for (index, disabled) in OffendingValidators::get() { - if disabled { - T::SessionInterface::disable_validator(index); - } - } - } - - /// End a session potentially ending an era. - fn end_session(session_index: SessionIndex) { - if let Some(active_era) = Self::active_era() { - if let Some(next_active_era_start_session_index) = - Self::eras_start_session_index(active_era.index + 1) - { - if next_active_era_start_session_index == session_index + 1 { - Self::end_era(active_era, session_index); - } - } - } - } - - /// * Increment `active_era.index`, - /// * reset `active_era.start`, - /// * update `BondedEras` and apply slashes. - fn start_era(start_session: SessionIndex) { - let active_era = ActiveEra::mutate(|active_era| { - let new_index = active_era.as_ref().map(|info| info.index + 1).unwrap_or(0); - *active_era = Some(ActiveEraInfo { - index: new_index, - // Set new active era start in next `on_finalize`. To guarantee usage of `Time` - start: None, - }); - new_index - }); - - let bonding_duration = T::BondingDuration::get(); - - BondedEras::mutate(|bonded| { - bonded.push((active_era, start_session)); - - if active_era > bonding_duration { - let first_kept = active_era - bonding_duration; - - // prune out everything that's from before the first-kept index. - let n_to_prune = bonded.iter() - .take_while(|&&(era_idx, _)| era_idx < first_kept) - .count(); - - // kill slashing metadata. - for (pruned_era, _) in bonded.drain(..n_to_prune) { - slashing::clear_era_metadata::(pruned_era); - } - - if let Some(&(_, first_session)) = bonded.first() { - T::SessionInterface::prune_historical_up_to(first_session); - } - } - }); - - Self::apply_unapplied_slashes(active_era); - } - - /// Compute payout for era. - fn end_era(active_era: ActiveEraInfo, _session_index: SessionIndex) { - // Note: active_era_start can be None if end era is called during genesis config. - if let Some(active_era_start) = active_era.start { - let now_as_millis_u64 = T::UnixTime::now().as_millis().saturated_into::(); - - let era_duration = now_as_millis_u64 - active_era_start; - let (validator_payout, max_payout) = inflation::compute_total_payout( - &T::RewardCurve::get(), - Self::eras_total_stake(&active_era.index), - T::Currency::total_issuance(), - // Duration of era; more than u64::MAX is rewarded as u64::MAX. - era_duration.saturated_into::(), - T::MaxVariableInflationTotalIssuance::get(), - T::FixedYearlyReward::get(), - ); - let rest = max_payout.saturating_sub(validator_payout); - - // Schedule Rewards for the validators - let next_block_no = >::block_number() + 1u32.into(); - for (index, validator_id) in T::SessionInterface::validators().into_iter().enumerate() { - let schedule_block_no = next_block_no + index.saturated_into::(); - match T::RewardScheduler::schedule( - DispatchTime::At(schedule_block_no), - None, - HIGHEST_PRIORITY, - RawOrigin::Root.into(), - Call::::payout_stakers_by_system { - validator_stash: validator_id.clone(), - era: active_era.index, - }.into() - ) { - Ok(_) => log!( - info, - "💸 Rewards are successfully scheduled for validator id: {:?} at block number: {:?}", - &validator_id, - schedule_block_no, - ), - Err(e) => { - log!( - error, - "â›” Detected error in scheduling the reward payment: {:?}", - e - ); - Self::deposit_event(RawEvent::RewardPaymentSchedulingInterrupted(validator_id, active_era.index, e)); - } - } - } - - Self::deposit_event(RawEvent::EraPayout(active_era.index, validator_payout, rest)); - - // Set ending era reward. - >::insert(&active_era.index, validator_payout); - T::RewardRemainder::on_unbalanced(T::Currency::issue(rest)); - - // Clear offending validators. - OffendingValidators::kill(); - } - } - - /// Plan a new era. Return the potential new staking set. - fn new_era(start_session_index: SessionIndex) -> Option> { - // Increment or set current era. - let current_era = CurrentEra::mutate(|s| { - *s = Some(s.map(|s| s + 1).unwrap_or(0)); - s.unwrap() - }); - ErasStartSessionIndex::insert(¤t_era, &start_session_index); - - // Clean old era information. - if let Some(old_era) = current_era.checked_sub(Self::history_depth() + 1) { - Self::clear_era_information(old_era); - } - - // Set staking information for new era. - let maybe_new_validators = Self::select_and_update_validators(current_era); - - maybe_new_validators - } - - /// Remove all the storage items associated with the election. - fn close_election_window() { - // Close window. - >::put(ElectionStatus::Closed); - // Kill snapshots. - Self::kill_stakers_snapshot(); - // Don't track final session. - IsCurrentSessionFinal::put(false); - } - - /// Select the new validator set at the end of the era. - /// - /// Runs [`try_do_phragmen`] and updates the following storage items: - /// - [`EraElectionStatus`]: with `None`. - /// - [`ErasStakers`]: with the new staker set. - /// - [`ErasStakersClipped`]. - /// - [`ErasValidatorPrefs`]. - /// - [`ErasTotalStake`]: with the new total stake. - /// - [`SnapshotValidators`] and [`SnapshotNominators`] are both removed. - /// - /// Internally, [`QueuedElected`], snapshots and [`QueuedScore`] are also consumed. - /// - /// If the election has been successful, It passes the new set upwards. - /// - /// This should only be called at the end of an era. - fn select_and_update_validators(current_era: EraIndex) -> Option> { - if let Some(ElectionResult::> { - elected_stashes, - exposures, - compute, - }) = Self::try_do_election() { - // Totally close the election round and data. - Self::close_election_window(); - - // Populate Stakers and write slot stake. - let mut total_stake: BalanceOf = Zero::zero(); - exposures.into_iter().for_each(|(stash, exposure)| { - total_stake = total_stake.saturating_add(exposure.total); - >::insert(current_era, &stash, &exposure); - - let mut exposure_clipped = exposure; - let clipped_max_len = T::MaxNominatorRewardedPerValidator::get() as usize; - if exposure_clipped.others.len() > clipped_max_len { - exposure_clipped.others.sort_by(|a, b| a.value.cmp(&b.value).reverse()); - exposure_clipped.others.truncate(clipped_max_len); - } - >::insert(¤t_era, &stash, exposure_clipped); - }); - - // Insert current era staking information - >::insert(¤t_era, total_stake); - - // collect the pref of all winners - for stash in &elected_stashes { - let pref = Self::validators(stash); - >::insert(¤t_era, stash, pref); - } - - // emit event - Self::deposit_event(RawEvent::StakingElection(compute)); - - log!( - info, - "💸 new validator set of size {:?} has been elected via {:?} for era {:?}", - elected_stashes.len(), - compute, - current_era, - ); - - Some(elected_stashes) - } else { - None - } - } - - /// Select a new validator set from the assembled stakers and their role preferences. It tries - /// first to peek into [`QueuedElected`]. Otherwise, it runs a new on-chain phragmen election. - /// - /// If [`QueuedElected`] and [`QueuedScore`] exists, they are both removed. No further storage - /// is updated. - fn try_do_election() -> Option>> { - // an election result from either a stored submission or locally executed one. - let next_result = >::take().or_else(|| - Self::do_on_chain_phragmen() - ); - - // either way, kill this. We remove it here to make sure it always has the exact same - // lifetime as `QueuedElected`. - QueuedScore::kill(); - - next_result - } - - /// Execute election and return the new results. The edge weights are processed into support - /// values. - /// - /// This is basically a wrapper around [`Self::do_phragmen`] which translates - /// `PrimitiveElectionResult` into `ElectionResult`. - /// - /// No storage item is updated. - pub fn do_on_chain_phragmen() -> Option>> { - if let Some(phragmen_result) = Self::do_phragmen::(0) { - let elected_stashes = phragmen_result.winners.iter() - .map(|(s, _)| s.clone()) - .collect::>(); - let assignments = phragmen_result.assignments; - - let staked_assignments = sp_npos_elections::assignment_ratio_to_staked( - assignments, - Self::slashable_balance_of_fn(), - ); - - let supports = to_support_map::(&staked_assignments); - - // collect exposures - let exposures = Self::collect_exposure(supports); - - // In order to keep the property required by `on_session_ending` that we must return the - // new validator set even if it's the same as the old, as long as any underlying - // economic conditions have changed, we don't attempt to do any optimization where we - // compare against the prior set. - Some(ElectionResult::> { - elected_stashes, - exposures, - compute: ElectionCompute::OnChain, - }) - } else { - // There were not enough candidates for even our minimal level of functionality. This is - // bad. We should probably disable all functionality except for block production and let - // the chain keep producing blocks until we can decide on a sufficiently substantial - // set. TODO: #2494 - None - } - } - - /// Execute phragmen election and return the new results. No post-processing is applied and the - /// raw edge weights are returned. - /// - /// Self votes are added and nominations before the most recent slashing span are ignored. - /// - /// No storage item is updated. - pub fn do_phragmen( - iterations: usize, - ) -> Option> { - let weight_of = Self::slashable_balance_of_fn(); - let mut all_nominators: Vec<(T::AccountId, VoteWeight, Vec)> = Vec::new(); - let mut all_validators = Vec::new(); - for (validator, _) in >::iter() - // Polymesh-Note: Ensure that validator is CDDed + has enough bonded. - // ----------------------------------------------------------------- - .filter(|(v, _)| { - Self::is_active_balance_above_min_bond(&v) && Self::is_validator_compliant(&v) - }) - // ----------------------------------------------------------------- - { - // append self vote - let self_vote = (validator.clone(), weight_of(&validator), vec![validator.clone()]); - all_nominators.push(self_vote); - all_validators.push(validator); - } - - let nominator_votes = >::iter() - // Polymesh-Note: Ensure that nominator is CDDed. - // ----------------------------------------------------------------- - .filter(|(nominator, _)| Self::is_nominator_compliant(&nominator)) - // ----------------------------------------------------------------- - .map(|(nominator, nominations)| { - let Nominations { submitted_in, mut targets, suppressed: _ } = nominations; - - // Filter out nomination targets which were nominated before the most recent - // slashing span. - targets.retain(|stash| { - ::SlashingSpans::get(&stash).map_or( - true, - |spans| submitted_in >= spans.last_nonzero_slash(), - ) - }); - - (nominator, targets) - }); - all_nominators.extend(nominator_votes.map(|(n, ns)| { - let s = weight_of(&n); - (n, s, ns) - })); - - if all_validators.len() < Self::minimum_validator_count().max(1) as usize { - // If we don't have enough candidates, nothing to do. - log!( - warn, - "💸 Chain does not have enough staking candidates to operate. Era {:?}.", - Self::current_era() - ); - None - } else { - seq_phragmen( - Self::validator_count() as usize, - all_validators, - all_nominators, - Some(BalancingConfig { iterations, tolerance: 0 }), // exactly run `iterations` rounds. - ) - .map_err(|err| log!(error, "Call to seq-phragmen failed due to {:?}", err)) - .ok() - } - } - - /// Consume a set of [`Supports`] from [`sp_npos_elections`] and collect them into a [`Exposure`] - fn collect_exposure( - supports: SupportMap, - ) -> Vec<(T::AccountId, Exposure>)> { - let total_issuance = T::Currency::total_issuance(); - let to_currency = |e: ExtendedBalance| T::CurrencyToVote::to_currency(e, total_issuance); - - supports.into_iter().map(|(validator, support)| { - // build `struct exposure` from `support` - let mut others = Vec::with_capacity(support.voters.len()); - let mut own: BalanceOf = Zero::zero(); - let mut total: BalanceOf = Zero::zero(); - support.voters - .into_iter() - .map(|(nominator, weight)| (nominator, to_currency(weight))) - .for_each(|(nominator, stake)| { - if nominator == validator { - own = own.saturating_add(stake); - } else { - others.push(IndividualExposure { who: nominator, value: stake }); - } - total = total.saturating_add(stake); - }); - - let exposure = Exposure { - own, - others, - total, - }; - - (validator, exposure) - }).collect::)>>() - } - - /// Remove all associated data of a stash account from the staking system. - /// - /// Assumes storage is upgraded before calling. - /// - /// This is called: - /// - after a `withdraw_unbond()` call that frees all of a stash's bonded balance. - /// - through `reap_stash()` if the balance has fallen to zero (through slashing). - pub fn kill_stash(stash: &T::AccountId, num_slashing_spans: u32) -> DispatchResult { - let controller = >::get(stash).ok_or(Error::::NotStash)?; - - slashing::clear_stash_metadata::(stash, num_slashing_spans)?; - - >::remove(stash); - >::remove(&controller); - - >::remove(stash); - >::remove(stash); - >::remove(stash); - - system::Pallet::::dec_consumers(stash); - - Ok(()) - } - - /// Clear all era information for given era. - fn clear_era_information(era_index: EraIndex) { - #[allow(deprecated)] - >::remove_prefix(era_index, None); - #[allow(deprecated)] - >::remove_prefix(era_index, None); - #[allow(deprecated)] - >::remove_prefix(era_index, None); - >::remove(era_index); - >::remove(era_index); - >::remove(era_index); - ErasStartSessionIndex::remove(era_index); - } - - /// Apply previously-unapplied slashes on the beginning of a new era, after a delay. - fn apply_unapplied_slashes(active_era: EraIndex) { - let slash_defer_duration = T::SlashDeferDuration::get(); - ::EarliestUnappliedSlash::mutate(|earliest| if let Some(ref mut earliest) = earliest { - let keep_from = active_era.saturating_sub(slash_defer_duration); - for era in (*earliest)..keep_from { - let era_slashes = ::UnappliedSlashes::take(&era); - for slash in era_slashes { - slashing::apply_slash::(slash); - } - } - - *earliest = (*earliest).max(keep_from) - }) - } - - /// Add reward points to validators using their stash account ID. - /// - /// Validators are keyed by stash account ID and must be in the current elected set. - /// - /// For each element in the iterator the given number of points in u32 is added to the - /// validator, thus duplicates are handled. - /// - /// At the end of the era each the total payout will be distributed among validator - /// relatively to their points. - /// - /// COMPLEXITY: Complexity is `number_of_validator_to_reward x current_elected_len`. - /// If you need to reward lots of validator consider using `reward_by_indices`. - pub fn reward_by_ids( - validators_points: impl IntoIterator - ) { - if let Some(active_era) = Self::active_era() { - >::mutate(active_era.index, |era_rewards| { - for (validator, points) in validators_points.into_iter() { - *era_rewards.individual.entry(validator).or_default() += points; - era_rewards.total += points; - } - }); - } - } - - /// Ensures that at the end of the current session there will be a new era. - fn ensure_new_era() { - match ForceEra::get() { - Forcing::ForceAlways | Forcing::ForceNew => (), - _ => ForceEra::put(Forcing::ForceNew), - } - } - - fn will_era_be_forced() -> bool { - match ForceEra::get() { - Forcing::ForceAlways | Forcing::ForceNew => true, - Forcing::ForceNone | Forcing::NotForcing => false, - } - } - - /// Checks if active balance is above min bond requirement - pub fn is_active_balance_above_min_bond(who: &T::AccountId) -> bool { - if let Some(controller) = Self::bonded(&who) { - if let Some(ledger) = Self::ledger(&controller) { - return ledger.active >= >::get(); - } - } - false - } - - /// Is nominator's `stash` account compliant? - pub fn is_nominator_compliant(stash: &T::AccountId) -> bool { - >::get_identity(&stash).map_or(false, >::has_valid_cdd) - } - - /// Is validator's `stash` account compliant? - pub fn is_validator_compliant(stash: &T::AccountId) -> bool { - >::get_identity(&stash).map_or(false, |id| { - >::has_valid_cdd(id) && Self::permissioned_identity(id).is_some() - }) - } - - fn unbond_balance( - controller: T::AccountId, - ledger: &mut StakingLedger>, - value: BalanceOf, - ) { - let mut value = value.min(ledger.active); - - if !value.is_zero() { - ledger.active -= value; - - // Avoid there being a dust balance left in the staking system. - if ledger.active < ::Currency::minimum_balance() { - value += ledger.active; - ledger.active = Zero::zero(); - } - - // Note: in case there is no current era it is fine to bond one era more. - let era = Self::current_era().unwrap_or(0) + T::BondingDuration::get(); - ledger.unlocking.push(UnlockChunk { value, era }); - Self::update_ledger(&controller, &ledger); - let did = Context::current_identity::().unwrap_or_default(); - Self::deposit_event(RawEvent::Unbonded(did, ledger.stash.clone(), value)); - } - } - - pub fn get_bonding_duration_period() -> u64 { - (T::SessionsPerEra::get() * T::BondingDuration::get()) as u64 // total session - * T::EpochDuration::get() // session length - * T::ExpectedBlockTime::get().saturated_into::() - } - - fn base_chill_from_governance(origin: T::RuntimeOrigin, identity: IdentityId, stash_keys: Vec) -> DispatchResult { - // Checks that the era election status is closed. - ensure!(Self::era_election_status().is_closed(), Error::::CallNotAllowed); - // Required origin for removing a validator. - T::RequiredRemoveOrigin::ensure_origin(origin)?; - // Checks that the identity is allowed to run operator/validator nodes. - ensure!(Self::permissioned_identity(&identity).is_some(), Error::::NotExists); - - for key in &stash_keys { - let key_did = Identity::::get_identity(&key); - // Checks if the stash key identity is the same as the identity given. - ensure!(key_did == Some(identity), Error::::NotStash); - // Checks if the key is a validator if not returns an error. - ensure!(>::contains_key(&key), Error::::NotExists); - } - - for key in stash_keys { - Self::chill_stash(&key); - } - - // Change identity status to be Non-Permissioned - PermissionedIdentity::remove(&identity); - Ok(()) - } - - #[cfg(feature = "runtime-benchmarks")] - pub fn add_era_stakers(current_era: EraIndex, controller: T::AccountId, exposure: Exposure>) { - >::insert(¤t_era, &controller, &exposure); - } - - #[cfg(feature = "runtime-benchmarks")] - pub fn put_election_status(status: ElectionStatus::) { - >::put(status); - } - - #[cfg(feature = "runtime-benchmarks")] - pub fn set_slash_reward_fraction(fraction: Perbill) { - SlashRewardFraction::put(fraction); - } -} +/// Add reward points to block authors: * 20 points to the block producer for producing a block +/// in the chain, +impl pallet_authorship::EventHandler for Pallet +where + T: Config + pallet_authorship::Config + pallet_session::Config, +{ + fn note_author(author: T::AccountId) { + Self::reward_by_ids(vec![(author, 20)]) + } +} /// In this implementation `new_session(session)` must be called before `end_session(session-1)` /// i.e. the new session must be planned before the ending of the previous session. /// /// Once the first new_session is planned, all session must start and then end in order, though /// some session can lag in between the newest session planned and the latest session started. -impl pallet_session::SessionManager for Module -where ::BlockNumber: fmt::Display +impl pallet_session::SessionManager for Pallet +where + ::BlockNumber: core::fmt::Display, { fn new_session(new_index: SessionIndex) -> Option> { log::trace!( @@ -3850,22 +1035,27 @@ where ::BlockNumber: fmt::Display } } -impl historical::SessionManager>> -for Module -where ::BlockNumber: fmt::Display +impl + pallet_session::historical::SessionManager>> + for Pallet +where + ::BlockNumber: core::fmt::Display, { - fn new_session(new_index: SessionIndex) - -> Option>)>> - { + fn new_session( + new_index: SessionIndex, + ) -> Option>)>> { >::new_session(new_index).map(|validators| { let current_era = Self::current_era() // Must be some as a new era has been created. .unwrap_or(0); - validators.into_iter().map(|v| { + validators + .into_iter() + .map(|v| { let exposure = Self::eras_stakers(current_era, &v); (v, exposure) - }).collect() + }) + .collect() }) } fn start_session(start_index: SessionIndex) { @@ -3876,50 +1066,11 @@ where ::BlockNumber: fmt::Display } } -/// Add reward points to block authors: -/// * 20 points to the block producer for producing a block in the chain, -impl pallet_authorship::EventHandler for Module -where - T: Config + pallet_authorship::Config + pallet_session::Config -{ - fn note_author(author: T::AccountId) { - Self::reward_by_ids(vec![(author, 20)]) - } -} - -/// A `Convert` implementation that finds the stash of the given controller account, -/// if any. -pub struct StashOf(sp_std::marker::PhantomData); - -impl Convert> for StashOf { - fn convert(controller: T::AccountId) -> Option { - >::ledger(&controller).map(|l| l.stash) - } -} - -/// A typed conversion from stash account ID to the active exposure of nominators -/// on that account. -/// -/// Active exposure is the exposure of the validator set currently validating, i.e. in -/// `active_era`. It can differ from the latest planned exposure in `current_era`. -pub struct ExposureOf(sp_std::marker::PhantomData); - -impl Convert>>> - for ExposureOf -{ - fn convert(validator: T::AccountId) -> Option>> { - if let Some(active_era) = >::active_era() { - Some(>::eras_stakers(active_era.index, &validator)) - } else { - None - } - } -} - /// This is intended to be used with `FilterHistoricalOffences`. -impl +impl OnOffenceHandler, Weight> -for Module where + for Pallet +where T: pallet_session::Config::AccountId>, T: pallet_session::historical::Config< FullIdentification = Exposure<::AccountId, BalanceOf>, @@ -3933,7 +1084,10 @@ for Module where >, { fn on_offence( - offenders: &[OffenceDetails>], + offenders: &[OffenceDetails< + T::AccountId, + pallet_session::historical::IdentificationTuple, + >], slash_fraction: &[Perbill], slash_session: SessionIndex, _disable_strategy: DisableStrategy, @@ -3950,7 +1104,7 @@ for Module where }; // --------------------------------------------------------------------- - let reward_proportion = SlashRewardFraction::get(); + let reward_proportion = SlashRewardFraction::::get(); let mut consumed_weight = Weight::zero(); let mut add_db_reads_writes = |reads, writes| { consumed_weight += T::DbWeight::get().reads_writes(reads, writes); @@ -3961,9 +1115,11 @@ for Module where add_db_reads_writes(1, 0); if active_era.is_none() { // this offence need not be re-submitted. - return consumed_weight + return consumed_weight; } - active_era.expect("value checked not to be `None`; qed").index + active_era + .expect("value checked not to be `None`; qed") + .index }; let active_era_start_session_index = Self::eras_start_session_index(active_era) .unwrap_or_else(|| { @@ -3979,11 +1135,16 @@ for Module where let slash_era = if slash_session >= active_era_start_session_index { active_era } else { - let eras = BondedEras::get(); + let eras = BondedEras::::get(); add_db_reads_writes(1, 0); // reverse because it's more likely to find reports from recent eras. - match eras.iter().rev().filter(|&&(_, ref sesh)| sesh <= &slash_session).next() { + match eras + .iter() + .rev() + .filter(|&&(_, ref sesh)| sesh <= &slash_session) + .next() + { Some(&(ref slash_era, _)) => *slash_era, // before bonding period. defensive - should be filtered out. None => return consumed_weight, @@ -4007,7 +1168,7 @@ for Module where // Skip if the validator is invulnerable. if invulnerables.contains(stash) { - continue + continue; } let unapplied = slashing::compute_slash::(slashing::SlashParams { @@ -4032,21 +1193,20 @@ for Module where unapplied.reporters = details.reporters.clone(); if slash_defer_duration == 0 { // apply right away. - slashing::apply_slash::(unapplied); + slashing::apply_slash::(unapplied, slash_era); { let slash_cost = (6, 5); let reward_cost = (2, 2); add_db_reads_writes( (1 + nominators_len) * slash_cost.0 + reward_cost.0 * reporters_len, - (1 + nominators_len) * slash_cost.1 + reward_cost.1 * reporters_len + (1 + nominators_len) * slash_cost.1 + reward_cost.1 * reporters_len, ); } } else { // defer to end of some `slash_defer_duration` from now. - ::UnappliedSlashes::mutate( - active_era, - move |for_later| for_later.push(unapplied), - ); + ::UnappliedSlashes::mutate(active_era, move |for_later| { + for_later.push(unapplied) + }); add_db_reads_writes(1, 1); } } else { @@ -4057,120 +1217,4 @@ for Module where consumed_weight } } - -/// Filter historical offences out and only allow those from the bonding period. -pub struct FilterHistoricalOffences { - _inner: sp_std::marker::PhantomData<(T, R)>, -} - -impl ReportOffence - for FilterHistoricalOffences, R> where - T: Config, - R: ReportOffence, - O: Offence, -{ - fn report_offence(reporters: Vec, offence: O) -> Result<(), OffenceError> { - // disallow any slashing from before the current bonding period. - let offence_session = offence.session_index(); - let bonded_eras = BondedEras::get(); - - if bonded_eras.first().filter(|(_, start)| offence_session >= *start).is_some() { - R::report_offence(reporters, offence) - } else { - >::deposit_event( - RawEvent::OldSlashingReportDiscarded(offence_session) - ); - Ok(()) - } - } - - fn is_known_offence(offenders: &[Offender], time_slot: &O::TimeSlot) -> bool { - R::is_known_offence(offenders, time_slot) - } -} - -#[allow(deprecated)] -impl frame_support::unsigned::ValidateUnsigned for Module { - type Call = Call; - fn validate_unsigned(source: TransactionSource, call: &Self::Call) -> TransactionValidity { - if let Call::submit_election_solution_unsigned { score, era, .. } = call { - use offchain_election::DEFAULT_LONGEVITY; - - // discard solution not coming from the local OCW. - match source { - TransactionSource::Local | TransactionSource::InBlock => { /* allowed */ } - _ => { - log!(debug, "rejecting unsigned transaction because it is not local/in-block."); - return InvalidTransaction::Call.into(); - } - } - - if let Err(error_with_post_info) = Self::pre_dispatch_checks(*score, *era) { - let invalid = to_invalid(error_with_post_info); - log!( - debug, - "💸 validate unsigned pre dispatch checks failed due to error #{:?}.", - invalid, - ); - return invalid.into(); - } - - log!(debug, "💸 validateUnsigned succeeded for a solution at era {}.", era); - - ValidTransaction::with_tag_prefix("StakingOffchain") - // The higher the score[0], the better a solution is. - .priority(T::UnsignedPriority::get().saturating_add(score.minimal_stake.saturated_into())) - // Defensive only. A single solution can exist in the pool per era. Each validator - // will run OCW at most once per era, hence there should never exist more than one - // transaction anyhow. - .and_provides(era) - // Note: this can be more accurate in the future. We do something like - // `era_end_block - current_block` but that is not needed now as we eagerly run - // offchain workers now and the above should be same as `T::ElectionLookahead` - // without the need to query more storage in the validation phase. If we randomize - // offchain worker, then we might re-consider this. - .longevity(TryInto::::try_into( - T::ElectionLookahead::get()).unwrap_or(DEFAULT_LONGEVITY) - ) - // We don't propagate this. This can never the validated at a remote node. - .propagate(false) - .build() - } else { - InvalidTransaction::Call.into() - } - } - - fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError> { - if let Call::submit_election_solution_unsigned { score, era, .. } = call { - // IMPORTANT NOTE: These checks are performed in the dispatch call itself, yet we need - // to duplicate them here to prevent a block producer from putting a previously - // validated, yet no longer valid solution on chain. - // OPTIMISATION NOTE: we could skip this in the `submit_election_solution_unsigned` - // since we already do it here. The signed version needs it though. Yer for now we keep - // this duplicate check here so both signed and unsigned can use a singular - // `check_and_replace_solution`. - Self::pre_dispatch_checks(*score, *era) - .map(|_| ()) - .map_err(to_invalid) - .map_err(Into::into) - } else { - Err(InvalidTransaction::Call.into()) - } - } -} - -/// Check that list is sorted and has no duplicates. -fn is_sorted_and_unique(list: &[u32]) -> bool { - list.windows(2).all(|w| w[0] < w[1]) -} - -/// convert a DispatchErrorWithPostInfo to a custom InvalidTransaction with the inner code being the -/// error number. -fn to_invalid(error_with_post_info: DispatchErrorWithPostInfo) -> InvalidTransaction { - let error = error_with_post_info.error; - let error_number = match error { - DispatchError::Module(ModuleError { error, .. }) => error[0], - _ => 0, - }; - InvalidTransaction::Custom(error_number) -} +// ----------------------------------------------------------------- diff --git a/pallets/staking/src/migration.rs b/pallets/staking/src/migration.rs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pallets/staking/src/offchain_election.rs b/pallets/staking/src/offchain_election.rs index 9b661d0bcb..e40b1e5d26 100644 --- a/pallets/staking/src/offchain_election.rs +++ b/pallets/staking/src/offchain_election.rs @@ -17,24 +17,26 @@ //! Helpers for offchain worker election. -use crate::_feps::NposSolution; -use crate::{ - Call, CompactAssignments, Config, ElectionSize, Module, NominatorIndex, Nominators, - OffchainAccuracy, ValidatorIndex, -}; use codec::Decode; -use frame_support::{traits::Get, weights::Weight, IterableStorageMap}; +use frame_support::traits::Get; +use frame_support::weights::Weight; use frame_system::offchain::SubmitTransaction; use sp_npos_elections::{ reduce, to_supports, Assignment, ElectionResult, ElectionScore, EvaluateSupport, ExtendedBalance, }; -use sp_runtime::{ - offchain::storage::{MutateStorageError, StorageValueRef}, - traits::TrailingZeroInput, - RuntimeDebug, +use sp_runtime::offchain::storage::{MutateStorageError, StorageValueRef}; +use sp_runtime::traits::TrailingZeroInput; +use sp_runtime::RuntimeDebug; +use sp_std::convert::TryInto; +use sp_std::prelude::*; + +use crate::_feps::NposSolution; +use crate::types::ElectionSize; +use crate::{ + Call, CompactAssignments, Config, NominatorIndex, Nominators, OffchainAccuracy, Pallet, + ValidatorIndex, }; -use sp_std::{convert::TryInto, prelude::*}; /// Error types related to the offchain election machinery. #[derive(RuntimeDebug)] @@ -107,7 +109,7 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElect let ElectionResult { winners, assignments, - } = >::do_phragmen::(iters) + } = >::do_phragmen::(iters) .ok_or(OffchainElectionError::ElectionFailed)?; // process and prepare it for submission. @@ -126,7 +128,7 @@ pub(crate) fn compute_offchain_election() -> Result<(), OffchainElect ); // defensive-only: current era can never be none except genesis. - let era = >::current_era().unwrap_or_default(); + let era = >::current_era().unwrap_or_default(); // send it. let call = Call::submit_election_solution_unsigned { @@ -182,7 +184,8 @@ pub fn maximum_compact_len( size.nominators.into(), voters, winners_len, - ).ref_time() + ) + .ref_time() }; let next_voters = |current_weight: u64, voters: u32, step: u32| -> Result { @@ -267,7 +270,7 @@ where { Some(to_remove) if to_remove > 0 => { // grab all voters and sort them by least stake. - let balance_of = >::slashable_balance_of_fn(); + let balance_of = >::weight_of_fn(); let mut voters_sorted = >::iter() .map(|(who, _)| (who.clone(), balance_of(&who))) .collect::>(); @@ -333,9 +336,9 @@ pub fn prepare_submission( > { // make sure that the snapshot is available. let snapshot_validators = - >::snapshot_validators().ok_or(OffchainElectionError::SnapshotUnavailable)?; + >::snapshot_validators().ok_or(OffchainElectionError::SnapshotUnavailable)?; let snapshot_nominators = - >::snapshot_nominators().ok_or(OffchainElectionError::SnapshotUnavailable)?; + >::snapshot_nominators().ok_or(OffchainElectionError::SnapshotUnavailable)?; // all helper closures that we'd ever need. let nominator_index = |a: &T::AccountId| -> Option { @@ -368,10 +371,8 @@ pub fn prepare_submission( let winners = winners.into_iter().map(|(who, _)| who).collect::>(); // convert into absolute value and to obtain the reduced version. - let mut staked = sp_npos_elections::assignment_ratio_to_staked( - assignments, - >::slashable_balance_of_fn(), - ); + let mut staked = + sp_npos_elections::assignment_ratio_to_staked(assignments, >::weight_of_fn()); // reduce if do_reduce { @@ -420,7 +421,7 @@ pub fn prepare_submission( let assignments = compact.into_assignment(nominator_at, validator_at).unwrap(); let staked = sp_npos_elections::assignment_ratio_to_staked( assignments.clone(), - >::slashable_balance_of_fn(), + >::weight_of_fn(), ); let support_map = to_supports::(&staked); @@ -447,7 +448,7 @@ pub fn prepare_submission( mod test { #![allow(unused_variables)] use super::*; - use crate::ElectionSize; + use crate::types::ElectionSize; struct Staking; diff --git a/pallets/staking/src/pallet/impls.rs b/pallets/staking/src/pallet/impls.rs new file mode 100644 index 0000000000..8642dfba60 --- /dev/null +++ b/pallets/staking/src/pallet/impls.rs @@ -0,0 +1,1417 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Implementations for the Staking FRAME Pallet. + +use frame_election_provider_support::VoteWeight; +use frame_support::{ + dispatch::WithPostDispatchInfo, + pallet_prelude::*, + traits::{ + Currency, CurrencyToVote, Get, Imbalance, LockableCurrency, OnUnbalanced, UnixTime, + WithdrawReasons, + }, + weights::Weight, +}; +use frame_system::RawOrigin; + +use sp_runtime::{ + traits::{SaturatedConversion, Saturating, Zero}, + Perbill, +}; +use sp_staking::SessionIndex; +use sp_std::prelude::*; + +use crate::{ + log, slashing, weights::WeightInfo, ActiveEraInfo, BalanceOf, EraIndex, Exposure, Forcing, + IndividualExposure, Nominations, PositiveImbalanceOf, RewardDestination, SessionInterface, + StakingLedger, ValidatorPrefs, STAKING_ID, +}; + +use super::pallet::*; + +use sp_npos_elections::{ + to_support_map, Assignment, ElectionScore, EvaluateSupport, SupportMap, Supports, +}; + +use polymesh_common_utilities::Context; +use polymesh_primitives::IdentityId; + +use crate::_feps::NposSolution; +use crate::types::{ElectionCompute, ElectionResult, ElectionSize, ElectionStatus}; +use crate::{ + ChainAccuracy, CompactAssignments, NominatorIndex, OffchainAccuracy, UnlockChunk, + ValidatorIndex, MAX_NOMINATORS, MAX_VALIDATORS, +}; + +use frame_support::dispatch::{DispatchErrorWithPostInfo, PostDispatchInfo}; +use frame_support::traits::schedule::{Anon, DispatchTime, HIGHEST_PRIORITY}; +use sp_npos_elections::{ + seq_phragmen, BalancingConfig, ElectionResult as PrimitiveElectionResult, PerThing128, +}; +use sp_runtime::ModuleError; + +type Identity = pallet_identity::Module; + +impl Pallet { + /// The total balance that can be slashed from a stash account as of right now. + pub fn slashable_balance_of(stash: &T::AccountId) -> BalanceOf { + // Weight note: consider making the stake accessible through stash. + Self::bonded(stash) + .and_then(Self::ledger) + .map(|l| l.active) + .unwrap_or_default() + } + + /// Internal impl of [`Self::slashable_balance_of`] that returns [`VoteWeight`]. + pub fn slashable_balance_of_vote_weight( + stash: &T::AccountId, + issuance: BalanceOf, + ) -> VoteWeight { + T::CurrencyToVote::to_vote(Self::slashable_balance_of(stash), issuance) + } + + /// Returns a closure around `slashable_balance_of_vote_weight` that can be passed around. + /// + /// This prevents call sites from repeatedly requesting `total_issuance` from backend. But it is + /// important to be only used while the total issuance is not changing. + pub fn weight_of_fn() -> Box VoteWeight> { + // NOTE: changing this to unboxed `impl Fn(..)` return type and the pallet will still + // compile, while some types in mock fail to resolve. + let issuance = T::Currency::total_issuance(); + Box::new(move |who: &T::AccountId| -> VoteWeight { + Self::slashable_balance_of_vote_weight(who, issuance) + }) + } + + pub(super) fn do_withdraw_unbonded( + controller: &T::AccountId, + num_slashing_spans: u32, + ) -> Result { + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let (stash, old_total) = (ledger.stash.clone(), ledger.total); + if let Some(current_era) = Self::current_era() { + ledger = ledger.consolidate_unlocked(current_era) + } + + let used_weight = + if ledger.unlocking.is_empty() && ledger.active <= T::Currency::minimum_balance() { + // This account must have called `unbond()` with some value that caused the active + // portion to fall below existential deposit + will have no more unlocking chunks + // left. We can now safely remove all staking-related information. + Self::kill_stash(&stash, num_slashing_spans)?; + // Remove the lock. + T::Currency::remove_lock(STAKING_ID, &stash); + // This is worst case scenario, so we use the full weight and return None + None + } else { + // This was the consequence of a partial unbond. just update the ledger and move on. + Self::update_ledger(&controller, &ledger); + + // This is only an update, so we use less overall weight. + Some(::WeightInfo::withdraw_unbonded_update( + num_slashing_spans, + )) + }; + + // `old_total` should never be less than the new total because + // `consolidate_unlocked` strictly subtracts balance. + if ledger.total < old_total { + // Already checked that this won't overflow by entry condition. + let value = old_total - ledger.total; + Self::deposit_event(Event::::Withdrawn(stash, value)); + } + + Ok(used_weight.into()) + } + + pub(super) fn do_payout_stakers( + validator_stash: T::AccountId, + era: EraIndex, + ) -> DispatchResult { + // Validate input data + let current_era = CurrentEra::::get().ok_or(Error::::InvalidEraToReward)?; + let history_depth = Self::history_depth(); + ensure!( + era <= current_era && era >= current_era.saturating_sub(history_depth), + Error::::InvalidEraToReward + ); + + // Note: if era has no reward to be claimed, era may be future. better not to update + // `ledger.claimed_rewards` in this case. + let era_payout = + >::get(&era).ok_or(Error::::InvalidEraToReward)?; + + let controller = Self::bonded(&validator_stash).ok_or(Error::::NotStash)?; + let mut ledger = >::get(&controller).ok_or(Error::::NotController)?; + + ledger + .claimed_rewards + .retain(|&x| x >= current_era.saturating_sub(history_depth)); + + match ledger.claimed_rewards.binary_search(&era) { + Ok(_) => return Err(Error::::AlreadyClaimed.into()), + Err(pos) => ledger.claimed_rewards.insert(pos, era), + } + + let exposure = >::get(&era, &ledger.stash); + + // Input data seems good, no errors allowed after this point + + >::insert(&controller, &ledger); + + // Get Era reward points. It has TOTAL and INDIVIDUAL + // Find the fraction of the era reward that belongs to the validator + // Take that fraction of the eras rewards to split to nominator and validator + // + // Then look at the validator, figure out the proportion of their reward + // which goes to them and each of their nominators. + + let era_reward_points = >::get(&era); + let total_reward_points = era_reward_points.total; + let validator_reward_points = era_reward_points + .individual + .get(&ledger.stash) + .copied() + .unwrap_or_else(Zero::zero); + + // Nothing to do if they have no reward points. + if validator_reward_points.is_zero() { + return Ok(()); + } + + // This is the fraction of the total reward that the validator and the + // nominators will get. + let validator_total_reward_part = + Perbill::from_rational(validator_reward_points, total_reward_points); + + // This is how much validator + nominators are entitled to. + let validator_total_payout = validator_total_reward_part * era_payout; + + let validator_prefs = Self::eras_validator_prefs(&era, &validator_stash); + // Validator first gets a cut off the top. + let validator_commission = validator_prefs.commission; + let validator_commission_payout = validator_commission * validator_total_payout; + + let validator_leftover_payout = validator_total_payout - validator_commission_payout; + // Now let's calculate how this is split to the validator. + let validator_exposure_part = Perbill::from_rational(exposure.own, exposure.total); + let validator_staking_payout = validator_exposure_part * validator_leftover_payout; + + let mut total_imbalance = PositiveImbalanceOf::::zero(); + // We can now make total validator payout: + if let Some(imbalance) = Self::make_payout( + &ledger.stash, + validator_staking_payout + validator_commission_payout, + ) { + // Polymesh change: Provide DID of stash account. + // ----------------------------------------------------------------- + let did = >::get_identity(&ledger.stash).unwrap_or_default(); + Self::deposit_event(Event::::Reward(did, ledger.stash, imbalance.peek())); + // ----------------------------------------------------------------- + total_imbalance.subsume(imbalance); + } + + // Track the number of payout ops to nominators. Note: + // `WeightInfo::payout_stakers_alive_staked` always assumes at least a validator is paid + // out, so we do not need to count their payout op. + //let mut nominator_payout_count: u32 = 0; + + // Lets now calculate how this is split to the nominators. + // Reward only the clipped exposures. Note this is not necessarily sorted. + for nominator in exposure.others.iter() { + let nominator_exposure_part = Perbill::from_rational(nominator.value, exposure.total); + + let nominator_reward: BalanceOf = + nominator_exposure_part * validator_leftover_payout; + // We can now make nominator payout: + if let Some(imbalance) = Self::make_payout(&nominator.who, nominator_reward) { + // Note: this logic does not count payouts for `RewardDestination::None`. + //nominator_payout_count += 1; + // Polymesh change: Provide DID of nominator account. + // ------------------------------------------------------------- + let did = >::get_identity(&nominator.who).unwrap_or_default(); + Self::deposit_event(Event::::Reward( + did, + nominator.who.clone(), + imbalance.peek(), + )); + // ------------------------------------------------------------- + total_imbalance.subsume(imbalance); + } + } + + Ok(()) + } + + /// Update the ledger for a controller. + /// + /// This will also update the stash lock. + pub(crate) fn update_ledger(controller: &T::AccountId, ledger: &StakingLedger) { + T::Currency::set_lock( + STAKING_ID, + &ledger.stash, + ledger.total, + WithdrawReasons::all(), + ); + >::insert(controller, ledger); + } + + /// Chill a stash account. + pub(crate) fn chill_stash(stash: &T::AccountId) { + // Polymesh Change: Decrement the running count by 1 + // ----------------------------------------------------------------- + Self::release_running_validator(stash); + // ----------------------------------------------------------------- + Self::do_remove_validator(stash); + Self::do_remove_nominator(stash); + } + + /// Actually make a payment to a staker. This uses the currency's reward function + /// to pay the right payee for the given staker account. + fn make_payout(stash: &T::AccountId, amount: BalanceOf) -> Option> { + let dest = Self::payee(stash); + match dest { + RewardDestination::Controller => Self::bonded(stash) + .map(|controller| T::Currency::deposit_creating(&controller, amount)), + RewardDestination::Stash => T::Currency::deposit_into_existing(stash, amount).ok(), + RewardDestination::Staked => Self::bonded(stash) + .and_then(|c| Self::ledger(&c).map(|l| (c, l))) + .and_then(|(controller, mut l)| { + l.active += amount; + l.total += amount; + let r = T::Currency::deposit_into_existing(stash, amount).ok(); + Self::update_ledger(&controller, &l); + r + }), + RewardDestination::Account(dest_account) => { + Some(T::Currency::deposit_creating(&dest_account, amount)) + } + } + } + + /// Plan a new session potentially trigger a new era. + pub(crate) fn new_session(session_index: SessionIndex) -> Option> { + if let Some(current_era) = Self::current_era() { + // Initial era has been set. + let current_era_start_session_index = Self::eras_start_session_index(current_era) + .unwrap_or_else(|| { + frame_support::print("Error: start_session_index must be set for current_era"); + 0 + }); + + let era_length = session_index.saturating_sub(current_era_start_session_index); // Must never happen. + + match ForceEra::::get() { + // Will be set to `NotForcing` again if a new era has been triggered. + Forcing::ForceNew => ForceEra::::kill(), + // Short circuit to `try_trigger_new_era`. + Forcing::ForceAlways => (), + // Only go to `try_trigger_new_era` if deadline reached. + Forcing::NotForcing if era_length >= T::SessionsPerEra::get() => (), + _ => { + // Either `Forcing::ForceNone`, or `Forcing::NotForcing + // if era_length >= T::SessionsPerEra::get()`. Either `ForceNone`, or + // `NotForcing && era_length < T::SessionsPerEra::get()`. + if era_length + 1 == T::SessionsPerEra::get() { + IsCurrentSessionFinal::::put(true); + } else if era_length >= T::SessionsPerEra::get() { + // Should only happen when we are ready to trigger an era but we have ForceNone, + // otherwise previous arm would short circuit. + Self::close_election_window(); + } + return None; + } + } + + // new era. + Self::new_era(session_index) + } else { + // Set initial era + Self::new_era(session_index) + } + } + + /// Start a session potentially starting an era. + pub(crate) fn start_session(start_session: SessionIndex) { + let next_active_era = Self::active_era().map(|e| e.index + 1).unwrap_or(0); + // This is only `Some` when current era has already progressed to the next era, while the + // active era is one behind (i.e. in the *last session of the active era*, or *first session + // of the new current era*, depending on how you look at it). + if let Some(next_active_era_start_session_index) = + Self::eras_start_session_index(next_active_era) + { + if next_active_era_start_session_index == start_session { + Self::start_era(start_session); + } else if next_active_era_start_session_index < start_session { + // This arm should never happen, but better handle it than to stall the staking + // pallet. + frame_support::print("Warning: A session appears to have been skipped."); + Self::start_era(start_session); + } + } + + // disable all offending validators that have been disabled for the whole era + for (index, disabled) in >::get() { + if disabled { + T::SessionInterface::disable_validator(index); + } + } + } + + /// End a session potentially ending an era. + pub(crate) fn end_session(session_index: SessionIndex) { + if let Some(active_era) = Self::active_era() { + if let Some(next_active_era_start_session_index) = + Self::eras_start_session_index(active_era.index + 1) + { + if next_active_era_start_session_index == session_index + 1 { + Self::end_era(active_era, session_index); + } + } + } + } + + /// Start a new era. It does: + /// + /// * Increment `active_era.index`, + /// * reset `active_era.start`, + /// * update `BondedEras` and apply slashes. + fn start_era(start_session: SessionIndex) { + let active_era = ActiveEra::::mutate(|active_era| { + let new_index = active_era.as_ref().map(|info| info.index + 1).unwrap_or(0); + *active_era = Some(ActiveEraInfo { + index: new_index, + // Set new active era start in next `on_finalize`. To guarantee usage of `Time` + start: None, + }); + new_index + }); + + let bonding_duration = T::BondingDuration::get(); + + BondedEras::::mutate(|bonded| { + bonded.push((active_era, start_session)); + + if active_era > bonding_duration { + let first_kept = active_era - bonding_duration; + + // Prune out everything that's from before the first-kept index. + let n_to_prune = bonded + .iter() + .take_while(|&&(era_idx, _)| era_idx < first_kept) + .count(); + + // Kill slashing metadata. + for (pruned_era, _) in bonded.drain(..n_to_prune) { + slashing::clear_era_metadata::(pruned_era); + } + + if let Some(&(_, first_session)) = bonded.first() { + T::SessionInterface::prune_historical_up_to(first_session); + } + } + }); + + Self::apply_unapplied_slashes(active_era); + } + + /// Compute payout for era. + fn end_era(active_era: ActiveEraInfo, _session_index: SessionIndex) { + // Note: active_era_start can be None if end era is called during genesis config. + if let Some(active_era_start) = active_era.start { + let now_as_millis_u64 = T::UnixTime::now().as_millis().saturated_into::(); + + let era_duration = now_as_millis_u64 - active_era_start; + let (validator_payout, max_payout) = crate::inflation::compute_total_payout( + &T::RewardCurve::get(), + Self::eras_total_stake(&active_era.index), + T::Currency::total_issuance(), + // Duration of era; more than u64::MAX is rewarded as u64::MAX. + era_duration.saturated_into::(), + T::MaxVariableInflationTotalIssuance::get(), + T::FixedYearlyReward::get(), + ); + let rest = max_payout.saturating_sub(validator_payout); + + // Schedule Rewards for the validators + let next_block_no = >::block_number() + 1u32.into(); + for (index, validator_id) in T::SessionInterface::validators().into_iter().enumerate() { + let schedule_block_no = next_block_no + index.saturated_into::(); + match T::RewardScheduler::schedule( + DispatchTime::At(schedule_block_no), + None, + HIGHEST_PRIORITY, + RawOrigin::Root.into(), + Call::::payout_stakers_by_system { + validator_stash: validator_id.clone(), + era: active_era.index, + }.into() + ) { + Ok(_) => log!( + info, + "💸 Rewards are successfully scheduled for validator id: {:?} at block number: {:?}", + &validator_id, + schedule_block_no, + ), + Err(e) => { + log!( + error, + "â›” Detected error in scheduling the reward payment: {:?}", + e + ); + Self::deposit_event(Event::::RewardPaymentSchedulingInterrupted( + validator_id, + active_era.index, + e + )); + } + } + } + + Self::deposit_event(Event::::EraPayout( + active_era.index, + validator_payout, + rest, + )); + + // Set ending era reward. + >::insert(&active_era.index, validator_payout); + T::RewardRemainder::on_unbalanced(T::Currency::issue(rest)); + + // Clear offending validators. + OffendingValidators::::kill(); + } + } + + /// Consume a set of [`BoundedSupports`] from [`sp_npos_elections`] and collect them into a + /// [`Exposure`]. + pub(crate) fn collect_exposures( + supports: SupportMap, + ) -> Vec<(T::AccountId, Exposure>)> { + let total_issuance = T::Currency::total_issuance(); + let to_currency = |e: frame_election_provider_support::ExtendedBalance| { + T::CurrencyToVote::to_currency(e, total_issuance) + }; + + supports + .into_iter() + .map(|(validator, support)| { + // Build `struct exposure` from `support`. + let mut others = Vec::with_capacity(support.voters.len()); + let mut own: BalanceOf = Zero::zero(); + let mut total: BalanceOf = Zero::zero(); + support + .voters + .into_iter() + .map(|(nominator, weight)| (nominator, to_currency(weight))) + .for_each(|(nominator, stake)| { + if nominator == validator { + own = own.saturating_add(stake); + } else { + others.push(IndividualExposure { + who: nominator, + value: stake, + }); + } + total = total.saturating_add(stake); + }); + + let exposure = Exposure { own, others, total }; + (validator, exposure) + }) + .collect() + } + + /// Remove all associated data of a stash account from the staking system. + /// + /// Assumes storage is upgraded before calling. + /// + /// This is called: + /// - after a `withdraw_unbonded()` call that frees all of a stash's bonded balance. + /// - through `reap_stash()` if the balance has fallen to zero (through slashing). + pub fn kill_stash(stash: &T::AccountId, num_slashing_spans: u32) -> DispatchResult { + let controller = >::get(stash).ok_or(Error::::NotStash)?; + + slashing::clear_stash_metadata::(stash, num_slashing_spans)?; + + >::remove(stash); + >::remove(&controller); + + >::remove(stash); + Self::do_remove_validator(stash); + Self::do_remove_nominator(stash); + + frame_system::Pallet::::dec_consumers(stash); + + Ok(()) + } + + /// Clear all era information for given era. + pub(crate) fn clear_era_information(era_index: EraIndex) { + #[allow(deprecated)] + >::remove_prefix(era_index, None); + #[allow(deprecated)] + >::remove_prefix(era_index, None); + #[allow(deprecated)] + >::remove_prefix(era_index, None); + >::remove(era_index); + >::remove(era_index); + >::remove(era_index); + ErasStartSessionIndex::::remove(era_index); + } + + fn apply_unapplied_slashes(active_era: EraIndex) { + let slash_defer_duration = T::SlashDeferDuration::get(); + ::EarliestUnappliedSlash::mutate(|earliest| { + if let Some(ref mut earliest) = earliest { + let keep_from = active_era.saturating_sub(slash_defer_duration); + for era in (*earliest)..keep_from { + let era_slashes = ::UnappliedSlashes::take(&era); + for slash in era_slashes { + slashing::apply_slash::(slash, era); + } + } + + *earliest = (*earliest).max(keep_from) + } + }) + } + + /// Add reward points to validators using their stash account ID. + /// + /// Validators are keyed by stash account ID and must be in the current elected set. + /// + /// For each element in the iterator the given number of points in u32 is added to the + /// validator, thus duplicates are handled. + /// + /// At the end of the era each the total payout will be distributed among validator + /// relatively to their points. + /// + /// COMPLEXITY: Complexity is `number_of_validator_to_reward x current_elected_len`. + pub fn reward_by_ids(validators_points: impl IntoIterator) { + if let Some(active_era) = Self::active_era() { + >::mutate(active_era.index, |era_rewards| { + for (validator, points) in validators_points.into_iter() { + *era_rewards.individual.entry(validator).or_default() += points; + era_rewards.total += points; + } + }); + } + } + + /// Helper to set a new `ForceEra` mode. + pub(crate) fn set_force_era(mode: Forcing) { + log!(info, "Setting force era mode {:?}.", mode); + ForceEra::::put(mode); + } + + /// Ensures that at the end of the current session there will be a new era. + pub(crate) fn ensure_new_era() { + match ForceEra::::get() { + Forcing::ForceAlways | Forcing::ForceNew => (), + _ => Self::set_force_era(Forcing::ForceNew), + } + } + + /// This function will add a nominator to the `Nominators` storage map, + /// and `VoterList`. + /// + /// If the nominator already exists, their nominations will be updated. + /// + /// NOTE: you must ALWAYS use this function to add nominator or update their targets. Any access + /// to `Nominators` or `VoterList` outside of this function is almost certainly + /// wrong. + pub fn do_add_nominator(who: &T::AccountId, nominations: Nominations) { + Nominators::::insert(who, nominations); + } + + /// This function will remove a nominator from the `Nominators` storage map, + /// and `VoterList`. + /// + /// Returns true if `who` was removed from `Nominators`, otherwise false. + /// + /// NOTE: you must ALWAYS use this function to remove a nominator from the system. Any access to + /// `Nominators` or `VoterList` outside of this function is almost certainly + /// wrong. + pub fn do_remove_nominator(who: &T::AccountId) -> bool { + if Nominators::::contains_key(who) { + Nominators::::remove(who); + true + } else { + false + } + } + + /// This function will add a validator to the `Validators` storage map. + /// + /// If the validator already exists, their preferences will be updated. + /// + /// NOTE: you must ALWAYS use this function to add a validator to the system. Any access to + /// `Validators` or `VoterList` outside of this function is almost certainly + /// wrong. + pub fn do_add_validator(who: &T::AccountId, prefs: ValidatorPrefs) { + Validators::::insert(who, prefs); + } + + /// This function will remove a validator from the `Validators` storage map. + /// + /// Returns true if `who` was removed from `Validators`, otherwise false. + /// + /// NOTE: you must ALWAYS use this function to remove a validator from the system. Any access to + /// `Validators` or `VoterList` outside of this function is almost certainly + /// wrong. + pub fn do_remove_validator(who: &T::AccountId) -> bool { + if Validators::::contains_key(who) { + Validators::::remove(who); + true + } else { + false + } + } + + // Polymesh Change: Functions + // ----------------------------------------------------------------- + /// Returns the allowed validator count. + pub(crate) fn get_allowed_validator_count() -> u32 { + (T::MaxValidatorPerIdentity::get() * Self::validator_count()).max(1) + } + + /// Decrease the running count of validators by 1 for the stash identity. + pub(crate) fn release_running_validator(stash: &T::AccountId) { + if !>::contains_key(stash) { + return; + } + + if let Some(id) = >::get_identity(stash) { + PermissionedIdentity::::mutate(&id, |pref| { + if let Some(p) = pref { + if p.running_count > 0 { + p.running_count -= 1; + >::remove_account_key_ref_count(&stash); + } + } + }); + } + } + + /// Basic and cheap checks that we perform in validate unsigned, and in the execution. + /// + /// State reads: ElectionState, CurrentEr, QueuedScore. + /// + /// This function does weight refund in case of errors, which is based upon the fact that it is + /// called at the very beginning of the call site's function. + pub fn pre_dispatch_checks(score: ElectionScore, era: EraIndex) -> DispatchResultWithPostInfo { + // discard solutions that are not in-time + // check window open + ensure!( + Self::era_election_status().is_open(), + Error::::OffchainElectionEarlySubmission.with_weight(T::DbWeight::get().reads(1)), + ); + + // check current era. + if let Some(current_era) = Self::current_era() { + ensure!( + current_era == era, + Error::::OffchainElectionEarlySubmission + .with_weight(T::DbWeight::get().reads(2)), + ) + } + + // assume the given score is valid. Is it better than what we have on-chain, if we have any? + if let Some(queued_score) = Self::queued_score() { + ensure!( + score.strict_threshold_better(queued_score, T::MinSolutionScoreBump::get()), + Error::::OffchainElectionWeakSubmission.with_weight(T::DbWeight::get().reads(3)), + ) + } + + Ok(None::.into()) + } + + /// Checks a given solution and if correct and improved, writes it on chain as the queued result + /// of the next round. This may be called by both a signed and an unsigned transaction. + pub(crate) fn check_and_replace_solution( + winners: Vec, + compact_assignments: CompactAssignments, + compute: ElectionCompute, + claimed_score: ElectionScore, + era: EraIndex, + election_size: ElectionSize, + ) -> DispatchResultWithPostInfo { + // Do the basic checks. era, claimed score and window open. + let _ = Self::pre_dispatch_checks(claimed_score, era)?; + + // before we read any further state, we check that the unique targets in compact is same as + // compact. is a all in-memory check and easy to do. Moreover, it ensures that the solution + // is not full of bogus edges that can cause lots of reads to SlashingSpans. Thus, we can + // assume that the storage access of this function is always O(|winners|), not + // O(|compact.edge_count()|). + ensure!( + compact_assignments.unique_targets().len() == winners.len(), + Error::::OffchainElectionBogusWinnerCount, + ); + + // Check that the number of presented winners is sane. Most often we have more candidates + // than we need. Then it should be `Self::validator_count()`. Else it should be all the + // candidates. + let snapshot_validators_length = >::decode_len() + .map(|l| l as u32) + .ok_or_else(|| Error::::SnapshotUnavailable)?; + + // size of the solution must be correct. + ensure!( + snapshot_validators_length == u32::from(election_size.validators), + Error::::OffchainElectionBogusElectionSize, + ); + + // check the winner length only here and when we know the length of the snapshot validators + // length. + let desired_winners = Self::validator_count().min(snapshot_validators_length); + ensure!( + winners.len() as u32 == desired_winners, + Error::::OffchainElectionBogusWinnerCount + ); + + let snapshot_nominators_len = >::decode_len() + .map(|l| l as u32) + .ok_or_else(|| Error::::SnapshotUnavailable)?; + + // rest of the size of the solution must be correct. + ensure!( + snapshot_nominators_len == election_size.nominators, + Error::::OffchainElectionBogusElectionSize, + ); + + // decode snapshot validators. + let snapshot_validators = + Self::snapshot_validators().ok_or(Error::::SnapshotUnavailable)?; + + // check if all winners were legit; this is rather cheap. Replace with accountId. + let winners = winners + .into_iter() + .map(|widx| { + // NOTE: at the moment, since staking is explicitly blocking any offence until election + // is closed, we don't check here if the account id at `snapshot_validators[widx]` is + // actually a validator. If this ever changes, this loop needs to also check this. + snapshot_validators + .get(widx as usize) + .cloned() + .ok_or(Error::::OffchainElectionBogusWinner) + }) + .collect::, Error>>()?; + + // decode the rest of the snapshot. + let snapshot_nominators = + Self::snapshot_nominators().ok_or(Error::::SnapshotUnavailable)?; + + // helpers + let nominator_at = |i: NominatorIndex| -> Option { + snapshot_nominators.get(i as usize).cloned() + }; + let validator_at = |i: ValidatorIndex| -> Option { + snapshot_validators.get(i as usize).cloned() + }; + + // un-compact. + let assignments = compact_assignments + .into_assignment(nominator_at, validator_at) + .map_err(|e| { + // log the error since it is not propagated into the runtime error. + log!(warn, "💸 un-compacting solution failed due to {:?}", e); + Error::::OffchainElectionBogusCompact + })?; + + // check all nominators actually including the claimed vote. Also check correct self votes. + // Note that we assume all validators and nominators in `assignments` are properly bonded, + // because they are coming from the snapshot via a given index. + for Assignment { who, distribution } in assignments.iter() { + let is_validator = >::contains_key(&who); + let maybe_nomination = Self::nominators(&who); + + if !(maybe_nomination.is_some() ^ is_validator) { + // all of the indices must map to either a validator or a nominator. If this is ever + // not the case, then the locking system of staking is most likely faulty, or we + // have bigger problems. + log!( + error, + "💸 detected an error in the staking locking and snapshot." + ); + // abort. + return Err(Error::::OffchainElectionBogusNominator.into()); + } + + if !is_validator { + // a normal vote + let nomination = maybe_nomination.expect( + "exactly one of `maybe_validator` and `maybe_nomination.is_some` is true. \ + is_validator is false; maybe_nomination is some; qed", + ); + + // NOTE: we don't really have to check here if the sum of all edges are the + // nominator correct. Un-compacting assures this by definition. + + for (t, _) in distribution { + // each target in the provided distribution must be actually nominated by the + // nominator after the last non-zero slash. + if nomination.targets.iter().find(|&tt| tt == t).is_none() { + return Err(Error::::OffchainElectionBogusNomination.into()); + } + + if ::SlashingSpans::get(&t).map_or(false, |spans| { + nomination.submitted_in < spans.last_nonzero_slash() + }) { + return Err(Error::::OffchainElectionSlashedNomination.into()); + } + } + } else { + // a self vote + ensure!( + distribution.len() == 1, + Error::::OffchainElectionBogusSelfVote + ); + ensure!( + distribution[0].0 == *who, + Error::::OffchainElectionBogusSelfVote + ); + // defensive only. A compact assignment of length one does NOT encode the weight and + // it is always created to be 100%. + ensure!( + distribution[0].1 == OffchainAccuracy::one(), + Error::::OffchainElectionBogusSelfVote, + ); + } + } + + // convert into staked assignments. + let staked_assignments = + sp_npos_elections::assignment_ratio_to_staked(assignments, Self::weight_of_fn()); + + // build the support map thereof in order to evaluate. + let supports_map = to_support_map::(&staked_assignments); + let supports = supports_map + .clone() + .into_iter() + .collect::>(); + + // Check if the score is the same as the claimed one. + let submitted_score = (&supports).evaluate(); + ensure!( + submitted_score == claimed_score, + Error::::OffchainElectionBogusScore + ); + + // At last, alles Ok. Exposures and store the result. + let exposures = Self::collect_exposures(supports_map); + log!( + info, + "💸 A better solution (with compute {:?} and score {:?}) has been validated and stored on chain.", + compute, + submitted_score, + ); + + // write new results. + >::put(ElectionResult { + elected_stashes: winners, + compute, + exposures, + }); + QueuedScore::::put(submitted_score); + + // emit event. + Self::deposit_event(Event::::SolutionStored(compute)); + + Ok(None::.into()) + } + + /// Execute phragmen election and return the new results. No post-processing is applied and the + /// raw edge weights are returned. + /// + /// Self votes are added and nominations before the most recent slashing span are ignored. + /// + /// No storage item is updated. + pub fn do_phragmen( + iterations: usize, + ) -> Option> { + let weight_of = Self::weight_of_fn(); + let mut all_nominators: Vec<(T::AccountId, VoteWeight, Vec)> = Vec::new(); + let mut all_validators = Vec::new(); + for (validator, _) in >::iter() + // Polymesh-Note: Ensure that validator is CDDed + has enough bonded. + // ----------------------------------------------------------------- + .filter(|(v, _)| { + Self::is_active_balance_above_min_bond(&v) && Self::is_validator_compliant(&v) + }) + // ----------------------------------------------------------------- + { + // append self vote + let self_vote = ( + validator.clone(), + weight_of(&validator), + vec![validator.clone()], + ); + all_nominators.push(self_vote); + all_validators.push(validator); + } + + let nominator_votes = >::iter() + // Polymesh-Note: Ensure that nominator is CDDed. + // ----------------------------------------------------------------- + .filter(|(nominator, _)| Self::is_nominator_compliant(&nominator)) + // ----------------------------------------------------------------- + .map(|(nominator, nominations)| { + let Nominations { + submitted_in, + mut targets, + suppressed: _, + } = nominations; + + // Filter out nomination targets which were nominated before the most recent + // slashing span. + targets.retain(|stash| { + ::SlashingSpans::get(&stash) + .map_or(true, |spans| submitted_in >= spans.last_nonzero_slash()) + }); + + (nominator, targets.to_vec()) + }); + all_nominators.extend(nominator_votes.map(|(n, ns)| { + let s = weight_of(&n); + (n, s, ns) + })); + + if all_validators.len() < Self::minimum_validator_count().max(1) as usize { + // If we don't have enough candidates, nothing to do. + log!( + warn, + "💸 Chain does not have enough staking candidates to operate. Era {:?}.", + Self::current_era() + ); + None + } else { + seq_phragmen( + Self::validator_count() as usize, + all_validators, + all_nominators, + Some(BalancingConfig { + iterations, + tolerance: 0, + }), // exactly run `iterations` rounds. + ) + .map_err(|err| log!(error, "Call to seq-phragmen failed due to {:?}", err)) + .ok() + } + } + + /// Checks if active balance is above min bond requirement + pub fn is_active_balance_above_min_bond(who: &T::AccountId) -> bool { + if let Some(controller) = Self::bonded(&who) { + if let Some(ledger) = Self::ledger(&controller) { + return ledger.active >= >::get(); + } + } + false + } + + /// Is nominator's `stash` account compliant? + pub fn is_nominator_compliant(stash: &T::AccountId) -> bool { + >::get_identity(&stash).map_or(false, >::has_valid_cdd) + } + + /// Is validator's `stash` account compliant? + pub fn is_validator_compliant(stash: &T::AccountId) -> bool { + >::get_identity(&stash).map_or(false, |id| { + >::has_valid_cdd(id) && Self::permissioned_identity(id).is_some() + }) + } + + pub(crate) fn unbond_balance( + controller: T::AccountId, + ledger: &mut StakingLedger, + value: BalanceOf, + ) -> DispatchResult { + let mut value = value.min(ledger.active); + + if !value.is_zero() { + ledger.active -= value; + + // Avoid there being a dust balance left in the staking system. + if ledger.active < T::Currency::minimum_balance() { + value += ledger.active; + ledger.active = Zero::zero(); + } + + // Note: in case there is no current era it is fine to bond one era more. + let era = Self::current_era().unwrap_or(0) + T::BondingDuration::get(); + ledger.unlocking.push(UnlockChunk { value, era }); + // NOTE: ledger must be updated prior to calling `Self::weight_of`. + Self::update_ledger(&controller, &ledger); + + let did = Context::current_identity::().unwrap_or_default(); + Self::deposit_event(Event::::Unbonded(did, ledger.stash.clone(), value)); + } + Ok(()) + } + + pub(crate) fn get_bonding_duration_period() -> u64 { + (T::SessionsPerEra::get() * T::BondingDuration::get()) as u64 // total session + * T::EpochDuration::get() // session length + * T::ExpectedBlockTime::get().saturated_into::() + } + + pub(crate) fn base_chill_from_governance( + origin: T::RuntimeOrigin, + identity: IdentityId, + stash_keys: Vec, + ) -> DispatchResult { + // Checks that the era election status is closed. + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // Required origin for removing a validator. + T::RequiredRemoveOrigin::ensure_origin(origin)?; + // Checks that the identity is allowed to run operator/validator nodes. + ensure!( + Self::permissioned_identity(&identity).is_some(), + Error::::NotExists + ); + + for key in &stash_keys { + let key_did = Identity::::get_identity(&key); + // Checks if the stash key identity is the same as the identity given. + ensure!(key_did == Some(identity), Error::::NotStash); + // Checks if the key is a validator if not returns an error. + ensure!(>::contains_key(&key), Error::::NotExists); + } + + for key in stash_keys { + Self::chill_stash(&key); + } + + // Change identity status to be Non-Permissioned + PermissionedIdentity::::remove(&identity); + Ok(()) + } + + pub(crate) fn validate_unsigned_call( + source: TransactionSource, + call: &Call, + ) -> TransactionValidity { + if let Call::submit_election_solution_unsigned { score, era, .. } = call { + use crate::offchain_election::DEFAULT_LONGEVITY; + + // discard solution not coming from the local OCW. + match source { + TransactionSource::Local | TransactionSource::InBlock => { /* allowed */ } + _ => { + log!( + debug, + "rejecting unsigned transaction because it is not local/in-block." + ); + return InvalidTransaction::Call.into(); + } + } + + if let Err(error_with_post_info) = Self::pre_dispatch_checks(*score, *era) { + let invalid = Self::to_invalid(error_with_post_info); + log!( + debug, + "💸 validate unsigned pre dispatch checks failed due to error #{:?}.", + invalid, + ); + return invalid.into(); + } + + log!( + debug, + "💸 validateUnsigned succeeded for a solution at era {}.", + era + ); + + ValidTransaction::with_tag_prefix("StakingOffchain") + // The higher the score[0], the better a solution is. + .priority( + T::UnsignedPriority::get().saturating_add(score.minimal_stake.saturated_into()), + ) + // Defensive only. A single solution can exist in the pool per era. Each validator + // will run OCW at most once per era, hence there should never exist more than one + // transaction anyhow. + .and_provides(era) + // Note: this can be more accurate in the future. We do something like + // `era_end_block - current_block` but that is not needed now as we eagerly run + // offchain workers now and the above should be same as `T::ElectionLookahead` + // without the need to query more storage in the validation phase. If we randomize + // offchain worker, then we might re-consider this. + .longevity( + TryInto::::try_into(T::ElectionLookahead::get()) + .unwrap_or(DEFAULT_LONGEVITY), + ) + // We don't propagate this. This can never the validated at a remote node. + .propagate(false) + .build() + } else { + InvalidTransaction::Call.into() + } + } + + pub(crate) fn pre_dispatch_call(call: &Call) -> Result<(), TransactionValidityError> { + if let Call::submit_election_solution_unsigned { score, era, .. } = call { + // IMPORTANT NOTE: These checks are performed in the dispatch call itself, yet we need + // to duplicate them here to prevent a block producer from putting a previously + // validated, yet no longer valid solution on chain. + // OPTIMISATION NOTE: we could skip this in the `submit_election_solution_unsigned` + // since we already do it here. The signed version needs it though. Yer for now we keep + // this duplicate check here so both signed and unsigned can use a singular + // `check_and_replace_solution`. + Self::pre_dispatch_checks(*score, *era) + .map(|_| ()) + .map_err(Self::to_invalid) + .map_err(Into::into) + } else { + Err(InvalidTransaction::Call.into()) + } + } + + /// Converts a [`DispatchErrorWithPostInfo`] to a custom InvalidTransaction with the inner code being + /// the error number. + fn to_invalid(error_with_post_info: DispatchErrorWithPostInfo) -> InvalidTransaction { + if let DispatchError::Module(ModuleError { error, .. }) = error_with_post_info.error { + return InvalidTransaction::Custom(error[0]); + } + InvalidTransaction::Custom(0) + } + + /// Plan a new era. Return the potential new staking set. + pub(crate) fn new_era(start_session_index: SessionIndex) -> Option> { + // Increment or set current era. + let current_era = CurrentEra::::mutate(|s| { + *s = Some(s.map(|s| s + 1).unwrap_or(0)); + s.unwrap() + }); + ErasStartSessionIndex::::insert(¤t_era, &start_session_index); + + // Clean old era information. + if let Some(old_era) = current_era.checked_sub(Self::history_depth() + 1) { + Self::clear_era_information(old_era); + } + + // Set staking information for new era. + let maybe_new_validators = Self::select_and_update_validators(current_era); + + maybe_new_validators + } + + /// Select the new validator set at the end of the era. + /// + /// Runs [`try_do_phragmen`] and updates the following storage items: + /// - [`EraElectionStatus`]: with `None`. + /// - [`ErasStakers`]: with the new staker set. + /// - [`ErasStakersClipped`]. + /// - [`ErasValidatorPrefs`]. + /// - [`ErasTotalStake`]: with the new total stake. + /// - [`SnapshotValidators`] and [`SnapshotNominators`] are both removed. + /// + /// Internally, [`QueuedElected`], snapshots and [`QueuedScore`] are also consumed. + /// + /// If the election has been successful, It passes the new set upwards. + /// + /// This should only be called at the end of an era. + fn select_and_update_validators(current_era: EraIndex) -> Option> { + if let Some(ElectionResult::> { + elected_stashes, + exposures, + compute, + }) = Self::try_do_election() + { + // Totally close the election round and data. + Self::close_election_window(); + + // Populate Stakers and write slot stake. + let mut total_stake: BalanceOf = Zero::zero(); + exposures.into_iter().for_each(|(stash, exposure)| { + total_stake = total_stake.saturating_add(exposure.total); + >::insert(current_era, &stash, &exposure); + + let mut exposure_clipped = exposure; + let clipped_max_len = T::MaxNominatorRewardedPerValidator::get() as usize; + if exposure_clipped.others.len() > clipped_max_len { + exposure_clipped + .others + .sort_by(|a, b| a.value.cmp(&b.value).reverse()); + exposure_clipped.others.truncate(clipped_max_len); + } + >::insert(¤t_era, &stash, exposure_clipped); + }); + + // Insert current era staking information + >::insert(¤t_era, total_stake); + + // collect the pref of all winners + for stash in &elected_stashes { + let pref = Self::validators(stash); + >::insert(¤t_era, stash, pref); + } + + // emit event + Self::deposit_event(Event::::StakingElection(compute)); + + log!( + info, + "💸 new validator set of size {:?} has been elected via {:?} for era {:?}", + elected_stashes.len(), + compute, + current_era, + ); + + Some(elected_stashes) + } else { + None + } + } + + /// Remove all the storage items associated with the election. + fn close_election_window() { + // Close window. + >::put(ElectionStatus::Closed); + // Kill snapshots. + Self::kill_stakers_snapshot(); + // Don't track final session. + IsCurrentSessionFinal::::put(false); + } + + /// Select a new validator set from the assembled stakers and their role preferences. It tries + /// first to peek into [`QueuedElected`]. Otherwise, it runs a new on-chain phragmen election. + /// + /// If [`QueuedElected`] and [`QueuedScore`] exists, they are both removed. No further storage + /// is updated. + fn try_do_election() -> Option>> { + // an election result from either a stored submission or locally executed one. + let next_result = >::take().or_else(|| Self::do_on_chain_phragmen()); + + // either way, kill this. We remove it here to make sure it always has the exact same + // lifetime as `QueuedElected`. + QueuedScore::::kill(); + + next_result + } + + /// Execute election and return the new results. The edge weights are processed into support + /// values. + /// + /// This is basically a wrapper around [`Self::do_phragmen`] which translates + /// `PrimitiveElectionResult` into `ElectionResult`. + /// + /// No storage item is updated. + pub fn do_on_chain_phragmen() -> Option>> { + if let Some(phragmen_result) = Self::do_phragmen::(0) { + let elected_stashes = phragmen_result + .winners + .iter() + .map(|(s, _)| s.clone()) + .collect::>(); + let assignments = phragmen_result.assignments; + + let staked_assignments = + sp_npos_elections::assignment_ratio_to_staked(assignments, Self::weight_of_fn()); + + let supports = to_support_map::(&staked_assignments); + + // collect exposures + let exposures = Self::collect_exposures(supports); + + // In order to keep the property required by `on_session_ending` that we must return the + // new validator set even if it's the same as the old, as long as any underlying + // economic conditions have changed, we don't attempt to do any optimization where we + // compare against the prior set. + Some(ElectionResult::> { + elected_stashes, + exposures, + compute: ElectionCompute::OnChain, + }) + } else { + // There were not enough candidates for even our minimal level of functionality. This is + // bad. We should probably disable all functionality except for block production and let + // the chain keep producing blocks until we can decide on a sufficiently substantial + // set. TODO: #2494 + None + } + } + + /// Clears both snapshots of stakers. + pub fn kill_stakers_snapshot() { + >::kill(); + >::kill(); + } + + /// Dump the list of validators and nominators into vectors and keep them on-chain. + /// + /// This data is used to efficiently evaluate election results. returns `true` if the operation + /// is successful. + pub fn create_stakers_snapshot() -> (bool, Weight) { + let mut consumed_weight = Weight::zero(); + let mut add_db_reads_writes = |reads, writes| { + consumed_weight += T::DbWeight::get().reads_writes(reads, writes); + }; + let mut validators = Vec::new(); + for (validator, _) in >::iter() + // Polymesh-Note: Ensure that validator is CDDed + has enough bonded. + // ----------------------------------------------------------------- + .filter(|(v, _)| { + Self::is_active_balance_above_min_bond(&v) && Self::is_validator_compliant(&v) + }) + // ----------------------------------------------------------------- + { + validators.push(validator); + } + let mut nominators = >::iter().map(|(n, _)| n).collect::>(); + + let num_validators = validators.len(); + let num_nominators = nominators.len(); + add_db_reads_writes((num_validators + num_nominators) as u64, 0); + + if num_validators > MAX_VALIDATORS + || num_nominators.saturating_add(num_validators) > MAX_NOMINATORS + { + log!( + warn, + "💸 Snapshot size too big [{} <> {}][{} <> {}].", + num_validators, + MAX_VALIDATORS, + num_nominators, + MAX_NOMINATORS, + ); + (false, consumed_weight) + } else { + // all validators nominate themselves; + nominators.extend(validators.clone()); + + >::put(validators); + >::put(nominators); + add_db_reads_writes(0, 2); + (true, consumed_weight) + } + } + + pub(crate) fn will_era_be_forced() -> bool { + match ForceEra::::get() { + Forcing::ForceAlways | Forcing::ForceNew => true, + Forcing::ForceNone | Forcing::NotForcing => false, + } + } + // ------------------------------------------------------------------------- +} diff --git a/pallets/staking/src/pallet/mod.rs b/pallets/staking/src/pallet/mod.rs new file mode 100644 index 0000000000..390fb8c4d6 --- /dev/null +++ b/pallets/staking/src/pallet/mod.rs @@ -0,0 +1,2117 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! Staking FRAME Pallet. + +use frame_support::{ + dispatch::Codec, + pallet_prelude::*, + traits::{ + Currency, CurrencyToVote, EnsureOrigin, EstimateNextNewSession, Get, LockableCurrency, + OnUnbalanced, UnixTime, + }, + weights::Weight, + BoundedVec, +}; +use frame_system::{ensure_root, ensure_signed, pallet_prelude::*}; +use sp_runtime::{ + traits::{CheckedSub, SaturatedConversion, StaticLookup, Zero}, + ArithmeticError, Perbill, Percent, +}; +use sp_staking::SessionIndex; +use sp_std::prelude::*; + +mod impls; + +use crate::{ + slashing, weights::WeightInfo, AccountIdLookupOf, ActiveEraInfo, BalanceOf, EraRewardPoints, + Exposure, Forcing, NegativeImbalanceOf, Nominations, PositiveImbalanceOf, RewardDestination, + SessionInterface, StakingLedger, UnappliedSlash, ValidatorPrefs, +}; + +use frame_support::dispatch::DispatchClass::Operational; +use frame_support::traits::schedule::Anon; +use frame_support::traits::IsSubType; +use frame_support::weights::constants::{WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS}; +use frame_system::offchain::SendTransactionTypes; +use sp_npos_elections::ElectionScore; +use sp_runtime::curve::PiecewiseLinear; +use sp_runtime::traits::{AccountIdConversion, Dispatchable, Saturating}; +use sp_runtime::Permill; + +use polymesh_common_utilities::constants::GC_PALLET_ID; +use polymesh_common_utilities::identity::Config as IdentityConfig; +use polymesh_common_utilities::{Context, GC_DID}; +use polymesh_primitives::{storage_migration_ver, IdentityId}; + +use crate::types::{ + ElectionCompute, ElectionResult, ElectionSize, ElectionStatus, PermissionedIdentityPrefs, + SlashingSwitch, +}; +use crate::{CompactAssignments, EraIndex, ValidatorIndex, MAX_ALLOWED_VALIDATORS, STAKING_ID}; + +type Identity = pallet_identity::Module; + +storage_migration_ver!(1); + +#[frame_support::pallet] +pub mod pallet { + + use super::*; + + #[pallet::pallet] + #[pallet::generate_store(pub(crate) trait Store)] + pub struct Pallet(_); + + /// Possible operations on the configuration values of this pallet. + #[derive(TypeInfo, Debug, Clone, Encode, Decode, PartialEq)] + pub enum ConfigOp { + /// Don't change. + Noop, + /// Set the given value. + Set(T), + /// Remove from storage. + Remove, + } + + #[pallet::config] + pub trait Config: + frame_system::Config + + SendTransactionTypes> + + pallet_babe::Config + + IdentityConfig + { + /// The staking balance. + type Currency: LockableCurrency; + + /// Time used for computing era duration. + /// + /// It is guaranteed to start being called from the first `on_finalize`. Thus value at + /// genesis is not used. + type UnixTime: UnixTime; + + /// Convert a balance into a number used for election calculation. This must fit into a + /// `u64` but is allowed to be sensibly lossy. The `u64` is used to communicate with the + /// [`frame_election_provider_support`] crate which accepts u64 numbers and does operations + /// in 128. + /// Consequently, the backward convert is used convert the u128s from sp-elections back to a + /// [`BalanceOf`]. + type CurrencyToVote: CurrencyToVote>; + + /// Maximum number of nominations per nominator. + #[pallet::constant] + type MaxNominations: Get; + + /// Tokens have been minted and are unused for validator-reward. + /// See [Era payout](./index.html#era-payout). + type RewardRemainder: OnUnbalanced>; + + /// The overarching event type. + type RuntimeEvent: From> + IsType<::RuntimeEvent>; + + /// Handler for the unbalanced reduction when slashing a staker. + type Slash: OnUnbalanced>; + + /// Handler for the unbalanced increment when rewarding a staker. + /// NOTE: in most cases, the implementation of `OnUnbalanced` should modify the total + /// issuance. + type Reward: OnUnbalanced>; + + /// Number of sessions per era. + #[pallet::constant] + type SessionsPerEra: Get; + + /// Number of eras that staked funds must remain bonded for.] + #[pallet::constant] + type BondingDuration: Get; + + /// Number of eras that slashes are deferred by, after computation. + /// + /// This should be less than the bonding duration. Set to 0 if slashes + /// should be applied immediately, without opportunity for intervention. + type SlashDeferDuration: Get; + + /// Weight information for extrinsics in this pallet. + type WeightInfo: WeightInfo; + + /// The maximum number of `unlocking` chunks a [`StakingLedger`] can + /// have. Effectively determines how many unique eras a staker may be + /// unbonding in. + /// + /// Note: `MaxUnlockingChunks` is used as the upper bound for the + /// `BoundedVec` item `StakingLedger.unlocking`. Setting this value + /// lower than the existing value can lead to inconsistencies in the + /// `StakingLedger` and will need to be handled properly in a runtime + /// migration. The test `reducing_max_unlocking_chunks_abrupt` shows + /// this effect. + #[pallet::constant] + type MaxUnlockingChunks: Get; + + /// The origin which can cancel a deferred slash. Root can always do this. + type SlashCancelOrigin: EnsureOrigin; + + /// Interface for interacting with a session module. + type SessionInterface: self::SessionInterface; + + /// The NPoS reward curve used to define yearly inflation. + /// See [Era payout](./index.html#era-payout). + type RewardCurve: Get<&'static PiecewiseLinear<'static>>; + + /// Something that can estimate the next session change, accurately or as a best effort guess. + type NextNewSession: EstimateNextNewSession; + + /// The number of blocks before the end of the era from which election submissions are allowed. + /// + /// Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will + /// be used. + /// + /// This is bounded by being within the last session. Hence, setting it to a value more than the + /// length of a session will be pointless. + type ElectionLookahead: Get; + + /// The overarching call type. + type Call: Dispatchable + From> + IsSubType> + Clone; + + /// Maximum number of balancing iterations to run in the offchain submission. + /// + /// If set to 0, balance_solution will not be executed at all. + type MaxIterations: Get; + + /// The threshold of improvement that should be provided for a new solution to be accepted. + type MinSolutionScoreBump: Get; + + /// The maximum number of nominators rewarded for each validator. + /// + /// For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim + /// their reward. This used to limit the i/o cost for the nominator payout. + type MaxNominatorRewardedPerValidator: Get; + + /// The fraction of the validator set that is safe to be offending. + /// After the threshold is reached a new era will be forced. + type OffendingValidatorsThreshold: Get; + + /// A configuration for base priority of unsigned transactions. + /// + /// This is exposed so that it can be tuned for particular runtime, when + /// multiple pallets send unsigned transactions. + type UnsignedPriority: Get; + + /// Maximum weight that the unsigned transaction can have. + /// + /// Chose this value with care. On one hand, it should be as high as possible, so the solution + /// can contain as many nominators/validators as possible. On the other hand, it should be small + /// enough to fit in the block. + type OffchainSolutionWeightLimit: Get; + + /// Required origin for adding a potential validator (can always be Root). + type RequiredAddOrigin: EnsureOrigin; + + /// Required origin for removing a validator (can always be Root). + type RequiredRemoveOrigin: EnsureOrigin; + + /// Required origin for changing validator commission. + type RequiredCommissionOrigin: EnsureOrigin; + + /// To schedule the rewards for the stakers after the end of era. + type RewardScheduler: Anon::Call, Self::PalletsOrigin>; + + /// Overarching type of all pallets origins. + type PalletsOrigin: From>; + + /// Maximum amount of validators that can run by an identity. + /// It will be MaxValidatorPerIdentity * Self::validator_count(). + type MaxValidatorPerIdentity: Get; + + /// Maximum amount of total issuance after which fixed rewards kicks in. + type MaxVariableInflationTotalIssuance: Get>; + + /// Yearly total reward amount that gets distributed when fixed rewards kicks in. + type FixedYearlyReward: Get>; + + /// Minimum bond amount. + type MinimumBond: Get>; + } + + #[pallet::type_value] + pub fn HistoryDepthDefault() -> u32 { + 84 + } + + /// Number of eras to keep in history. + /// + /// Information is kept for eras in `[current_era - history_depth; current_era]`. + /// + /// Must be more than the number of eras delayed by session otherwise. I.e. active era must + /// always be in history. I.e. `active_era > current_era - history_depth` must be + /// guaranteed. + #[pallet::storage] + #[pallet::getter(fn history_depth)] + pub type HistoryDepth = StorageValue<_, u32, ValueQuery, HistoryDepthDefault>; + + /// The ideal number of active validators. + #[pallet::storage] + #[pallet::getter(fn validator_count)] + pub type ValidatorCount = StorageValue<_, u32, ValueQuery>; + + /// Minimum number of staking participants before emergency conditions are imposed. + #[pallet::storage] + #[pallet::getter(fn minimum_validator_count)] + pub type MinimumValidatorCount = StorageValue<_, u32, ValueQuery>; + + /// Any validators that may never be slashed or forcibly kicked. It's a Vec since they're + /// easy to initialize and the performance hit is minimal (we expect no more than four + /// invulnerables) and restricted to testnets. + #[pallet::storage] + #[pallet::getter(fn invulnerables)] + #[pallet::unbounded] + pub type Invulnerables = StorageValue<_, Vec, ValueQuery>; + + /// Map from all locked "stash" accounts to the controller account. + /// + /// TWOX-NOTE: SAFE since `AccountId` is a secure hash. + #[pallet::storage] + #[pallet::getter(fn bonded)] + pub type Bonded = + StorageMap<_, Twox64Concat, T::AccountId, T::AccountId, OptionQuery>; + + /// Map from all (unlocked) "controller" accounts to the info regarding the staking. + #[pallet::storage] + #[pallet::getter(fn ledger)] + #[pallet::unbounded] + pub type Ledger = + StorageMap<_, Blake2_128Concat, T::AccountId, StakingLedger, OptionQuery>; + + /// Where the reward payment should be made. Keyed by stash. + /// + /// TWOX-NOTE: SAFE since `AccountId` is a secure hash. + #[pallet::storage] + #[pallet::getter(fn payee)] + pub type Payee = + StorageMap<_, Twox64Concat, T::AccountId, RewardDestination, ValueQuery>; + + /// The map from (wannabe) validator stash key to the preferences of that validator. + /// + /// TWOX-NOTE: SAFE since `AccountId` is a secure hash. + #[pallet::storage] + #[pallet::getter(fn validators)] + pub type Validators = + StorageMap<_, Twox64Concat, T::AccountId, ValidatorPrefs, ValueQuery>; + + /// The map from nominator stash key to their nomination preferences, namely the validators that + /// they wish to support. + /// + /// Note that the keys of this storage map might become non-decodable in case the + /// [`Config::MaxNominations`] configuration is decreased. In this rare case, these nominators + /// are still existent in storage, their key is correct and retrievable (i.e. `contains_key` + /// indicates that they exist), but their value cannot be decoded. Therefore, the non-decodable + /// nominators will effectively not-exist, until they re-submit their preferences such that it + /// is within the bounds of the newly set `Config::MaxNominations`. + /// + /// This implies that `::iter_keys().count()` and `::iter().count()` might return different + /// values for this map. Moreover, the main `::count()` is aligned with the former, namely the + /// number of keys that exist. + /// + /// Lastly, if any of the nominators become non-decodable, they can be chilled immediately via + /// [`Call::chill_other`] dispatchable by anyone. + /// + /// TWOX-NOTE: SAFE since `AccountId` is a secure hash. + #[pallet::storage] + #[pallet::getter(fn nominators)] + pub type Nominators = + StorageMap<_, Twox64Concat, T::AccountId, Nominations, OptionQuery>; + + /// The current era index. + /// + /// This is the latest planned era, depending on how the Session pallet queues the validator + /// set, it might be active or not. + #[pallet::storage] + #[pallet::getter(fn current_era)] + pub type CurrentEra = StorageValue<_, EraIndex, OptionQuery>; + + /// The active era information, it holds index and start. + /// + /// The active era is the era being currently rewarded. Validator set of this era must be + /// equal to [`SessionInterface::validators`]. + #[pallet::storage] + #[pallet::getter(fn active_era)] + pub type ActiveEra = StorageValue<_, ActiveEraInfo, OptionQuery>; + + /// The session index at which the era start for the last `HISTORY_DEPTH` eras. + /// + /// Note: This tracks the starting session (i.e. session index when era start being active) + /// for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`. + #[pallet::storage] + #[pallet::getter(fn eras_start_session_index)] + pub type ErasStartSessionIndex = + StorageMap<_, Twox64Concat, EraIndex, SessionIndex, OptionQuery>; + + /// Exposure of validator at era. + /// + /// This is keyed first by the era index to allow bulk deletion and then the stash account. + /// + /// Is it removed after `HISTORY_DEPTH` eras. + /// If stakers hasn't been set or has been removed then empty exposure is returned. + #[pallet::storage] + #[pallet::getter(fn eras_stakers)] + #[pallet::unbounded] + pub type ErasStakers = StorageDoubleMap< + _, + Twox64Concat, + EraIndex, + Twox64Concat, + T::AccountId, + Exposure>, + ValueQuery, + >; + + /// Clipped Exposure of validator at era. + /// + /// This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the + /// `T::MaxNominatorRewardedPerValidator` biggest stakers. + /// (Note: the field `total` and `own` of the exposure remains unchanged). + /// This is used to limit the i/o cost for the nominator payout. + /// + /// This is keyed fist by the era index to allow bulk deletion and then the stash account. + /// + /// Is it removed after `HISTORY_DEPTH` eras. + /// If stakers hasn't been set or has been removed then empty exposure is returned. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn eras_stakers_clipped)] + pub type ErasStakersClipped = StorageDoubleMap< + _, + Twox64Concat, + EraIndex, + Twox64Concat, + T::AccountId, + Exposure>, + ValueQuery, + >; + + /// Similar to `ErasStakers`, this holds the preferences of validators. + /// + /// This is keyed first by the era index to allow bulk deletion and then the stash account. + /// + /// Is it removed after `HISTORY_DEPTH` eras. + // If prefs hasn't been set or has been removed then 0 commission is returned. + #[pallet::storage] + #[pallet::getter(fn eras_validator_prefs)] + pub type ErasValidatorPrefs = StorageDoubleMap< + _, + Twox64Concat, + EraIndex, + Twox64Concat, + T::AccountId, + ValidatorPrefs, + ValueQuery, + >; + + /// The total validator era payout for the last `HISTORY_DEPTH` eras. + /// + /// Eras that haven't finished yet or has been removed doesn't have reward. + #[pallet::storage] + #[pallet::getter(fn eras_validator_reward)] + pub type ErasValidatorReward = + StorageMap<_, Twox64Concat, EraIndex, BalanceOf, OptionQuery>; + + /// Rewards for the last `HISTORY_DEPTH` eras. + /// If reward hasn't been set or has been removed then 0 reward is returned. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn eras_reward_points)] + pub type ErasRewardPoints = + StorageMap<_, Twox64Concat, EraIndex, EraRewardPoints, ValueQuery>; + + /// The total amount staked for the last `HISTORY_DEPTH` eras. + /// If total hasn't been set or has been removed then 0 stake is returned. + #[pallet::storage] + #[pallet::getter(fn eras_total_stake)] + pub type ErasTotalStake = + StorageMap<_, Twox64Concat, EraIndex, BalanceOf, ValueQuery>; + + /// Mode of era forcing. + #[pallet::storage] + #[pallet::getter(fn force_era)] + pub type ForceEra = StorageValue<_, Forcing, ValueQuery>; + + /// The percentage of the slash that is distributed to reporters. + /// + /// The rest of the slashed value is handled by the `Slash`. + #[pallet::storage] + #[pallet::getter(fn slash_reward_fraction)] + pub type SlashRewardFraction = StorageValue<_, Perbill, ValueQuery>; + + /// The amount of currency given to reporters of a slash event which was + /// canceled by extraordinary circumstances (e.g. governance). + #[pallet::storage] + #[pallet::getter(fn canceled_payout)] + pub type CanceledSlashPayout = StorageValue<_, BalanceOf, ValueQuery>; + + /// All unapplied slashes that are queued for later. + #[pallet::storage] + #[pallet::unbounded] + pub type UnappliedSlashes = StorageMap< + _, + Twox64Concat, + EraIndex, + Vec>>, + ValueQuery, + >; + + /// A mapping from still-bonded eras to the first session index of that era. + /// + /// Must contains information for eras for the range: + /// `[active_era - bounding_duration; active_era]` + #[pallet::storage] + #[pallet::unbounded] + pub type BondedEras = StorageValue<_, Vec<(EraIndex, SessionIndex)>, ValueQuery>; + + /// All slashing events on validators, mapped by era to the highest slash proportion + /// and slash value of the era. + #[pallet::storage] + pub type ValidatorSlashInEra = StorageDoubleMap< + _, + Twox64Concat, + EraIndex, + Twox64Concat, + T::AccountId, + (Perbill, BalanceOf), + OptionQuery, + >; + + /// All slashing events on nominators, mapped by era to the highest slash value of the era. + #[pallet::storage] + pub type NominatorSlashInEra = StorageDoubleMap< + _, + Twox64Concat, + EraIndex, + Twox64Concat, + T::AccountId, + BalanceOf, + OptionQuery, + >; + + /// Slashing spans for stash accounts. + #[pallet::storage] + #[pallet::getter(fn slashing_spans)] + #[pallet::unbounded] + pub type SlashingSpans = + StorageMap<_, Twox64Concat, T::AccountId, slashing::SlashingSpans, OptionQuery>; + + /// Records information about the maximum slash of a stash within a slashing span, + /// as well as how much reward has been paid out. + #[pallet::storage] + pub type SpanSlash = StorageMap< + _, + Twox64Concat, + (T::AccountId, slashing::SpanIndex), + slashing::SpanRecord>, + ValueQuery, + >; + + /// Indices of validators that have offended in the active era and whether they are currently + /// disabled. + /// + /// This value should be a superset of disabled validators since not all offences lead to the + /// validator being disabled (if there was no slash). This is needed to track the percentage of + /// validators that have offended in the current era, ensuring a new era is forced if + /// `OffendingValidatorsThreshold` is reached. The vec is always kept sorted so that we can find + /// whether a given validator has previously offended using binary search. It gets cleared when + /// the era ends. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn offending_validators)] + pub type OffendingValidators = StorageValue<_, Vec<(u32, bool)>, ValueQuery>; + + // Polymesh Change: -------------------------------------------- + + #[pallet::storage] + /// The earliest era for which we have a pending, unapplied slash. + pub(crate) type EarliestUnappliedSlash = StorageValue<_, EraIndex, OptionQuery>; + + /// Snapshot of validators at the beginning of the current election window. This should only + /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn snapshot_validators)] + pub(crate) type SnapshotValidators = StorageValue<_, Vec, OptionQuery>; + + /// Snapshot of nominators at the beginning of the current election window. This should only + /// have a value when [`EraElectionStatus`] == `ElectionStatus::Open(_)`. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn snapshot_nominators)] + pub type SnapshotNominators = StorageValue<_, Vec, OptionQuery>; + + /// The next validator set. At the end of an era, if this is available (potentially from the + /// result of an offchain worker), it is immediately used. Otherwise, the on-chain election + /// is executed. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn queued_elected)] + pub type QueuedElected = + StorageValue<_, ElectionResult>, OptionQuery>; + + /// The score of the current [`QueuedElected`]. + #[pallet::storage] + #[pallet::getter(fn queued_score)] + pub type QueuedScore = StorageValue<_, ElectionScore, OptionQuery>; + + /// Flag to control the execution of the offchain election. When `Open(_)`, we accept solutions + /// to be submitted. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn era_election_status)] + pub type EraElectionStatus = + StorageValue<_, ElectionStatus, ValueQuery>; + + /// True if the current **planned** session is final. Note that this does not take era + /// forcing into account. + #[pallet::storage] + #[pallet::getter(fn is_current_session_final)] + pub type IsCurrentSessionFinal = StorageValue<_, bool, ValueQuery>; + + /// Entities that are allowed to run operator/validator nodes. + #[pallet::storage] + #[pallet::unbounded] + #[pallet::getter(fn permissioned_identity)] + pub type PermissionedIdentity = + StorageMap<_, Twox64Concat, IdentityId, PermissionedIdentityPrefs, OptionQuery>; + + /// Allows flexibility in commission. Every validator has commission that should be in the + /// range [0, Cap]. + #[pallet::storage] + #[pallet::getter(fn validator_commission_cap)] + pub type ValidatorCommissionCap = StorageValue<_, Perbill, ValueQuery>; + + /// The minimum amount with which a validator can bond. + #[pallet::storage] + #[pallet::getter(fn min_bond_threshold)] + pub type MinimumBondThreshold = StorageValue<_, BalanceOf, ValueQuery>; + + // Slashing switch for validators & Nominators. + #[pallet::storage] + #[pallet::getter(fn slashing_allowed_for)] + pub type SlashingAllowedFor = StorageValue<_, SlashingSwitch, ValueQuery>; + + #[pallet::storage] + #[pallet::getter(fn storage_version)] + pub type PolymeshStorageVersion = StorageValue<_, Version, ValueQuery>; + + // ------------------------------------------------------------- + + #[pallet::genesis_config] + pub struct GenesisConfig { + pub validator_count: u32, + pub minimum_validator_count: u32, + pub invulnerables: Vec, + pub force_era: Forcing, + pub slash_reward_fraction: Perbill, + pub canceled_payout: BalanceOf, + pub stakers: Vec<( + IdentityId, + T::AccountId, + T::AccountId, + BalanceOf, + crate::StakerStatus, + )>, + pub validator_commission_cap: Perbill, + pub min_bond_threshold: BalanceOf, + pub slashing_allowed_for: SlashingSwitch, + } + + #[cfg(feature = "std")] + impl Default for GenesisConfig { + fn default() -> Self { + GenesisConfig { + validator_count: Default::default(), + minimum_validator_count: Default::default(), + invulnerables: Default::default(), + force_era: Default::default(), + slash_reward_fraction: Default::default(), + canceled_payout: Default::default(), + stakers: Default::default(), + validator_commission_cap: Default::default(), + min_bond_threshold: Default::default(), + slashing_allowed_for: Default::default(), + } + } + } + + #[pallet::genesis_build] + impl GenesisBuild for GenesisConfig { + fn build(&self) { + ValidatorCount::::put(self.validator_count); + MinimumValidatorCount::::put(self.minimum_validator_count); + Invulnerables::::put(&self.invulnerables); + ForceEra::::put(self.force_era); + SlashRewardFraction::::put(self.slash_reward_fraction); + CanceledSlashPayout::::put(self.canceled_payout); + ValidatorCommissionCap::::put(self.validator_commission_cap); + MinimumBondThreshold::::put(self.min_bond_threshold); + SlashingAllowedFor::::put(self.slashing_allowed_for); + PolymeshStorageVersion::::put(Version::new(1)); + + for &(did, ref stash, ref controller, balance, ref status) in &self.stakers { + crate::log!( + trace, + "inserting genesis staker: {:?} => {:?} => {:?}", + stash, + balance, + status + ); + assert!( + T::Currency::free_balance(stash) >= balance, + "Stash does not have enough balance to bond." + ); + frame_support::assert_ok!(>::bond( + T::RuntimeOrigin::from(Some(stash.clone()).into()), + T::Lookup::unlookup(controller.clone()), + balance, + RewardDestination::Staked, + )); + match status { + crate::StakerStatus::Validator => { + if >::permissioned_identity(&did).is_none() { + // Adding identity directly in the storage by assuming it is CDD'ed + PermissionedIdentity::::insert( + &did, + PermissionedIdentityPrefs::new(3), + ); + >::deposit_event(Event::::PermissionedIdentityAdded( + GC_DID, did, + )); + } + let _ = >::validate( + T::RuntimeOrigin::from(Some(controller.clone()).into()), + ValidatorPrefs { + commission: self.validator_commission_cap, + blocked: Default::default(), + }, + ); + } + crate::StakerStatus::Nominator(votes) => { + let _ = >::nominate( + T::RuntimeOrigin::from(Some(controller.clone()).into()), + votes + .iter() + .map(|l| T::Lookup::unlookup(l.clone())) + .collect(), + ); + } + _ => {} + }; + } + } + } + + #[pallet::event] + #[pallet::generate_deposit(pub(crate) fn deposit_event)] + pub enum Event { + /// The era payout has been set; the first balance is the validator-payout; the second is + /// the remainder from the maximum amount of reward. + EraPayout(EraIndex, BalanceOf, BalanceOf), + /// The nominator has been rewarded by this amount. + Reward(IdentityId, T::AccountId, BalanceOf), + /// A staker (validator or nominator) has been slashed by the given amount. + Slash(T::AccountId, BalanceOf), + /// An old slashing report from a prior era was discarded because it could + /// not be processed. + OldSlashingReportDiscarded(SessionIndex), + /// A new set of stakers was elected. + StakingElection(ElectionCompute), + /// A new solution for the upcoming election has been stored. + SolutionStored(ElectionCompute), + /// An account has bonded this amount. \[stash, amount\] + /// + /// NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably, + /// it will not be emitted for staking rewards when they are added to stake. + Bonded(IdentityId, T::AccountId, BalanceOf), + /// An account has unbonded this amount. + Unbonded(IdentityId, T::AccountId, BalanceOf), + /// User has updated their nominations + Nominated(IdentityId, T::AccountId, Vec), + /// An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance` + /// from the unlocking queue. + Withdrawn(T::AccountId, BalanceOf), + /// An DID has issued a candidacy. See the transaction for who. + /// GC identity , Validator's identity. + PermissionedIdentityAdded(IdentityId, IdentityId), + /// The given member was removed. See the transaction for who. + /// GC identity , Validator's identity. + PermissionedIdentityRemoved(IdentityId, IdentityId), + /// Remove the nominators from the valid nominators when there CDD expired. + /// Caller, Stash accountId of nominators + InvalidatedNominators(IdentityId, T::AccountId, Vec), + /// When commission cap get updated. + /// (old value, new value) + CommissionCapUpdated(IdentityId, Perbill, Perbill), + /// Min bond threshold was updated (new value). + MinimumBondThresholdUpdated(Option, BalanceOf), + /// When scheduling of reward payments get interrupted. + RewardPaymentSchedulingInterrupted(T::AccountId, EraIndex, DispatchError), + /// Update for whom balance get slashed. + SlashingAllowedForChanged(SlashingSwitch), + } + + #[pallet::error] + pub enum Error { + /// Not a controller account. + NotController, + /// Not a stash account. + NotStash, + /// Stash is already bonded. + AlreadyBonded, + /// Controller is already paired. + AlreadyPaired, + /// Targets cannot be empty. + EmptyTargets, + /// Slash record index out of bounds. + InvalidSlashIndex, + /// Can not bond with value less than minimum balance. + InsufficientValue, + /// Can not schedule more unlock chunks. + NoMoreChunks, + /// Can not rebond without unlocking chunks. + NoUnlockChunk, + /// Attempting to target a stash that still has funds. + FundedTarget, + /// Invalid era to reward. + InvalidEraToReward, + /// Items are not sorted and unique. + NotSortedAndUnique, + /// Rewards for this era have already been claimed for this validator. + AlreadyClaimed, + /// The submitted result is received out of the open window. + OffchainElectionEarlySubmission, + /// The submitted result is not as good as the one stored on chain. + OffchainElectionWeakSubmission, + /// The snapshot data of the current window is missing. + SnapshotUnavailable, + /// Incorrect number of winners were presented. + OffchainElectionBogusWinnerCount, + /// One of the submitted winners is not an active candidate on chain (index is out of range + /// in snapshot). + OffchainElectionBogusWinner, + /// Error while building the assignment type from the compact. This can happen if an index + /// is invalid, or if the weights _overflow_. + OffchainElectionBogusCompact, + /// One of the submitted nominators is not an active nominator on chain. + OffchainElectionBogusNominator, + /// One of the submitted nominators has an edge to which they have not voted on chain. + OffchainElectionBogusNomination, + /// One of the submitted nominators has an edge which is submitted before the last non-zero + /// slash of the target. + OffchainElectionSlashedNomination, + /// A self vote must only be originated from a validator to ONLY themselves. + OffchainElectionBogusSelfVote, + /// The submitted result has unknown edges that are not among the presented winners. + OffchainElectionBogusEdge, + /// The claimed score does not match with the one computed from the data. + OffchainElectionBogusScore, + /// The election size is invalid. + OffchainElectionBogusElectionSize, + /// The call is not allowed at the given time due to restrictions of election period. + CallNotAllowed, + /// Incorrect number of slashing spans provided. + IncorrectSlashingSpans, + /// Permissioned validator already exists. + AlreadyExists, + /// Permissioned validator not exists. + NotExists, + /// Updates with same value. + NoChange, + /// Given potential validator identity is invalid. + InvalidValidatorIdentity, + /// Validator prefs are not in valid range. + InvalidValidatorCommission, + /// Validator or nominator stash identity does not exist. + StashIdentityDoesNotExist, + /// Validator stash identity was not permissioned. + StashIdentityNotPermissioned, + /// Nominator stash was not CDDed. + StashIdentityNotCDDed, + /// Running validator count hit the intended count. + HitIntendedValidatorCount, + /// When the intended number of validators to run is >= 2/3 of `validator_count`. + IntendedCountIsExceedingConsensusLimit, + /// When the amount to be bonded is less than `MinimumBond` + BondTooSmall, + /// Internal state has become somehow corrupted and the operation cannot continue. + BadState, + /// Too many nomination targets supplied. + TooManyTargets, + /// A nomination target was supplied that was blocked or otherwise not a validator. + BadTarget, + /// Validator should have minimum 50k POLYX bonded. + InvalidValidatorUnbondAmount, + /// Some bound is not met. + BoundNotMet, + /// There are too many nominators in the system. Governance needs to adjust the staking + /// settings to keep things safe for the runtime. + TooManyNominators, + } + + #[pallet::hooks] + impl Hooks> for Pallet { + /// sets `ElectionStatus` to `Open(now)` where `now` is the block number at which the + /// election window has opened, if we are at the last session and less blocks than + /// `T::ElectionLookahead` is remaining until the next new session schedule. The offchain + /// worker, if applicable, will execute at the end of the current block, and solutions may + /// be submitted. + fn on_initialize(now: T::BlockNumber) -> Weight { + let mut consumed_weight = Weight::zero(); + + let mut add_weight = |reads: u64, writes: u64, weight| { + consumed_weight += T::DbWeight::get().reads_writes(reads, writes); + consumed_weight += weight; + }; + + if + // if we don't have any ongoing offchain compute. + Self::era_election_status().is_closed() && + // either current session final based on the plan, or we're forcing. + (Self::is_current_session_final() || Self::will_era_be_forced()) + { + let (maybe_next_session_change, estimate_next_new_session_weight) = + T::NextNewSession::estimate_next_new_session(now); + if let Some(next_session_change) = maybe_next_session_change { + if let Some(remaining) = next_session_change.checked_sub(&now) { + if remaining <= T::ElectionLookahead::get() && !remaining.is_zero() { + // create snapshot. + let (did_snapshot, snapshot_weight) = Self::create_stakers_snapshot(); + add_weight(0, 0, snapshot_weight); + if did_snapshot { + // Set the flag to make sure we don't waste any compute here in the same era + // after we have triggered the offline compute. + >::put( + ElectionStatus::::Open(now), + ); + add_weight(0, 1, Weight::zero()); + crate::log!( + info, + "💸 Election window is Open({:?}). Snapshot created", + now + ); + } else { + crate::log!(warn, "💸 Failed to create snapshot at {:?}.", now); + } + } + } + } else { + crate::log!(warn, "💸 Estimating next session change failed."); + } + add_weight(0, 0, estimate_next_new_session_weight) + } + // For `era_election_status`, `is_current_session_final`, `will_era_be_forced` + add_weight(3, 0, Weight::zero()); + // Additional read from `on_finalize` + add_weight(1, 0, Weight::zero()); + consumed_weight + } + + fn on_finalize(_n: BlockNumberFor) { + // Set the start of the first era. + if let Some(mut active_era) = Self::active_era() { + if active_era.start.is_none() { + let now_as_millis_u64 = T::UnixTime::now().as_millis().saturated_into::(); + active_era.start = Some(now_as_millis_u64); + // This write only ever happens once, we don't include it in the weight in + // general + ActiveEra::::put(active_era); + } + } + // `on_finalize` weight is tracked in `on_initialize` + } + + fn integrity_test() { + sp_std::if_std! { + sp_io::TestExternalities::new_empty().execute_with(|| + assert!( + T::SlashDeferDuration::get() < T::BondingDuration::get() || T::BondingDuration::get() == 0, + "As per documentation, slash defer duration ({}) should be less than bonding duration ({}).", + T::SlashDeferDuration::get(), + T::BondingDuration::get(), + ) + ); + } + } + + /// Check if the current block number is the one at which the election window has been set + /// to open. If so, it runs the offchain worker code. + fn offchain_worker(now: T::BlockNumber) { + use crate::offchain_election::{ + compute_offchain_election, set_check_offchain_execution_status, + }; + + if Self::era_election_status().is_open_at(now) { + let offchain_status = set_check_offchain_execution_status::(now); + if let Err(why) = offchain_status { + crate::log!( + warn, + "💸 skipping offchain worker in open election window due to [{:?}]", + why + ); + } else { + if let Err(e) = compute_offchain_election::() { + crate::log!(error, "💸 Error in election offchain worker: {:?}", e); + } else { + crate::log!(debug, "💸 Executed offchain worker thread without errors."); + } + } + } + } + } + + #[pallet::call] + impl Pallet { + /// Take the origin account as a stash and lock up `value` of its balance. `controller` will + /// be the account that controls it. + /// + /// `value` must be more than the `minimum_balance` specified by `T::Currency`. + /// + /// The dispatch origin for this call must be _Signed_ by the stash account. + /// + /// Emits `Bonded`. + /// ## Complexity + /// - Independent of the arguments. Moderate complexity. + /// - O(1). + /// - Three extra DB entries. + /// + /// NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned + /// unless the `origin` falls below _existential deposit_ and gets removed as dust. + #[pallet::call_index(0)] + #[pallet::weight(::WeightInfo::bond())] + pub fn bond( + origin: OriginFor, + controller: AccountIdLookupOf, + #[pallet::compact] value: BalanceOf, + payee: RewardDestination, + ) -> DispatchResult { + // Polymesh Change + // ----------------------------------------------------------------- + ensure!(value >= T::MinimumBond::get(), Error::::BondTooSmall); + // ----------------------------------------------------------------- + + let stash = ensure_signed(origin)?; + + if >::contains_key(&stash) { + return Err(Error::::AlreadyBonded.into()); + } + + let controller = T::Lookup::lookup(controller)?; + + if >::contains_key(&controller) { + return Err(Error::::AlreadyPaired.into()); + } + + // Reject a bond which is considered to be _dust_. + if value < T::Currency::minimum_balance() { + return Err(Error::::InsufficientValue.into()); + } + + frame_system::Pallet::::inc_consumers(&stash).map_err(|_| Error::::BadState)?; + + // You're auto-bonded forever, here. We might improve this by only bonding when + // you actually validate/nominate and remove once you unbond __everything__. + >::insert(&stash, &controller); + >::insert(&stash, payee); + + let current_era = CurrentEra::::get().unwrap_or(0); + let history_depth = Self::history_depth(); + let last_reward_era = current_era.saturating_sub(history_depth); + + let stash_balance = T::Currency::free_balance(&stash); + let value = value.min(stash_balance); + + // Polymesh Change: Add `stash`'s DID to event. + // ----------------------------------------------------------------- + let did = Context::current_identity::().unwrap_or_default(); + Self::deposit_event(Event::::Bonded(did, stash.clone(), value)); + // ----------------------------------------------------------------- + + let item = StakingLedger { + stash, + total: value, + active: value, + unlocking: Default::default(), + claimed_rewards: (last_reward_era..current_era).collect(), + }; + Self::update_ledger(&controller, &item); + Ok(()) + } + + /// Add some extra amount that have appeared in the stash `free_balance` into the balance up + /// for staking. + /// + /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. + /// + /// Use this if there are additional funds in your stash account that you wish to bond. + /// Unlike [`bond`](Self::bond) or [`unbond`](Self::unbond) this function does not impose + /// any limitation on the amount that can be added. + /// + /// Emits `Bonded`. + /// + /// ## Complexity + /// - Independent of the arguments. Insignificant complexity. + /// - O(1). + #[pallet::call_index(1)] + #[pallet::weight(::WeightInfo::bond_extra())] + pub fn bond_extra( + origin: OriginFor, + #[pallet::compact] max_additional: BalanceOf, + ) -> DispatchResult { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + + let stash = ensure_signed(origin)?; + + let controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + + let stash_balance = T::Currency::free_balance(&stash); + if let Some(extra) = stash_balance.checked_sub(&ledger.total) { + let extra = extra.min(max_additional); + ledger.total += extra; + ledger.active += extra; + // Last check: the new active amount of ledger must be more than ED. + ensure!( + ledger.active >= T::Currency::minimum_balance(), + Error::::InsufficientValue + ); + + // NOTE: ledger must be updated prior to calling `Self::weight_of`. + Self::update_ledger(&controller, &ledger); + + // Polymesh Change: Add `stash`'s DID to event. + // ----------------------------------------------------------------- + let did = Context::current_identity::().unwrap_or_default(); + Self::deposit_event(Event::::Bonded(did, stash.clone(), extra)); + // ----------------------------------------------------------------- + } + Ok(()) + } + + /// Schedule a portion of the stash to be unlocked ready for transfer out after the bond + /// period ends. If this leaves an amount actively bonded less than + /// T::Currency::minimum_balance(), then it is increased to the full amount. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// Once the unlock period is done, you can call `withdraw_unbonded` to actually move + /// the funds out of management ready for transfer. + /// + /// No more than a limited number of unlocking chunks (see `MaxUnlockingChunks`) + /// can co-exists at the same time. If there are no unlocking chunks slots available + /// [`Call::withdraw_unbonded`] is called to remove some of the chunks (if possible). + /// + /// If a user encounters the `InsufficientBond` error when calling this extrinsic, + /// they should call `chill` first in order to free up their bonded funds. + /// + /// Emits `Unbonded`. + /// + /// See also [`Call::withdraw_unbonded`]. + #[pallet::call_index(2)] + #[pallet::weight(::WeightInfo::unbond())] + pub fn unbond( + origin: OriginFor, + #[pallet::compact] value: BalanceOf, + ) -> DispatchResult { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + + let controller = ensure_signed(origin)?; + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + + ensure!( + ledger.unlocking.len() < T::MaxUnlockingChunks::get() as usize, + Error::::NoMoreChunks, + ); + + if Validators::::contains_key(&ledger.stash) { + ensure!( + ledger.active.saturating_sub(value) >= >::get(), + Error::::InvalidValidatorUnbondAmount + ); + } + + Self::unbond_balance(controller, &mut ledger, value)?; + Ok(()) + } + + /// Remove any unlocked chunks from the `unlocking` queue from our management. + /// + /// This essentially frees up that balance to be used by the stash account to do + /// whatever it wants. + /// + /// The dispatch origin for this call must be _Signed_ by the controller. + /// + /// Emits `Withdrawn`. + /// + /// See also [`Call::unbond`]. + /// + /// ## Complexity + /// O(S) where S is the number of slashing spans to remove + /// NOTE: Weight annotation is the kill scenario, we refund otherwise. + #[pallet::call_index(3)] + #[pallet::weight(::WeightInfo::withdraw_unbonded_kill(*num_slashing_spans))] + pub fn withdraw_unbonded( + origin: OriginFor, + num_slashing_spans: u32, + ) -> DispatchResultWithPostInfo { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + let controller = ensure_signed(origin)?; + + let actual_weight = Self::do_withdraw_unbonded(&controller, num_slashing_spans)?; + Ok(actual_weight) + } + + /// Declare the desire to validate for the origin controller. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + #[pallet::call_index(4)] + #[pallet::weight(::WeightInfo::validate())] + pub fn validate(origin: OriginFor, prefs: ValidatorPrefs) -> DispatchResult { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + let controller = ensure_signed(origin)?; + + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + + ensure!( + ledger.active >= Self::min_bond_threshold(), + Error::::InsufficientValue + ); + let stash = &ledger.stash; + + // ensure their commission is correct. + ensure!( + prefs.commission <= Self::validator_commission_cap(), + Error::::InvalidValidatorCommission + ); + + // Polymesh Change: Make sure stash has valid permissioned identity. + // ----------------------------------------------------------------- + let stash_identity = + >::get_identity(stash).ok_or(Error::::StashIdentityDoesNotExist)?; + let mut stash_did_preferences = Self::permissioned_identity(stash_identity) + .ok_or(Error::::StashIdentityNotPermissioned)?; + + // Only check limits if they are not already a validator. + if !Validators::::contains_key(stash) { + // Ensure identity doesn't run more validators than the intended count. + ensure!( + stash_did_preferences.running_count < stash_did_preferences.intended_count, + Error::::HitIntendedValidatorCount + ); + stash_did_preferences.running_count += 1; + >::add_account_key_ref_count(&stash); + } + PermissionedIdentity::::insert(stash_identity, stash_did_preferences); + // ----------------------------------------------------------------- + + Self::do_remove_nominator(stash); + Self::do_add_validator(stash, prefs.clone()); + + Ok(()) + } + + /// Declare the desire to nominate `targets` for the origin controller. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// ## Complexity + /// - The transaction's complexity is proportional to the size of `targets` (N) + /// which is capped at CompactAssignments::LIMIT (T::MaxNominations). + /// - Both the reads and writes follow a similar pattern. + #[pallet::call_index(5)] + #[pallet::weight(::WeightInfo::nominate(targets.len() as u32))] + pub fn nominate( + origin: OriginFor, + targets: Vec>, + ) -> DispatchResult { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + let controller = ensure_signed(origin)?; + + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let stash = &ledger.stash; + + ensure!(!targets.is_empty(), Error::::EmptyTargets); + ensure!( + targets.len() <= T::MaxNominations::get() as usize, + Error::::TooManyTargets + ); + + let old = Nominators::::get(stash).map_or_else(Vec::new, |x| x.targets.into_inner()); + + let targets: BoundedVec<_, _> = targets + .into_iter() + .map(|t| T::Lookup::lookup(t).map_err(DispatchError::from)) + .map(|n| { + n.and_then(|n| { + if old.contains(&n) || !Validators::::get(&n).blocked { + Ok(n) + } else { + Err(Error::::BadTarget.into()) + } + }) + }) + .collect::, _>>()? + .try_into() + .map_err(|_| Error::::TooManyNominators)?; + + // Polymesh Change: Gets Nominator DID and make sure it has a CDD claim + // ----------------------------------------------------------------- + let nominator_identity = + >::get_identity(stash).ok_or(Error::::StashIdentityDoesNotExist)?; + ensure!( + >::fetch_cdd( + nominator_identity, + (Self::get_bonding_duration_period() as u32).into() + ) + .is_some(), + Error::::StashIdentityNotCDDed, + ); + + Self::release_running_validator(&stash); + Self::deposit_event(Event::::Nominated( + nominator_identity, + stash.clone(), + targets.to_vec(), + )); + // ----------------------------------------------------------------- + + let nominations = Nominations { + targets, + // Initial nominations are considered submitted at era 0. See `Nominations` doc. + submitted_in: Self::current_era().unwrap_or(0), + suppressed: false, + }; + + Self::do_remove_validator(stash); + Self::do_add_nominator(stash, nominations); + Ok(()) + } + + /// Declare no desire to either validate or nominate. + /// + /// Effects will be felt at the beginning of the next era. + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// ## Complexity + /// - Independent of the arguments. Insignificant complexity. + /// - Contains one read. + /// - Writes are limited to the `origin` account key. + #[pallet::call_index(6)] + #[pallet::weight(::WeightInfo::chill())] + pub fn chill(origin: OriginFor) -> DispatchResult { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + let controller = ensure_signed(origin)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + Self::chill_stash(&ledger.stash); + Ok(()) + } + + /// (Re-)set the payment target for a controller. + /// + /// Effects will be felt instantly (as soon as this function is completed successfully). + /// + /// The dispatch origin for this call must be _Signed_ by the controller, not the stash. + /// + /// ## Complexity + /// - O(1) + /// - Independent of the arguments. Insignificant complexity. + /// - Contains a limited number of reads. + /// - Writes are limited to the `origin` account key. + /// --------- + #[pallet::call_index(7)] + #[pallet::weight(::WeightInfo::set_payee())] + pub fn set_payee( + origin: OriginFor, + payee: RewardDestination, + ) -> DispatchResult { + let controller = ensure_signed(origin)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let stash = &ledger.stash; + >::insert(stash, payee); + Ok(()) + } + + /// (Re-)set the controller of a stash. + /// + /// Effects will be felt instantly (as soon as this function is completed successfully). + /// + /// The dispatch origin for this call must be _Signed_ by the stash, not the controller. + /// + /// ## Complexity + /// O(1) + /// - Independent of the arguments. Insignificant complexity. + /// - Contains a limited number of reads. + /// - Writes are limited to the `origin` account key. + #[pallet::call_index(8)] + #[pallet::weight(::WeightInfo::set_controller())] + pub fn set_controller( + origin: OriginFor, + controller: AccountIdLookupOf, + ) -> DispatchResult { + let stash = ensure_signed(origin)?; + let old_controller = Self::bonded(&stash).ok_or(Error::::NotStash)?; + let controller = T::Lookup::lookup(controller)?; + if >::contains_key(&controller) { + return Err(Error::::AlreadyPaired.into()); + } + if controller != old_controller { + >::insert(&stash, &controller); + if let Some(l) = >::take(&old_controller) { + >::insert(&controller, l); + } + } + Ok(()) + } + + /// Sets the ideal number of validators. + /// + /// The dispatch origin must be Root. + /// + /// ## Complexity + /// O(1) + #[pallet::call_index(9)] + #[pallet::weight(::WeightInfo::set_validator_count(*new))] + pub fn set_validator_count( + origin: OriginFor, + #[pallet::compact] new: u32, + ) -> DispatchResult { + ensure_root(origin)?; + ValidatorCount::::put(new); + Ok(()) + } + + /// Increments the ideal number of validators upto maximum of + /// `ElectionProviderBase::MaxWinners`. + /// + /// The dispatch origin must be Root. + /// + /// ## Complexity + /// Same as [`Self::set_validator_count`]. + #[pallet::call_index(10)] + #[pallet::weight(::WeightInfo::increase_validator_count())] + pub fn increase_validator_count( + origin: OriginFor, + #[pallet::compact] additional: u32, + ) -> DispatchResult { + ensure_root(origin)?; + let old = ValidatorCount::::get(); + let new = old + .checked_add(additional) + .ok_or(ArithmeticError::Overflow)?; + ValidatorCount::::put(new); + Ok(()) + } + + /// Scale up the ideal number of validators by a factor upto maximum of + /// `ElectionProviderBase::MaxWinners`. + /// + /// The dispatch origin must be Root. + /// + /// ## Complexity + /// Same as [`Self::set_validator_count`]. + #[pallet::call_index(11)] + #[pallet::weight(::WeightInfo::scale_validator_count())] + pub fn scale_validator_count(origin: OriginFor, factor: Percent) -> DispatchResult { + ensure_root(origin)?; + let old = ValidatorCount::::get(); + let new = old + .checked_add(factor.mul_floor(old)) + .ok_or(ArithmeticError::Overflow)?; + ValidatorCount::::put(new); + Ok(()) + } + + /// Scale up the ideal number of validators by a factor upto maximum of + /// `ElectionProviderBase::MaxWinners`. + /// + /// The dispatch origin must be Root. + /// + /// ## Complexity + /// Same as [`Self::set_validator_count`]. + #[pallet::call_index(12)] + #[pallet::weight(::WeightInfo::add_permissioned_validator())] + pub fn add_permissioned_validator( + origin: OriginFor, + identity: IdentityId, + intended_count: Option, + ) -> DispatchResult { + T::RequiredAddOrigin::ensure_origin(origin)?; + ensure!( + Self::permissioned_identity(&identity).is_none(), + Error::::AlreadyExists + ); + // Validate the cdd status of the identity. + ensure!( + >::has_valid_cdd(identity), + Error::::InvalidValidatorIdentity + ); + let preferences = match intended_count { + Some(intended_count) => { + // Maximum allowed validator count is always less than the `MaxValidatorPerIdentity of validator_count()`. + ensure!( + intended_count < Self::get_allowed_validator_count(), + Error::::IntendedCountIsExceedingConsensusLimit + ); + PermissionedIdentityPrefs::new(intended_count) + } + None => PermissionedIdentityPrefs::default(), + }; + + // Change identity status to be Permissioned + PermissionedIdentity::::insert(&identity, preferences); + Self::deposit_event(Event::::PermissionedIdentityAdded(GC_DID, identity)); + Ok(()) + } + + /// Remove an identity from the pool of (wannabe) validator identities. Effects are known in the next session. + /// Staking module checks `PermissionedIdentity` to ensure validators have + /// completed KYB compliance + /// + /// # Arguments + /// * origin Required origin for removing a potential validator. + /// * identity Validator's IdentityId. + #[pallet::call_index(13)] + #[pallet::weight(::WeightInfo::remove_permissioned_validator())] + pub fn remove_permissioned_validator( + origin: OriginFor, + identity: IdentityId, + ) -> DispatchResult { + T::RequiredRemoveOrigin::ensure_origin(origin)?; + ensure!( + Self::permissioned_identity(&identity).is_some(), + Error::::NotExists + ); + // Change identity status to be Non-Permissioned + PermissionedIdentity::::remove(&identity); + + Self::deposit_event(Event::::PermissionedIdentityRemoved(GC_DID, identity)); + Ok(()) + } + + /// Validate the nominators CDD expiry time. + /// + /// If an account from a given set of address is nominating then check the CDD expiry time + /// of it and if it is expired then the account should be unbonded and removed from the + /// nominating process. + #[pallet::call_index(14)] + #[pallet::weight(1_000_000_000)] + pub fn validate_cdd_expiry_nominators( + origin: OriginFor, + targets: Vec, + ) -> DispatchResult { + ensure_root(origin.clone())?; + + let mut expired_nominators = Vec::new(); + ensure!(!targets.is_empty(), "targets cannot be empty"); + // Iterate provided list of accountIds (These accountIds should be stash type account). + for target in targets + .iter() + // Nominator must be vouching for someone. + .filter(|target| Self::nominators(target).is_some()) + // Access the DIDs of the nominators whose CDDs have expired. + .filter(|target| { + // Fetch all the claim values provided by the trusted service providers + // There is a possibility that nominator will have more than one claim for the same key, + // So we iterate all of them and if any one of the claim value doesn't expire then nominator posses + // valid CDD otherwise it will be removed from the pool of the nominators. + // If the target has no DID, it's also removed. + >::get_identity(&target) + .filter(|did| >::has_valid_cdd(*did)) + .is_none() + }) + { + // Un-bonding the balance that bonded with the controller account of a Stash account + // This unbonded amount only be accessible after completion of the BondingDuration + // Controller account need to call the dispatchable function `withdraw_unbond` to withdraw fund. + + let controller = Self::bonded(target).ok_or(Error::::NotStash)?; + let mut ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + let active_balance = ledger.active; + if ledger.unlocking.len() < T::MaxUnlockingChunks::get() as usize { + Self::unbond_balance(controller, &mut ledger, active_balance)?; + + expired_nominators.push(target.clone()); + // Free the nominator from the valid nominator list + >::remove(target); + } + } + Self::deposit_event(Event::::InvalidatedNominators( + GC_DID, + GC_PALLET_ID.into_account_truncating(), + expired_nominators, + )); + Ok(()) + } + + /// Changes commission rate which applies to all validators. Only Governance + /// committee is allowed to change this value. + /// + /// # Arguments + /// * `new_cap` the new commission cap. + #[pallet::call_index(15)] + #[pallet::weight((::WeightInfo::set_commission_cap(MAX_ALLOWED_VALIDATORS), Operational, Pays::Yes))] + pub fn set_commission_cap(origin: OriginFor, new_cap: Perbill) -> DispatchResult { + T::RequiredCommissionOrigin::ensure_origin(origin.clone())?; + + // Update the cap, assuming it changed, or error. + let old_cap = + ValidatorCommissionCap::::try_mutate(|cap| -> Result<_, DispatchError> { + ensure!(*cap != new_cap, Error::::NoChange); + Ok(core::mem::replace(cap, new_cap)) + })?; + + // Update `commission` in each validator prefs to `min(comission, new_cap)`. + >::translate(|_, mut prefs: ValidatorPrefs| { + prefs.commission = prefs.commission.min(new_cap); + Some(prefs) + }); + + Self::deposit_event(Event::::CommissionCapUpdated(GC_DID, old_cap, new_cap)); + Ok(()) + } + + /// Changes commission rate which applies to all validators. Only Governance + /// committee is allowed to change this value. + /// + /// # Arguments + /// * `new_cap` the new commission cap. + #[pallet::call_index(16)] + #[pallet::weight((::WeightInfo::set_min_bond_threshold(), Operational, Pays::Yes))] + pub fn set_min_bond_threshold( + origin: OriginFor, + new_value: BalanceOf, + ) -> DispatchResult { + T::RequiredCommissionOrigin::ensure_origin(origin.clone())?; + >::put(new_value); + Self::deposit_event(Event::::MinimumBondThresholdUpdated( + Some(GC_DID), + new_value, + )); + Ok(()) + } + + /// Force there to be no new eras indefinitely. + /// + /// The dispatch origin must be Root. + /// + /// # Warning + /// + /// The election process starts multiple blocks before the end of the era. + /// Thus the election process may be ongoing when this is called. In this case the + /// election will continue until the next era is triggered. + /// + /// ## Complexity + /// - No arguments. + /// - Weight: O(1) + #[pallet::call_index(17)] + #[pallet::weight(::WeightInfo::force_no_eras())] + pub fn force_no_eras(origin: OriginFor) -> DispatchResult { + ensure_root(origin)?; + Self::set_force_era(Forcing::ForceNone); + Ok(()) + } + + /// Force there to be a new era at the end of the next session. After this, it will be + /// reset to normal (non-forced) behaviour. + /// + /// The dispatch origin must be Root. + /// + /// # Warning + /// + /// The election process starts multiple blocks before the end of the era. + /// If this is called just before a new era is triggered, the election process may not + /// have enough blocks to get a result. + /// + /// ## Complexity + /// - No arguments. + /// - Weight: O(1) + #[pallet::call_index(18)] + #[pallet::weight(::WeightInfo::force_new_era())] + pub fn force_new_era(origin: OriginFor) -> DispatchResult { + ensure_root(origin)?; + Self::set_force_era(Forcing::ForceNew); + Ok(()) + } + + /// Set the validators who cannot be slashed (if any). + /// + /// The dispatch origin must be Root. + #[pallet::call_index(19)] + #[pallet::weight(::WeightInfo::set_invulnerables(invulnerables.len() as u32))] + pub fn set_invulnerables( + origin: OriginFor, + invulnerables: Vec, + ) -> DispatchResult { + ensure_root(origin)?; + >::put(invulnerables); + Ok(()) + } + + /// Force a current staker to become completely unstaked, immediately. + /// + /// The dispatch origin must be Root. + #[pallet::call_index(20)] + #[pallet::weight(::WeightInfo::force_unstake(*num_slashing_spans))] + pub fn force_unstake( + origin: OriginFor, + stash: T::AccountId, + num_slashing_spans: u32, + ) -> DispatchResult { + ensure_root(origin)?; + + // Remove all staking-related information. + Self::kill_stash(&stash, num_slashing_spans)?; + + // Remove the lock. + T::Currency::remove_lock(STAKING_ID, &stash); + Ok(()) + } + + /// Force there to be a new era at the end of sessions indefinitely. + /// + /// The dispatch origin must be Root. + /// + /// # Warning + /// + /// The election process starts multiple blocks before the end of the era. + /// If this is called just before a new era is triggered, the election process may not + /// have enough blocks to get a result. + #[pallet::call_index(21)] + #[pallet::weight(::WeightInfo::force_new_era_always())] + pub fn force_new_era_always(origin: OriginFor) -> DispatchResult { + ensure_root(origin)?; + Self::set_force_era(Forcing::ForceAlways); + Ok(()) + } + + /// Cancel enactment of a deferred slash. + /// + /// Can be called by the `T::AdminOrigin`. + /// + /// Parameters: era and indices of the slashes for that era to kill. + #[pallet::call_index(22)] + #[pallet::weight(::WeightInfo::cancel_deferred_slash(slash_indices.len() as u32))] + pub fn cancel_deferred_slash( + origin: OriginFor, + era: EraIndex, + slash_indices: Vec, + ) -> DispatchResult { + T::SlashCancelOrigin::ensure_origin(origin)?; + + ensure!(!slash_indices.is_empty(), Error::::EmptyTargets); + ensure!( + is_sorted_and_unique(&slash_indices), + Error::::NotSortedAndUnique + ); + + let mut unapplied = ::UnappliedSlashes::get(&era); + let last_item = slash_indices[slash_indices.len() - 1]; + ensure!( + (last_item as usize) < unapplied.len(), + Error::::InvalidSlashIndex + ); + + for (removed, index) in slash_indices.into_iter().enumerate() { + let index = (index as usize) - removed; + unapplied.remove(index); + } + + ::UnappliedSlashes::insert(&era, &unapplied); + Ok(()) + } + + /// Pay out all the stakers behind a single validator for a single era. + /// + /// - `validator_stash` is the stash account of the validator. Their nominators, up to + /// `T::MaxNominatorRewardedPerValidator`, will also receive their rewards. + /// - `era` may be any era between `[current_era - history_depth; current_era]`. + /// + /// The origin of this call must be _Signed_. Any account can call this function, even if + /// it is not one of the stakers. + /// + /// ## Complexity + /// - At most O(MaxNominatorRewardedPerValidator). + #[pallet::call_index(23)] + #[pallet::weight(::WeightInfo::payout_stakers(T::MaxNominatorRewardedPerValidator::get() as u32))] + pub fn payout_stakers( + origin: OriginFor, + validator_stash: T::AccountId, + era: EraIndex, + ) -> DispatchResult { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + ensure_signed(origin)?; + Self::do_payout_stakers(validator_stash, era) + } + + /// Rebond a portion of the stash scheduled to be unlocked. + /// + /// The dispatch origin must be signed by the controller. + /// + /// ## Complexity + /// - Time complexity: O(L), where L is unlocking chunks + /// - Bounded by `MaxUnlockingChunks`. + #[pallet::call_index(24)] + #[pallet::weight(::WeightInfo::rebond(T::MaxUnlockingChunks::get()))] + pub fn rebond( + origin: OriginFor, + #[pallet::compact] value: BalanceOf, + ) -> DispatchResultWithPostInfo { + // Polymesh Change: + // ----------------------------------------------------------------- + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + // ----------------------------------------------------------------- + let controller = ensure_signed(origin)?; + let ledger = Self::ledger(&controller).ok_or(Error::::NotController)?; + ensure!(!ledger.unlocking.is_empty(), Error::::NoUnlockChunk); + + let (ledger, _rebonded_value) = ledger.rebond(value); + // Last check: the new active amount of ledger must be more than ED. + ensure!( + ledger.active >= T::Currency::minimum_balance(), + Error::::InsufficientValue + ); + + // NOTE: ledger must be updated prior to calling `Self::weight_of`. + Self::update_ledger(&controller, &ledger); + + Ok(Some( + Weight::from_ref_time( + 35u64 * WEIGHT_REF_TIME_PER_MICROS + + 50u64 * WEIGHT_REF_TIME_PER_NANOS * (ledger.unlocking.len() as u64), + ) + T::DbWeight::get().reads_writes(3, 2), + ) + .into()) + } + + /// Rebond a portion of the stash scheduled to be unlocked. + /// + /// The dispatch origin must be signed by the controller. + /// + /// ## Complexity + /// - Time complexity: O(L), where L is unlocking chunks + /// - Bounded by `MaxUnlockingChunks`. + #[pallet::call_index(25)] + #[pallet::weight(::WeightInfo::set_history_depth(*_era_items_deleted))] + pub fn set_history_depth( + origin: OriginFor, + #[pallet::compact] new_history_depth: EraIndex, + #[pallet::compact] _era_items_deleted: u32, + ) -> DispatchResult { + ensure_root(origin)?; + if let Some(current_era) = Self::current_era() { + HistoryDepth::::mutate(|history_depth| { + let last_kept = current_era.checked_sub(*history_depth).unwrap_or(0); + let new_last_kept = current_era.checked_sub(new_history_depth).unwrap_or(0); + for era_index in last_kept..new_last_kept { + Self::clear_era_information(era_index); + } + *history_depth = new_history_depth + }) + } + Ok(()) + } + + /// Remove all data structures concerning a staker/stash once it is at a state where it can + /// be considered `dust` in the staking system. The requirements are: + /// + /// 1. the `total_balance` of the stash is below existential deposit. + /// 2. or, the `ledger.total` of the stash is below existential deposit. + /// + /// The former can happen in cases like a slash; the latter when a fully unbonded account + /// is still receiving staking rewards in `RewardDestination::Staked`. + /// + /// It can be called by anyone, as long as `stash` meets the above requirements. + /// + /// Refunds the transaction fees upon successful execution. + #[pallet::call_index(26)] + #[pallet::weight(::WeightInfo::reap_stash(*num_slashing_spans))] + pub fn reap_stash( + _origin: OriginFor, + stash: T::AccountId, + num_slashing_spans: u32, + ) -> DispatchResult { + ensure!( + T::Currency::total_balance(&stash) == T::Currency::minimum_balance(), + Error::::FundedTarget + ); + Self::kill_stash(&stash, num_slashing_spans)?; + T::Currency::remove_lock(STAKING_ID, &stash); + Ok(()) + } + + /// Submit an election result to the chain. If the solution: + /// + /// 1. is valid. + /// 2. has a better score than a potentially existing solution on chain. + /// + /// then, it will be _put_ on chain. + /// + /// A solution consists of two pieces of data: + /// + /// 1. `winners`: a flat vector of all the winners of the round. + /// 2. `assignments`: the compact version of an assignment vector that encodes the edge + /// weights. + /// + /// Both of which may be computed using _phragmen_, or any other algorithm. + /// + /// Additionally, the submitter must provide: + /// + /// - The `score` that they claim their solution has. + /// + /// Both validators and nominators will be represented by indices in the solution. The + /// indices should respect the corresponding types ([`ValidatorIndex`] and + /// [`NominatorIndex`]). Moreover, they should be valid when used to index into + /// [`SnapshotValidators`] and [`SnapshotNominators`]. Any invalid index will cause the + /// solution to be rejected. These two storage items are set during the election window and + /// may be used to determine the indices. + /// + /// A solution is valid if: + /// + /// 0. It is submitted when [`EraElectionStatus`] is `Open`. + /// 1. Its claimed score is equal to the score computed on-chain. + /// 2. Presents the correct number of winners. + /// 3. All indexes must be value according to the snapshot vectors. All edge values must + /// also be correct and should not overflow the granularity of the ratio type (i.e. 256 + /// or billion). + /// 4. For each edge, all targets are actually nominated by the voter. + /// 5. Has correct self-votes. + /// + /// A solutions score is consisted of 3 parameters: + /// + /// 1. `min { support.total }` for each support of a winner. This value should be maximized. + /// 2. `sum { support.total }` for each support of a winner. This value should be minimized. + /// 3. `sum { support.total^2 }` for each support of a winner. This value should be + /// minimized (to ensure less variance) + /// + /// # + /// The transaction is assumed to be the longest path, a better solution. + /// - Initial solution is almost the same. + /// - Worse solution is retraced in pre-dispatch-checks which sets its own weight. + /// # + #[pallet::call_index(27)] + #[pallet::weight((T::OffchainSolutionWeightLimit::get(), Operational))] + pub fn submit_election_solution( + origin: OriginFor, + winners: Vec, + compact: CompactAssignments, + score: ElectionScore, + era: EraIndex, + size: ElectionSize, + ) -> DispatchResultWithPostInfo { + let _ = ensure_signed(origin)?; + Self::check_and_replace_solution( + winners, + compact, + ElectionCompute::Signed, + score, + era, + size, + ) + } + + /// Unsigned version of `submit_election_solution`. + /// + /// Note that this must pass the [`ValidateUnsigned`] check which only allows transactions + /// from the local node to be included. In other words, only the block author can include a + /// transaction in the block. + /// + /// # + /// See [`submit_election_solution`]. + /// # + #[pallet::call_index(28)] + #[pallet::weight((T::OffchainSolutionWeightLimit::get(), Operational))] + pub fn submit_election_solution_unsigned( + origin: OriginFor, + winners: Vec, + compact: CompactAssignments, + score: ElectionScore, + era: EraIndex, + size: ElectionSize, + ) -> DispatchResultWithPostInfo { + ensure_none(origin)?; + let adjustments = Self::check_and_replace_solution( + winners, + compact, + ElectionCompute::Unsigned, + score, + era, + size, + ) + .expect( + "An unsigned solution can only be submitted by validators; A validator should \ + always produce correct solutions, else this block should not be imported, thus \ + effectively depriving the validators from their authoring reward. Hence, this panic + is expected.", + ); + + Ok(adjustments) + } + + #[pallet::call_index(29)] + #[pallet::weight(::WeightInfo::payout_stakers(T::MaxNominatorRewardedPerValidator::get() as u32))] + pub fn payout_stakers_by_system( + origin: OriginFor, + validator_stash: T::AccountId, + era: EraIndex, + ) -> DispatchResult { + ensure!( + Self::era_election_status().is_closed(), + Error::::CallNotAllowed + ); + ensure_root(origin)?; + Self::do_payout_stakers(validator_stash, era) + } + + /// Switch slashing status on the basis of given `SlashingSwitch`. Can only be called by root. + /// + /// # Arguments + /// * origin - AccountId of root. + /// * slashing_switch - Switch used to set the targets for s + #[pallet::call_index(30)] + #[pallet::weight(::WeightInfo::change_slashing_allowed_for())] + pub fn change_slashing_allowed_for( + origin: OriginFor, + slashing_switch: SlashingSwitch, + ) -> DispatchResult { + // Ensure origin should be root. + ensure_root(origin)?; + SlashingAllowedFor::::put(slashing_switch); + Self::deposit_event(Event::::SlashingAllowedForChanged(slashing_switch)); + Ok(()) + } + + /// Update the intended validator count for a given DID. + /// + /// # Arguments + /// * origin which must be the required origin for adding a potential validator. + /// * identity to add as a validator. + /// * new_intended_count New value of intended co + #[pallet::call_index(31)] + #[pallet::weight(::WeightInfo::update_permissioned_validator_intended_count())] + pub fn update_permissioned_validator_intended_count( + origin: OriginFor, + identity: IdentityId, + new_intended_count: u32, + ) -> DispatchResult { + T::RequiredAddOrigin::ensure_origin(origin)?; + ensure!( + Self::get_allowed_validator_count() > new_intended_count, + Error::::IntendedCountIsExceedingConsensusLimit + ); + PermissionedIdentity::::try_mutate(&identity, |pref| { + pref.as_mut() + .ok_or_else(|| Error::::NotExists.into()) + .map(|p| p.intended_count = new_intended_count) + }) + } + + /// GC forcefully chills a validator. + /// Effects will be felt at the beginning of the next era. + /// And, it can be only called when [`EraElectionStatus`] is `Closed`. + /// + /// # Arguments + /// * origin which must be a GC. + /// * identity must be permissioned to run operator/validator nodes. + /// * stash_keys contains the secondary keys of the permissioned identity + /// + /// # Errors + /// * `BadOrigin` The origin was not a GC member. + /// * `CallNotAllowed` The call is not allowed at the given time due to restrictions of election period. + /// * `NotExists` Permissioned validator doesn't exist. + /// * `NotStash` Not a stash account for the permissioned i + #[pallet::call_index(32)] + #[pallet::weight(::WeightInfo::chill_from_governance(stash_keys.len() as u32))] + pub fn chill_from_governance( + origin: OriginFor, + identity: IdentityId, + stash_keys: Vec, + ) -> DispatchResult { + Self::base_chill_from_governance(origin, identity, stash_keys) + } + } + + #[pallet::validate_unsigned] + impl ValidateUnsigned for Pallet { + type Call = Call; + + fn validate_unsigned(source: TransactionSource, call: &Self::Call) -> TransactionValidity { + Self::validate_unsigned_call(source, call) + } + + fn pre_dispatch(call: &Self::Call) -> Result<(), TransactionValidityError> { + Self::pre_dispatch_call(call) + } + } +} + +/// Check that list is sorted and has no duplicates. +fn is_sorted_and_unique(list: &[u32]) -> bool { + list.windows(2).all(|w| w[0] < w[1]) +} diff --git a/pallets/staking/src/rustfmt.toml b/pallets/staking/src/rustfmt.toml deleted file mode 100644 index c7ad93bafe..0000000000 --- a/pallets/staking/src/rustfmt.toml +++ /dev/null @@ -1 +0,0 @@ -disable_all_formatting = true diff --git a/pallets/staking/src/slashing.rs b/pallets/staking/src/slashing.rs index 03e6d77bd6..429350ec8f 100644 --- a/pallets/staking/src/slashing.rs +++ b/pallets/staking/src/slashing.rs @@ -1,6 +1,6 @@ // This file is part of Substrate. -// Copyright (C) 2019-2021 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); @@ -47,21 +47,26 @@ //! has multiple misbehaviors. However, accounting for such cases is necessary //! to deter a class of "rage-quit" attacks. //! -//! Based on research at +//! Based on research at -use super::{ - EraIndex, Config, Module, Store, BalanceOf, Exposure, Perbill, SessionInterface, - NegativeImbalanceOf, UnappliedSlash, Error, - SlashingSwitch, +use crate::{ + BalanceOf, Config, Error, Exposure, NegativeImbalanceOf, Pallet, Perbill, SessionInterface, + Store, UnappliedSlash, }; -use scale_info::TypeInfo; -use sp_runtime::{traits::{Zero, Saturating}, RuntimeDebug, DispatchResult}; +use codec::{Decode, Encode, MaxEncodedLen}; use frame_support::{ - StorageValue, StorageMap, StorageDoubleMap, ensure, + ensure, traits::{Currency, Get, Imbalance, OnUnbalanced}, }; +use scale_info::TypeInfo; +use sp_runtime::{ + traits::{Saturating, Zero}, + DispatchResult, RuntimeDebug, +}; use sp_std::vec::Vec; -use codec::{Encode, Decode}; + +use crate::types::SlashingSwitch; +use crate::EraIndex; /// The proportion of the slashing reward to be paid out on the first slashing detection. /// This is f_1 in the paper. @@ -120,7 +125,9 @@ impl SlashingSpans { // that internal state is unchanged. pub(crate) fn end_span(&mut self, now: EraIndex) -> bool { let next_start = now + 1; - if next_start <= self.last_start { return false } + if next_start <= self.last_start { + return false; + } let last_length = next_start - self.last_start; self.prior.insert(0, last_length); @@ -133,13 +140,21 @@ impl SlashingSpans { pub fn iter(&'_ self) -> impl Iterator + '_ { let mut last_start = self.last_start; let mut index = self.span_index; - let last = SlashingSpan { index, start: last_start, length: None }; + let last = SlashingSpan { + index, + start: last_start, + length: None, + }; let prior = self.prior.iter().cloned().map(move |length| { let start = last_start - length; last_start = start; index -= 1; - SlashingSpan { index, start, length: Some(length) } + SlashingSpan { + index, + start, + length: Some(length), + } }); sp_std::iter::once(last).chain(prior) @@ -155,9 +170,13 @@ impl SlashingSpans { // If this returns `Some`, then it includes a range start..end of all the span // indices which were pruned. fn prune(&mut self, window_start: EraIndex) -> Option<(SpanIndex, SpanIndex)> { - let old_idx = self.iter() + let old_idx = self + .iter() .skip(1) // skip ongoing span. - .position(|span| span.length.map_or(false, |len| span.start + len <= window_start)); + .position(|span| { + span.length + .map_or(false, |len| span.start + len <= window_start) + }); let earliest_span_index = self.span_index - self.prior.len() as SpanIndex; let pruned = match old_idx { @@ -176,7 +195,7 @@ impl SlashingSpans { } /// A slashing-span record for a particular stash. -#[derive(Encode, Decode, Default, TypeInfo)] +#[derive(Encode, Decode, Default, TypeInfo, MaxEncodedLen)] pub struct SpanRecord { slashed: Balance, paid_out: Balance, @@ -184,7 +203,7 @@ pub struct SpanRecord { impl SpanRecord { /// The value of stash balance slashed in this span. - pub fn amount_slashed(&self) -> &Balance { + pub fn amount(&self) -> &Balance { &self.slashed } } @@ -209,51 +228,40 @@ pub(crate) struct SlashParams<'a, T: 'a + Config> { pub(crate) reward_proportion: Perbill, } -/// Polymesh-Note: Compute slashing according to the `SlashingStatus`. - /// Computes a slash of a validator and nominators. It returns an unapplied /// record to be applied at some later point. Slashing metadata is updated in storage, /// since unapplied records are only rarely intended to be dropped. /// /// The pending slash record returned does not have initialized reporters. Those have /// to be set at a higher level, if any. -pub(crate) fn compute_slash(params: SlashParams) - -> Option>> -{ - let SlashParams { - stash, - slash, - exposure, - slash_era, - window_start, - now, - reward_proportion, - } = params.clone(); - +pub(crate) fn compute_slash( + params: SlashParams, +) -> Option>> { let mut reward_payout = Zero::zero(); let mut val_slashed = Zero::zero(); // is the slash amount here a maximum for the era? - let own_slash = slash * exposure.own; - if slash * exposure.total == Zero::zero() { + let own_slash = params.slash * params.exposure.own; + if params.slash * params.exposure.total == Zero::zero() { // kick out the validator even if they won't be slashed, // as long as the misbehavior is from their most recent slashing span. kick_out_if_recent::(params); return None; } - let (prior_slash_p, _era_slash) = as Store>::ValidatorSlashInEra::get( - &slash_era, - stash, - ).unwrap_or((Perbill::zero(), Zero::zero())); + let prior_slash_p = + as Store>::ValidatorSlashInEra::get(¶ms.slash_era, params.stash) + .map_or(Zero::zero(), |(prior_slash_proportion, _)| { + prior_slash_proportion + }); // compare slash proportions rather than slash values to avoid issues due to rounding // error. - if slash.deconstruct() > prior_slash_p.deconstruct() { - as Store>::ValidatorSlashInEra::insert( - &slash_era, - stash, - &(slash, own_slash), + if params.slash.deconstruct() > prior_slash_p.deconstruct() { + as Store>::ValidatorSlashInEra::insert( + ¶ms.slash_era, + params.stash, + &(params.slash, own_slash), ); } else { // we slash based on the max in era - this new event is not the max, @@ -269,17 +277,14 @@ pub(crate) fn compute_slash(params: SlashParams) // apply slash to validator. { let mut spans = fetch_spans::( - stash, - window_start, + params.stash, + params.window_start, &mut reward_payout, &mut val_slashed, - reward_proportion, + params.reward_proportion, ); - let target_span = spans.compare_and_update_span_slash( - slash_era, - own_slash, - ); + let target_span = spans.compare_and_update_span_slash(params.slash_era, own_slash); if target_span == Some(spans.span_index()) { // misbehavior occurred within the current slashing span - take appropriate @@ -287,24 +292,24 @@ pub(crate) fn compute_slash(params: SlashParams) // chill the validator - it misbehaved in the current span and should // not continue in the next election. also end the slashing span. - spans.end_span(now); - >::chill_stash(stash); + spans.end_span(params.now); + >::chill_stash(params.stash); } } - // add the validator to the offenders list and make sure it is disabled for - // the duration of the era add_offending_validator::(params.stash, true); + // Polymesh Change: SlashingSwitch` decides whether nominator gets slashed. + // ----------------------------------------------------------------- let mut nominators_slashed = Vec::new(); - - // Polymesh-Note - `SlashingSwitch` decides whether nominator get slashed or not. - if >::slashing_allowed_for() == SlashingSwitch::ValidatorAndNominator { - reward_payout += slash_nominators::(params, prior_slash_p, &mut nominators_slashed); + if >::slashing_allowed_for() == SlashingSwitch::ValidatorAndNominator { + reward_payout += + slash_nominators::(params.clone(), prior_slash_p, &mut nominators_slashed); } + // ----------------------------------------------------------------- Some(UnappliedSlash { - validator: stash.clone(), + validator: params.stash.clone(), own: val_slashed, others: nominators_slashed, reporters: Vec::new(), @@ -314,9 +319,7 @@ pub(crate) fn compute_slash(params: SlashParams) // doesn't apply any slash, but kicks out the validator if the misbehavior is from // the most recent slashing span. -fn kick_out_if_recent( - params: SlashParams, -) { +fn kick_out_if_recent(params: SlashParams) { // these are not updated by era-span or end-span. let mut reward_payout = Zero::zero(); let mut val_slashed = Zero::zero(); @@ -330,11 +333,11 @@ fn kick_out_if_recent( if spans.era_span(params.slash_era).map(|s| s.index) == Some(spans.span_index()) { spans.end_span(params.now); - >::chill_stash(params.stash); + >::chill_stash(params.stash); } - // add the validator to the offenders list but since there's no slash being - // applied there's no need to disable the validator + // add the validator to the offenders list but since there's no slash being applied there's no + // need to disable the validator add_offending_validator::(params.stash, false); } @@ -342,12 +345,13 @@ fn kick_out_if_recent( /// If after adding the validator `OffendingValidatorsThreshold` is reached /// a new era will be forced. fn add_offending_validator(stash: &T::AccountId, disable: bool) { - as Store>::OffendingValidators::mutate(|offending| { + as Store>::OffendingValidators::mutate(|offending| { let validators = T::SessionInterface::validators(); let validator_index = match validators.iter().position(|i| i == stash) { Some(index) => index, None => return, }; + let validator_index_u32 = validator_index as u32; match offending.binary_search_by_key(&validator_index_u32, |(index, _)| *index) { @@ -360,13 +364,13 @@ fn add_offending_validator(stash: &T::AccountId, disable: bool) { if offending.len() >= offending_threshold as usize { // force a new era, to select a new validator set - >::ensure_new_era() + >::ensure_new_era() } if disable { T::SessionInterface::disable_validator(validator_index_u32); } - }, + } Ok(index) => { if disable && !offending[index].1 { // the validator had previously offended without being disabled, @@ -374,7 +378,7 @@ fn add_offending_validator(stash: &T::AccountId, disable: bool) { offending[index].1 = true; T::SessionInterface::disable_validator(validator_index_u32); } - }, + } } }); } @@ -387,20 +391,10 @@ fn slash_nominators( prior_slash_p: Perbill, nominators_slashed: &mut Vec<(T::AccountId, BalanceOf)>, ) -> BalanceOf { - let SlashParams { - stash: _, - slash, - exposure, - slash_era, - window_start, - now, - reward_proportion, - } = params; - let mut reward_payout = Zero::zero(); - nominators_slashed.reserve(exposure.others.len()); - for nominator in &exposure.others { + nominators_slashed.reserve(params.exposure.others.len()); + for nominator in ¶ms.exposure.others { let stash = &nominator.who; let mut nom_slashed = Zero::zero(); @@ -408,21 +402,14 @@ fn slash_nominators( // had a new max slash for the era. let era_slash = { let own_slash_prior = prior_slash_p * nominator.value; - let own_slash_by_validator = slash * nominator.value; + let own_slash_by_validator = params.slash * nominator.value; let own_slash_difference = own_slash_by_validator.saturating_sub(own_slash_prior); - let mut era_slash = as Store>::NominatorSlashInEra::get( - &slash_era, - stash, - ).unwrap_or_else(|| Zero::zero()); - + let mut era_slash = + as Store>::NominatorSlashInEra::get(¶ms.slash_era, stash) + .unwrap_or_else(Zero::zero); era_slash += own_slash_difference; - - as Store>::NominatorSlashInEra::insert( - &slash_era, - stash, - &era_slash, - ); + as Store>::NominatorSlashInEra::insert(¶ms.slash_era, stash, &era_slash); era_slash }; @@ -431,24 +418,19 @@ fn slash_nominators( { let mut spans = fetch_spans::( stash, - window_start, + params.window_start, &mut reward_payout, &mut nom_slashed, - reward_proportion, + params.reward_proportion, ); - let target_span = spans.compare_and_update_span_slash( - slash_era, - era_slash, - ); + let target_span = spans.compare_and_update_span_slash(params.slash_era, era_slash); if target_span == Some(spans.span_index()) { - // End the span, but don't chill the nominator. its nomination - // on this validator will be ignored in the future. - spans.end_span(now); + // end the span, but don't chill the nominator. + spans.end_span(params.now); } } - nominators_slashed.push((stash.clone(), nom_slashed)); } @@ -481,9 +463,9 @@ fn fetch_spans<'a, T: Config + 'a>( slash_of: &'a mut BalanceOf, reward_proportion: Perbill, ) -> InspectingSpans<'a, T> { - let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { + let spans = as Store>::SlashingSpans::get(stash).unwrap_or_else(|| { let spans = SlashingSpans::new(window_start); - as Store>::SlashingSpans::insert(stash, &spans); + as Store>::SlashingSpans::insert(stash, &spans); spans }); @@ -532,7 +514,7 @@ impl<'a, T: 'a + Config> InspectingSpans<'a, T> { ) -> Option { let target_span = self.era_span(slash_era)?; let span_slash_key = (self.stash.clone(), target_span.index); - let mut span_record = as Store>::SpanSlash::get(&span_slash_key); + let mut span_record = as Store>::SpanSlash::get(&span_slash_key); let mut changed = false; let reward = if span_record.slashed < slash { @@ -541,8 +523,8 @@ impl<'a, T: 'a + Config> InspectingSpans<'a, T> { span_record.slashed = slash; // compute reward. - let reward = REWARD_F1 - * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); + let reward = + REWARD_F1 * (self.reward_proportion * slash).saturating_sub(span_record.paid_out); self.add_slash(difference, slash_era); changed = true; @@ -563,7 +545,7 @@ impl<'a, T: 'a + Config> InspectingSpans<'a, T> { if changed { self.dirty = true; - as Store>::SpanSlash::insert(&span_slash_key, &span_record); + as Store>::SpanSlash::insert(&span_slash_key, &span_record); } Some(target_span.index) @@ -573,24 +555,26 @@ impl<'a, T: 'a + Config> InspectingSpans<'a, T> { impl<'a, T: 'a + Config> Drop for InspectingSpans<'a, T> { fn drop(&mut self) { // only update on disk if we slashed this account. - if !self.dirty { return } + if !self.dirty { + return; + } if let Some((start, end)) = self.spans.prune(self.window_start) { for span_index in start..end { - as Store>::SpanSlash::remove(&(self.stash.clone(), span_index)); + as Store>::SpanSlash::remove(&(self.stash.clone(), span_index)); } } - as Store>::SlashingSpans::insert(self.stash, &self.spans); + as Store>::SlashingSpans::insert(self.stash, &self.spans); } } /// Clear slashing metadata for an obsolete era. pub(crate) fn clear_era_metadata(obsolete_era: EraIndex) { #[allow(deprecated)] - as Store>::ValidatorSlashInEra::remove_prefix(&obsolete_era, None); + as Store>::ValidatorSlashInEra::remove_prefix(&obsolete_era, None); #[allow(deprecated)] - as Store>::NominatorSlashInEra::remove_prefix(&obsolete_era, None); + as Store>::NominatorSlashInEra::remove_prefix(&obsolete_era, None); } /// Clear slashing metadata for a dead account. @@ -598,14 +582,17 @@ pub(crate) fn clear_stash_metadata( stash: &T::AccountId, num_slashing_spans: u32, ) -> DispatchResult { - let spans = match as Store>::SlashingSpans::get(stash) { + let spans = match as Store>::SlashingSpans::get(stash) { None => return Ok(()), Some(s) => s, }; - ensure!(num_slashing_spans as usize >= spans.iter().count(), Error::::IncorrectSlashingSpans); + ensure!( + num_slashing_spans as usize >= spans.iter().count(), + Error::::IncorrectSlashingSpans + ); - as Store>::SlashingSpans::remove(stash); + as Store>::SlashingSpans::remove(stash); // kill slashing-span metadata for account. // @@ -613,7 +600,7 @@ pub(crate) fn clear_stash_metadata( // in that case, they may re-bond, but it would count again as span 0. Further ancient // slashes would slash into this new bond, since metadata has now been cleared. for span in spans.iter() { - as Store>::SpanSlash::remove(&(stash.clone(), span.index)); + as Store>::SpanSlash::remove(&(stash.clone(), span.index)); } Ok(()) @@ -627,13 +614,14 @@ pub fn do_slash( value: BalanceOf, reward_payout: &mut BalanceOf, slashed_imbalance: &mut NegativeImbalanceOf, + _slash_era: EraIndex, ) { - let controller = match >::bonded(stash) { - None => return, // defensive: should always exist. + let controller = match >::bonded(stash) { + None => return, Some(c) => c, }; - let mut ledger = match >::ledger(&controller) { + let mut ledger = match >::ledger(&controller) { Some(ledger) => ledger, None => return, // nothing to do. }; @@ -649,17 +637,18 @@ pub fn do_slash( *reward_payout = reward_payout.saturating_sub(missing); } - >::update_ledger(&controller, &ledger); + >::update_ledger(&controller, &ledger); // trigger the event - >::deposit_event( - super::RawEvent::Slash(stash.clone(), value) - ); + >::deposit_event(super::Event::::Slash(stash.clone(), value)); } } /// Apply a previously-unapplied slash. -pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash>) { +pub(crate) fn apply_slash( + unapplied_slash: UnappliedSlash>, + slash_era: EraIndex, +) { let mut slashed_imbalance = NegativeImbalanceOf::::zero(); let mut reward_payout = unapplied_slash.payout; @@ -668,24 +657,27 @@ pub(crate) fn apply_slash(unapplied_slash: UnappliedSlash>::slashing_allowed_for() == SlashingSwitch::ValidatorAndNominator { + // Polymesh Change: SlashingSwitch` decides whether nominator gets slashed. + // ----------------------------------------------------------------- + if >::slashing_allowed_for() == SlashingSwitch::ValidatorAndNominator { for &(ref nominator, nominator_slash) in &unapplied_slash.others { do_slash::( - &nominator, + nominator, nominator_slash, &mut reward_payout, &mut slashed_imbalance, + slash_era, ); } } + // ----------------------------------------------------------------- pay_reporters::(reward_payout, slashed_imbalance, &unapplied_slash.reporters); } - /// Apply a reward payout to some reporters, paying the rewards out of the slashed imbalance. fn pay_reporters( reward_payout: BalanceOf, @@ -696,7 +688,7 @@ fn pay_reporters( // nobody to pay out to or nothing to pay; // just treat the whole value as slashed. T::Slash::on_unbalanced(slashed_imbalance); - return + return; } // take rewards out of the slashed imbalance. @@ -725,7 +717,11 @@ mod tests { #[test] fn span_contains_era() { // unbounded end - let span = SlashingSpan { index: 0, start: 1000, length: None }; + let span = SlashingSpan { + index: 0, + start: 1000, + length: None, + }; assert!(!span.contains_era(0)); assert!(!span.contains_era(999)); @@ -734,7 +730,11 @@ mod tests { assert!(span.contains_era(10000)); // bounded end - non-inclusive range. - let span = SlashingSpan { index: 0, start: 1000, length: Some(10) }; + let span = SlashingSpan { + index: 0, + start: 1000, + length: Some(10), + }; assert!(!span.contains_era(0)); assert!(!span.contains_era(999)); @@ -756,7 +756,11 @@ mod tests { assert_eq!( spans.iter().collect::>(), - vec![SlashingSpan { index: 0, start: 1000, length: None }], + vec![SlashingSpan { + index: 0, + start: 1000, + length: None + }], ); } @@ -772,11 +776,31 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, - SlashingSpan { index: 7, start: 973, length: Some(8) }, - SlashingSpan { index: 6, start: 963, length: Some(10) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, + SlashingSpan { + index: 7, + start: 973, + length: Some(8) + }, + SlashingSpan { + index: 6, + start: 963, + length: Some(10) + }, ], ) } @@ -794,9 +818,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, ], ); @@ -804,9 +840,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, ], ); @@ -814,26 +862,42 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - SlashingSpan { index: 9, start: 990, length: Some(10) }, - SlashingSpan { index: 8, start: 981, length: Some(9) }, + SlashingSpan { + index: 10, + start: 1000, + length: None + }, + SlashingSpan { + index: 9, + start: 990, + length: Some(10) + }, + SlashingSpan { + index: 8, + start: 981, + length: Some(9) + }, ], ); assert_eq!(spans.prune(1000), Some((8, 10))); assert_eq!( spans.iter().collect::>(), - vec![ - SlashingSpan { index: 10, start: 1000, length: None }, - ], + vec![SlashingSpan { + index: 10, + start: 1000, + length: None + },], ); assert_eq!(spans.prune(2000), None); assert_eq!( spans.iter().collect::>(), - vec![ - SlashingSpan { index: 10, start: 2000, length: None }, - ], + vec![SlashingSpan { + index: 10, + start: 2000, + length: None + },], ); // now all in one shot. @@ -846,9 +910,11 @@ mod tests { assert_eq!(spans.prune(2000), Some((6, 10))); assert_eq!( spans.iter().collect::>(), - vec![ - SlashingSpan { index: 10, start: 2000, length: None }, - ], + vec![SlashingSpan { + index: 10, + start: 2000, + length: None + },], ); } @@ -866,8 +932,16 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 2, start: 11, length: None }, - SlashingSpan { index: 1, start: 10, length: Some(1) }, + SlashingSpan { + index: 2, + start: 11, + length: None + }, + SlashingSpan { + index: 1, + start: 10, + length: Some(1) + }, ], ); @@ -875,9 +949,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 3, start: 16, length: None }, - SlashingSpan { index: 2, start: 11, length: Some(5) }, - SlashingSpan { index: 1, start: 10, length: Some(1) }, + SlashingSpan { + index: 3, + start: 16, + length: None + }, + SlashingSpan { + index: 2, + start: 11, + length: Some(5) + }, + SlashingSpan { + index: 1, + start: 10, + length: Some(1) + }, ], ); @@ -886,9 +972,21 @@ mod tests { assert_eq!( spans.iter().collect::>(), vec![ - SlashingSpan { index: 3, start: 16, length: None }, - SlashingSpan { index: 2, start: 11, length: Some(5) }, - SlashingSpan { index: 1, start: 10, length: Some(1) }, + SlashingSpan { + index: 3, + start: 16, + length: None + }, + SlashingSpan { + index: 2, + start: 11, + length: Some(5) + }, + SlashingSpan { + index: 1, + start: 10, + length: Some(1) + }, ], ); } diff --git a/pallets/staking/src/testing_utils.rs b/pallets/staking/src/testing_utils.rs index 68e827e924..93b7b11c93 100644 --- a/pallets/staking/src/testing_utils.rs +++ b/pallets/staking/src/testing_utils.rs @@ -18,25 +18,28 @@ //! Testing utils for staking. Provides some common functions to setup staking state, such as //! bonding validators, nominators, and generating different types of solutions. -use crate::Module as Staking; -use crate::*; use frame_benchmarking::account; +use frame_support::ensure; +use frame_support::traits::CurrencyToVote; use frame_system::RawOrigin; -use polymesh_common_utilities::{ - benchs::{AccountIdOf, User, UserBuilder}, - TestUtilsFn, -}; -use polymesh_primitives::{AuthorizationData, Permissions, Signatory}; -use rand_chacha::{ - rand_core::{RngCore, SeedableRng}, - ChaChaRng, -}; +use rand_chacha::rand_core::{RngCore, SeedableRng}; +use rand_chacha::ChaChaRng; use sp_io::hashing::blake2_256; use sp_npos_elections::*; use sp_runtime::DispatchError; +use polymesh_common_utilities::benchs::{AccountIdOf, User, UserBuilder}; +use polymesh_common_utilities::TestUtilsFn; +use polymesh_primitives::{AuthorizationData, Permissions, Signatory}; + +use crate::types::ElectionSize; +use crate::Pallet as Staking; +use crate::*; + const SEED: u32 = 0; +type Identity = pallet_identity::Module; + /// This function removes all validators and nominators from storage. pub fn clear_validators_and_nominators() { #[allow(deprecated)] @@ -109,13 +112,13 @@ fn _create_stash_controller>>( .build("controller") }; // Attach the controller key as the secondary key to the stash. - let auth_id = >::add_auth( + let auth_id = Identity::::add_auth( stash.did(), Signatory::Account(controller.account()), AuthorizationData::JoinIdentity(Permissions::default()), None, ); - >::join_identity_as_key(controller.origin().into(), auth_id)?; + Identity::::join_identity_as_key(controller.origin().into(), auth_id)?; let controller_lookup = controller.lookup(); Staking::::bond( stash.origin().into(), @@ -226,7 +229,7 @@ pub fn create_validators_with_nominators_for_era::nominate(n_controller.origin().into(), selected_validators)?; } - ValidatorCount::put(validators); + ValidatorCount::::put(validators); Ok(validator_choosen) } @@ -247,7 +250,7 @@ pub fn get_weak_solution( >::iter().for_each(|(who, _p)| { *backing_stake_of .entry(who.clone()) - .or_insert_with(|| Zero::zero()) += >::slashable_balance_of(&who) + .or_insert_with(|| Zero::zero()) += >::slashable_balance_of(&who) }); // elect winners. We chose the.. least backed ones. @@ -257,7 +260,7 @@ pub fn get_weak_solution( .iter() .rev() .cloned() - .take(>::validator_count() as usize) + .take(>::validator_count() as usize) .collect(); let mut staked_assignments: Vec> = Vec::new(); @@ -270,7 +273,7 @@ pub fn get_weak_solution( who: w.clone(), distribution: vec![( w.clone(), - >::slashable_balance_of_vote_weight(&w, T::Currency::total_issuance()) + >::slashable_balance_of_vote_weight(&w, T::Currency::total_issuance()) .into(), )], }) @@ -281,8 +284,8 @@ pub fn get_weak_solution( } // helpers for building the compact - let snapshot_validators = >::snapshot_validators().unwrap(); - let snapshot_nominators = >::snapshot_nominators().unwrap(); + let snapshot_validators = >::snapshot_validators().unwrap(); + let snapshot_nominators = >::snapshot_nominators().unwrap(); let nominator_index = |a: &T::AccountId| -> Option { snapshot_nominators @@ -307,7 +310,7 @@ pub fn get_weak_solution( let score = { let staked = assignment_ratio_to_staked::<_, OffchainAccuracy, _>( low_accuracy_assignment.clone(), - >::slashable_balance_of_fn(), + >::weight_of_fn(), ); let support_map = to_supports::(staked.as_slice()); @@ -358,7 +361,7 @@ pub fn get_seq_phragmen_solution( let sp_npos_elections::ElectionResult { winners, assignments, - } = >::do_phragmen::(iters).unwrap(); + } = >::do_phragmen::(iters).unwrap(); offchain_election::prepare_submission::( assignments, @@ -381,8 +384,8 @@ pub fn get_single_winner_solution( ), &'static str, > { - let snapshot_validators = >::snapshot_validators().unwrap(); - let snapshot_nominators = >::snapshot_nominators().unwrap(); + let snapshot_validators = >::snapshot_validators().unwrap(); + let snapshot_nominators = >::snapshot_nominators().unwrap(); let val_index = snapshot_validators .iter() @@ -406,9 +409,9 @@ pub fn get_single_winner_solution( ..Default::default() }; let score = ElectionScore { - minimal_stake: stake, - sum_stake: stake, - sum_stake_squared: stake * stake + minimal_stake: stake, + sum_stake: stake, + sum_stake_squared: stake * stake, }; let size = ElectionSize { validators: snapshot_validators.len() as ValidatorIndex, @@ -420,12 +423,12 @@ pub fn get_single_winner_solution( /// get the active era. pub fn current_era() -> EraIndex { - >::current_era().unwrap_or(0) + >::current_era().unwrap_or(0) } /// initialize the first era. -pub fn init_active_era() { - ActiveEra::put(ActiveEraInfo { +pub fn init_active_era() { + ActiveEra::::put(ActiveEraInfo { index: 1, start: None, }) @@ -443,7 +446,7 @@ pub fn create_assignments_for_offchain( ), &'static str, > { - let ratio = OffchainAccuracy::from_rational(1, MAX_NOMINATIONS); + let ratio = OffchainAccuracy::from_rational(1, T::MaxNominations::get()); let assignments: Vec> = >::iter() .take(num_assignments as usize) .map(|(n, t)| Assignment { diff --git a/pallets/staking/src/types.rs b/pallets/staking/src/types.rs new file mode 100644 index 0000000000..4ba33e41f5 --- /dev/null +++ b/pallets/staking/src/types.rs @@ -0,0 +1,152 @@ +#[cfg(feature = "std")] +use sp_runtime::{Deserialize, Serialize}; + +use codec::{Decode, Encode, HasCompact, MaxEncodedLen}; +use scale_info::TypeInfo; +use sp_runtime::RuntimeDebug; +use sp_std::vec::Vec; + +use crate::{Exposure, NominatorIndex, ValidatorIndex}; + +/// Preference of an identity regarding validation. +#[derive( + Clone, + Copy, + Decode, + Encode, + Eq, + MaxEncodedLen, + PartialEq, + RuntimeDebug, + TypeInfo +)] +pub struct PermissionedIdentityPrefs { + /// Intended number of validators an identity wants to run. + /// + /// Act as a hard limit on the number of validators an identity can run. + /// However, it can be amended using governance. + /// + /// The count satisfies `count < MaxValidatorPerIdentity * Self::validator_count()`. + pub intended_count: u32, + /// Keeps track of the running number of validators of a DID. + pub running_count: u32, +} + +impl Default for PermissionedIdentityPrefs { + fn default() -> Self { + Self { + intended_count: 1, + running_count: 0, + } + } +} + +impl PermissionedIdentityPrefs { + pub fn new(intended_count: u32) -> Self { + Self { + intended_count, + running_count: 0, + } + } +} + +/// Switch used to change the "victim" for slashing. Victims can be +/// validators, both validators and nominators, or no-one. +#[derive( + Clone, + Copy, + Decode, + Default, + Encode, + Eq, + MaxEncodedLen, + PartialEq, + RuntimeDebug, + TypeInfo +)] +#[cfg_attr(feature = "std", derive(Serialize, Deserialize))] +pub enum SlashingSwitch { + /// Allow validators but not nominators to get slashed. + Validator, + /// Allow both validators and nominators to get slashed. + ValidatorAndNominator, + /// Forbid slashing. + #[default] + None, +} + +/// Indicate how an election round was computed. +#[derive(Clone, Copy, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] +pub enum ElectionCompute { + /// Result was forcefully computed on chain at the end of the session. + OnChain, + /// Result was submitted and accepted to the chain via a signed transaction. + Signed, + /// Result was submitted and accepted to the chain via an unsigned transaction (by an + /// authority). + Unsigned, +} + +/// The result of an election round. +#[derive(Clone, Decode, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] +pub struct ElectionResult { + /// Flat list of validators who have been elected. + pub elected_stashes: Vec, + /// Flat list of new exposures, to be updated in the [`Exposure`] storage. + pub exposures: Vec<(AccountId, Exposure)>, + /// Type of the result. This is kept on chain only to track and report the best score's + /// submission type. An optimisation could remove this. + pub compute: ElectionCompute, +} + +/// The status of the upcoming (offchain) election. +#[derive(Clone, Decode, Default, Encode, Eq, PartialEq, RuntimeDebug, TypeInfo)] +pub enum ElectionStatus { + /// Nothing has and will happen for now. submission window is not open. + #[default] + Closed, + /// The submission window has been open since the contained block number. + Open(BlockNumber), +} + +/// Some indications about the size of the election. This must be submitted with the solution. +/// +/// Note that these values must reflect the __total__ number, not only those that are present in the +/// solution. In short, these should be the same size as the size of the values dumped in +/// `SnapshotValidators` and `SnapshotNominators`. +#[derive( + Clone, + Copy, + Decode, + Default, + Encode, + Eq, + PartialEq, + RuntimeDebug, + TypeInfo +)] +pub struct ElectionSize { + /// Number of validators in the snapshot of the current election round. + #[codec(compact)] + pub validators: ValidatorIndex, + /// Number of nominators in the snapshot of the current election round. + #[codec(compact)] + pub nominators: NominatorIndex, +} + +impl ElectionStatus { + pub fn is_open_at(&self, n: BlockNumber) -> bool { + *self == Self::Open(n) + } + + pub fn is_closed(&self) -> bool { + match self { + Self::Closed => true, + _ => false, + } + } + + pub fn is_open(&self) -> bool { + !self.is_closed() + } +} diff --git a/pallets/staking/src/weights.rs b/pallets/staking/src/weights.rs index 9ae60c60cc..fec7bd8569 100644 --- a/pallets/staking/src/weights.rs +++ b/pallets/staking/src/weights.rs @@ -1,21 +1,39 @@ -use frame_support::weights::Weight; +// This file is part of Substrate. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#![cfg_attr(rustfmt, rustfmt_skip)] +#![allow(unused_parens)] +#![allow(unused_imports)] + +use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}}; +use sp_std::marker::PhantomData; + +/// Weight functions needed for pallet_staking. pub trait WeightInfo { - fn bond() -> Weight; + fn bond() -> Weight; fn bond_extra() -> Weight; fn unbond() -> Weight; fn withdraw_unbonded_update(s: u32) -> Weight; fn withdraw_unbonded_kill(s: u32) -> Weight; - fn set_min_bond_threshold() -> Weight; - fn add_permissioned_validator() -> Weight; - fn remove_permissioned_validator() -> Weight; - fn set_commission_cap(m: u32) -> Weight; fn validate() -> Weight; fn nominate(n: u32) -> Weight; fn chill() -> Weight; fn set_payee() -> Weight; fn set_controller() -> Weight; - fn set_validator_count(c: u32) -> Weight; fn force_no_eras() -> Weight; fn force_new_era() -> Weight; fn force_new_era_always() -> Weight; @@ -25,10 +43,17 @@ pub trait WeightInfo { fn payout_stakers(n: u32) -> Weight; fn payout_stakers_alive_controller(n: u32) -> Weight; fn rebond(l: u32) -> Weight; - fn set_history_depth(e: u32) -> Weight; fn reap_stash(s: u32) -> Weight; fn new_era(v: u32, n: u32) -> Weight; - fn do_slash(l: u32) -> Weight; + // Polymesh Change + // ----------------------------------------------------------------- + fn set_validator_count(c: u32) -> Weight; + fn set_min_bond_threshold() -> Weight; + fn add_permissioned_validator() -> Weight; + fn remove_permissioned_validator() -> Weight; + fn set_commission_cap(m: u32) -> Weight; + fn set_history_depth(e: u32) -> Weight; + fn do_slash(l: u32) -> Weight; fn payout_all(v: u32, n: u32) -> Weight; fn submit_solution_better(v: u32, n: u32, a: u32, w: u32) -> Weight; fn change_slashing_allowed_for() -> Weight; @@ -36,4 +61,5 @@ pub trait WeightInfo { fn increase_validator_count() -> Weight; fn scale_validator_count() -> Weight; fn chill_from_governance(s: u32) -> Weight; + // ----------------------------------------------------------------- } diff --git a/primitives/src/lib.rs b/primitives/src/lib.rs index 2a2881fdbd..1df5008471 100644 --- a/primitives/src/lib.rs +++ b/primitives/src/lib.rs @@ -288,8 +288,9 @@ macro_rules! const_assert { #[macro_export] macro_rules! storage_migration_ver { ($ver:literal) => { + #[derive(frame_support::pallet_prelude::MaxEncodedLen)] #[derive(Encode, Decode, scale_info::TypeInfo)] - #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] + #[derive(Clone, Copy, Eq, PartialEq, PartialOrd, Ord)] pub struct Version(u8); impl Version { diff --git a/scripts/check_storage_versions.sh b/scripts/check_storage_versions.sh index a1b19b3afb..13218e118f 100755 --- a/scripts/check_storage_versions.sh +++ b/scripts/check_storage_versions.sh @@ -5,7 +5,7 @@ grep -r 'storage_migration_ver!' pallets/ | \ sort >/tmp/max_version.txt grep -r StorageVersion pallets/ | grep new | \ - sed -e 's/.src.*::new./: /g' -e 's/..: Version.*//g' | \ + sed -e 's/.src.*::new./: /g' -e 's/..: Version.*//g' -e 's/));//g' | \ sort >/tmp/new_version.txt diff /tmp/max_version.txt /tmp/new_version.txt || { diff --git a/scripts/cli/polymesh-meta.json b/scripts/cli/polymesh-meta.json index f465d7d805..8d28636f27 100644 --- a/scripts/cli/polymesh-meta.json +++ b/scripts/cli/polymesh-meta.json @@ -1 +1 @@ -{"jsonrpc":"2.0","result":"0x6d6574610ead0b000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f7279200104540000200c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6524010c75363400012870726f6f665f73697a6524010c75363400002400000628002800000506002c083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000030000002080034102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677338013c5665633c4469676573744974656d3e0000380000023c003c102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e00060024436f6e73656e7375730800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000400105365616c0800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000500144f74686572040030011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000400000030400000008004400000248004808306672616d655f73797374656d2c4576656e745265636f7264080445014c0454012c000c01147068617365a104011450686173650001146576656e744c010445000118746f70696373a50401185665633c543e00004c0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d653052756e74696d654576656e740001b01853797374656d04005001706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040074017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040078017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500485472616e73616374696f6e5061796d656e7404009001a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e000600204964656e74697479040094017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f76696465727304002d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400390101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d6265727368697004004d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400550101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004005d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400650101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d6265727368697004006d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704007501017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504008101017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704009501017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e6365730400a501015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e0400ad01015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400b101015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400c501018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400e901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400ed01017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04009102018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e740400a902016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400c102018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400f502017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404002903017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304006103016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f0400a103015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c4665650400c103018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c65720400c903018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400d503018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e002500285374617469737469637304000104016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04004504016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904006104017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904006504017870616c6c65745f7574696c6974793a3a4576656e743c52756e74696d653e002900104261736504007504014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304007d04017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204008104017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c001c5265776172647304008504017870616c6c65745f726577617264733a3a4576656e743c52756e74696d653e002d0024436f6e74726163747304008904018070616c6c65745f636f6e7472616374733a3a4576656e743c52756e74696d653e002e0044506f6c796d657368436f6e74726163747304008d040164706f6c796d6573685f636f6e7472616374733a3a4576656e74002f0020507265696d61676504009104017c70616c6c65745f707265696d6167653a3a4576656e743c52756e74696d653e0030000c4e667404009504014470616c6c65745f6e66743a3a4576656e7400310024546573745574696c7304009d04018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000500c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304013464697370617463685f696e666f5401304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7260013444697370617463684572726f7200013464697370617463685f696e666f5401304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e744964000110686173682c011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e540c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735801344469737061746368436c617373000120706179735f6665655c0110506179730000580c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f7279000200005c0c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000060082873705f72756e74696d653444697370617463684572726f72000134144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040064012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400680128546f6b656e4572726f720007002841726974686d6574696304006c013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007001485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c000064082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7240018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000070082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c6179657200010000740c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e656408010c77686f000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780000047441206163636f756e7420696e646578207761732061737369676e65642e28496e6465784672656564040114696e64657810013c543a3a4163636f756e74496e646578000104bc41206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e2c496e64657846726f7a656e080114696e64657810013c543a3a4163636f756e74496e64657800010c77686f000130543a3a4163636f756e744964000204e841206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909781064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008401304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e636500008c011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007c04184f7074696f6e04045401800108104e6f6e6500000010536f6d650400800000010000800c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008404184f7074696f6e04045401880108104e6f6e6500000010536f6d65040088000001000088084c706f6c796d6573685f7072696d697469766573104d656d6f000004000401205b75383b2033325d00008c14346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e636553746174757300010810467265650000002052657365727665640001000090086870616c6c65745f7472616e73616374696f6e5f7061796d656e74205261774576656e74081c42616c616e63650118244163636f756e74496401000104485472616e73616374696f6e466565506169640c010c77686f0001244163636f756e74496400012861637475616c5f66656518011c42616c616e636500010c74697018011c42616c616e6365000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e085c4576656e747320666f722074686973206d6f64756c652e00941064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740128015428446964437265617465640c008001284964656e74697479496400000001244163636f756e74496400009801705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408008001284964656e74697479496400009801705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408008001284964656e7469747949640000f401385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908008001284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410008001284964656e74697479496400000001244163636f756e7449640000a0012c5065726d697373696f6e730000a0012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c008001284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408008001284964656e7469747949640000f801344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408008001284964656e7469747949640000f801344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408008001284964656e7469747949640000a801185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c75363400001d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000fc01384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642978417574686f72697a6174696f6e52657472794c696d6974526561636865640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000d0cb0416363657074696e6720417574686f72697a6174696f6e207265747279206c696d697420726561636865642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040029010110626f6f6c000e0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408008001284964656e74697479496400002801184d6f6d656e74000f10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04008001284964656e74697479496400100cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04008001284964656e74697479496400110ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e0014284449442950437573746f6d436c61696d5479706541646465640c008001284964656e746974794964000011010144437573746f6d436c61696d547970654964000030011c5665633c75383e00120c8041206e657720437573746f6d436c61696d54797065207761732061646465642e003c284449442c2069642c2054797065293c4368696c64446964437265617465640c008001284964656e74697479496400008001284964656e74697479496400000001244163636f756e74496400130c5c4368696c64206964656e7469747920637265617465642e009028506172656e74204449442c204368696c64204449442c207072696d617279206b657929404368696c64446964556e6c696e6b65640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e74697479496400140cb44368696c64206964656e7469747920756e6c696e6b65642066726f6d20706172656e74206964656e746974792e008c2843616c6c6572204449442c20506172656e74204449442c204368696c642044494429085c4576656e747320666f722074686973206d6f64756c652e00980000029c009c0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e73a0012c5065726d697373696f6e730000a00c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c01146173736574a4014041737365745065726d697373696f6e7300012465787472696e736963b8015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fdc0150506f7274666f6c696f5065726d697373696f6e730000a40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a8010c1457686f6c650000001454686573650400b0012c42547265655365743c413e000100184578636570740400b0012c42547265655365743c413e00020000a80c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400ac01405b75383b205449434b45525f4c454e5d0000ac0000030c0000000800b00420425472656553657404045401a8000400b4000000b4000002a800b80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101bc010c1457686f6c650000001454686573650400d4012c42547265655365743c413e000100184578636570740400d4012c42547265655365743c413e00020000bc0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65c0012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573c40144446973706174636861626c654e616d65730000c0084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040030011c5665633c75383e0000c40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c8010c1457686f6c650000001454686573650400cc012c42547265655365743c413e000100184578636570740400cc012c42547265655365743c413e00020000c8084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040030011c5665633c75383e0000cc0420425472656553657404045401c8000400d0000000d0000002c800d40420425472656553657404045401bc000400d8000000d8000002bc00dc0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101e0010c1457686f6c650000001454686573650400ec012c42547265655365743c413e000100184578636570740400ec012c42547265655365743c413e00020000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469648001284964656e7469747949640001106b696e64e40134506f7274666f6c696f4b696e640000e40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e8013c506f7274666f6c696f4e756d62657200010000e80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040028010c7536340000ec0420425472656553657404045401e0000400f0000000f0000002e000f40000020000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565728001284964656e74697479496400013469737375616e63655f646174652801184d6f6d656e740001406c6173745f7570646174655f646174652801184d6f6d656e74000118657870697279fc01384f7074696f6e3c4d6f6d656e743e000114636c61696d01010114436c61696d0000fc04184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000001010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d000128284163637265646974656404000501011453636f706500000024416666696c6961746504000501011453636f7065000100244275794c6f636b757004000501011453636f70650002002853656c6c4c6f636b757004000501011453636f706500030050437573746f6d657244756544696c6967656e63650400090101144364644964000400404b6e6f77596f7572437573746f6d657204000501011453636f7065000500304a7572697364696374696f6e08000d01012c436f756e747279436f646500000501011453636f7065000600204578656d7074656404000501011453636f70650007001c426c6f636b656404000501011453636f706500080018437573746f6d080011010144437573746f6d436c61696d5479706549640000150101344f7074696f6e3c53636f70653e0009000005010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904008001284964656e746974794964000000185469636b65720400a801185469636b657200010018437573746f6d040030011c5665633c75383e0002000009010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d00000d010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f9000011010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d44437573746f6d436c61696d5479706549640000040010010c7533320000150104184f7074696f6e0404540105010108104e6f6e6500000010536f6d65040005010000010000190104184f7074696f6e04045401000108104e6f6e6500000010536f6d6504000000000100001d010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04008001284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a801185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a801185469636b6572000400304a6f696e4964656e746974790400a0012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400e0012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a801185469636b65720000210101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e646172790400a0012c5065726d697373696f6e730009000021010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04002501011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000025010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c7533320000290100000500002d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449013101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e003101083070616c6c65745f67726f757024496e7374616e63653200000000350100000280003901084070616c6c65745f636f6d6d6974746565205261774576656e740c1048617368012c2c426c6f636b4e756d62657201100449013d0101282050726f706f7365640c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314008001284964656e746974794964000010013450726f706f73616c496e64657800002c01104861736800003501013c5665633c4964656e7469747949643e00003501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c008001284964656e74697479496400002c0110486173680000410101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c008001284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e003d01084070616c6c65745f636f6d6d697474656524496e7374616e6365310000000041010418526573756c74080454014501044501600108084f6b04004501000000000c45727204006000000100004501000004000049010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e65000100004d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449015101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005101083070616c6c65745f67726f757024496e7374616e636531000000005501084070616c6c65745f636f6d6d6974746565205261774576656e740c1048617368012c2c426c6f636b4e756d6265720110044901590101282050726f706f7365640c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314008001284964656e746974794964000010013450726f706f73616c496e64657800002c01104861736800003501013c5665633c4964656e7469747949643e00003501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c008001284964656e74697479496400002c0110486173680000410101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c008001284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005901084070616c6c65745f636f6d6d697474656524496e7374616e636533000000005d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449016101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006101083070616c6c65745f67726f757024496e7374616e636533000000006501084070616c6c65745f636f6d6d6974746565205261774576656e740c1048617368012c2c426c6f636b4e756d6265720110044901690101282050726f706f7365640c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314008001284964656e746974794964000010013450726f706f73616c496e64657800002c01104861736800003501013c5665633c4964656e7469747949643e00003501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c008001284964656e74697479496400002c0110486173680000410101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c008001284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e006901084070616c6c65745f636f6d6d697474656524496e7374616e636534000000006d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449017101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e007101083070616c6c65745f67726f757024496e7374616e6365340000000075011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414008001284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000790101645665633c5369676e61746f72793c4163636f756e7449643e3e000028010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c008001284964656e74697479496400000001244163636f756e744964000028010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410008001284964656e74697479496400000001244163636f756e744964000028010c753634000029010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c008001284964656e74697479496400000001244163636f756e744964000028010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000028010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000028010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c008001284964656e74697479496400000001244163636f756e744964000028010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040060013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040060013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e0079010000027d01007d010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904008001284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100008101083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014444436f6e74726f6c6c65724368616e67656408008001284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408008001284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408008001284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04008001284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04008001284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c008001284964656e74697479496400008001284964656e746974794964000029010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c008001284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400890101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000030011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408008001284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408008001284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e3842726964676554784661696c65640c008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000060013444697370617463684572726f72001004e8427269646765205478206661696c65642e2020526563697069656e74206d697373696e6720434444206f72206c696d697420726561636865642e085c4576656e747320666f722074686973206d6f64756c652e008501083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f686173682c011048323536000089010000028d01008d010000040c00109101009101083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040030011c5665633c75383e000100009501083870616c6c65745f7374616b696e67205261774576656e74081c42616c616e63650118244163636f756e74496401000144244572615061796f75740c00100120457261496e646578000018011c42616c616e6365000018011c42616c616e636500000c550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642ea85c5b6572615f696e6465782c2076616c696461746f725f7061796f75742c2072656d61696e6465725c5d185265776172640c008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650001043901546865207374616b657220686173206265656e207265776172646564206279207468697320616d6f756e742e205c5b73746173685f6964656e746974792c2073746173682c20616d6f756e745c5d14536c61736808000001244163636f756e744964000018011c42616c616e636500020821014f6e652076616c696461746f722028616e6420697473206e6f6d696e61746f72732920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e545c5b76616c696461746f722c20616d6f756e745c5d684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c648c6e6f742062652070726f6365737365642e205c5b73657373696f6e5f696e6465785c5d3c5374616b696e67456c656374696f6e04009901013c456c656374696f6e436f6d70757465000404f041206e657720736574206f66207374616b6572732077617320656c656374656420776974682074686520676976656e205c5b636f6d707574655c5d2e38536f6c7574696f6e53746f72656404009901013c456c656374696f6e436f6d70757465000504150141206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e205c5b636f6d707574655c5d18426f6e6465640c008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000610e4416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000704ec416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e205c5b6469642c2073746173682c20616d6f756e745c5d244e6f6d696e617465640c008001284964656e74697479496400000001244163636f756e7449640000f401385665633c4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e08000001244163636f756e744964000018011c42616c616e63650009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e636560ac66726f6d2074686520756e6c6f636b696e672071756575652e205c5b73746173682c20616d6f756e745c5d645065726d697373696f6e65644964656e74697479416464656408008001284964656e74697479496400008001284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408008001284964656e74697479496400008001284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c008001284964656e74697479496400000001244163636f756e7449640000f401385665633c4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c008001284964656e74697479496400009d01011c50657262696c6c00009d01011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007c01484f7074696f6e3c4964656e7469747949643e000018011c42616c616e6365000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c000001244163636f756e7449640000100120457261496e646578000060013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e6765640400a1010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e085c4576656e747320666f722074686973206d6f64756c652e009901083870616c6c65745f7374616b696e673c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200009d010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c7533320000a101083870616c6c65745f7374616b696e6738536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e6500020000a5010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650801106b696e64a90101104b696e6400012074696d65736c6f743001384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea901000003100000000800ad010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e04013473657373696f6e5f696e64657810013053657373696f6e496e64657800000839014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909b1010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574b5010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909b501000002b90100b90100000408bd012800bd010c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c696300000400c101013c656432353531393a3a5075626c69630000c1010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000c5010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c444865617274626561745265636569766564040130617574686f726974795f6964c9010138543a3a417574686f726974794964000004c041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f726974794964602e1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504011c6f66666c696e65d101016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204290141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909c901104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400cd01013c737232353531393a3a5075626c69630000cd010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000d101000002d50100d5010000040800d90100d901083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cdd01011c42616c616e636500010c6f776edd01011c42616c616e63650001186f7468657273e10101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000dd010000061800e101000002e50100e501083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565dd01011c42616c616e63650000e901082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c1453756469640400410101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e6765640400190101444f7074696f6e3c4163636f756e7449643e000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650400410101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00ed011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740128244163636f756e744964010001683041737365744372656174656420008001284964656e7469747949640000a801185469636b6572000029010110626f6f6c0000f101012441737365745479706500008001284964656e7469747949640000fd01012441737365744e616d650000010201505665633c41737365744964656e7469666965723e0000110201604f7074696f6e3c46756e64696e67526f756e644e616d653e000008804576656e7420666f72206372656174696f6e206f66207468652061737365742ec10163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c206173736574206e616d652c206964656e746966696572732c2066756e64696e6720726f756e64484964656e74696669657273557064617465640c008001284964656e7469747949640000a801185469636b65720000010201505665633c41737365744964656e7469666965723e000108d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c008001284964656e7469747949640000a801185469636b6572000029010110626f6f6c000208844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118008001284964656e7469747949640000a801185469636b657200008001284964656e74697479496400008001284964656e746974794964000018011c42616c616e6365000030011c5665633c75383e0003083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a801185469636b6572000029010110626f6f6c0004085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c008001284964656e7469747949640000a801185469636b65720000fc01384f7074696f6e3c4d6f6d656e743e0005087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c008001284964656e7469747949640000a801185469636b657200008001284964656e74697479496400060880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c008001284964656e7469747949640000a801185469636b657200008001284964656e746974794964000708a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08008001284964656e7469747949640000a801185469636b6572000808a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08008001284964656e7469747949640000a801185469636b6572000908ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c008001284964656e7469747949640000a801185469636b65720000fd01012441737365744e616d65000a08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c008001284964656e7469747949640000a801185469636b657200001502014046756e64696e67526f756e644e616d65000b081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410008001284964656e7469747949640000a801185469636b6572000019020128446f63756d656e74496400001d020120446f63756d656e74000c048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c008001284964656e7469747949640000a801185469636b6572000019020128446f63756d656e744964000d04804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c008001284964656e7469747949640000a801185469636b657200000001244163636f756e744964000e08604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496448436f6e74726f6c6c65725472616e7366657210008001284964656e7469747949640000a801185469636b65720000e0012c506f7274666f6c696f4964000018011c42616c616e6365000f08b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c008001284964656e7469747949640000f5010144437573746f6d4173736574547970654964000030011c5665633c75383e001008b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c008001284964656e7469747949640000f5010144437573746f6d4173736574547970654964000030011c5665633c75383e001108b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510008001284964656e7469747949640000a801185469636b657200004902014841737365744d6574616461746156616c756500004d0201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00120864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c008001284964656e7469747949640000a801185469636b657200005102018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001308dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514008001284964656e7469747949640000a801185469636b657200005902014441737365744d657461646174614e616d6500005d02015441737365744d657461646174614c6f63616c4b657900006102014441737365744d65746164617461537065630014088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c005902014441737365744d657461646174614e616d6500007902015841737365744d65746164617461476c6f62616c4b657900006102014441737365744d6574616461746153706563001508905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329404173736574547970654368616e6765640c008001284964656e7469747949640000a801185469636b65720000f1010124417373657454797065001608cc416e206576656e7420656d6974746564207768656e207468652074797065206f6620616e206173736574206368616e6765642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e20747970652e5c4c6f63616c4d657461646174614b657944656c657465640c008001284964656e7469747949640000a801185469636b657200005d02015441737365744d657461646174614c6f63616c4b6579001708f0416e206576656e7420656d6974746564207768656e2061206c6f63616c206d65746164617461206b657920686173206265656e2072656d6f7665642ea8506172616d65746572733a2063616c6c6572207469636b65722c204c6f63616c2074797065206e616d65504d6574616461746156616c756544656c657465640c008001284964656e7469747949640000a801185469636b657200007d02014041737365744d657461646174614b6579001808f8416e206576656e7420656d6974746564207768656e2061206c6f63616c206d657461646174612076616c756520686173206265656e2072656d6f7665642ea8506172616d65746572733a2063616c6c6572207469636b65722c204c6f63616c2074797065206e616d654c417373657442616c616e63655570646174656418008001284964656e7469747949640000a801185469636b6572000018011c42616c616e636500008102014c4f7074696f6e3c506f7274666f6c696f49643e00008102014c4f7074696f6e3c506f7274666f6c696f49643e000085020154506f7274666f6c696f557064617465526561736f6e00190ce4456d6974746564207768656e20546f6b656e732077657265206973737565642c2072656465656d6564206f72207472616e736665727265642e3102436f6e7461696e7320746865205b604964656e746974794964605d206f66207468652072656365697665722f6973737565722f72656465656d65722c20746865205b605469636b6572605d20666f722074686520746f6b656e2c207468652062616c616e6365207468617420776173206973737565642f7472616e736665727265642f72656465656d65642cb101746865205b60506f7274666f6c696f4964605d206f662074686520736f757263652c20746865205b60506f7274666f6c696f4964605d206f66207468652064657374696e6174696f6e20616e6420746865205b60506f7274666f6c696f557064617465526561736f6e605d2e085c4576656e747320666f722074686973206d6f64756c652e00f1010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500013030457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400f5010144437573746f6d417373657454797065496400090028537461626c65436f696e000a002c4e6f6e46756e6769626c650400f901013c4e6f6e46756e6769626c6554797065000b0000f5010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000f9010c4c706f6c796d6573685f7072696d6974697665731461737365743c4e6f6e46756e6769626c655479706500011028446572697661746976650000002c4669786564496e636f6d650001001c496e766f69636500020018437573746f6d0400f5010144437573746f6d417373657454797065496400030000fd010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040030011c5665633c75383e0000010200000205020005020c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e74696669657200011414435553495004000902011c5b75383b20395d0000001043494e5304000902011c5b75383b20395d000100104953494e0400ac01205b75383b2031325d0002000c4c454904000d0201205b75383b2032305d00030010464947490400ac01205b75383b2031325d0004000009020000030900000008000d02000003140000000800110204184f7074696f6e0404540115020108104e6f6e6500000010536f6d6504001502000001000015020c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040030011c5665633c75383e000019020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c75333200001d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572692102012c446f63756d656e74557269000130636f6e74656e745f6861736825020130446f63756d656e74486173680001106e616d653d020130446f63756d656e744e616d65000120646f635f74797065410201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465fc01384f7074696f6e3c4d6f6d656e743e000021020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040030011c5665633c75383e000025020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400290201205b75383b2036345d000100104833383404002d0201205b75383b2034385d00020010483332300400310201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400350201205b75383b2032385d00050010483139320400390201205b75383b2032345d000600104831363004000d0201205b75383b2032305d00070010483132380400a90101205b75383b2031365d0008000029020000034000000008002d02000003300000000800310200000328000000080035020000031c000000080039020000031800000008003d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040030011c5665633c75383e0000410204184f7074696f6e0404540145020108104e6f6e6500000010536f6d6504004502000001000045020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040030011c5665633c75383e000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040030011c5665633c75383e00004d0204184f7074696f6e0404540151020108104e6f6e6500000010536f6d6504005102000001000051020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012800080118657870697265fc01384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475735502017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000055020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740128010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002801184d6f6d656e740002000059020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040030011c5665633c75383e00005d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040028010c753634000061020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c6502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e6d0201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465667502013c4f7074696f6e3c5665633c75383e3e0000650204184f7074696f6e0404540169020108104e6f6e6500000010536f6d650400690200000100006902084c706f6c796d6573685f7072696d6974697665730c55726c0000040030011c5665633c75383e00006d0204184f7074696f6e0404540171020108104e6f6e6500000010536f6d6504007102000001000071020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040030011c5665633c75383e0000750204184f7074696f6e04045401300108104e6f6e6500000010536f6d65040030000001000079020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040028010c75363400007d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04007902015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04005d02015441737365744d657461646174614c6f63616c4b657900010000810204184f7074696f6e04045401e00108104e6f6e6500000010536f6d650400e0000001000085020c4c706f6c796d6573685f7072696d69746976657324706f7274666f6c696f54506f7274666f6c696f557064617465526561736f6e00010c1849737375656404014866756e64696e675f726f756e645f6e616d65110201604f7074696f6e3c46756e64696e67526f756e644e616d653e0000002052656465656d65640001002c5472616e73666572726564080138696e737472756374696f6e5f6964890201544f7074696f6e3c496e737472756374696f6e49643e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e00020000890204184f7074696f6e040454018d020108104e6f6e6500000010536f6d6504008d0200000100008d020c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e7434496e737472756374696f6e49640000040028010c753634000091020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c00950201204576656e74446964000099020110434149640000a1020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d65641800950201204576656e744469640000950201204576656e74446964000099020110434149640000a1020130446973747269627574696f6e000018011c42616c616e63650000a502010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c00950201204576656e7444696400009902011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f7665640800950201204576656e744469640000990201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0095020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c7904045401800004008001045400009902086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a801185469636b65720001206c6f63616c5f69649d0201244c6f63616c4341496400009d02086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c7533320000a1020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6de0012c506f7274666f6c696f496400012063757272656e6379a801185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656429010110626f6f6c0001287061796d656e745f61742801184d6f6d656e74000128657870697265735f6174fc01384f7074696f6e3c4d6f6d656e743e0000a5020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000a9021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e744372656174656414007c01484f7074696f6e3c4964656e7469747949643e0000a801185469636b65720000ad020130436865636b706f696e744964000018011c42616c616e636500002801184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408008001284964656e746974794964000028010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c654372656174656410008001284964656e7469747949640000a801185469636b65720000b10201285363686564756c6549640000b502014c5363686564756c65436865636b706f696e747300020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00ac2863616c6c6572204449442c207469636b65722c207363686564756c652069642c207363686564756c65293c5363686564756c6552656d6f76656410008001284964656e7469747949640000a801185469636b65720000b10201285363686564756c6549640000b502014c5363686564756c65436865636b706f696e747300030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00ac2863616c6c6572204449442c207469636b65722c207363686564756c652069642c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00ad020c4c706f6c796d6573685f7072696d69746976657314617373657430436865636b706f696e7449640000040028010c7536340000b1021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040028010c7536340000b5021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e744c5363686564756c65436865636b706f696e7473000004011c70656e64696e67b902014042547265655365743c4d6f6d656e743e0000b902042042547265655365740404540128000400bd02000000bd020000022800c1021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747348636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c008001284964656e7469747949640000a801185469636b65720000c5020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c008001284964656e7469747949640000a801185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c008001284964656e7469747949640000a801185469636b65720000f10201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408008001284964656e7469747949640000a801185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408008001284964656e7469747949640000a801185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408008001284964656e7469747949640000a801185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c008001284964656e7469747949640000a801185469636b65720000c5020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c008001284964656e7469747949640000a801185469636b65720000e1020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c008001284964656e7469747949640000a801185469636b657200008001284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00c5020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73c90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73c90201385665633c436f6e646974696f6e3e000108696410010c7533320000c902000002cd0200cd020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065d1020134436f6e646974696f6e5479706500011c69737375657273dd0201485665633c547275737465644973737565723e0000d1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e74040001010114436c61696d000000204973416273656e74040001010114436c61696d0001001c4973416e794f660400d50201285665633c436c61696d3e0002002049734e6f6e654f660400d50201285665633c436c61696d3e0003002849734964656e746974790400d90201385461726765744964656e7469747900040000d502000002010100d9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304008001284964656e74697479496400010000dd02000002e10200e1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565728001284964656e74697479496400012c747275737465645f666f72e502012854727573746564466f720000e5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400e90201385665633c436c61696d547970653e00010000e902000002ed0200ed020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000128284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080018437573746f6d040011010144437573746f6d436c61696d54797065496400090000f102000002c50200f502086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001205c4d617844657461696c734c656e6774684368616e67656408008001284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c008001284964656e7469747949640000a801185469636b65720000f90201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c008001284964656e7469747949640000a801185469636b65720000a502010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410008001284964656e7469747949640000a801185469636b657200008001284964656e74697479496400000103012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e2c4341496e697469617465641000950201204576656e744469640000990201104341496400000503013c436f72706f72617465416374696f6e000021030124434144657461696c730004084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c008001284964656e7469747949640000990201104341496400002503013c5665633c446f63756d656e7449643e000508844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f7665640800950201204576656e74446964000099020110434149640006084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c00950201204576656e744469640000990201104341496400000503013c436f72706f72617465416374696f6e0007046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00f902086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965733501013c5665633c4964656e7469747949643e00012474726561746d656e74fd02013c54617267657454726561746d656e740000fd02086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000010304184f7074696f6e04045401a5020108104e6f6e6500000010536f6d650400a50200000100000503086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e640903011843414b696e640001246465636c5f646174652801184d6f6d656e7400012c7265636f72645f646174650d0301484f7074696f6e3c5265636f7264446174653e00011c74617267657473f90201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f746178a502010c54617800013c77697468686f6c64696e675f746178190301585665633c284964656e7469747949642c20546178293e00000903086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f74686572000400000d0304184f7074696f6e0404540111030108104e6f6e6500000010536f6d650400110300000100001103086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652801184d6f6d656e74000128636865636b706f696e74150301304341436865636b706f696e7400001503086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c65640800b10201285363686564756c654964000028010c753634000000204578697374696e670400ad020130436865636b706f696e7449640001000019030000021d03001d030000040880a502002103086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040030011c5665633c75383e0000250300000219020029030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414008001284964656e7469747949640000990201104341496400002d03013c42616c6c6f7454696d6552616e676500003103012842616c6c6f744d657461000029010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c008001284964656e7469747949640000990201104341496400005103013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c008001284964656e7469747949640000990201104341496400002d03013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c008001284964656e7469747949640000990201104341496400003103012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c008001284964656e74697479496400009902011043414964000029010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f7665640800950201204576656e744469640000990201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e002d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742801184d6f6d656e7400010c656e642801184d6f6d656e74000031030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c653503012c42616c6c6f745469746c6500011c6d6f74696f6e733903012c5665633c4d6f74696f6e3e000035030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040030011c5665633c75383e000039030000023d03003d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c654103012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b450301384d6f74696f6e496e666f4c696e6b00011c63686f69636573490301405665633c43686f6963655469746c653e000041030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040030011c5665633c75383e000045030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040030011c5665633c75383e000049030000024d03004d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040030011c5665633c75383e0000510300000255030055030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b5903012c4f7074696f6e3c7531363e0000590304184f7074696f6e040454015d030108104e6f6e6500000010536f6d6504005d0300000100005d0300000504006103082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c008001284964656e746974794964000029010110626f6f6c000029010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420008001284964656e74697479496400006503014c50726f706f7365723c4163636f756e7449643e00006d0301145069704964000018011c42616c616e636500006502012c4f7074696f6e3c55726c3e0000710301584f7074696f6e3c5069704465736372697074696f6e3e00004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00007903013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c008001284964656e74697479496400006d030114506970496400007d03013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414008001284964656e74697479496400000001244163636f756e74496400006d0301145069704964000029010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c008001284964656e74697479496400006d0301145069704964000029010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c008001284964656e74697479496400006d0301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c008001284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c008001284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c008001284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c008001284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c008001284964656e74697479496400006d0301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408008001284964656e746974794964000081030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c008001284964656e746974794964000081030128536e617073686f74496400008503014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c008001284964656e74697479496400006d03011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414008001284964656e7469747949640000910301484f7074696f6e3c536e617073686f7449643e0000950301685665633c2850697049642c20536b6970706564436f756e74293e00009d0301285665633c50697049643e00009d0301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c008001284964656e74697479496400006d0301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c008001284964656e74697479496400006d0301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c008001284964656e74697479496400006d0301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c656404006d0301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e006503082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d6974746565040069030124436f6d6d6974746565000100006903082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100006d03082c70616c6c65745f706970731450697049640000040010010c7533320000710304184f7074696f6e0404540175030108104e6f6e6500000010536f6d650400750300000100007503082c70616c6c65745f70697073385069704465736372697074696f6e0000040030011c5665633c75383e00007903082c70616c6c65745f706970733050726f706f73616c44617461000108104861736804002c0110483235360000002050726f706f73616c040030011c5665633c75383e000100007d03082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500008103082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000085030000028903008903082c70616c6c65745f7069707338536e617073686f74746564506970000008010869646d03011450697049640001187765696768748d03013c28626f6f6c2c2042616c616e63652900008d030000040829011800910304184f7074696f6e0404540181030108104e6f6e6500000010536f6d6504008103000001000095030000029903009903000004086d0308009d030000026d0300a1031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400011840506f7274666f6c696f437265617465640c008001284964656e7469747949640000e8013c506f7274666f6c696f4e756d6265720000a5030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408008001284964656e7469747949640000e8013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d62657240506f7274666f6c696f52656e616d65640c008001284964656e7469747949640000e8013c506f7274666f6c696f4e756d6265720000a5030134506f7274666f6c696f4e616d65000218fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308008001284964656e7469747949640000a90301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000314d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008001284964656e746974794964000418f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e206469646c46756e64734d6f7665644265747765656e506f7274666f6c696f7314008001284964656e7469747949640000e0012c506f7274666f6c696f49640000e0012c506f7274666f6c696f49640000b103013c46756e644465736372697074696f6e00008401304f7074696f6e3c4d656d6f3e0005208c46756e64732068617665206d6f766564206265747765656e20706f7274666f6c696f7300302320506172616d6574657273342a204f726967696e204449442e4c2a20536f7572636520706f7274666f6c696f2e602a2044657374696e6174696f6e20706f7274666f6c696f2e882a205468652074797065206f662066756e64207468617420776173206d6f7665642e742a204f7074696f6e616c206d656d6f20666f7220746865206d6f76652e085c4576656e747320666f722074686973206d6f64756c652e00a5030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040030011c5665633c75383e0000a903000002ad0300ad0300000408e8a50300b1030c4c706f6c796d6573685f7072696d69746976657324706f7274666f6c696f3c46756e644465736372697074696f6e0001082046756e6769626c650801187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e63650000002c4e6f6e46756e6769626c650400b50301104e46547300010000b5030c4c706f6c796d6573685f7072696d6974697665730c6e6674104e46547300000801187469636b6572a801185469636b657200010c696473b90301285665633c4e465449643e0000b903000002bd0300bd030c4c706f6c796d6573685f7072696d6974697665730c6e6674144e465449640000040028010c7536340000c103084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408008001284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408008001284964656e7469747949640000c5030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e00c503084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c7533320000c9030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e74040454000118245363686564756c65640801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c753332000004505363686564756c656420736f6d65207461736b2e2043616e63656c65640801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001044c43616e63656c656420736f6d65207461736b2e28446973706174636865640c01107461736bcd03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d10301404f7074696f6e3c5461736b4e616d653e000118726573756c74410101384469737061746368526573756c74000204544469737061746368656420736f6d65207461736b2e3c43616c6c556e617661696c61626c650801107461736bcd03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d10301404f7074696f6e3c5461736b4e616d653e00030429015468652063616c6c20666f72207468652070726f7669646564206861736820776173206e6f7420666f756e6420736f20746865207461736b20686173206265656e2061626f727465642e38506572696f6469634661696c65640801107461736bcd03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d10301404f7074696f6e3c5461736b4e616d653e0004043d0154686520676976656e207461736b2077617320756e61626c6520746f2062652072656e657765642073696e636520746865206167656e64612069732066756c6c206174207468617420626c6f636b2e545065726d616e656e746c794f7665727765696768740801107461736bcd03016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d10301404f7074696f6e3c5461736b4e616d653e000504f054686520676976656e207461736b2063616e206e657665722062652065786563757465642073696e6365206974206973206f7665727765696768742e04304576656e747320747970652ecd0300000408101000d10304184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000d5031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328736574746c656d656e74205261774576656e740c184d6f6d656e7401282c426c6f636b4e756d6265720110244163636f756e744964010001503056656e75654372656174656410008001284964656e7469747949640000d903011c56656e756549640000dd03013056656e756544657461696c730000e103012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c008001284964656e7469747949640000d903011c56656e756549640000dd03013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c008001284964656e7469747949640000d903011c56656e756549640000e103012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c2074797065294c496e737472756374696f6e41666669726d65640c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008d020134496e737472756374696f6e49640003040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008d020134496e737472756374696f6e49640004040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000504d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418008001284964656e74697479496400008d020134496e737472756374696f6e49640000e50301144c65674964000028010c75363400000001244163636f756e7449640000e903015c4f7074696f6e3c526563656970744d657461646174613e0006047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d65746164617461293856656e756546696c746572696e670c008001284964656e7469747949640000a801185469636b6572000029010110626f6f6c000704690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c008001284964656e7469747949640000a801185469636b65720000f10301305665633c56656e756549643e000804dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c008001284964656e7469747949640000a801185469636b65720000f10301305665633c56656e756549643e000904dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c008001284964656e74697479496400008d020134496e737472756374696f6e49640000e50301144c65674964000a04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000b04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000c04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c008001284964656e7469747949640000a801185469636b65720000d903011c56656e75654964000d04010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040060013444697370617463684572726f72000e04805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000f086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f6964294c56656e75655369676e6572735570646174656410008001284964656e7469747949640000d903011c56656e756549640000f401385665633c4163636f756e7449643e000029010110626f6f6c0010044901416e206578697374696e672076656e75652773207369676e65727320686173206265656e207570646174656420286469642c2076656e75655f69642c207369676e6572732c207570646174655f747970652968536574746c656d656e744d616e75616c6c79457865637574656408008001284964656e74697479496400008d020134496e737472756374696f6e496400110498536574746c656d656e74206d616e75616c6c7920657865637574656420286469642c2069642948496e737472756374696f6e4372656174656420008001284964656e7469747949640000d903011c56656e7565496400008d020134496e737472756374696f6e49640000f503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000fc01384f7074696f6e3c4d6f6d656e743e0000fc01384f7074696f6e3c4d6f6d656e743e0000f90301205665633c4c65673e00008401304f7074696f6e3c4d656d6f3e0012088841206e657720696e737472756374696f6e20686173206265656e20637265617465645101286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c6567732c206d656d6f29684661696c6564546f45786563757465496e737472756374696f6e08008d020134496e737472756374696f6e4964000060013444697370617463684572726f72001304784661696c656420746f206578656375746520696e737472756374696f6e2e085c4576656e747320666f722074686973206d6f64756c652e00d9030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e741c56656e756549640000040028010c7536340000dd030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e743056656e756544657461696c730000040030011c5665633c75383e0000e1030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000e5030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74144c656749640000040028010c7536340000e90304184f7074696f6e04045401ed030108104e6f6e6500000010536f6d650400ed030000010000ed030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e743c526563656970744d65746164617461000004000401205b75383b2033325d0000f103000002d90300f5030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d6265720110010c4c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010030536574746c654d616e75616c040010012c426c6f636b4e756d62657200020000f903000002fd0300fd030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e740c4c656700010c2046756e6769626c6510011873656e646572e0012c506f7274666f6c696f49640001207265636569766572e0012c506f7274666f6c696f49640001187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e63650000002c4e6f6e46756e6769626c650c011873656e646572e0012c506f7274666f6c696f49640001207265636569766572e0012c506f7274666f6c696f49640001106e667473b50301104e465473000100204f6666436861696e10013c73656e6465725f6964656e746974798001284964656e74697479496400014472656365697665725f6964656e746974798001284964656e7469747949640001187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e63650002000001041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c008001284964656e746974794964000005040128417373657453636f70650000090401345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c008001284964656e746974794964000005040128417373657453636f70650000090401345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410008001284964656e746974794964000005040128417373657453636f706500000d040120537461745479706500001d04013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c008001284964656e746974794964000005040128417373657453636f70650000350401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c008001284964656e74697479496400003d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000350101305665633c53636f706549643e00040c0901416464206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c008001284964656e74697479496400003d0401685472616e73666572436f6e646974696f6e4578656d70744b65790000350101305665633c53636f706549643e00050c150152656d6f7665206053636f706549646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e0005040c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a801185469636b65720000000009040000020d04000d040c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f7011040128537461744f7054797065000130636c61696d5f6973737565721504017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e000011040c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000150404184f7074696f6e0404540119040108104e6f6e6500000010536f6d65040019040000010000190400000408ed0280001d0400000221040021040c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b6579322504012853746174326e644b657900011476616c7565310401304f7074696f6e3c753132383e000025040c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d04002904012453746174436c61696d0001000029040c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040029010110626f6f6c00000024416666696c69617465040029010110626f6f6c000100304a7572697364696374696f6e04002d04014c4f7074696f6e3c436f756e747279436f64653e000200002d0404184f7074696f6e040454010d010108104e6f6e6500000010536f6d6504000d010000010000310404184f7074696f6e04045401180108104e6f6e6500000010536f6d650400180000010000350400000239040039040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040028010c753634000000504d6178496e766573746f724f776e6572736869700400a502012850657263656e7461676500010028436c61696d436f756e7410002904012453746174436c61696d00008001284964656e746974794964000028010c7536340000fc012c4f7074696f6e3c7536343e00020038436c61696d4f776e65727368697010002904012453746174436c61696d00008001284964656e7469747949640000a502012850657263656e746167650000a502012850657263656e74616765000300003d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c0114617373657405040128417373657453636f70650001086f7011040128537461744f7054797065000128636c61696d5f74797065410401444f7074696f6e3c436c61696d547970653e0000410404184f7074696f6e04045401ed020108104e6f6e6500000010536f6d650400ed0200000100004504082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012801184446756e647261697365724372656174656410008001284964656e74697479496400004904013046756e64726169736572496400004d04013846756e647261697365724e616d6500005104014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418008001284964656e74697479496400004904013046756e6472616973657249640000a801185469636b65720000a801185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08008001284964656e74697479496400004904013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08008001284964656e74697479496400004904013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f6469666965641800950201204576656e7444696400004904013046756e64726169736572496400002801184d6f6d656e740000fc01384f7074696f6e3c4d6f6d656e743e00002801184d6f6d656e740000fc01384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408008001284964656e74697479496400004904013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e004904082870616c6c65745f73746f3046756e6472616973657249640000040028010c75363400004d04082870616c6c65745f73746f3846756e647261697365724e616d650000040030011c5665633c75383e00005104082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740128002c011c63726561746f728001284964656e7469747949640001486f66666572696e675f706f7274666f6c696fe0012c506f7274666f6c696f49640001386f66666572696e675f6173736574a801185469636b657200014472616973696e675f706f7274666f6c696fe0012c506f7274666f6c696f496400013472616973696e675f6173736574a801185469636b657200011474696572735504014c5665633c46756e64726169736572546965723e00012076656e75655f6964d903011c56656e7565496400011473746172742801184d6f6d656e7400010c656e64fc01384f7074696f6e3c4d6f6d656e743e0001187374617475735d04014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000055040000025904005904082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500005d04082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300006104083c70616c6c65745f7472656173757279205261774576656e74081c42616c616e63650118244163636f756e7449640100010c50547265617375727944697362757273656d656e7410008001284964656e74697479496400008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500000c8844697362757273656d656e7420746f206120746172676574204964656e746974792e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e742968547265617375727944697362757273656d656e744661696c656410008001284964656e74697479496400008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500010ca444697362757273656d656e7420746f206120746172676574204964656e74697479206661696c65642e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e74295454726561737572795265696d62757273656d656e7408008001284964656e746974794964000018011c42616c616e636500020c5c5472656173757279207265696d62757273656d656e742e006428736f75726365206964656e746974792c20616d6f756e7429085c4576656e747320666f722074686973206d6f64756c652e0065040c3870616c6c65745f7574696c6974791870616c6c6574144576656e74040454000128404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7260013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7260013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c74410101384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e2452656c6179656454780c012863616c6c65725f6469648001284964656e746974794964000118746172676574000130543a3a4163636f756e744964000118726573756c74410101384469737061746368526573756c740006085052656c61796564207472616e73616374696f6e2e40504f4c594d4553483a206576656e742e4c4261746368496e7465727275707465644f6c6408006904012c4576656e74436f756e747300006d04011c4572726f724174000710ac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e6c504f4c594d4553483a206576656e7420646570726563617465642e5442617463684f7074696d69737469634661696c656408006904012c4576656e74436f756e74730000710401305665633c4572726f7241743e000810ac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e6c504f4c594d4553483a206576656e7420646570726563617465642e444261746368436f6d706c657465644f6c6404006904012c4576656e74436f756e747300090cc84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e6c504f4c594d4553483a206576656e7420646570726563617465642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909690400000210006d040000040810600071040000026d040075041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f720400790401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e00790404184f7074696f6e04045401600108104e6f6e6500000010536f6d6504006000000100007d041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f7570437265617465641000950201204576656e744469640000a801185469636b6572000025010110414749640000b8015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e73557064617465641000950201204576656e744469640000a801185469636b6572000025010110414749640000b8015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c00950201204576656e744469640000a801185469636b65720000210101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c00950201204576656e744469640000a801185469636b657200008001284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e6765641000950201204576656e744469640000a801185469636b657200008001284964656e7469747949640000210101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0081041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b65791400950201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000028010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c00950201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c00950201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d69741400950201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e008504083870616c6c65745f72657761726473205261774576656e7404244163636f756e744964010001044049746e526577617264436c61696d656408000001244163636f756e744964000018011c42616c616e63650000045c49746e207265776172642077617320636c61696d65642e085c4576656e747320666f722074686973206d6f64756c652e0089040c4070616c6c65745f636f6e7472616374731870616c6c6574144576656e7404045400012030496e7374616e7469617465640801206465706c6f796572000130543a3a4163636f756e744964000120636f6e7472616374000130543a3a4163636f756e744964000004d8436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e285465726d696e61746564080120636f6e7472616374000130543a3a4163636f756e744964048454686520636f6e7472616374207468617420776173207465726d696e617465642e012c62656e6566696369617279000130543a3a4163636f756e74496404e4546865206163636f756e7420746861742072656365697665642074686520636f6e7472616374732072656d61696e696e672062616c616e6365011868436f6e747261637420686173206265656e2072656d6f7665642e001823204e6f7465003d01546865206f6e6c792077617920666f72206120636f6e747261637420746f2062652072656d6f76656420616e6420656d697474696e672074686973206576656e742069732062792063616c6c696e6744607365616c5f7465726d696e617465602e28436f646553746f726564040124636f64655f686173682c011c543a3a48617368000204b4436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e3c436f6e7472616374456d6974746564080120636f6e7472616374000130543a3a4163636f756e744964049054686520636f6e7472616374207468617420656d697474656420746865206576656e742e01106461746130011c5665633c75383e0835014461746120737570706c6965642062792074686520636f6e74726163742e204d657461646174612067656e65726174656420647572696e6720636f6e747261637420636f6d70696c6174696f6e5c6973206e656564656420746f206465636f64652069742e03049c4120637573746f6d206576656e7420656d69747465642062792074686520636f6e74726163742e2c436f646552656d6f766564040124636f64655f686173682c011c543a3a48617368000404ac4120636f6465207769746820746865207370656369666965642068617368207761732072656d6f7665642e4c436f6e7472616374436f6465557064617465640c0120636f6e7472616374000130543a3a4163636f756e744964048c54686520636f6e7472616374207468617420686173206265656e20757064617465642e01346e65775f636f64655f686173682c011c543a3a4861736804b04e657720636f646520686173682074686174207761732073657420666f722074686520636f6e74726163742e01346f6c645f636f64655f686173682c011c543a3a48617368048c50726576696f757320636f64652068617368206f662074686520636f6e74726163742e0504784120636f6e7472616374277320636f64652077617320757064617465642e1843616c6c656408011863616c6c6572000130543a3a4163636f756e744964049c546865206163636f756e7420746861742063616c6c6564207468652060636f6e7472616374602e0120636f6e7472616374000130543a3a4163636f756e744964047454686520636f6e74726163742074686174207761732063616c6c65642e061c11014120636f6e7472616374207761732063616c6c656420656974686572206279206120706c61696e206163636f756e74206f7220616e6f7468657220636f6e74726163742e001823204e6f7465003101506c65617365206b65657020696e206d696e642074686174206c696b6520616c6c206576656e74732074686973206973206f6e6c7920656d697474656420666f72207375636365737366756c290163616c6c732e20546869732069732062656361757365206f6e206661696c75726520616c6c2073746f72616765206368616e67657320696e636c7564696e67206576656e74732061726530726f6c6c6564206261636b2e3844656c656761746543616c6c6564080120636f6e7472616374000130543a3a4163636f756e74496408210154686520636f6e7472616374207468617420706572666f726d6564207468652064656c65676174652063616c6c20616e642068656e636520696e2077686f736520636f6e74657874707468652060636f64655f68617368602069732065786563757465642e0124636f64655f686173682c012c436f6465486173683c543e049c54686520636f646520686173682074686174207761732064656c65676174652063616c6c65642e071c9c4120636f6e74726163742064656c65676174652063616c6c6564206120636f646520686173682e001823204e6f7465003101506c65617365206b65657020696e206d696e642074686174206c696b6520616c6c206576656e74732074686973206973206f6e6c7920656d697474656420666f72207375636365737366756c290163616c6c732e20546869732069732062656361757365206f6e206661696c75726520616c6c2073746f72616765206368616e67657320696e636c7564696e67206576656e74732061726530726f6c6c6564206261636b2e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a0909098d040848706f6c796d6573685f636f6e747261637473144576656e74000100085c4576656e747320666f722074686973206d6f64756c652e0091040c3c70616c6c65745f707265696d6167651870616c6c6574144576656e7404045400010c144e6f746564040110686173682c011c543a3a48617368000004684120707265696d61676520686173206265656e206e6f7465642e24526571756573746564040110686173682c011c543a3a48617368000104784120707265696d61676520686173206265656e207265717565737465642e1c436c6561726564040110686173682c011c543a3a486173680002046c4120707265696d616765206861732062656e20636c65617265642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a09090995041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974730c6e6674144576656e74000108504e6674436f6c6c656374696f6e437265617465640c008001284964656e7469747949640000a801185469636b657200009904013c4e4654436f6c6c656374696f6e4964000004b4456d6974746564207768656e2061206e6577206e667420636f6c6c656374696f6e20697320637265617465642e4c4e4654506f7274666f6c696f5570646174656414008001284964656e7469747949640000b50301104e46547300008102014c4f7074696f6e3c506f7274666f6c696f49643e00008102014c4f7074696f6e3c506f7274666f6c696f49643e000085020154506f7274666f6c696f557064617465526561736f6e00010cdc456d6974746564207768656e204e4654732077657265206973737565642c2072656465656d6564206f72207472616e736665727265642e0502436f6e7461696e7320746865205b604964656e746974794964605d206f66207468652072656365697665722f6973737565722f72656465656d65722c20746865205b604e465473605d2c20746865205b60506f7274666f6c696f4964605d206f662074686520736f757263652c20746865205b60506f7274666f6c696f4964605dd46f66207468652064657374696e6174696f6e20616e6420746865205b60506f7274666f6c696f557064617465526561736f6e605d2e085c4576656e747320666f722074686973206d6f64756c652e0099040c4c706f6c796d6573685f7072696d6974697665730c6e66743c4e4654436f6c6c656374696f6e49640000040028010c75363400009d04084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e744964010001082444696453746174757308008001284964656e74697479496400000001244163636f756e744964000008e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000029010110626f6f6c00010c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e00a10408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000a5040000022c00a904000002cd0300ad0408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6eb104014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d65b504016473705f72756e74696d653a3a52756e74696d65537472696e670000b1040000061000b5040000050200b9040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001201872656d61726b04011872656d61726b30011c5665633c75383e000010684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e0034232320436f6d706c6578697479202d20604f28312960387365745f686561705f7061676573040114706167657328010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646530011c5665633c75383e0002106453657420746865206e65772072756e74696d6520636f64652e0034232320436f6d706c657869747931012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f6465605c7365745f636f64655f776974686f75745f636865636b73040110636f646530011c5665633c75383e000310190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e0034232320436f6d706c65786974798c2d20604f2843296020776865726520604360206c656e677468206f662060636f6465602c7365745f73746f726167650401146974656d73bd0401345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973c50401205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697830010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b30011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ebd04000002c10400c10400000408303000c5040000023000c9040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373cd0401845065724469737061746368436c6173733c57656967687473506572436c6173733e0000cd040c346672616d655f737570706f7274206469737061746368405065724469737061746368436c61737304045401d104000c01186e6f726d616cd10401045400012c6f7065726174696f6e616cd1040104540001246d616e6461746f7279d1040104540000d1040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963d50401384f7074696f6e3c5765696768743e0001246d61785f746f74616cd50401384f7074696f6e3c5765696768743e0001207265736572766564d50401384f7074696f6e3c5765696768743e0000d50404184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000d9040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178dd0401545065724469737061746368436c6173733c7533323e0000dd040c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000e104082873705f776569676874733c52756e74696d65446257656967687400000801107265616428010c753634000114777269746528010c7536340000e504082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d65b504013452756e74696d65537472696e67000124696d706c5f6e616d65b504013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973e904011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e08010875380000e904040c436f7704045401ed04000400ed04000000ed04000002f10400f10400000408f5041000f504000003080000000800f9040c306672616d655f73797374656d1870616c6c6574144572726f720404540001183c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e046c4572726f7220666f72207468652053797374656d2070616c6c6574fd040c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454010105045300000400090501185665633c543e00000105000004080505280005050c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400cd01013c737232353531393a3a5075626c6963000009050000020105000d05084873705f636f6e73656e7375735f736c6f747310536c6f740000040028010c753634000011050c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f720001040856310801046315050128287536342c2075363429000134616c6c6f7765645f736c6f747319050130416c6c6f776564536c6f7473000100001505000004082828001905084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f7473000200001d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540104045300000400210501185665633c543e000021050000020400250504184f7074696f6e0404540129050108104e6f6e6500000010536f6d6504002905000001000029050c4473705f636f6e73656e7375735f626162651c646967657374732450726544696765737400010c1c5072696d61727904002d0501405072696d617279507265446967657374000100385365636f6e64617279506c61696e04003105015c5365636f6e64617279506c61696e507265446967657374000200305365636f6e646172795652460400350501545365636f6e64617279565246507265446967657374000300002d050c4473705f636f6e73656e7375735f626162651c64696765737473405072696d617279507265446967657374000010013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f740d050110536c6f740001287672665f6f75747075740401245652464f75747075740001247672665f70726f6f662902012056524650726f6f66000031050c4473705f636f6e73656e7375735f626162651c646967657374735c5365636f6e64617279506c61696e507265446967657374000008013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f740d050110536c6f74000035050c4473705f636f6e73656e7375735f626162651c64696765737473545365636f6e64617279565246507265446967657374000010013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f740d050110536c6f740001287672665f6f75747075740401245652464f75747075740001247672665f70726f6f662902012056524650726f6f6600003905084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e00000801046315050128287536342c2075363429000134616c6c6f7765645f736c6f747319050130416c6c6f776564536c6f747300003d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014105045300000400450501185665633c543e0000410500000408281000450500000241050049050c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f664d050184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6659050140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f664d050184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6659050140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e666967110501504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e4d05084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f660818486561646572015105084964010505001001206f6666656e646572050501084964000110736c6f740d050110536c6f7400013066697273745f686561646572510501184865616465720001347365636f6e645f6865616465725105011848656164657200005105102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d626572011010486173680155050014012c706172656e745f686173682c0130486173683a3a4f75747075740001186e756d626572b10401184e756d62657200012873746174655f726f6f742c0130486173683a3a4f757470757400013c65787472696e736963735f726f6f742c0130486173683a3a4f7574707574000118646967657374340118446967657374000055050c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000005905082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573c50401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e7400005d050c2c70616c6c65745f626162651870616c6c6574144572726f7204045400011060496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e50496e76616c6964436f6e66696775726174696f6e0003048c5375626d697474656420636f6e66696775726174696f6e20697320696e76616c69642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090961050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77240124543a3a4d6f6d656e7400003c54536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e0034232320436f6d706c657869747931012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e65050000040c001829010069050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000309841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e207472616e7366657208010c6e65776d0501504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e6465780001305d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000230944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e38666f7263655f7472616e736665720c010c6e65776d0501504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6529010110626f6f6c0003345501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004304101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e6d050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400b10401304163636f756e74496e6465780001000c526177040030011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d0003002441646472657373323004000d0201205b75383b2032305d0004000071050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090975050000027905007905083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964f50401384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e737d05011c526561736f6e7300007d051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200008105083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573746d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573746d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01011c42616c616e63650001106d656d6f8401304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565dd01011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f6d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565dd01011c42616c616e63650001306e65775f7265736572766564dd01011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263656d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573746d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8505083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440089050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800008d05086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e740000000856320001000091050000029505009505082873705f7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261639d01011c50657262696c6c0001206e6567617469766529010110626f6f6c0001186465677265650801087538000099050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579190101444f7074696f6e3c4163636f756e7449643e00009d0500000408a105a50500a1050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765748001284964656e746974794964000128636c61696d5f74797065ed020124436c61696d547970650000a5050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565728001284964656e74697479496400011473636f7065150101344f7074696f6e3c53636f70653e0000a9050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904008001284964656e746974794964000000305365636f6e646172794b657908008001284964656e7469747949640000a0012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e74496400020000ad0500000408800000b105000004087d012800b5050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012800140148617574686f72697a6174696f6e5f646174611d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62798001284964656e746974794964000118657870697279fc01384f7074696f6e3c4d6f6d656e743e00011c617574685f696428010c753634000114636f756e7410010c7533320000b90500000408802800bd05083c70616c6c65745f6964656e746974791c56657273696f6e0000040008010875380000c105083c70616c6c65745f6964656e746974791043616c6c040454000160406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797398017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e000020b8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e54696e76616c69646174655f6364645f636c61696d730c010c6364648001284964656e74697479496400013064697361626c655f66726f6d280124543a3a4d6f6d656e74000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696428010c7536340001506f7074696f6e616c5f6364645f617574685f6964fc012c4f7074696f6e3c7536343e000234650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f726571756972656429010110626f6f6c00031435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696428010c753634000404904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790005048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765748001284964656e746974794964000114636c61696d01010114436c61696d000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e00060cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765748001284964656e746974794964000114636c61696d01010114436c61696d000704944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e54667265657a655f7365636f6e646172795f6b657973000810c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000904dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c01187461726765747d01015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174611d01017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e000a04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c01187461726765747d01015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696428010c7536340001445f617574685f6973737565725f7061797329010110626f6f6c000b086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e206665654067635f6164645f6364645f636c61696d0401187461726765748001284964656e746974794964000c044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765748001284964656e746974794964000d046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e547265766f6b655f636c61696d5f62795f696e6465780c01187461726765748001284964656e746974794964000128636c61696d5f74797065ed020124436c61696d5479706500011473636f7065150101344f7074696f6e3c53636f70653e000e10f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696428010c7536340001506f7074696f6e616c5f6364645f617574685f6964fc012c4f7074696f6e3c7536343e000f38650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b657973c505019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174280124543a3a4d6f6d656e74001034b041646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e0039014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e00302320417267756d656e74733a0901202020202d20606f726967696e60207768696368206d75737420626520746865207072696d617279206b6579206f6620746865206964656e7469747920606964602ed4202020202d206069646020746f207768696368206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642ed8202020202d20606164646974696f6e616c5f6b6579736020776869636820696e636c75646573207365636f6e64617279206b6579732c090120202020202020636f75706c6564207769746820617574686f72697a6174696f6e20646174612c20746f2061646420746f20746172676574206964656e746974792e002023204572726f7273ac202020202d2043616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b6579000130543a3a4163636f756e7449640001147065726d73a0012c5065726d697373696f6e7300110cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665f401445665633c543a3a4163636f756e7449643e001214d452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002023204572726f727300cc5468652065787472696e7369632063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e6872656769737465725f637573746f6d5f636c61696d5f74797065040108747930011c5665633c75383e0013186c526567697374657220637573746f6d20636c61696d20747970652e002023204572726f727349012a2060437573746f6d436c61696d54797065416c7265616479457869737473602054686520747970652074686174206973206265696e67207265676973746572656420616c7265616479206578697374732ed42a2060436f756e7465724f766572666c6f776020437573746f6d436c61696d54797065496420686173206f766572666c6f7765642ec82a2060546f6f4c6f6e6760205468652074797065206265696e67207265676973746572656420697320746f6f206c616e672e646364645f72656769737465725f6469645f776974685f6364640c01387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797398017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0014205901526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e7469747920616e6420697373756520612043444420636c61696d2077697468206120626c616e6b204364644964002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e546372656174655f6368696c645f6964656e746974790401347365636f6e646172795f6b6579000130543a3a4163636f756e74496400153019014372656174652061206368696c64206964656e7469747920616e64206d616b652074686520607365636f6e646172795f6b6579602069742773207072696d617279206b65792e00c44f6e6c7920746865207072696d617279206b65792063616e20637265617465206368696c64206964656e7469746965732e002c2320417267756d656e747365012d20607365636f6e646172795f6b65796020746865207365636f6e64617279206b657920746861742077696c6c206265636f6d6520746865207072696d617279206b6579206f6620746865206e6577206964656e746974792e002023204572726f727305012d20604b65794e6f74416c6c6f77656460206f6e6c7920746865207072696d617279206b65792063616e206372656174652061206e6577206964656e746974792e4d012d20604e6f74415369676e6572602074686520607365636f6e646172795f6b657960206973206e6f742061207365636f6e64617279206b6579206f66207468652063616c6c65722773206964656e746974792e6d012d20604163636f756e744b657949734265696e6755736564602074686520607365636f6e646172795f6b6579602063616e277420626520756e6c696e6b65642066726f6d20697427732063757272656e74206964656e746974792ea1012d206049734368696c644964656e7469747960207468652063616c6c65722773206964656e7469747920697320616c72656164792061206368696c64206964656e7469747920616e642063616e277420637265617465206368696c64206964656e7469746965732e5c6372656174655f6368696c645f6964656e7469746965730801286368696c645f6b657973d10501b85665633c4372656174654368696c644964656e7469747957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174280124543a3a4d6f6d656e7400163c684372656174652061206368696c64206964656e7469746965732e002501546865206e6577207072696d617279206b657920666f722065616368206368696c64206964656e746974792077696c6c206e65656420746f207369676e20286f66662d636861696e2944616e20617574686f72697a6174696f6e2e00c44f6e6c7920746865207072696d617279206b65792063616e20637265617465206368696c64206964656e7469746965732e002c2320417267756d656e747349012d20606368696c645f6b6579736020746865206b65797320746861742077696c6c206265636f6d65207072696d617279206b657973206f66207468656972206f776e206368696c64206964656e746974792e002023204572726f727305012d20604b65794e6f74416c6c6f77656460206f6e6c7920746865207072696d617279206b65792063616e206372656174652061206e6577206964656e746974792e0d012d2060416c72656164794c696e6b656460206f6e65206f6620746865206b65797320697320616c7265616479206c696e6b656420746f20616e206964656e746974792ef02d20604475706c69636174654b657960206f6e65206f6620746865206b65797320697320696e636c75646564206d756c7469706c652074696d65732ea1012d206049734368696c644964656e7469747960207468652063616c6c65722773206964656e7469747920697320616c72656164792061206368696c64206964656e7469747920616e642063616e277420637265617465206368696c64206964656e7469746965732e54756e6c696e6b5f6368696c645f6964656e746974790401246368696c645f6469648001284964656e74697479496400172cc8556e6c696e6b2061206368696c64206964656e746974792066726f6d206974277320706172656e74206964656e746974792e0045014f6e6c7920746865207072696d617279206b6579206f662074686520706172656e74206f72206368696c64206964656e7469746965732063616e20756e6c696e6b20746865206964656e7469746965732e002c2320417267756d656e747311012d20606368696c645f6469646020746865206368696c64206964656e7469747920746f20756e6c696e6b2066726f6d2069747320706172656e74206964656e746974792e002023204572726f7273a1012d20604b65794e6f74416c6c6f77656460206f6e6c7920746865207072696d617279206b6579206f66206569746865722074686520706172656e74206f72206368696c64206964656e746974792063616e20756e6c696e6b20746865206964656e7469746965732e35012d20604e6f506172656e744964656e746974796020746865206964656e7469747920606368696c645f6469646020646f65736e27742068617665206120706172656e74206964656e746974792e59012d20604e6f74506172656e744f724368696c644964656e7469747960207468652063616c6c65722773206964656e746974792069736e27742074686520706172656e74206f72206368696c64206964656e746974792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec505000002c90500c9051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b65799c015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265cd050110483531320000cd05083c7072696d69746976655f7479706573104835313200000400290201205b75383b2036345d0000d105000002d50500d5051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e746974796c4372656174654368696c644964656e74697479576974684175746804244163636f756e74496401000008010c6b65790001244163636f756e744964000138617574685f7369676e6174757265cd050110483531320000d905083c70616c6c65745f6964656e74697479144572726f7204045400019c34416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e8043757272656e744964656e7469747943616e6e6f744265466f72776172646564000a044d0143757272656e74206964656e746974792063616e6e6f7420626520666f727761726465642c206974206973206e6f742061207365636f6e64617279206b6579206f6620746172676574206964656e746974792e50417574686f72697a6174696f6e45787069726564000b049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000c0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000d04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000e048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000f04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b657900100461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740011045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730012045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001304ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001404a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001504d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001604150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500170421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c595858436c61696d56617269616e744e6f74416c6c6f776564001804e454727920746f20616464206120636c61696d2076617269616e74207573696e6720756e2d64657369676e617465642065787472696e7369632e805461726765744861734e6f6e5a65726f42616c616e6365417453636f70654964001904510154727920746f2064656c6574652074686520495520636c61696d206576656e207768656e20746865207573657220686173206e6f6e207a65726f2062616c616e636520617420676976656e2073636f706549642e6443444449644e6f74556e69717565466f724964656e74697479001a041d0143444449642073686f756c6420626520756e6971756520262073616d652077697468696e20616c6c2063646420636c61696d7320706f737365737365642062792061204449442e30496e76616c69644344444964001b0409014e6f6e2073797374656d61746963204344442070726f7669646572732063616e206e6f74206372656174652064656661756c74206364645f696420636c61696d732e7c436c61696d416e6450726f6f6656657273696f6e73446f4e6f744d61746368001c049c436c61696d20616e642050726f6f662076657273696f6e732061726520646966666572656e742e544163636f756e744b657949734265696e6755736564001d04d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e67001e086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e70437573746f6d436c61696d54797065416c7265616479457869737473001f04f454686520637573746f6d20636c61696d207479706520747279696e6720746f206265207265676973746572656420616c7265616479206578697374732e6c437573746f6d436c61696d54797065446f65734e6f7445786973740020049454686520637573746f6d20636c61696d207479706520646f6573206e6f742065786973742e44436c61696d446f65734e6f74457869737400210454436c61696d20646f6573206e6f742065786973742e3c49734368696c644964656e7469747900220451014964656e7469747920697320616c72656164792061206368696c64206f6620616e206f74686572206964656e746974792c2063616e277420637265617465206772616e642d6368696c64206964656e746974792e404e6f506172656e744964656e74697479002304b0546865204964656e7469747920646f65736e27742068617665206120706172656e74206964656e746974792e604e6f74506172656e744f724368696c644964656e74697479002404bc5468652063616c6c6572206973206e6f742074686520706172656e74206f72206368696c64206964656e746974792e304475706c69636174654b6579002504a45468652073616d65206b65792077617320696e636c75646564206d756c7469706c652074696d65732e744578636570744e6f74416c6c6f776564466f7245787472696e73696373002604e043616e6e6f742075736520457863657074207768656e2073706563696679696e672065787472696e736963207065726d697373696f6e732e00dd05000002e10500e1051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740128000c010869648001284964656e74697479496400013864656163746976617465645f61742801184d6f6d656e74000118657870697279fc01384f7074696f6e3c4d6f6d656e743e0000e505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee905083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00ed050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c52756e74696d6543616c6c0001b01853797374656d0400b90401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400490501a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d700400610501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400690501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e0003002042616c616e6365730400810501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e746974790400c10501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400e50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400f10501d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400f50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400f90501dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d626572736869700400fd0501050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400010601d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400050601fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400090601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f001842726964676504000d0601ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e6704001d0601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400110701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e64706104001d0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400490701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400690701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e00190014417373657404006d0701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e0400750701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e7404007d0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e616765720400810701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400850701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f7404009d0701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400a10701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400b10701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400bd0701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400c50701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400cd0701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e00250028537461746973746963730400e50701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f0400f90701a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e0027002054726561737572790400090801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400150801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e00290010426173650400390801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e747304003d0801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400410801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c001c526577617264730400450801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c526577617264732c2052756e74696d653e002d0024436f6e74726163747304004d0801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e7472616374732c2052756e74696d653e002e0044506f6c796d657368436f6e7472616374730400610801d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6e7472616374732c2052756e74696d653e002f0020507265696d6167650400710801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c507265696d6167652c2052756e74696d653e0030000c4e66740400750801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e66742c2052756e74696d653e00310024546573745574696c7304008d0801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e00320000f105084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869648001284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766529010110626f6f6c00011063616c6ced05017c426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2c011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766529010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef905084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869648001284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766529010110626f6f6c00011063616c6ced05017c426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2c011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766529010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652efd05083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0106084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869648001284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766529010110626f6f6c00011063616c6ced05017c426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2c011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766529010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0506083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0906083c70616c6c65745f6d756c74697369671043616c6c0404540001543c6372656174655f6d756c746973696708011c7369676e657273790101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656428010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ced050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0001203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ced050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0002203d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ced050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616ced050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e7469747904011c617574685f696428010c7536340009100d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696428010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e65727d01015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e65727d01015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273790101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273790101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656428010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964fc012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c7536340001306d756c74697369675f6469648001284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e806368616e67655f736967735f72657175697265645f7669615f63726561746f720801406d756c74697369675f6163636f756e74000130543a3a4163636f756e74496400014c7369676e6174757265735f726571756972656428010c753634001314b1014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206f6620746865206d756c74697369672e002c2320417267756d656e747379012a20606d756c74697369675f6163636f756e7460202d20546865206163636f756e74206964656e74696669657220285b604163636f756e744964605d2920666f7220746865206d756c7469207369676e6174757265206163636f756e742ef02a20607369676e6174757265735f726571756972656460202d20546865206e756d626572206f66207265717569726564207369676e6174757265732e5c72656d6f76655f63726561746f725f636f6e74726f6c730401406d756c74697369675f6163636f756e74000130543a3a4163636f756e744964001408b50152656d6f766573207468652063726561746f72206162696c69747920746f2063616c6c20606164645f6d756c74697369675f7369676e6572735f7669615f63726561746f72602c206072656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f72609c616e6420606368616e67655f736967735f72657175697265645f7669615f63726561746f72602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0d06083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d707465641106015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f7478731906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f7478731906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f7478731906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f7478731906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e11060000021506001506000004088029010019060000028501001d06083870616c6c65745f7374616b696e671043616c6c04045400018410626f6e640c0128636f6e74726f6c6c65726d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01013042616c616e63654f663c543e00011470617965652106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000058610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e002823203c7765696768743ed02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e482d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a2d012d20526561643a20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c2043757272656e74204572612c20486973746f72792044657074682c204c6f636b73dc2d2057726974653a20426f6e6465642c2050617965652c205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e28626f6e645f65787472610401386d61785f6164646974696f6e616cdd01013042616c616e63654f663c543e000154610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e6101556e6c696b65205b60626f6e64605d206f72205b60756e626f6e64605d20746869732066756e6374696f6e20646f6573206e6f7420696d706f736520616e79206c696d69746174696f6e206f6e2074686520616d6f756e7448746861742063616e2062652061646465642e005d01546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c657220616e64f469742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e003c456d6974732060426f6e646564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e3c2d204f6e6520444220656e7472792e302d2d2d2d2d2d2d2d2d2d2d2d284442205765696768743a11012d20526561643a2045726120456c656374696f6e205374617475732c20426f6e6465642c204c65646765722c205b4f726967696e204163636f756e745d2c204c6f636b73a02d2057726974653a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e18756e626f6e6404011476616c7565dd01013042616c616e63654f663c543e00028051015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0039014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d41585f554e4c4f434b494e475f4348554e4b536029390163616e20636f2d657869737473206174207468652073616d652074696d652e20496e207468617420636173652c205b6043616c6c3a3a77697468647261775f756e626f6e646564605d206e656564f8746f2062652063616c6c656420666972737420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e002823203c7765696768743e3d012d20496e646570656e64656e74206f662074686520617267756d656e74732e204c696d697465642062757420706f74656e7469616c6c79206578706c6f697461626c6520636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732e61012d20456163682063616c6c20287265717569726573207468652072656d61696e646572206f662074686520626f6e6465642062616c616e636520746f2062652061626f766520606d696e696d756d5f62616c616e636560296d01202077696c6c2063617573652061206e657720656e74727920746f20626520696e73657274656420696e746f206120766563746f722028604c65646765722e756e6c6f636b696e676029206b65707420696e2073746f726167652e4d012020546865206f6e6c792077617920746f20636c65616e207468652061666f72656d656e74696f6e65642073746f72616765206974656d20697320616c736f20757365722d636f6e74726f6c6c6564207669615820206077697468647261775f756e626f6e646564602e3c2d204f6e6520444220656e7472792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a21012d20526561643a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e744572612c204c6f636b732c205c5b4f726967696e204163636f756e745c5da82d2057726974653a204c6f636b732c204c65646765722c205c5b4f726967696e204163636f756e745c5d243c2f7765696768743e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c75333200037c290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e002823203c7765696768743e51012d20436f756c6420626520646570656e64656e74206f6e2074686520606f726967696e6020617267756d656e7420616e6420686f77206d7563682060756e6c6f636b696e6760206368756e6b732065786973742e410120497420696d706c6965732060636f6e736f6c69646174655f756e6c6f636b656460207768696368206c6f6f7073206f76657220604c65646765722e756e6c6f636b696e67602c207768696368206973f020696e6469726563746c7920757365722d636f6e74726f6c6c65642e20536565205b60756e626f6e64605d20666f72206d6f72652064657461696c2e75012d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732c20796574207468652073697a65206f6620776869636820636f756c64206265206c61726765206261736564206f6e20606c6564676572602ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0501436f6d706c6578697479204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f76651c5570646174653a21012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c204c6f636b732c205b4f726967696e204163636f756e745da42d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c6564676572144b696c6c3a41012d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c2043757272656e74204572612c20426f6e6465642c20536c617368696e67205370616e732c205b4f726967696e4420204163636f756e745d2c204c6f636b734d012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c6420205b4f726967696e204163636f756e745d2c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a205309014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2c23203c2f7765696768743e2076616c696461746504011470726566732506013856616c696461746f725072656673000444e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e2c2d2d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a8c2d20526561643a2045726120456c656374696f6e205374617475732c204c65646765727c2d2057726974653a204e6f6d696e61746f72732c2056616c696461746f72732c23203c2f7765696768743e206e6f6d696e61746504011c746172676574732d0601a05665633c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263653e00054c0d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e004d01456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e20546869732063616e206f6e6c792062652063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743e2d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29fc77686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d495420284d41585f4e4f4d494e4154494f4e53292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e242d2d2d2d2d2d2d2d2d305765696768743a204f284e29807768657265204e20697320746865206e756d626572206f662074617267657473284442205765696768743ac42d2052656164733a2045726120456c656374696f6e205374617475732c204c65646765722c2043757272656e7420457261802d205772697465733a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e146368696c6c000644c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e202d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743a842d20526561643a20457261456c656374696f6e5374617475732c204c65646765727c2d2057726974653a2056616c696461746f72732c204e6f6d696e61746f72732c23203c2f7765696768743e247365745f706179656504011470617965652106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000740b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d382d205765696768743a204f283129302d204442205765696768743a48202020202d20526561643a204c656467657248202020202d2057726974653a2050617965652c23203c2f7765696768743e387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c65726d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650008408c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e002823203c7765696768743ee42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e282d2d2d2d2d2d2d2d2d2d305765696768743a204f283129284442205765696768743af02d20526561643a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c6572f42d2057726974653a20426f6e6465642c204c6564676572204e657720436f6e74726f6c6c65722c204c6564676572204f6c6420436f6e74726f6c6c65722c23203c2f7765696768743e4c7365745f76616c696461746f725f636f756e7404010c6e6577b104010c75333200092090536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e305765696768743a204f2831295857726974653a2056616c696461746f7220436f756e742c23203c2f7765696768743e60696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616cb104010c753332000a1ca8496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e547363616c655f76616c696461746f725f636f756e74040118666163746f723106011c50657263656e74000b1cd05363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e8053616d65206173205b607365745f76616c696461746f725f636f756e74605d2e2c23203c2f7765696768743e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974798001284964656e746974794964000138696e74656e6465645f636f756e743506012c4f7074696f6e3c7533323e000c203d01476f7665726e616e636520636f6d6d6974746565206f6e20322f3320726473206d616a6f726974792063616e20696e74726f647563652061206e657720706f74656e7469616c206964656e746974799d01746f2074686520706f6f6c206f66207065726d697373696f6e656420656e7469746965732077686f2063616e2072756e2076616c696461746f72732e205374616b696e67206d6f64756c65207573657320605065726d697373696f6e65644964656e74697479605501746f20656e737572652076616c696461746f7273206861766520636f6d706c65746564204b594220636f6d706c69616e636520616e6420636f6e736964657273207468656d20666f722076616c69646174696f6e2e002c2320417267756d656e7473e82a206f726967696e205265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e05012a20696e74656e6465645f636f756e74204e6f2e206f662076616c696461746f727320676976656e206964656e7469747920696e74656e647320746f2072756e2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974798001284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473f401445665633c543a3a4163636f756e7449643e000e28a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e00f0496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656ed0636865636b2074686520434444206578706972792074696d65206f6620697420616e64206966206974206973206578706972656431017468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d20746865206e6f6d696e6174696e672070726f636573732e0024233c7765696768743e982d20446570656e6473206f6e20706173736564206c697374206f66204163636f756e7449642e29012d20446570656e6473206f6e20746865206e6f2e206f6620636c61696d206973737565727320616e206163636f756e7449642068617320666f722074686520434444206578706972792e28233c2f7765696768743e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361709d01011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101401014368616e676573206d696e20626f6e642076616c756520746f206265207573656420696e2076616c696461746528292e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e7473742a20606e65775f76616c75656020746865206e6577206d696e696d756d34666f7263655f6e6f5f65726173001124ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e34666f7263655f6e65775f6572610012284901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e3c2d204e6f20617267756d656e74732e382d205765696768743a204f283129402d20577269746520466f7263654572612c23203c2f7765696768743e447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573f401445665633c543a3a4163636f756e7449643e001320c8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e182d204f285629582d2057726974653a20496e76756c6e657261626c65732c23203c2f7765696768743e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c7533320014280901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743ee84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2062652072656d6f766564b452656164733a20426f6e6465642c20536c617368696e67205370616e732c204163636f756e742c204c6f636b7381015772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c204163636f756e742c204c6f636b736857726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e50666f7263655f6e65775f6572615f616c776179730015200101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002823203c7765696768743e382d205765696768743a204f283129442d2057726974653a20466f7263654572612c23203c2f7765696768743e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e6469636573690401205665633c7533323e0016349443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e00b043616e2062652063616c6c6564206279207468652060543a3a536c61736843616e63656c4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e002823203c7765696768743e50436f6d706c65786974793a204f2855202b205329b477697468205520756e6170706c69656420736c6173686573207765696768746564207769746820553d31303030d0616e64205320697320746865206e756d626572206f6620736c61736820696e646963657320746f2062652063616e63656c65642e642d20526561643a20556e6170706c69656420536c6173686573682d2057726974653a20556e6170706c69656420536c61736865732c23203c2f7765696768743e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e6465780017640d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e00fc546869732063616e206f6e6c792062652063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743efc2d2054696d6520636f6d706c65786974793a206174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292ec02d20436f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e64207772697465732e2c2d2d2d2d2d2d2d2d2d2d2d19014e20697320746865204e756d626572206f66207061796f75747320666f72207468652076616c696461746f722028696e636c7564696e67207468652076616c696461746f72291c5765696768743a842d205265776172642044657374696e6174696f6e205374616b65643a204f284e29c02d205265776172642044657374696e6174696f6e20436f6e74726f6c6c657220284372656174696e67293a204f284e29284442205765696768743a25012d20526561643a20457261456c656374696f6e5374617475732c2043757272656e744572612c20486973746f727944657074682c204572617356616c696461746f725265776172642c29012020202020202020457261735374616b657273436c69707065642c2045726173526577617264506f696e74732c204572617356616c696461746f725072656673202838206974656d73290d012d205265616420456163683a20426f6e6465642c204c65646765722c2050617965652c204c6f636b732c2053797374656d204163636f756e74202835206974656d7329d42d20577269746520456163683a2053797374656d204163636f756e742c204c6f636b732c204c6564676572202833206974656d73292c23203c2f7765696768743e187265626f6e6404011476616c7565dd01013042616c616e63654f663c543e001838dc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e005101546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722c20616e642069742063616e206265206f6e6c792063616c6c6564207768656e885b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002823203c7765696768743ed02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73902d20426f756e64656420627920604d41585f554e4c4f434b494e475f4348554e4b53602ef02d2053746f72616765206368616e6765733a2043616e277420696e6372656173652073746f726167652c206f6e6c792064656372656173652069742e3c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d302d204442205765696768743afc202020202d2052656164733a20457261456c656374696f6e5374617475732c204c65646765722c204c6f636b732c205b4f726967696e204163636f756e745db4202020202d205772697465733a205b4f726967696e204163636f756e745d2c204c6f636b732c204c65646765722c23203c2f7765696768743e447365745f686973746f72795f64657074680801446e65775f686973746f72795f6465707468b1040120457261496e6465780001485f6572615f6974656d735f64656c65746564b104010c7533320019542d015365742060486973746f72794465707468602076616c75652e20546869732066756e6374696f6e2077696c6c2064656c65746520616e7920686973746f727920696e666f726d6174696f6e7c7768656e2060486973746f727944657074686020697320726564756365642e002c506172616d65746572733a0d012d20606e65775f686973746f72795f6465707468603a20546865206e657720686973746f727920646570746820796f7520776f756c64206c696b6520746f207365742e45012d20606572615f6974656d735f64656c65746564603a20546865206e756d626572206f66206974656d7320746861742077696c6c2062652064656c6574656420627920746869732064697370617463682e4101202020546869732073686f756c64207265706f727420616c6c207468652073746f72616765206974656d7320746861742077696c6c2062652064656c6574656420627920636c656172696e67206f6c64410120202065726120686973746f72792e204e656564656420746f207265706f727420616e2061636375726174652077656967687420666f72207468652064697370617463682e20547275737465642062799c20202060526f6f746020746f207265706f727420616e206163637572617465206e756d6265722e00504f726967696e206d75737420626520726f6f742e002823203c7765696768743edc2d20453a204e756d626572206f6620686973746f7279206465707468732072656d6f7665642c20692e652e203130202d3e2037203d2033382d205765696768743a204f284529302d204442205765696768743a9c202020202d2052656164733a2043757272656e74204572612c20486973746f72792044657074686c202020202d205772697465733a20486973746f72792044657074682d01202020202d20436c6561722050726566697820456163683a20457261205374616b6572732c204572615374616b657273436c69707065642c204572617356616c696461746f7250726566737d01202020202d2057726974657320456163683a204572617356616c696461746f725265776172642c2045726173526577617264506f696e74732c2045726173546f74616c5374616b652c2045726173537461727453657373696f6e496e6465782c23203c2f7765696768743e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a3c5d0152656d6f766520616c6c20646174612073747275637475726520636f6e6365726e696e672061207374616b65722f7374617368206f6e6365206974732062616c616e636520697320617420746865206d696e696d756d2e5d015468697320697320657373656e7469616c6c79206571756976616c656e7420746f206077697468647261775f756e626f6e64656460206578636570742069742063616e2062652063616c6c656420627920616e796f6e65f4616e6420746865207461726765742060737461736860206d7573742068617665206e6f2066756e6473206c656674206265796f6e64207468652045442e008c546869732063616e2062652063616c6c65642066726f6d20616e79206f726967696e2e00fc2d20607374617368603a20546865207374617368206163636f756e7420746f20726561702e204974732062616c616e6365206d757374206265207a65726f2e002823203c7765696768743e2101436f6d706c65786974793a204f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e73206f6e20746865206163636f756e742e284442205765696768743ad42d2052656164733a205374617368204163636f756e742c20426f6e6465642c20536c617368696e67205370616e732c204c6f636b73a1012d205772697465733a20426f6e6465642c20536c617368696e67205370616e73202869662053203e2030292c204c65646765722c2050617965652c2056616c696461746f72732c204e6f6d696e61746f72732c205374617368204163636f756e742c204c6f636b73702d2057726974657320456163683a205370616e536c617368202a20532c23203c2f7765696768743e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572733906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163743d060148436f6d7061637441737369676e6d656e747300011473636f726509070134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a650d070130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572733906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163743d060148436f6d7061637441737369676e6d656e747300011473636f726509070134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a650d070130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d04210153797374656d2076657273696f6e206f6620607061796f75745f7374616b6572732829602e204f6e6c792062652063616c6c65642062792074686520726f6f74206f726967696e2e6c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f737769746368a1010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742e01012a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f7220736c617368696e672eb07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974798001284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722ec42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f756e742e546368696c6c5f66726f6d5f676f7665726e616e63650801206964656e746974798001284964656e74697479496400012873746173685f6b657973f401445665633c543a3a4163636f756e7449643e00203884474320666f72636566756c6c79206368696c6c7320612076616c696461746f722ed8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2320417267756d656e7473702a206f726967696e207768696368206d75737420626520612047432e01012a206964656e74697479206d757374206265207065726d697373696f6e656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e15012a2073746173685f6b65797320636f6e7461696e7320746865207365636f6e64617279206b657973206f6620746865207065726d697373696f6e6564206964656e74697479002023204572726f7273b42a20604261644f726967696e6020546865206f726967696e20776173206e6f742061204743206d656d6265722e91012a206043616c6c4e6f74416c6c6f77656460205468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642ecc2a20604e6f7445786973747360205065726d697373696f6e65642076616c696461746f7220646f65736e27742065786973742efc2a20604e6f74537461736860204e6f742061207374617368206163636f756e7420666f7220746865207065726d697373696f6e6564206964656e746974792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e2106083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300002506083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e2906011c50657262696c6c00011c626c6f636b656429010110626f6f6c000029060000069d01002d060000026d050031060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000350604184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000039060000025d03003d06083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331410600000118766f746573324d0600000118766f74657333610600000118766f746573346d0600000118766f74657335790600000118766f74657336850600000118766f74657337910600000118766f746573389d0600000118766f74657339a9060000011c766f7465733130b5060000011c766f7465733131c1060000011c766f7465733132cd060000011c766f7465733133d9060000011c766f7465733134e5060000011c766f7465733135f1060000011c766f7465733136fd060000004106000002450600450600000408b10449060049060000065d03004d0600000251060051060000040cb1045506490600550600000408490659060059060000065d06005d060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004005d03010c7531360000610600000265060065060000040cb10469064906006906000003020000005506006d0600000271060071060000040cb104750649060075060000030300000055060079060000027d06007d060000040cb1048106490600810600000304000000550600850600000289060089060000040cb1048d064906008d0600000305000000550600910600000295060095060000040cb10499064906009906000003060000005506009d06000002a10600a1060000040cb104a506490600a50600000307000000550600a906000002ad0600ad060000040cb104b106490600b10600000308000000550600b506000002b90600b9060000040cb104bd06490600bd0600000309000000550600c106000002c50600c5060000040cb104c906490600c9060000030a000000550600cd06000002d10600d1060000040cb104d506490600d5060000030b000000550600d906000002dd0600dd060000040cb104e106490600e1060000030c000000550600e506000002e90600e9060000040cb104ed06490600ed060000030d000000550600f106000002f50600f5060000040cb104f906490600f9060000030e000000550600fd0600000201070001070000040cb104050749060005070000030f0000005506000907084473705f6e706f735f656c656374696f6e7334456c656374696f6e53636f726500000c01346d696e696d616c5f7374616b6518013c457874656e64656442616c616e636500012473756d5f7374616b6518013c457874656e64656442616c616e636500014473756d5f7374616b655f7371756172656418013c457874656e64656442616c616e636500000d07083870616c6c65745f7374616b696e6730456c656374696f6e53697a65000008012876616c696461746f72734906013856616c696461746f72496e6465780001286e6f6d696e61746f7273b10401384e6f6d696e61746f72496e646578000011070c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579731507011c543a3a4b65797300011470726f6f6630011c5665633c75383e000024e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e0034232320436f6d706c657869747959012d20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f69647328296020776869636820697320202066697865642e2870757267655f6b657973000130c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e0034232320436f6d706c65786974793d012d20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e15070c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061bd0101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265050501c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65c90101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279190701fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000019070c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400cd01013c737232353531393a3a5075626c696300001d070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66210701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6659050140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66210701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6659050140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d6265720002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e2107085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f66080448012c044e0110000801187365745f6964280114536574496400013065717569766f636174696f6e2507014845717569766f636174696f6e3c482c204e3e00002507085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e080448012c044e011001081c507265766f7465040029070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d697404003d070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100002907084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401bd010456012d07045301310700100130726f756e645f6e756d62657228010c7536340001206964656e74697479bd010108496400011466697273743907011828562c2053290001187365636f6e643907011828562c20532900002d07084066696e616c6974795f6772616e6470611c507265766f7465080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e000031070c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e61747572650000040035070148656432353531393a3a5369676e6174757265000035070c1c73705f636f72651c65643235353139245369676e617475726500000400290201205b75383b2036345d00003907000004082d073107003d07084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401bd010456014107045301310700100130726f756e645f6e756d62657228010c7536340001206964656e74697479bd010108496400011466697273744507011828562c2053290001187365636f6e644507011828562c20532900004107084066696e616c6974795f6772616e64706124507265636f6d6d6974080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e0000450700000408410731070049070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c040454000104246865617274626561740801246865617274626561744d0701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265610701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e617475726500001438232320436f6d706c65786974793a59012d20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973206c656e677468206f66b02020606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e67746820604560042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e4d07084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465510701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000051070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964550701304f706171756550656572496400014865787465726e616c5f616464726573736573590701505665633c4f70617175654d756c7469616464723e00005507081c73705f636f7265304f70617175655065657249640000040030011c5665633c75383e000059070000025d07005d070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040030011c5665633c75383e00006107104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e61747572650000040065070148737232353531393a3a5369676e6174757265000065070c1c73705f636f72651c73723235353139245369676e617475726500000400290201205b75383b2036345d00006907082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65776d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f6d05018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e6d07083070616c6c65745f61737365741043616c6c0404540001783c72656769737465725f7469636b65720401187469636b6572a801185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696428010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696428010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741801106e616d65fd01012441737365744e616d650001187469636b6572a801185469636b6572000124646976697369626c6529010110626f6f6c00012861737365745f74797065f101012441737365745479706500012c6964656e74696669657273010201505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64110201604f7074696f6e3c46756e64696e67526f756e644e616d653e0003602d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722e59022d20605469636b65724e6f74416c7068616e756d657269636020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d616c7068616e756d657269632063686172616374657273206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a801185469636b657200042cbc467265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a801185469636b657200052cc4556e667265657a6573207472616e736665727320616e64206d696e74696e67206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a801185469636b65720001106e616d65fd01012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650c01187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e6365000138706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e6400072c550149737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722c207768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e747329012a20606f726967696e60202d2041207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea42a20607469636b657260202d20546865205b605469636b6572605d206f662074686520746f6b656e2ed82a2060616d6f756e7460202d2054686520616d6f756e74206f6620746f6b656e7320746861742077696c6c206265206973737565642e81012a2060706f7274666f6c696f5f6b696e6460202d20546865205b60506f7274666f6c696f4b696e64605d206f662074686520706f7274666f6c696f20746861742077696c6c207265636569766520746865206d696e74656420746f6b656e732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a801185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a801185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373710701345665633c446f63756d656e743e0001187469636b6572a801185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964732503013c5665633c446f63756d656e7449643e0001187469636b6572a801185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a801185469636b65720001106e616d651502014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a801185469636b657200012c6964656e74696669657273010201505665633c41737365744964656e7469666965723e000d34785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e59012a20606964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273cc2020206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a2041737365744c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a801185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fe0012c506f7274666f6c696f4964000e1c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747930011c5665633c75383e000f2478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651801106e616d65fd01012441737365744e616d650001187469636b6572a801185469636b6572000124646976697369626c6529010110626f6f6c000144637573746f6d5f61737365745f7479706530011c5665633c75383e00012c6964656e74696669657273010201505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64110201604f7074696f6e3c46756e64696e67526f756e644e616d653e0010042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a801185469636b657200010c6b65797d02014041737365744d657461646174614b657900011476616c75654902014841737365744d6574616461746156616c756500011864657461696c4d0201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00114464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a801185469636b657200010c6b65797d02014041737365744d657461646174614b657900011864657461696c5102018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00123cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a801185469636b65720001106e616d655902014441737365744d657461646174614e616d65000110737065636102014441737365744d657461646174615370656300011476616c75654902014841737365744d6574616461746156616c756500011864657461696c4d0201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a801185469636b65720001106e616d655902014441737365744d657461646174614e616d65000110737065636102014441737365744d657461646174615370656300144090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d655902014441737365744d657461646174614e616d65000110737065636102014441737365744d657461646174615370656300152c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e5472656465656d5f66726f6d5f706f7274666f6c696f0c01187469636b6572a801185469636b657200011476616c756518011c42616c616e6365000124706f7274666f6c696fe40134506f7274666f6c696f4b696e64001644ad0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c6572277320706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2ee82a2060706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e7375012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732060706f7274666f6c696f6020646f65736e2774206861766520656e6f75676820667265652062616c616e6365e42d2060506f7274666f6c696f446f65734e6f744578697374602049662074686520706f7274666f6c696f20646f65736e27742065786973742e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f447570646174655f61737365745f747970650801187469636b6572a801185469636b657200012861737365745f74797065f10101244173736574547970650017307455706461746573207468652074797065206f6620616e2061737365742e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2eac2a206061737365745f7479706560202d20746865206e65772074797065206f662074686520746f6b656e2e00242323204572726f727369012d2060496e76616c6964437573746f6d417373657454797065496460206966206061737365745f7479706560206973206f66207479706520637573746f6d20616e642068617320616e20696e76616c696420747970652069642e003423205065726d697373696f6e731c2a2041737365746472656d6f76655f6c6f63616c5f6d657461646174615f6b65790801187469636b6572a801185469636b65720001246c6f63616c5f6b65795d02015441737365744d657461646174614c6f63616c4b6579001840e052656d6f76657320746865206173736574206d65746164617461206b657920616e642076616c7565206f662061206c6f63616c206b65792e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722ec82a20607469636b657260202d20746865207469636b6572206f6620746865206c6f63616c206d65746164617461206b65792e9c2a20606c6f63616c5f6b657960202d20746865206c6f63616c206d65746164617461206b65792e002023204572726f7273c501202d20605365636f6e646172794b65794e6f74417574686f72697a6564466f72417373657460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732e8501202d2060556e617574686f72697a65644167656e7460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732ee8202d206041737365744d657461646174614b657949734d697373696e6760202d20696620746865206b657920646f656e7327742065786973742e1101202d206041737365744d6574616461746156616c756549734c6f636b656460202d206966207468652076616c7565206f6620746865206b6579206973206c6f636b65642e7d01202d2041737365744d657461646174614b657942656c6f6e6773546f4e4654436f6c6c656374696f6e202d20696620746865206b65792069732061206d616e6461746f7279206b657920696e20616e204e465420636f6c6c656374696f6e2e003423205065726d697373696f6e731c2a2041737365745472656d6f76655f6d657461646174615f76616c75650801187469636b6572a801185469636b65720001306d657461646174615f6b65797d02014041737365744d657461646174614b657900193ccc52656d6f76657320746865206173736574206d657461646174612076616c7565206f662061206d65746164617461206b65792e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722ec82a20607469636b657260202d20746865207469636b6572206f6620746865206c6f63616c206d65746164617461206b65792e15012a20606d657461646174615f6b657960202d20746865206d65746164617461206b657920746861742077696c6c2068617665206974732076616c75652064656c657465642e002023204572726f7273c501202d20605365636f6e646172794b65794e6f74417574686f72697a6564466f72417373657460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732e8501202d2060556e617574686f72697a65644167656e7460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732ee8202d206041737365744d657461646174614b657949734d697373696e6760202d20696620746865206b657920646f656e7327742065786973742e1101202d206041737365744d6574616461746156616c756549734c6f636b656460202d206966207468652076616c7565206f6620746865206b6579206973206c6f636b65642e003423205065726d697373696f6e731c2a204173736574646578656d70745f7469636b65725f61666669726d6174696f6e0401187469636b6572a801185469636b6572001a20f45072652d617070726f7665732074686520726563656976656d656e74206f662074686520617373657420666f7220616c6c206964656e7469746965732e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e003423205065726d697373696f6e73182a20526f6f748c72656d6f76655f7469636b65725f61666669726d6174696f6e5f6578656d7074696f6e0401187469636b6572a801185469636b6572001b20e452656d6f76657320746865207072652d617070726f76616c206f662074686520617373657420666f7220616c6c206964656e7469746965732e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206861766520697473206578656d7074696f6e2072656d6f7665642e003423205065726d697373696f6e73182a20526f6f74487072655f617070726f76655f7469636b65720401187469636b6572a801185469636b6572001c20a45072652d617070726f7665732074686520726563656976656d656e74206f6620616e2061737365742e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e003423205065726d697373696f6e731c2a2041737365746872656d6f76655f7469636b65725f7072655f617070726f76616c0401187469636b6572a801185469636b6572001d209452656d6f766573207468652070726520617070726f76616c206f6620616e2061737365742e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206861766520697473206578656d7074696f6e2072656d6f7665642e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e71070000021d020075070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69649902011043414964000124706f7274666f6c696f7907015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a801185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742801184d6f6d656e74000128657870697265735f6174fc01384f7074696f6e3c4d6f6d656e743e0000ac2501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974d42d2060446973747269627574696f6e416d6f756e7449735a65726f60206966207468652060616d6f756e7460206973207a65726f2ee82d2060446973747269627574696f6e506572536861726549735a65726f602069662074686520607065725f736861726560206973207a65726f2e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f6964990201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69649902011043414964000118686f6c6465728001284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f6964990201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f6964990201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e790704184f7074696f6e04045401e80108104e6f6e6500000010536f6d650400e800000100007d070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a801185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747928010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a801185469636b65720001207363686564756c65b502014c5363686564756c65436865636b706f696e7473000244a4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a801185469636b65720001086964b10201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8107086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a801185469636b657200014473656e6465725f636f6e646974696f6e73c90201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73c90201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722e6901496620746865726520617265206475706c696361746520436c61696d547970657320666f72206120706172746963756c61722074727573746564206973737565722c206475706c696361746573206172652072656d6f7665642e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a801185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a801185469636b657200014061737365745f636f6d706c69616e6365f10201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a801185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a801185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a801185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a801185469636b6572000118697373756572e102013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a801185469636b65720001186973737565728001284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a801185469636b657200011c6e65775f726571c5020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8507086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a801185469636b657200011c74617267657473f90201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a801185469636b657200010c746178a502010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a801185469636b657200012474617865645f6469648001284964656e74697479496400010c7461780103012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a801185469636b65720001106b696e640903011843414b696e640001246465636c5f646174652801184d6f6d656e7400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7321030124434144657461696c7300011c74617267657473910701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f7461780103012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178950701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869649902011043414964000110646f63732503013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f696499020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f6964990201104341496400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f617267739907016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f7907015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a801185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742801184d6f6d656e74000128657870697265735f6174fc01384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e890704184f7074696f6e040454018d070108104e6f6e6500000010536f6d6504008d0700000100008d07086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002801184d6f6d656e74000000404578697374696e675363686564756c650400b10201285363686564756c654964000100204578697374696e670400ad020130436865636b706f696e74496400020000910704184f7074696f6e04045401f9020108104e6f6e6500000010536f6d650400f9020000010000950704184f7074696f6e0404540119030108104e6f6e6500000010536f6d650400190300000100009907086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a801185469636b65720001106b696e640903011843414b696e640001246465636c5f646174652801184d6f6d656e7400012c7265636f72645f64617465890701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7321030124434144657461696c7300011c74617267657473910701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f7461780103012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178950701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e00009d070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f6964990201104341496400011472616e67652d03013c42616c6c6f7454696d6552616e67650001106d6574613103012842616c6c6f744d65746100010c72637629010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69649902011043414964000114766f7465735103013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f6964990201104341496400010c656e642801184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f696499020110434149640001106d6574613103012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f6964990201104341496400010c72637629010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69649902011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea107082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e6529010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616ced050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c6502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e710301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869646d03011450697049640001286179655f6f725f6e617929010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c04010869646d030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c04010869646d0301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c04010869646d0301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e08010869646d0301145069704964000114756e74696c350601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473a50701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f70697004010869646d0301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469648001284964656e74697479496400010869646d0301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ea507000002a90700a907000004086d03ad0700ad07082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000b107084070616c6c65745f706f7274666f6c696f1043616c6c040454000120406372656174655f706f7274666f6c696f0401106e616d65a5030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de8013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de8013c506f7274666f6c696f4e756d62657200011c746f5f6e616d65a5030134506f7274666f6c696f4e616d6500021c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964e0012c506f7274666f6c696f4964000320bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696428010c753634000400506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6de0012c506f7274666f6c696f4964000108746fe0012c506f7274666f6c696f496400011466756e6473b50701245665633c46756e643e000548a1014d6f7665732066756e6769676c6520616e206e6f6e2d66756e6769626c6520746f6b656e732066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e63654d012a20604e6f4475706c6963617465417373657473416c6c6f77656460207468652073616d65207469636b65722063616e277420626520726570656174656420696e20746865206974656d7320766563746f722e55012a2060496e76616c69645472616e736665724e46544e6f744f776e656460206966207468652063616c6c657220697320747279696e6720746f206d6f766520616e204e465420686520646f65736e2774206f776e2e31012a2060496e76616c69645472616e736665724e465449734c6f636b656460206966207468652063616c6c657220697320747279696e6720746f206d6f76652061206c6f636b6564204e46542e003423205065726d697373696f6e732c2a20506f7274666f6c696f547072655f617070726f76655f706f7274666f6c696f0801187469636b6572a801185469636b6572000130706f7274666f6c696f5f6964e0012c506f7274666f6c696f4964000624e05072652d617070726f7665732074686520726563656976656d656e74206f6620616e20617373657420746f206120706f7274666f6c696f2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e55012a2060706f7274666f6c696f5f696460202d20746865205b60506f7274666f6c696f4964605d20746861742063616e207265636569766520607469636b65726020776974686f75742061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f7472656d6f76655f706f7274666f6c696f5f7072655f617070726f76616c0801187469636b6572a801185469636b6572000130706f7274666f6c696f5f6964e0012c506f7274666f6c696f4964000724d052656d6f766573207468652070726520617070726f76616c206f6620616e20617373657420746f206120706f7274666f6c696f2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e55012a2060706f7274666f6c696f5f696460202d20746865205b60506f7274666f6c696f4964605d20746861742063616e207265636569766520607469636b65726020776974686f75742061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb507000002b90700b9070c4c706f6c796d6573685f7072696d69746976657324706f7274666f6c696f1046756e64000008012c6465736372697074696f6eb103013c46756e644465736372697074696f6e0001106d656d6f8401304f7074696f6e3c4d656d6f3e0000bd07084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e74c5030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70c107012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec1070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f7000013c4c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c004c4e4654437265617465436f6c6c656374696f6e000d001c4e46544d696e74000e0000c5070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000470416e6f6e796d6f75736c79207363686564756c652061207461736b2e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001049443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e387363686564756c655f6e616d656414010869640401205461736b4e616d650001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000204585363686564756c652061206e616d6564207461736b2e3063616e63656c5f6e616d656404010869640401205461736b4e616d650003047843616e63656c2061206e616d6564207363686564756c6564207461736b2e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000404a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e507363686564756c655f6e616d65645f616674657214010869640401205461736b4e616d650001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963c90701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000504905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ec90704184f7074696f6e04045401cd030108104e6f6e6500000010536f6d650400cd030000010000cd07084470616c6c65745f736574746c656d656e741043616c6c04045400013c306372656174655f76656e75650c011c64657461696c73dd03013056656e756544657461696c7300011c7369676e657273f401445665633c543a3a4163636f756e7449643e00010c747970e103012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964d903011c56656e7565496400011c64657461696c73dd03013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964d903011c56656e7565496400010c747970e103012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e5061666669726d5f776974685f72656365697074730c010869648d020134496e737472756374696f6e496400013c726563656970745f64657461696c73d10701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000330cc4163636570747320616e20696e737472756374696f6e20616e6420636c61696d732061207369676e656420726563656970742e002c2320417267756d656e74737c2a2060696460202d2054617267657420696e737472756374696f6e2069642ea82a20606c65675f696460202d20546172676574206c656720696420666f72207468652072656365697074d42a2060726563656970745f75696460202d20526563656970742049442067656e65726174656420627920746865207369676e65722e8c2a20607369676e657260202d205369676e6572206f662074686520726563656970742e842a20607369676e65645f6461746160202d205369676e656420726563656970742e7d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f20616363657074207468697320696e737472756374696f6e20776974682e003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a801185469636b657200011c656e61626c656429010110626f6f6c000420c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a801185469636b657200011876656e756573f10301305665633c56656e756549643e00051c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a801185469636b657200011876656e756573f10301305665633c56656e756549643e00061c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a204173736574507570646174655f76656e75655f7369676e6572730c01086964d903011c56656e7565496400011c7369676e657273f401445665633c543a3a4163636f756e7449643e00012c6164645f7369676e65727329010110626f6f6c0007105c4564697420612076656e75652773207369676e6572732eb42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a20607369676e657273602073706563696669657320746865207369676e65727320746f206164642f72656d6f76652e91012a20606164645f7369676e657273602073706563696669657320746865207570646174652074797065206164642f72656d6f7665206f662076656e756520776865726520616464206973207472756520616e642072656d6f76652069732066616c73652e68657865637574655f6d616e75616c5f696e737472756374696f6e18010869648d020134496e737472756374696f6e4964000124706f7274666f6c696f8102014c4f7074696f6e3c506f7274666f6c696f49643e00014866756e6769626c655f7472616e736665727310010c7533320001386e6674735f7472616e736665727310010c7533320001486f6666636861696e5f7472616e736665727310010c7533320001307765696768745f6c696d6974d50401384f7074696f6e3c5765696768743e000834844d616e75616c6c7920657865637574657320616e20696e737472756374696f6e2e002c2320417267756d656e747301012a20606964603a20546865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e20746f2062652065786563757465642e95012a2060706f7274666f6c696f603a20204f6e65206f66207468652063616c6c65722773205b60506f7274666f6c696f4964605d20776869636820697320616c736f206120636f756e74657220706174727920696e2074686520696e737472756374696f6e2e61014966204e6f6e652c207468652063616c6c6572206d757374206265207468652076656e75652063726561746f72206f72206120636f756e74657220706172747920696e2061205b604c65673a3a4f6666436861696e605d2e1d012a206066756e6769626c655f7472616e7366657273603a20546865206e756d626572206f662066756e6769626c65206c65677320696e2074686520696e737472756374696f6e2e31012a20606e6674735f7472616e7366657273603a20546865206e756d626572206f66206e667473206265696e67207472616e7366657272656420696e2074686520696e737472756374696f6e2e1d012a20606f6666636861696e5f7472616e7366657273603a20546865206e756d626572206f66206f6666636861696e206c65677320696e2074686520696e737472756374696f6e2e8d012a20607765696768745f6c696d6974603a20416e206f7074696f6e616c206d6178696d756d205b60576569676874605d2076616c756520746f206265206368617267656420666f7220657865637574696e672074686520696e737472756374696f6e2e710149662074686520607765696768745f6c696d697460206973206c657373207468616e2074686520726571756972656420616d6f756e742c2074686520696e737472756374696f6e2077696c6c206661696c20657865637574696f6e2e004d024e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f657865637574655f696e737472756374696f6e5f696e666f602072657475726e7320616e20696e7374616e6365206f66205b6045786563757465496e737472756374696f6e496e666f605d2c20776869636820636f6e7461696e732074686520636f756e7420706172616d65746572732e3c6164645f696e737472756374696f6e18012076656e75655f6964d903011c56656e7565496400013c736574746c656d656e745f74797065f5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773f90301205665633c4c65673e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e0009345c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2ed9012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c656420696e20746865206e65787420626c6f636b2c20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73846f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2eac2a20606d656d6f60202d204d656d6f206669656c6420666f72207468697320696e737472756374696f6e2e0020232057656967687498603935305f3030305f303030202b20315f3030305f303030202a206c6567732e6c656e282960686164645f616e645f61666669726d5f696e737472756374696f6e1c012076656e75655f6964d903011c56656e7565496400013c736574746c656d656e745f74797065f5030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773f90301205665633c4c65673e000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e000a388c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e7473ec2a206076656e75655f696460202d204944206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2ed9012a2060736574746c656d656e745f7479706560202d20446566696e65732069662074686520696e737472756374696f6e2073686f756c6420626520736574746c656420696e20746865206e65787420626c6f636b2c20616674657220726563656976696e6720616c6c2061666669726d6174696f6e73846f722077616974696e672074696c6c206120737065636966696320626c6f636b2e51012a206074726164655f6461746560202d204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f6461746560202d204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f7263656429b42a20606c65677360202d204c65677320696e636c7564656420696e207468697320696e737472756374696f6e2e6d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2075736520696e20746869732061666669726d6174696f6e732edc2a2060696e737472756374696f6e5f6d656d6f60202d204d656d6f206669656c6420666f72207468697320696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e08010869648d020134496e737472756374696f6e4964000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000b20bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473fc2a2060696460202d205468652060496e737472756374696f6e496460206f662074686520696e737472756374696f6e20746f2062652061666669726d65642e69012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2061666669726d207468697320696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e08010869648d020134496e737472756374696f6e4964000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000c20c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e7473ec2a2060696460202d20496e737472756374696f6e20696420666f7220746861742061666669726d6174696f6e206765742077697468647261776e2e5d012a2060706f7274666f6c696f7360202d20506f7274666f6c696f732074686174207468652073656e64657220636f6e74726f6c7320616e642077616e747320746f2077697468647261772061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e08010869648d020134496e737472756374696f6e4964000124706f7274666f6c696fe0012c506f7274666f6c696f4964000d208052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e7473882a2060696460202d20496e737472756374696f6e20696420746f2072656a6563742ed02a2060706f7274666f6c696f60202d20506f7274666f6c696f20746f2072656a6563742074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f74657865637574655f7363686564756c65645f696e737472756374696f6e08010869648d020134496e737472756374696f6e49640001307765696768745f6c696d6974200118576569676874000e048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed107000002d50700d5070c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501d9070018010c75696428010c753634000138696e737472756374696f6e5f69648d020134496e737472756374696f6e49640001186c65675f6964e50301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265d90701444f6666436861696e5369676e61747572650001206d65746164617461e903015c4f7074696f6e3c526563656970744d657461646174613e0000d907082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040035070148656432353531393a3a5369676e61747572650000001c53723235353139040065070148737232353531393a3a5369676e61747572650001001445636473610400dd07014065636473613a3a5369676e617475726500020000dd070c1c73705f636f7265146563647361245369676e617475726500000400e10701205b75383b2036355d0000e107000003410000000800e507084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f7374617473080114617373657405040128417373657453636f7065000128737461745f7479706573e907014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c0114617373657405040128417373657453636f7065000124737461745f747970650d040120537461745479706500011876616c756573ed07015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e6365080114617373657405040128417373657453636f706500014c7472616e736665725f636f6e646974696f6e73f107016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d707429010110626f6f6c0001286578656d70745f6b65793d0401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e746974696573f507014442547265655365743c53636f706549643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee90704204254726565536574040454010d040004000904000000ed07042042547265655365740404540121040004001d04000000f107042042547265655365740404540139040004003504000000f5070420425472656553657404045401800004003501000000f907082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fe0012c506f7274666f6c696f49640001386f66666572696e675f6173736574a801185469636b657200014472616973696e675f706f7274666f6c696fe0012c506f7274666f6c696f496400013472616973696e675f6173736574a801185469636b65720001147469657273fd0701385665633c5072696365546965723e00012076656e75655f6964d903011c56656e756549640001147374617274fc01444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64fc01444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d654d04013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fe0012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fe0012c506f7274666f6c696f49640001386f66666572696e675f6173736574a801185469636b657200010869644904013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f70726963653104013c4f7074696f6e3c42616c616e63653e00011c72656365697074050801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a801185469636b657200010869644904013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a801185469636b657200010869644904013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a801185469636b657200010869644904013046756e6472616973657249640001147374617274280124543a3a4d6f6d656e7400010c656e64fc01444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a801185469636b657200010869644904013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652efd070000020108000108082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000050804184f7074696f6e04045401d5070108104e6f6e6500000010536f6d650400d50700000100000908083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e656669636961726965730d0801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001c51014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e25012a2060496e76616c69644964656e74697479603a204966206f6e65206f66207468652062656e656669636961726965732068617320616e20696e76616c6964206964656e746974792e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0d080000021108001108084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869648001284964656e746974794964000118616d6f756e7418011c42616c616e6365000015080c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400012414626174636804011463616c6c731908017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000487c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265d9070150543a3a4f6666436861696e5369676e617475726500011063616c6c1d080198556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f66207461726765740040504f4c594d4553483a2061646465642e2462617463685f616c6c04011463616c6c731908017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000234ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c64697370617463685f617308012461735f6f726967696e21080154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000318c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e0034232320436f6d706c65786974791c2d204f2831292e2c666f7263655f626174636804011463616c6c731908017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004347c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c776974685f77656967687408011063616c6ced05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874200118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e2462617463685f6f6c6404011463616c6c731908017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000650c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468656101604261746368496e7465727275707465644f6c6460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164655901616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465644f6c64604c6576656e74206973206465706f73697465642e00b8504f4c594d4553483a2052656e616d65642066726f6d206062617463686020616e6420646570726563617465642e3062617463685f61746f6d696304011463616c6c731908017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000754c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e31014f6e206661696c7572652c20616e206576656e7420604261746368496e7465727275707465644f6c64286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef0496620616e792063616c6c206661696c65642c207468656e20604261746368496e7465727275707465644f6c6460206973206465706f73697465642e2101496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465644f6c6460206576656e74206973206465706f73697465642e0054504f4c594d4553483a20646570726563617465642e4062617463685f6f7074696d697374696304011463616c6c731908017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00085cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e2101496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465644f6c6460206576656e74206973206465706f73697465642e0054504f4c594d4553483a20646570726563617465642e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e1908000002ed05001d08083870616c6c65745f7574696c69747928556e6971756543616c6c04044301ed05000801146e6f6e6365280148417574686f72697a6174696f6e4e6f6e636500011063616c6ced050118426f783c433e000021080c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400250801746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d69747465650400290801f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d697474656504002d0801f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400310801f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400350801110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f69640004000025080c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200002908084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449013d01010420456e646f72736564000000002d08084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015901010420456e646f72736564000000003108084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449016901010420456e646f72736564000000003508081c73705f636f726510566f6964000100003908082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e3d08085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a801185469636b65720001147065726d73b8015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a801185469636b6572000108696425010110414749640001147065726d73b8015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a801185469636b65720001146167656e748001284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a801185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a801185469636b65720001146167656e748001284964656e74697479496400011467726f7570210101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696428010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574681001187469636b6572a801185469636b65720001147065726d73b8015045787472696e7369635065726d697373696f6e730001187461726765748001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a801185469636b65720001147065726d73b8015045787472696e7369635065726d697373696f6e730001146167656e748001284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4108083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696428010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4508083870616c6c65745f726577617264731043616c6c04045400010840636c61696d5f69746e5f7265776172640c013c5f7265776172645f61646472657373000130543a3a4163636f756e7449640001305f69746e5f61646472657373000130543a3a4163636f756e7449640001285f7369676e6174757265d9070150543a3a4f6666436861696e5369676e617475726500003450436c61696d20616e2049544e207265776172642e0030232320417267756d656e7473d82a206069746e5f61646472657373602073706563696679696e672074686520617761726465642061646472657373206f6e2049544e2ed42a20607369676e6174757265602061757468656e7469636174696e672074686520636c61696d20746f20746865207265776172642e7501202020546865207369676e61747572652073686f756c6420636f6e7461696e20607265776172645f616464726573736020666f6c6c6f7765642062792074686520737566666978206022636c61696d5f69746e5f72657761726422602cb8202020616e64206d7573742068617665206265656e207369676e6564206279206069746e5f61646472657373602e002023204572726f727345012a2060496e73756666696369656e7442616c616e636560202d2049746e20726577617264732068617320696e73756666696369656e742066756e647320746f20697373756520746865207265776172642e31012a2060496e76616c69645369676e617475726560202d20607369676e6174757265602068616420616e20696e76616c6964207369676e6572206f7220696e76616c6964206d6573736167652e69012a206049746e526577617264416c7265616479436c61696d656460202d205265776172642069737375656420746f20746865206069746e5f61646472657373602068617320616c7265616479206265656e20636c61696d65642e89012a2060556e6b6e6f776e49746e4164647265737360202d206069746e5f6164647265737360206973206e6f7420696e207468652072657761726473207461626c6520616e6420686173206e6f2072657761726420746f20626520636c61696d65642e547365745f69746e5f7265776172645f7374617475730801305f69746e5f61646472657373000130543a3a4163636f756e74496400011c5f7374617475734908013c49746e5265776172645374617475730001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e4908083870616c6c65745f726577617264733c49746e52657761726453746174757300010824556e636c61696d6564040018011c42616c616e63650000001c436c61696d6564000100004d080c4070616c6c65745f636f6e7472616374731870616c6c65741043616c6c0404540001243c63616c6c5f6f6c645f776569676874140110646573746d0501504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d6974510801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e0001106461746130011c5665633c75383e0000041501446570726563617465642076657273696f6e206966205b6053656c663a3a63616c6c605d20666f722075736520696e20616e20696e2d73746f72616765206043616c6c602e80696e7374616e74696174655f776974685f636f64655f6f6c645f77656967687418011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d6974510801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0001045901446570726563617465642076657273696f6e206966205b6053656c663a3a696e7374616e74696174655f776974685f636f6465605d20666f722075736520696e20616e20696e2d73746f72616765206043616c6c602e58696e7374616e74696174655f6f6c645f77656967687418011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d6974510801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0002043101446570726563617465642076657273696f6e206966205b6053656c663a3a696e7374616e7469617465605d20666f722075736520696e20616e20696e2d73746f72616765206043616c6c602e2c75706c6f61645f636f64650c0110636f646530011c5665633c75383e00015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e00012c64657465726d696e69736d5d08012c44657465726d696e69736d000350ec55706c6f6164206e65772060636f64656020776974686f757420696e7374616e74696174696e67206120636f6e74726163742066726f6d2069742e00210149662074686520636f646520646f6573206e6f7420616c72656164792065786973742061206465706f7369742069732072657365727665642066726f6d207468652063616c6c65724501616e6420756e7265736572766564206f6e6c79207768656e205b6053656c663a3a72656d6f76655f636f6465605d2069732063616c6c65642e205468652073697a65206f66207468652072657365727665f0646570656e6473206f6e2074686520696e737472756d656e7465642073697a65206f66207468652074686520737570706c6965642060636f6465602e00310149662074686520636f646520616c72656164792065786973747320696e2073746f726167652069742077696c6c207374696c6c2072657475726e20604f6b6020616e642075706772616465739474686520696e2073746f726167652076657273696f6e20746f207468652063757272656e74d05b60496e737472756374696f6e576569676874733a3a76657273696f6e605d28496e737472756374696f6e57656967687473292e0055012d206064657465726d696e69736d603a20496620746869732069732073657420746f20616e79206f746865722076616c756520627574205b6044657465726d696e69736d3a3a44657465726d696e6973746963605d450120207468656e20746865206f6e6c792077617920746f20757365207468697320636f646520697320746f2064656c65676174652063616c6c20696e746f2069742066726f6d20616e206f6666636861696efc2020657865637574696f6e2e2053657420746f205b6044657465726d696e69736d3a3a44657465726d696e6973746963605d20696620696e20646f7562742e001823204e6f7465005901416e796f6e652063616e20696e7374616e7469617465206120636f6e74726163742066726f6d20616e792075706c6f6164656420636f646520616e6420746875732070726576656e74206974732072656d6f76616c2e4101546f2061766f6964207468697320736974756174696f6e206120636f6e7374727563746f7220636f756c6420656d706c6f792061636365737320636f6e74726f6c20736f20746861742069742063616e39016f6e6c7920626520696e7374616e746961746564206279207065726d697373696f6e656420656e7469746965732e205468652073616d652069732074727565207768656e2075706c6f6164696e67a07468726f756768205b6053656c663a3a696e7374616e74696174655f776974685f636f6465605d2e2c72656d6f76655f636f6465040124636f64655f686173682c012c436f6465486173683c543e000410350152656d6f76652074686520636f64652073746f72656420756e6465722060636f64655f686173686020616e6420726566756e6420746865206465706f73697420746f20697473206f776e65722e0045014120636f64652063616e206f6e6c792062652072656d6f76656420627920697473206f726967696e616c2075706c6f616465722028697473206f776e65722920616e64206f6e6c79206966206974206973646e6f74207573656420627920616e7920636f6e74726163742e207365745f636f6465080110646573746d0501504163636f756e7449644c6f6f6b75704f663c543e000124636f64655f686173682c012c436f6465486173683c543e000528090150726976696c656765642066756e6374696f6e2074686174206368616e6765732074686520636f6465206f6620616e206578697374696e6720636f6e74726163742e004501546869732074616b65732063617265206f66207570646174696e6720726566636f756e747320616e6420616c6c206f74686572206e6563657373617279206f7065726174696f6e732e2052657475726e73e8616e206572726f7220696620656974686572207468652060636f64655f6861736860206f722060646573746020646f206e6f742065786973742e001823204e6f74650031015468697320646f6573202a2a6e6f742a2a206368616e6765207468652061646472657373206f662074686520636f6e747261637420696e207175657374696f6e2e2054686973206d65616e733d01746861742074686520636f6e74726163742061646472657373206973206e6f206c6f6e67657220646572697665642066726f6d2069747320636f646520686173682061667465722063616c6c696e67487468697320646973706174636861626c652e1063616c6c140110646573746d0501504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e0001106461746130011c5665633c75383e00064005014d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e00302320506172616d657465727300a82a206064657374603a2041646472657373206f662074686520636f6e747261637420746f2063616c6c2efc2a206076616c7565603a205468652062616c616e636520746f207472616e736665722066726f6d2074686520606f726967696e6020746f206064657374602e15012a20606761735f6c696d6974603a2054686520676173206c696d697420656e666f72636564207768656e20657865637574696e672074686520636f6e7374727563746f722e55012a206073746f726167655f6465706f7369745f6c696d6974603a20546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642066726f6d20746865a4202063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ec42a206064617461603a2054686520696e707574206461746120746f207061737320746f2074686520636f6e74726163742e0025012a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c206265ac657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e15012a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e45012a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c11016120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e54696e7374616e74696174655f776974685f636f646518011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0007683101496e7374616e7469617465732061206e657720636f6e74726163742066726f6d2074686520737570706c6965642060636f646560206f7074696f6e616c6c79207472616e7366657272696e6734736f6d652062616c616e63652e0021015468697320646973706174636861626c6520686173207468652073616d65206566666563742061732063616c6c696e67205b6053656c663a3a75706c6f61645f636f6465605d202b3d015b6053656c663a3a696e7374616e7469617465605d2e2042756e646c696e67207468656d20746f6765746865722070726f766964657320656666696369656e6379206761696e732e20506c65617365d8616c736f20636865636b2074686520646f63756d656e746174696f6e206f66205b6053656c663a3a75706c6f61645f636f6465605d2e00302320506172616d6574657273004d012a206076616c7565603a205468652062616c616e636520746f207472616e736665722066726f6d2074686520606f726967696e6020746f20746865206e65776c79206372656174656420636f6e74726163742e15012a20606761735f6c696d6974603a2054686520676173206c696d697420656e666f72636564207768656e20657865637574696e672074686520636f6e7374727563746f722e55012a206073746f726167655f6465706f7369745f6c696d6974603a20546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f7265736572766564c8202066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ecc2a2060636f6465603a2054686520636f6e747261637420636f646520746f206465706c6f7920696e207261772062797465732ef42a206064617461603a2054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722e31012a206073616c74603a205573656420666f722074686520616464726573732064657269766174696f6e2e20536565205b6050616c6c65743a3a636f6e74726163745f61646472657373605d2e0094496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a0059012d2054686520737570706c6965642060636f64656020697320696e737472756d656e7465642c206465706c6f7965642c20616e6420612060636f64655f6861736860206973206372656174656420666f7220746861741c2020636f64652e59012d204966207468652060636f64655f686173686020616c726561647920657869737473206f6e2074686520636861696e2074686520756e6465726c79696e672060636f6465602077696c6c206265207368617265642e49012d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e6465722c20636f64655f6861736820616e64207468652073616c742e01012d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732ec02d20546865206076616c756560206973207472616e7366657272656420746f20746865206e6577206163636f756e742e41012d2054686520606465706c6f79602066756e6374696f6e20697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e2c696e7374616e746961746518011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d6974590801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e000814fc496e7374616e746961746573206120636f6e74726163742066726f6d20612070726576696f75736c79206465706c6f796564207761736d2062696e6172792e003501546869732066756e6374696f6e206973206964656e746963616c20746f205b6053656c663a3a696e7374616e74696174655f776974685f636f6465605d2062757420776974686f7574207468654901636f6465206465706c6f796d656e7420737465702e20496e73746561642c207468652060636f64655f6861736860206f6620616e206f6e2d636861696e206465706c6f796564207761736d2062696e617279446d75737420626520737570706c6965642e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e51080000065508005508082873705f77656967687473244f6c645765696768740000040028010c7536340000590804184f7074696f6e04045401dd010108104e6f6e6500000010536f6d650400dd0100000100005d080c4070616c6c65745f636f6e747261637473107761736d2c44657465726d696e69736d0001083444657465726d696e697374696300000048416c6c6f77496e64657465726d696e69736d0001000061080848706f6c796d6573685f636f6e7472616374731043616c6c04045400010c6c696e7374616e74696174655f776974685f636f64655f7065726d731c0124656e646f776d656e7418011c42616c616e63650001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d69743104013c4f7074696f6e3c42616c616e63653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0001147065726d73a0012c5065726d697373696f6e730000602d01496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e6720697420776974682074686520676976656e2060636f64656020616e64206073616c74602e00c454686520636f6e74726163742077696c6c2062652061747461636865642061732061207365636f6e64617279206b65792ce07769746820607065726d736020617320697473207065726d697373696f6e732c20746f20606f726967696e602773206964656e746974792e00e054686520636f6e7472616374206973207472616e736665727265642060656e646f776d656e746020616d6f756e74206f6620504f4c59582e98546869732069732064697374696e63742066726f6d2074686520606761735f6c696d6974602c1101776869636820636f6e74726f6c7320686f77206d7563682067617320746865206465706c6f796d656e7420636f6465206d6179206174206d6f737420636f6e73756d652e002c2320417267756d656e7473e82d2060656e646f776d656e746020616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e55012d20606761735f6c696d69746020666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652e51012d206073746f726167655f6465706f7369745f6c696d69746020546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f7265736572766564c8202066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ee82d2060636f646560207769746820746865205741534d2062696e61727920646566696e696e672074686520736d61727420636f6e74726163742ef02d206064617461602054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722eb82d206073616c7460207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e210120202042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792ebc2d20607065726d7360207468617420746865206e6577207365636f6e64617279206b65792077696c6c20686176652e002023204572726f727365012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a696e7374616e74696174655f776974685f636f6465602063616e20616c736f2068617070656e20686572652ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e21012d204572726f72732074686174206172697365207768656e20616464696e672061206e6577207365636f6e64617279206b65792063616e20616c736f206f6363757220686572652e6c696e7374616e74696174655f776974685f686173685f7065726d731c0124656e646f776d656e7418011c42616c616e63650001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d69743104013c4f7074696f6e3c42616c616e63653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0001147065726d73a0012c5065726d697373696f6e7300016c3901496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e67207573696e672074686520676976656e2060636f64655f686173686020616e64206073616c74602e007c556e6c696b652060696e7374616e74696174655f776974685f636f6465602c69017468697320617373756d65732074686174206174206c65617374206f6e6520636f6e74726163742077697468207468652073616d65205741534d20636f64652068617320616c7265616479206265656e2075706c6f616465642e00c454686520636f6e74726163742077696c6c2062652061747461636865642061732061207365636f6e64617279206b65792ce07769746820607065726d736020617320697473207065726d697373696f6e732c20746f20606f726967696e602773206964656e746974792e00e054686520636f6e7472616374206973207472616e736665727265642060656e646f776d656e746020616d6f756e74206f6620504f4c59582e98546869732069732064697374696e63742066726f6d2074686520606761735f6c696d6974602c1101776869636820636f6e74726f6c7320686f77206d7563682067617320746865206465706c6f796d656e7420636f6465206d6179206174206d6f737420636f6e73756d652e002c2320417267756d656e7473e82d2060656e646f776d656e746020616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e55012d20606761735f6c696d69746020666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652e51012d206073746f726167655f6465706f7369745f6c696d69746020546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f7265736572766564c8202066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ec42d2060636f64655f6861736860206f6620616e20616c72656164792075706c6f61646564205741534d2062696e6172792ef02d206064617461602054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722eb82d206073616c7460207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e210120202042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792ebc2d20607065726d7360207468617420746865206e6577207365636f6e64617279206b65792077696c6c20686176652e002023204572726f72733d012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a696e7374616e7469617465602063616e20616c736f2068617070656e20686572652ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e21012d204572726f72732074686174206172697365207768656e20616464696e672061206e6577207365636f6e64617279206b65792063616e20616c736f206f6363757220686572652e747570646174655f63616c6c5f72756e74696d655f77686974656c69737404011c75706461746573650801605665633c2845787472696e73696349642c20626f6f6c293e000214745570646174652043616c6c52756e74696d652077686974656c6973742e002c2320417267756d656e7473002023204572726f72730c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e65080000026908006908000004086d082901006d080c48706f6c796d6573685f636f6e7472616374733c636861696e5f657874656e73696f6e2c45787472696e736963496400000800080108753800000801087538000071080c3c70616c6c65745f707265696d6167651870616c6c65741043616c6c040454000110346e6f74655f707265696d616765040114627974657330011c5665633c75383e000010745265676973746572206120707265696d616765206f6e2d636861696e2e00550149662074686520707265696d616765207761732070726576696f75736c79207265717565737465642c206e6f2066656573206f72206465706f73697473206172652074616b656e20666f722070726f766964696e67550174686520707265696d6167652e204f74686572776973652c2061206465706f7369742069732074616b656e2070726f706f7274696f6e616c20746f207468652073697a65206f662074686520707265696d6167652e3c756e6e6f74655f707265696d616765040110686173682c011c543a3a48617368000118dc436c65617220616e20756e72657175657374656420707265696d6167652066726f6d207468652072756e74696d652073746f726167652e00fc496620606c656e602069732070726f76696465642c207468656e2069742077696c6c2062652061206d7563682063686561706572206f7065726174696f6e2e0001012d206068617368603a205468652068617368206f662074686520707265696d61676520746f2062652072656d6f7665642066726f6d207468652073746f72652eb82d20606c656e603a20546865206c656e677468206f662074686520707265696d616765206f66206068617368602e40726571756573745f707265696d616765040110686173682c011c543a3a48617368000210410152657175657374206120707265696d6167652062652075706c6f6164656420746f2074686520636861696e20776974686f757420706179696e6720616e792066656573206f72206465706f736974732e00550149662074686520707265696d6167652072657175657374732068617320616c7265616479206265656e2070726f7669646564206f6e2d636861696e2c20776520756e7265736572766520616e79206465706f7369743901612075736572206d6179206861766520706169642c20616e642074616b652074686520636f6e74726f6c206f662074686520707265696d616765206f7574206f662074686569722068616e64732e48756e726571756573745f707265696d616765040110686173682c011c543a3a4861736800030cbc436c65617220612070726576696f75736c79206d616465207265717565737420666f72206120707265696d6167652e002d014e4f54453a2054484953204d555354204e4f542042452043414c4c4544204f4e20606861736860204d4f52452054494d4553205448414e2060726571756573745f707265696d616765602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e7508082870616c6c65745f6e66741043616c6c04045400010c546372656174655f6e66745f636f6c6c656374696f6e0c01187469636b6572a801185469636b65720001206e66745f747970657908015c4f7074696f6e3c4e6f6e46756e6769626c65547970653e00013c636f6c6c656374696f6e5f6b6579737d0801444e4654436f6c6c656374696f6e4b657973000044744372657465732061206e657720604e4654436f6c6c656374696f6e602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ee42a20607469636b657260202d20746865207469636b6572206173736f63696174656420746f20746865206e657720636f6c6c656374696f6e2e89012a20606e66745f7479706560202d20696e206361736520746865206173736574206861736e2774206265656e2063726561746564207965742c206f6e652077696c6c206265206372656174656420776974682074686520676976656e20747970652e79012a2060636f6c6c656374696f6e5f6b65797360202d20616c6c206d616e6461746f7279206d65746164617461206b65797320746861742074686520746f6b656e7320696e2074686520636f6c6c656374696f6e206d75737420686176652e00242323204572726f727369012d2060436f6c6c656374696f6e416c726564795265676973746572656460202d20696620746865207469636b657220697320616c7265616479206173736f63696174656420746f20616e204e465420636f6c6c656374696f6e2e09012d2060496e76616c696441737365745479706560202d20696620746865206173736f636961746564206173736574206973206e6f74206f662074797065204e46542ed1012d20604d61784e756d6265724f664b657973457863656564656460202d20696620746865206e756d626572206f66206d65746164617461206b65797320666f722074686520636f6c6c656374696f6e2069732067726561746572207468616e20746865206d6178696d756d20616c6c6f7765642eb1012d2060556e726567697374657265644d657461646174614b657960202d20696620616e79206f6620746865206d65746164617461206b657973206e656564656420666f722074686520636f6c6c656374696f6e20686173206e6f74206265656e20726567697374657265642e45012d20604475706c69636174654d657461646174614b657960202d2069662061206475706c6963617465206d65746164617461206b65797320686173206265656e2070617373656420617320696e7075742e003423205065726d697373696f6e731c2a2041737365742469737375655f6e66740c01187469636b6572a801185469636b657200015c6e66745f6d657461646174615f61747472696275746573850801645665633c4e46544d657461646174614174747269627574653e000138706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e640001447049737375657320616e204e465420746f207468652063616c6c65722e002c2320417267756d656e747335012a20606f726967696e60202d2069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602eb82a20607469636b657260202d20746865207469636b6572206f6620746865204e465420636f6c6c656374696f6e2e45012a20606e66745f6d657461646174615f6174747269627574657360202d20616c6c206d616e6461746f7279206d65746164617461206b65797320616e642076616c75657320666f7220746865204e46542e11012d2060706f7274666f6c696f5f6b696e6460202d2074686520706f7274666f6c696f20746861742077696c6c207265636569766520746865206d696e746564206e66742e00242323204572726f72737d012d2060436f6c6c656374696f6e4e6f74466f756e6460202d2069662074686520636f6c6c656374696f6e206173736f63696174656420746f2074686520676976656e207469636b657220686173206e6f74206265656e20637265617465642ec9022d2060496e76616c69644d6574616461746141747472696275746560202d20696620746865206e756d626572206f662061747472696275746573206973206e6f7420657175616c20746f20746865206e756d6265722073657420696e2074686520636f6c6c656374696f6e206f7220617474656d7074696e6720746f2073657420612076616c756520666f722061206b6579206e6f7420646566696e69656420696e2074686520636f6c6c656374696f6e2e45012d20604475706c69636174654d657461646174614b657960202d2069662061206475706c6963617465206d65746164617461206b65797320686173206265656e2070617373656420617320696e7075742e00003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f2872656465656d5f6e66740c01187469636b6572a801185469636b65720001186e66745f6964bd0301144e46544964000138706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e6400023cc852656465656d732074686520676976656e204e46542066726f6d207468652063616c6c6572277320706f7274666f6c696f2e002c2320417267756d656e747335012a20606f726967696e60202d2069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602eb82a20607469636b657260202d20746865207469636b6572206f6620746865204e465420636f6c6c656374696f6e2eb02a20606e66745f696460202d20746865206964206f6620746865204e465420746f206265206275726e65642ee42a2060706f7274666f6c696f5f6b696e6460202d2074686520706f7274666f6c696f207468617420636f6e7461696e7320746865206e66742e00242323204572726f72737d012d2060436f6c6c656374696f6e4e6f74466f756e6460202d2069662074686520636f6c6c656374696f6e206173736f63696174656420746f2074686520676976656e207469636b657220686173206e6f74206265656e20637265617465642e0d012d20604e46544e6f74466f756e6460202d2069662074686520676976656e204e465420646f6573206e6f7420657869737420696e2074686520706f7274666f6c696f2e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e790804184f7074696f6e04045401f9010108104e6f6e6500000010536f6d650400f90100000100007d080c4c706f6c796d6573685f7072696d6974697665730c6e6674444e4654436f6c6c656374696f6e4b65797300000400810801545665633c41737365744d657461646174614b65793e000081080000027d0200850800000289080089080c4c706f6c796d6573685f7072696d6974697665730c6e6674504e46544d65746164617461417474726962757465000008010c6b65797d02014041737365744d657461646174614b657900011476616c75654902014841737365744d6574616461746156616c756500008d08084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f6469640401387365636f6e646172795f6b65797398017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e74496400011c3d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9108084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965733501013c5665633c4964656e7469747949643e0001106e6179733501013c5665633c4964656e7469747949643e0001186578706972794901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00009508084070616c6c65745f636f6d6d69747465651c56657273696f6e00000400080108753800009908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e009d08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00a108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00a508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00a908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00ad08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00b10800000408007d0100b50800000408002800b9080000040800ed0500bd080000040c007d012800c1080c4c706f6c796d6573685f7072696d697469766573206d756c74697369673c50726f706f73616c44657461696c73040454012800140124617070726f76616c7328010c75363400012872656a656374696f6e7328010c753634000118737461747573c508013850726f706f73616c537461747573000118657870697279fc01244f7074696f6e3c543e0001286175746f5f636c6f736529010110626f6f6c0000c5080c4c706f6c796d6573685f7072696d697469766573206d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a656374656400040000c908083c70616c6c65745f6d756c74697369671c56657273696f6e0000040008010875380000cd08083c70616c6c65745f6d756c7469736967144572726f72040454000168284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e804d756c74697369674e6f74416c6c6f776564546f4c696e6b546f497473656c66001004bc4d756c7469736967206e6f7420616c6c6f77656420746f2061646420697473656c662061732061207369676e65722e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e7843726561746f72436f6e74726f6c73486176654265656e52656d6f76656400190401015468652063726561746f72206973206e6f206c6f6e67657220616c6c6f77656420746f2063616c6c207669612063726561746f722065787472696e736963732e045c4d756c7469736967206d6f64756c65206572726f72732ed10800000408001000d508083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e6365000118737461747573d9080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682c0110483235360000d908083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c656400040000dd0800000408181000e108083470616c6c65745f6272696467651c56657273696f6e0000040008010875380000e508083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e00e908083870616c6c65745f7374616b696e67345374616b696e674c656467657208244163636f756e74496401001c42616c616e636501180014011473746173680001244163636f756e744964000114746f74616cdd01011c42616c616e6365000118616374697665dd01011c42616c616e6365000124756e6c6f636b696e67ed0801645665633c556e6c6f636b4368756e6b3c42616c616e63653e3e00013c636c61696d65645f72657761726473690401345665633c457261496e6465783e0000ed08000002f10800f108083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565dd01011c42616c616e636500010c657261b1040120457261496e6465780000f508083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304244163636f756e7449640100000c011c74617267657473f401385665633c4163636f756e7449643e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656429010110626f6f6c0000f908083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274fc012c4f7074696f6e3c7536343e0000fd08000004081000000109083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616c0509018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e00000509042042547265654d617008044b01000456011000040009090000000909000002d108000d09083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c776179730003000011090000021509001509083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f7468657273190901645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273f401385665633c4163636f756e7449643e0001187061796f757418011c42616c616e6365000019090000021d09001d09000004080018002109000004089d01180025090c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f72690401345665633c457261496e6465783e000029090c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e636500002d09000002310900310900000408102901003509083870616c6c65745f7374616b696e6738456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573f401385665633c4163636f756e7449643e0001246578706f7375726573d10101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574659901013c456c656374696f6e436f6d7075746500003909083870616c6c65745f7374616b696e6738456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d626572000100003d09083870616c6c65745f7374616b696e67645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c75333200004109083870616c6c65745f7374616b696e672052656c65617365730001203456315f305f30416e6369656e740000001856325f305f300001001856335f305f300002001856345f305f300003001856355f305f300004001856365f305f300005001856365f305f310006001856375f305f30000700004509083870616c6c65745f7374616b696e671c56657273696f6e00000400080108753800004909083870616c6c65745f7374616b696e67144572726f720404540001ac344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e70496e76616c696456616c696461746f72556e626f6e64416d6f756e74002a04bc56616c696461746f722073686f756c642068617665206d696e696d756d2035306b20504f4c595820626f6e6465642e04744572726f7220666f7220746865207374616b696e67206d6f64756c652e4d090c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201d501000801206f6666656e646572d50101204f6666656e6465720001247265706f7274657273f401345665633c5265706f727465723e0000510900000408a90130005509000002590900590900000408001507005d09000004086109300061090c1c73705f636f72651863727970746f244b65795479706549640000040040011c5b75383b20345d000065090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e6909083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300006d09083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965737109016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564350601244f7074696f6e3c4e3e000071090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b901045300000400b50101185665633c543e000075090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090979090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401c9010453000004007d0901185665633c543e00007d09000002c90100810910346672616d655f737570706f727418747261697473106d69736334577261707065724f7061717565040454018509000800b104000000850901045400008509084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f69648909019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f6164647265737365738d09012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e000089090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004003001185665633c543e00008d090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454018909045300000400910901185665633c543e0000910900000289090095090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090999090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012c045300000400a50401185665633c543e00009d09082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c65a109083070616c6c65745f6173736574485469636b6572526567697374726174696f6e0404550128000801146f776e65728001284964656e746974794964000118657870697279fc01244f7074696f6e3c553e0000a509083070616c6c65745f6173736574605469636b6572526567697374726174696f6e436f6e6669670404550128000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468fc01244f7074696f6e3c553e0000a909083070616c6c65745f6173736574345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469648001284964656e746974794964000124646976697369626c6529010110626f6f6c00012861737365745f74797065f10101244173736574547970650000ad0900000408a88000b10900000408a8150200b5090000040880a800b909083070616c6c65745f61737365745841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000bd0900000408a8190200c10900000408a87d0200c50900000408a8590200c90900000408a85d0200cd09083070616c6c65745f61737365741c56657273696f6e0000040008010875380000d109083070616c6c65745f6173736574144572726f7204045400019430556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e4c4173736574416c7265616479437265617465640001048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700020490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e545469636b65724e6f74416c7068616e756d6572696300030498546865207469636b657220686173206e6f6e2d616c7068616e756d657269632070617274732e5c5469636b6572416c726561647952656769737465726564000404c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740005049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000604384e6f207375636820746f6b656e2e34416c726561647946726f7a656e0007047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000804984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000904a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000a04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000b045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000c0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572000d04845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365000e04945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c65000f047c54686520746f6b656e20697320616c726561647920646976697369626c652e60496e76616c6964457468657265756d5369676e617475726500100494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e645469636b6572526567697374726174696f6e457870697265640011048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001204845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630013048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001404bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001504ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e7469666965720016048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001704e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d417373657454797065496400180470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e677468457863656564656400190405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564001a04f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e6774684578636565646564001b041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67001c04784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b6564001d047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473001e04cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473001f04a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e5c5469636b65724669727374427974654e6f7456616c6964002004c85469636b6572732073686f756c642073746172742077697468206174206c65617374206f6e652076616c696420627974652e68556e65787065637465644e6f6e46756e6769626c65546f6b656e0021042101417474656d707420746f2063616c6c20616e2065787472696e7369632074686174206973206f6e6c79207065726d697474656420666f722066756e6769626c6520746f6b656e732e6c496e636f6d70617469626c654173736574547970655570646174650022047d01417474656d707420746f20757064617465207468652074797065206f662061206e6f6e2066756e6769626c6520746f6b656e20746f20612066756e6769626c6520746f6b656e206f7220746865206f74686572207761792061726f756e642e9841737365744d657461646174614b657942656c6f6e6773546f4e4654436f6c6c656374696f6e002304f4417474656d707420746f2064656c6574652061206b65792074686174206973206e656564656420666f7220616e204e465420636f6c6c656374696f6e2e6441737365744d6574616461746156616c75654973456d707479002404bc417474656d707420746f206c6f636b2061206d657461646174612076616c7565207468617420697320656d7074792e00d5090000040899028000d9090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e0000040008010875380000dd090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f7204045400013c3043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44486f6c646572416c726561647950616964000304d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000404c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740005046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790006046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400070429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000804c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000904d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000a04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000b0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000c042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e60446973747269627574696f6e416d6f756e7449735a65726f000d0494446973747269627574696f6e2060616d6f756e74602063616e6e6f74206265207a65726f2e68446973747269627574696f6e506572536861726549735a65726f000e04a0446973747269627574696f6e20607065725f7368617265602063616e6e6f74206265207a65726f2e00e10900000408a8ad0200e50900000408e1098000e909000002ad0200ed091064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743c4e657874436865636b706f696e747300000c011c6e6578745f61742801184d6f6d656e74000134746f74616c5f70656e64696e6728010c7536340001247363686564756c6573f109017042547265654d61703c5363686564756c6549642c204d6f6d656e743e0000f109042042547265654d617008044b01b10204560128000400f509000000f509000002f90900f90900000408b1022800fd0900000408a8b10200010a0c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e0000040008010875380000050a0c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000118384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e685363686564756c65734f7665724d6178436f6d706c65786974790002042901546865206e6577207363686564756c6520776f756c642070757420746865207469636b6572206f76657220746865206d6178696d756d20636f6d706c657869747920616c6c6f7765642e3c5363686564756c654973456d7074790003047c43616e27742063726561746520616e20656d707479207363686564756c652e405363686564756c6546696e697368656400040494546865207363686564756c6520686173206e6f206d6f726520636865636b706f696e74732e745363686564756c6548617345787069726564436865636b706f696e747300050494546865207363686564756c6520686173206578706972656420636865636b706f696e74732e00090a0c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656429010110626f6f6c000130726571756972656d656e7473f10201685665633c436f6d706c69616e6365526571756972656d656e743e00000d0a086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e0000040008010875380000110a086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011c30556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010438446964206e6f742065786973742e78496e76616c6964436f6d706c69616e6365526571756972656d656e744964000204a0436f6d706c69616e636520726571756972656d656e7420696420646f65736e27742065786973742e84496e636f72726563744f7065726174696f6e4f6e54727573746564497373756572000304a04973737565722065786973742062757420747279696e6720746f2061646420697420616761696e2e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504150154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c65782e4c5765696768744c696d697445786365656465640006040501546865206d6178696d756d20776569676874206c696d697420666f7220657865637574696e67207468652066756e6374696f6e207761732065786365656465642e00150a00000408a89d0200190a086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e00000400080108753800001d0a086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400012c3844657461696c73546f6f4c6f6e67000004d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780001082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000204c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000304e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400040405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000504a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650006048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400070cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000804ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000904b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000a046c434120646f6573206e6f742074617267657420746865204449442e00210a0000021800250a0c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00290a084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e002d0a082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d62657201100018010869646d030114506970496400010c75726c6502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e710301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972794901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000310a000004086d030000350a082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000390a082c70616c6c65745f706970730c506970082050726f706f73616c01ed05244163636f756e7449640100000c010869646d030114506970496400012070726f706f73616ced05012050726f706f73616c00012070726f706f7365726503014c50726f706f7365723c4163636f756e7449643e00003d0a082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e63650000410a082c70616c6c65745f7069707310566f74650000080029010110626f6f6c000018011c42616c616e63650000450a082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696481030128536e617073686f7449640000490a082c70616c6c65745f706970731c56657273696f6e00000400080108753800004d0a082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e00510a0000040880e800550a0000040880a50300590a00000408e0a8005d0a0000040880e000610a00000408e0650a00650a00000408a8bd0300690a084070616c6c65745f706f7274666f6c696f1c56657273696f6e00000400080108753800006d0a084070616c6c65745f706f7274666f6c696f144572726f7204045400014054506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573604e6f4475706c6963617465417373657473416c6c6f776564000904804475706c696361746520617373657420616d6f6e6720746865206974656d732e584e46544e6f74466f756e64496e506f7274666f6c696f000a04a0546865204e465420646f6573206e6f7420657869737420696e2074686520706f7274666f6c696f2e404e4654416c72656164794c6f636b6564000b0468546865204e465420697320616c7265616479206c6f636b65642e304e46544e6f744c6f636b6564000c0478546865204e465420686173206e65766572206265656e206c6f636b65642e68496e76616c69645472616e736665724e46544e6f744f776e6564000d04c04f6e6c79206f776e6564204e4654732063616e206265206d6f766564206265747765656e20706f7274666f6c696f732e68496e76616c69645472616e736665724e465449734c6f636b6564000e04c04c6f636b6564204e4654732063616e206e6f74206265206d6f766564206265747765656e20706f7274666f6c696f732e34456d7074795472616e73666572000f04a0547279696e6720746f206d6f766520616e20616d6f756e74206f66207a65726f206173736574732e00710a084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00750a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401790a045300000400890a01185665633c543e0000790a04184f7074696f6e040454017d0a0108104e6f6e6500000010536f6d6504007d0a00000100007d0a084070616c6c65745f7363686564756c6572245363686564756c656414104e616d6501041043616c6c01810a2c426c6f636b4e756d62657201103450616c6c6574734f726967696e012108244163636f756e7449640100001401206d617962655f6964d10301304f7074696f6e3c4e616d653e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c810a011043616c6c0001386d617962655f706572696f646963c90701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e2108013450616c6c6574734f726967696e0000810a10346672616d655f737570706f72741874726169747324707265696d616765731c426f756e64656404045401ed05010c184c6567616379040110686173682c01104861736800000018496e6c696e650400850a0134426f756e646564496e6c696e65000100184c6f6f6b7570080110686173682c01104861736800010c6c656e10010c75333200020000850a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000890a000002790a008d0a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000114404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e144e616d6564000404d0417474656d707420746f207573652061206e6f6e2d6e616d65642066756e6374696f6e206f6e2061206e616d6564207461736b2e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909910a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e741456656e7565000008011c63726561746f728001284964656e74697479496400012876656e75655f74797065e103012456656e7565547970650000950a00000408d9038d0200990a00000408d90300009d0a0000040880d90300a10a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401282c426c6f636b4e756d626572011000180138696e737472756374696f6e5f69648d020134496e737472756374696f6e496400012076656e75655f6964d903011c56656e7565496400013c736574746c656d656e745f74797065f503016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174fc01384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465fc01384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465fc01384f7074696f6e3c4d6f6d656e743e0000a50a000004088d02e50300a90a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000028010c75363400020000ad0a000004088d02e000b10a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000b50a00000408e08d0200b90a00000408a8d90300bd0a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000c10a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e7444496e737472756374696f6e537461747573042c426c6f636b4e756d626572011001141c556e6b6e6f776e0000001c50656e64696e67000100184661696c65640002001c53756363657373040010012c426c6f636b4e756d6265720003002052656a6563746564040010012c426c6f636b4e756d62657200040000c50a084470616c6c65745f736574746c656d656e74144572726f7204045400019c30496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e58496e737472756374696f6e4e6f7441666669726d656400020488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e48556e617574686f72697a65645369676e6572000304985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000404545265636569707420616c726561647920757365642e44556e617574686f72697a656456656e7565000504a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e5c496e737472756374696f6e4461746573496e76616c696400060474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000704a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000804784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720009048453656e64657220616e6420726563656976657220617265207468652073616d652e44536574746c654f6e50617374426c6f636b000a0461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e6c556e657870656374656441666669726d6174696f6e537461747573000b0445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c65000c048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e48556e6b6e6f776e496e737472756374696f6e000d0474496e737472756374696f6e2073746174757320697320756e6b6e6f776e4c5369676e6572416c7265616479457869737473000e04845369676e657220697320616c726561647920616464656420746f2076656e75652e485369676e6572446f65734e6f744578697374000f04745369676e6572206973206e6f7420616464656420746f2076656e75652e285a65726f416d6f756e7400100494496e737472756374696f6e206c656720616d6f756e742063616e2774206265207a65726f2e80496e737472756374696f6e536574746c65426c6f636b4e6f7452656163686564001104d8496e737472756374696f6e20736574746c656d656e7420626c6f636b20686173206e6f7420796574206265656e20726561636865642e4443616c6c657249734e6f74415061727479001204b85468652063616c6c6572206973206e6f742061207061727479206f66207468697320696e737472756374696f6e2e5c4d61784e756d6265724f664e46547345786365656465640013041501546865206e756d626572206f66206e667473206265696e67207472616e7366657272656420696e2074686520696e737472756374696f6e207761732065786365656465642e944e756d6265724f665472616e736665727265644e465473556e646572657374696d61746564001404f854686520676976656e206e756d626572206f66206e667473206265696e67207472616e736665727265642077617320756e646572657374696d617465642e6052656365697074466f72496e76616c69644c656754797065001504ec4f66662d636861696e2072656365697074732063616e206f6e6c79206265207573656420666f72206f66662d636861696e206c656720747970652e4c5765696768744c696d697445786365656465640016040501546865206d6178696d756d20776569676874206c696d697420666f7220657865637574696e67207468652066756e6374696f6e207761732065786365656465642e844d61784e756d6265724f6646756e6769626c654173736574734578636565646564001704cc546865206d6178696d756d206e756d626572206f662066756e6769626c6520617373657473207761732065786365656465642e844d61784e756d6265724f664f6666436861696e4173736574734578636565646564001804d0546865206d6178696d756d206e756d626572206f66206f66662d636861696e20617373657473207761732065786365656465642e9c4e756d6265724f6646756e6769626c655472616e7366657273556e646572657374696d61746564001904e854686520676976656e206e756d626572206f662066756e6769626c65207472616e73666572732077617320756e646572657374696d617465642e5c556e65787065637465644f4646436861696e4173736574001a048c5469636b657220636f756c64206e6f7420626520666f756e64206f6e20636861696e2e644f6666436861696e417373657443616e7442654c6f636b6564001b04884f66662d436861696e206173736574732063616e6e6f74206265206c6f636b65642e9c4e756d6265724f664f6666436861696e5472616e7366657273556e646572657374696d61746564001c04ec54686520676976656e206e756d626572206f66206f66662d636861696e207472616e73666572732077617320756e646572657374696d617465642e2c4c65674e6f74466f756e64001d04884e6f206c656720776974682074686520676976656e2069642077617320666f756e6470496e70757457656967687449734c6573735468616e4d696e696d756d001e04cc54686520696e70757420776569676874206973206c657373207468616e20746865206d696e696d756d2072657175697265642e6c4d61784e756d6265724f6652656365697074734578636565646564001f04b0546865206d6178696d756d206e756d626572206f66207265636569707473207761732065786365656465642e884e6f74416c6c41666669726d6174696f6e73486176654265656e5265636569766564002004e054686572652061726520706172746965732077686f2068617665206e6f742061666669726d65642074686520696e737472756374696f6e2e90496e76616c6964496e737472756374696f6e537461747573466f72457865637574696f6e00210489014f6e6c79205b60496e737472756374696f6e5374617475733a3a50656e64696e67605d206f72205b60496e737472756374696f6e5374617475733a3a4661696c6564605d20696e737472756374696f6e732063616e2062652065786563757465642e8c4661696c6564546f52656c656173654c6f636b4f725472616e73666572417373657473002204150154686520696e737472756374696f6e206661696c656420746f2072656c65617365206173736574206c6f636b73206f72207472616e7366657220746865206173736574732e4c4475706c696361746552656365697074556964002304d04e6f206475706c6963617465207569642061726520616c6c6f77656420666f7220646966666572656e742072656365697074732e7452656365697074496e737472756374696f6e49644d6973736d61746368002404190154686520696e737472756374696f6e20696420696e20616c6c207265636569707473206d757374206d61746368207468652065787472696e73696320706172616d657465722e644d756c7469706c655265636569707473466f724f6e654c6567002504cc4d756c7469706c6520726563656970747320666f72207468652073616d65206c656720617265206e6f7420616c6c6f7765642e4c556e65787065637465644c656753746174757300260470416e20696e76616c696420686173206265656e20726561636865642e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652ec90a0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454010d04045300000400e907012c42547265655365743c543e0000cd0a00000408d10a250400d10a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b65790000080114617373657405040128417373657453636f7065000124737461745f747970650d04012053746174547970650000d50a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365040453000008011870617573656429010110626f6f6c000130726571756972656d656e7473d90a0194426f756e64656442547265655365743c5472616e73666572436f6e646974696f6e2c20533e0000d90a0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454013904045300000400f107012c42547265655365743c543e0000dd0a000004083d048000e10a084470616c6c65745f737461746973746963731c56657273696f6e0000040008010875380000e50a084470616c6c65745f73746174697374696373144572726f7204045400011c3c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e4c5765696768744c696d697445786365656465640006040501546865206d6178696d756d20776569676874206c696d697420666f7220657865637574696e67207468652066756e6374696f6e207761732065786365656465642e046453746174697374696373206d6f64756c65206572726f72732ee90a00000408a8490400ed0a082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652ef10a083c70616c6c65745f7472656173757279144572726f720404540001084c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e3c496e76616c69644964656e7469747900010488496e76616c6964206964656e7469747920666f722064697362757273656d656e742e04784572726f7220666f7220746865207472656173757279206d6f64756c652ef50a0c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400011030546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e40496e76616c69645369676e6174757265000108744f6666636861696e207369676e617475726520697320696e76616c696438504f4c594d455348206572726f72405461726765744364644d697373696e670002088054617267657420646f6573206e6f74206861766520612076616c69642043444438504f4c594d455348206572726f7230496e76616c69644e6f6e63650003106850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746538504f4c594d455348206572726f7204b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909f90a082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00fd0a00000408a8250100010b085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00050b083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e63650000090b083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e000d0b083870616c6c65745f72657761726473144572726f7204045400011044556e6b6e6f776e49746e41646472657373000004cc4164647265737320776173206e6f7420666f756e6420696e20746865206c697374206f662049746e206164647265737365732e5c49746e526577617264416c7265616479436c61696d65640001047c49746e207265776172642077617320616c726561647920636c61696d65642e40496e76616c69645369676e61747572650002047c50726f7669646564207369676e61747572652077617320696e76616c69642e54556e61626c65546f436f7665727442616c616e6365000304b042616c616e63652063616e206e6f7420626520636f6e76657274656420746f2061207072696d69746976652e00110b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000150b0c4070616c6c65745f636f6e747261637473107761736d405072656661625761736d4d6f64756c65040454000014016c696e737472756374696f6e5f776569676874735f76657273696f6eb104010c75333200011c696e697469616cb104010c75333200011c6d6178696d756db104010c753332000110636f6465190b014452656c61786564436f64655665633c543e00012c64657465726d696e69736d5d08012c44657465726d696e69736d0000190b0c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004003001185665633c543e00001d0b0c4070616c6c65745f636f6e747261637473107761736d244f776e6572496e666f04045400000c01146f776e65720001384163636f756e7449644f663c543e00011c6465706f736974dd01013042616c616e63654f663c543e000120726566636f756e7424010c7536340000210b0c4070616c6c65745f636f6e7472616374731c73746f7261676530436f6e7472616374496e666f040454000020011c747269655f6964850a011854726965496400013c6465706f7369745f6163636f756e74250b01444465706f7369744163636f756e743c543e000124636f64655f686173682c012c436f6465486173683c543e00013473746f726167655f627974657310010c75333200013473746f726167655f6974656d7310010c75333200015073746f726167655f627974655f6465706f73697418013042616c616e63654f663c543e00015073746f726167655f6974656d5f6465706f73697418013042616c616e63654f663c543e00015073746f726167655f626173655f6465706f73697418013042616c616e63654f663c543e0000250b0c4070616c6c65745f636f6e7472616374731c73746f72616765384465706f7369744163636f756e74040454000004000001384163636f756e7449644f663c543e0000290b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012d0b045300000400310b01185665633c543e00002d0b0c4070616c6c65745f636f6e7472616374731c73746f726167653c44656c65746564436f6e7472616374000004011c747269655f6964850a01185472696549640000310b0000022d0b00350b0c4070616c6c65745f636f6e747261637473207363686564756c65205363686564756c6504045400000c01186c696d697473390b01184c696d69747300014c696e737472756374696f6e5f776569676874733d0b0154496e737472756374696f6e576569676874733c543e00013c686f73745f666e5f77656967687473410b0140486f7374466e576569676874733c543e0000390b0c4070616c6c65745f636f6e747261637473207363686564756c65184c696d69747300002401306576656e745f746f7069637310010c75333200011c676c6f62616c7310010c7533320001186c6f63616c7310010c753332000128706172616d657465727310010c7533320001306d656d6f72795f706167657310010c7533320001287461626c655f73697a6510010c75333200013462725f7461626c655f73697a6510010c75333200012c7375626a6563745f6c656e10010c75333200012c7061796c6f61645f6c656e10010c75333200003d0b0c4070616c6c65745f636f6e747261637473207363686564756c6548496e737472756374696f6e576569676874730404540000d8011c76657273696f6e10010c75333200012066616c6c6261636b10010c753332000120693634636f6e737410010c75333200011c6936346c6f616410010c75333200012069363473746f726510010c75333200011873656c65637410010c7533320001107223696610010c753332000108627210010c75333200011462725f696610010c75333200012062725f7461626c6510010c75333200014862725f7461626c655f7065725f656e74727910010c75333200011063616c6c10010c75333200013463616c6c5f696e64697265637410010c75333200015c63616c6c5f696e6469726563745f7065725f706172616d10010c75333200013863616c6c5f7065725f6c6f63616c10010c7533320001246c6f63616c5f67657410010c7533320001246c6f63616c5f73657410010c7533320001246c6f63616c5f74656510010c753332000128676c6f62616c5f67657410010c753332000128676c6f62616c5f73657410010c7533320001386d656d6f72795f63757272656e7410010c75333200012c6d656d6f72795f67726f7710010c753332000118693634636c7a10010c75333200011869363463747a10010c753332000124693634706f70636e7410010c75333200011869363465717a10010c753332000134693634657874656e647369333210010c753332000134693634657874656e647569333210010c7533320001286933327772617069363410010c753332000114693634657110010c7533320001146936346e6510010c7533320001186936346c747310010c7533320001186936346c747510010c75333200011869363467747310010c75333200011869363467747510010c7533320001186936346c657310010c7533320001186936346c657510010c75333200011869363467657310010c75333200011869363467657510010c75333200011869363461646410010c75333200011869363473756210010c7533320001186936346d756c10010c75333200011c6936346469767310010c75333200011c6936346469767510010c75333200011c69363472656d7310010c75333200011c69363472656d7510010c753332000118693634616e6410010c7533320001146936346f7210010c753332000118693634786f7210010c75333200011869363473686c10010c75333200011c6936347368727310010c75333200011c6936347368727510010c75333200011c693634726f746c10010c75333200011c693634726f747210010c7533320000410b0c4070616c6c65745f636f6e747261637473207363686564756c6534486f7374466e576569676874730404540000ec011863616c6c657220011857656967687400012c69735f636f6e7472616374200118576569676874000124636f64655f686173682001185765696768740001346f776e5f636f64655f6861736820011857656967687400014063616c6c65725f69735f6f726967696e20011857656967687400011c616464726573732001185765696768740001206761735f6c65667420011857656967687400011c62616c616e636520011857656967687400014476616c75655f7472616e7366657272656420011857656967687400013c6d696e696d756d5f62616c616e6365200118576569676874000130626c6f636b5f6e756d62657220011857656967687400010c6e6f772001185765696768740001347765696768745f746f5f66656520011857656967687400010c676173200118576569676874000114696e707574200118576569676874000138696e7075745f7065725f62797465200118576569676874000120722372657475726e20011857656967687400013c72657475726e5f7065725f627974652001185765696768740001247465726d696e61746520011857656967687400011872616e646f6d2001185765696768740001346465706f7369745f6576656e7420011857656967687400015c6465706f7369745f6576656e745f7065725f746f7069632001185765696768740001586465706f7369745f6576656e745f7065725f6279746520011857656967687400013464656275675f6d65737361676520011857656967687400015864656275675f6d6573736167655f7065725f6279746520011857656967687400012c7365745f73746f726167652001185765696768740001607365745f73746f726167655f7065725f6e65775f627974652001185765696768740001607365745f73746f726167655f7065725f6f6c645f627974652001185765696768740001347365745f636f64655f68617368200118576569676874000134636c6561725f73746f72616765200118576569676874000158636c6561725f73746f726167655f7065725f62797465200118576569676874000140636f6e7461696e735f73746f72616765200118576569676874000164636f6e7461696e735f73746f726167655f7065725f6279746520011857656967687400012c6765745f73746f726167652001185765696768740001506765745f73746f726167655f7065725f6279746520011857656967687400013074616b655f73746f7261676520011857656967687400015474616b655f73746f726167655f7065725f627974652001185765696768740001207472616e7366657220011857656967687400011063616c6c20011857656967687400013464656c65676174655f63616c6c20011857656967687400015c63616c6c5f7472616e736665725f73757263686172676520011857656967687400015063616c6c5f7065725f636c6f6e65645f6279746520011857656967687400012c696e7374616e7469617465200118576569676874000178696e7374616e74696174655f7472616e736665725f737572636861726765200118576569676874000168696e7374616e74696174655f7065725f696e7075745f62797465200118576569676874000164696e7374616e74696174655f7065725f73616c745f62797465200118576569676874000134686173685f736861325f323536200118576569676874000158686173685f736861325f3235365f7065725f6279746520011857656967687400013c686173685f6b656363616b5f323536200118576569676874000160686173685f6b656363616b5f3235365f7065725f6279746520011857656967687400013c686173685f626c616b65325f323536200118576569676874000160686173685f626c616b65325f3235365f7065725f6279746520011857656967687400013c686173685f626c616b65325f313238200118576569676874000160686173685f626c616b65325f3132385f7065725f6279746520011857656967687400013465636473615f7265636f76657220011857656967687400015065636473615f746f5f6574685f616464726573732001185765696768740001407265656e7472616e63655f636f756e742001185765696768740001606163636f756e745f7265656e7472616e63655f636f756e7420011857656967687400014c696e7374616e74696174696f6e5f6e6f6e63652001185765696768740000450b0c4070616c6c65745f636f6e7472616374731870616c6c6574144572726f7204045400017058496e76616c69645363686564756c6556657273696f6e000004010141206e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652063757272656e74206f6e652e40496e76616c696443616c6c466c6167730001043501496e76616c696420636f6d62696e6174696f6e206f6620666c61677320737570706c69656420746f20607365616c5f63616c6c60206f7220607365616c5f64656c65676174655f63616c6c602e204f75744f66476173000204b854686520657865637574656420636f6e7472616374206578686175737465642069747320676173206c696d69742e504f7574707574427566666572546f6f536d616c6c0003040101546865206f75747075742062756666657220737570706c69656420746f206120636f6e7472616374204150492063616c6c2077617320746f6f20736d616c6c2e385472616e736665724661696c65640004083501506572666f726d696e672074686520726571756573746564207472616e73666572206661696c65642e2050726f6261626c7920626563617573652074686572652069736e277420656e6f75676894667265652062616c616e636520696e207468652073656e6465722773206163636f756e742e4c4d617843616c6c4465707468526561636865640005082101506572666f726d696e6720612063616c6c207761732064656e6965642062656361757365207468652063616c6c696e67206465707468207265616368656420746865206c696d6974946f6620776861742069732073706563696669656420696e20746865207363686564756c652e40436f6e74726163744e6f74466f756e64000604bc4e6f20636f6e74726163742077617320666f756e64206174207468652073706563696669656420616464726573732e30436f6465546f6f4c617267650007083d0154686520636f646520737570706c69656420746f2060696e7374616e74696174655f776974685f636f646560206578636565647320746865206c696d69742073706563696669656420696e207468654463757272656e74207363686564756c652e30436f64654e6f74466f756e64000804c44e6f20636f646520636f756c6420626520666f756e642061742074686520737570706c69656420636f646520686173682e2c4f75744f66426f756e647300090425014120627566666572206f757473696465206f662073616e64626f78206d656d6f7279207761732070617373656420746f206120636f6e7472616374204150492066756e6374696f6e2e384465636f64696e674661696c6564000a042901496e7075742070617373656420746f206120636f6e7472616374204150492066756e6374696f6e206661696c656420746f206465636f646520617320657870656374656420747970652e3c436f6e747261637454726170706564000b0488436f6e7472616374207472617070656420647572696e6720657865637574696f6e2e3456616c7565546f6f4c61726765000c04cc5468652073697a6520646566696e656420696e2060543a3a4d617856616c756553697a6560207761732065786365656465642e605465726d696e617465645768696c655265656e7472616e74000d0819015465726d696e6174696f6e206f66206120636f6e7472616374206973206e6f7420616c6c6f776564207768696c652074686520636f6e747261637420697320616c7265616479e06f6e207468652063616c6c20737461636b2e2043616e2062652074726967676572656420627920607365616c5f7465726d696e617465602e38496e707574466f72776172646564000e044101607365616c5f63616c6c6020666f72776172646564207468697320636f6e74726163747320696e7075742e204974207468657265666f7265206973206e6f206c6f6e67657220617661696c61626c652e5052616e646f6d5375626a656374546f6f4c6f6e67000f04d8546865207375626a6563742070617373656420746f20607365616c5f72616e646f6d60206578636565647320746865206c696d69742e34546f6f4d616e79546f706963730010041d0154686520616d6f756e74206f6620746f706963732070617373656420746f20607365616c5f6465706f7369745f6576656e747360206578636565647320746865206c696d69742e404e6f436861696e457874656e73696f6e00110c450154686520636861696e20646f6573206e6f742070726f76696465206120636861696e20657874656e73696f6e2e2043616c6c696e672074686520636861696e20657874656e73696f6e20726573756c74734d01696e2074686973206572726f722e204e6f74652074686174207468697320757375616c6c79202073686f756c646e27742068617070656e206173206465706c6f79696e67207375636820636f6e7472616374733069732072656a65637465642e4444656c6574696f6e517565756546756c6c001214010152656d6f76616c206f66206120636f6e7472616374206661696c65642062656361757365207468652064656c6574696f6e2071756575652069732066756c6c2e00b8546869732063616e2068617070656e207768656e2063616c6c696e6720607365616c5f7465726d696e617465602e4d015468652071756575652069732066696c6c65642062792064656c6574696e6720636f6e74726163747320616e6420656d7074696564206279206120666978656420616d6f756e74206561636820626c6f636b2e2101547279696e6720616761696e20647572696e6720616e6f7468657220626c6f636b20697320746865206f6e6c792077617920746f207265736f6c766520746869732069737375652e444475706c6963617465436f6e7472616374001304c84120636f6e74726163742077697468207468652073616d65204163636f756e74496420616c7265616479206578697374732e5c5465726d696e61746564496e436f6e7374727563746f7200140cb84120636f6e74726163742073656c66206465737472756374656420696e2069747320636f6e7374727563746f722e00d0546869732063616e2062652074726967676572656420627920612063616c6c20746f20607365616c5f7465726d696e617465602e405265656e7472616e636544656e6965640015040d01412063616c6c20747269656420746f20696e766f6b65206120636f6e7472616374207468617420697320666c6167676564206173206e6f6e2d7265656e7472616e742e7053746f726167654465706f7369744e6f74456e6f75676846756e647300160421014f726967696e20646f65736e2774206861766520656e6f7567682062616c616e636520746f20706179207468652072657175697265642073746f72616765206465706f736974732e7053746f726167654465706f7369744c696d69744578686175737465640017040d014d6f72652073746f72616765207761732063726561746564207468616e20616c6c6f776564206279207468652073746f72616765206465706f736974206c696d69742e24436f6465496e5573650018044901436f64652072656d6f76616c207761732064656e69656420626563617573652074686520636f6465206973207374696c6c20696e20757365206279206174206c65617374206f6e6520636f6e74726163742e40436f6e74726163745265766572746564001910250154686520636f6e74726163742072616e20746f20636f6d706c6574696f6e20627574206465636964656420746f20726576657274206974732073746f72616765206368616e6765732e4901506c65617365206e6f746520746861742074686973206572726f72206973206f6e6c792072657475726e65642066726f6d2065787472696e736963732e205768656e2063616c6c6564206469726563746c795d016f72207669612052504320616e20604f6b602077696c6c2062652072657475726e65642e20496e20746869732063617365207468652063616c6c6572206e6565647320746f20696e73706563742074686520666c616773c4746f2064657465726d696e652077686574686572206120726576657273696f6e206861732074616b656e20706c6163652e30436f646552656a6563746564001a20450154686520636f6e7472616374277320636f64652077617320666f756e6420746f20626520696e76616c696420647572696e672076616c69646174696f6e206f7220696e737472756d656e746174696f6e2e004d01546865206d6f7374206c696b656c79206361757365206f662074686973206973207468617420616e20415049207761732075736564207768696368206973206e6f7420737570706f72746564206279207468654d016e6f64652e205468697320686170656e7320696620616e206f6c646572206e6f6465206973207573656420776974682061206e65772076657273696f6e206f6620696e6b212e20547279207570646174696e67a8796f7572206e6f646520746f20746865206e657765737420617661696c61626c652076657273696f6e2e00510141206d6f72652064657461696c6564206572726f722063616e20626520666f756e64206f6e20746865206e6f646520636f6e736f6c65206966206465627567206d657373616765732061726520656e61626c6564a8627920737570706c79696e6720602d6c72756e74696d653a3a636f6e7472616374733d6465627567602e3c496e64657465726d696e6973746963001b042101416e20696e64657465726d697374696320636f646520776173207573656420696e206120636f6e746578742077686572652074686973206973206e6f74207065726d69747465642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909490b0848706f6c796d6573685f636f6e747261637473144572726f7204045400012034496e76616c696446756e634964000004a4496e76616c6964206066756e635f6964602070726f76696465642066726f6d20636f6e74726163742e48496e76616c696452756e74696d6543616c6c0001049c4661696c656420746f206465636f646520612076616c6964206052756e74696d6543616c6c602e445265616453746f726167654661696c6564000204fc605265616453746f7261676560206661696c656420746f2077726974652076616c756520696e746f2074686520636f6e74726163742773206275666665722e54446174614c65667441667465724465636f64696e67000304d444617461206c65667420696e20696e707574207768656e206465636f64696e6720617267756d656e7473206f6620612063616c6c2e34496e4c656e546f6f4c617267650004043901496e70757420646174612074686174206120636f6e747261637420706173736564207768656e207573696e672074686520436861696e457874656e73696f6e2077617320746f6f206c617267652e384f75744c656e546f6f4c61726765000504ec4f757470757420646174612072657475726e65642066726f6d2074686520436861696e457874656e73696f6e2077617320746f6f206c617267652e68496e7374616e746961746f72576974684e6f4964656e74697479000608b04120636f6e74726163742077617320617474656d7074656420746f20626520696e7374616e7469617465642c0d01627574206e6f206964656e746974792077617320676976656e20746f206173736f636961746520746865206e657720636f6e74726163742773206b657920776974682e4452756e74696d6543616c6c44656e696564000704cc45787472696e736963206973206e6f7420616c6c6f77656420746f2062652063616c6c656420627920636f6e7472616374732e004d0b083c70616c6c65745f707265696d616765345265717565737453746174757308244163636f756e74496401001c42616c616e6365011801082c556e72657175657374656408011c6465706f7369741d090150284163636f756e7449642c2042616c616e63652900010c6c656e10010c753332000000245265717565737465640c011c6465706f736974510b01704f7074696f6e3c284163636f756e7449642c2042616c616e6365293e000114636f756e7410010c75333200010c6c656e3506012c4f7074696f6e3c7533323e00010000510b04184f7074696f6e040454011d090108104e6f6e6500000010536f6d6504001d090000010000550b000004082c1000590b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e00005d0b0c3c70616c6c65745f707265696d6167651870616c6c6574144572726f7204045400011818546f6f426967000004a0507265696d61676520697320746f6f206c6172676520746f2073746f7265206f6e2d636861696e2e30416c72656164794e6f746564000104a4507265696d6167652068617320616c7265616479206265656e206e6f746564206f6e2d636861696e2e344e6f74417574686f72697a6564000204c85468652075736572206973206e6f7420617574686f72697a656420746f20706572666f726d207468697320616374696f6e2e204e6f744e6f746564000304fc54686520707265696d6167652063616e6e6f742062652072656d6f7665642073696e636520697420686173206e6f7420796574206265656e206e6f7465642e2452657175657374656400040409014120707265696d616765206d6179206e6f742062652072656d6f766564207768656e20746865726520617265206f75747374616e64696e672072657175657374732e304e6f745265717565737465640005042d0154686520707265696d61676520726571756573742063616e6e6f742062652072656d6f7665642073696e6365206e6f206f75747374616e64696e672072657175657374732065786973742e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909610b0c4c706f6c796d6573685f7072696d6974697665730c6e6674344e4654436f6c6c656374696f6e000008010869649904013c4e4654436f6c6c656374696f6e49640001187469636b6572a801185469636b65720000650b04204254726565536574040454017d020004008108000000690b000004086d0b7d02006d0b000004089904bd0300710b082870616c6c65745f6e6674144572726f720404540001503c42616c616e63654f766572666c6f77000004a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4042616c616e6365556e646572666c6f77000104ac416e20756e646572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e68436f6c6c656374696f6e416c7265647952656769737465726564000204d8546865207469636b657220697320616c7265616479206173736f63696174656420746f20616e204e465420636f6c6c656374696f6e2e48436f6c6c656374696f6e4e6f74466f756e6400030488546865204e465420636f6c6c656374696f6e20646f6573206e6f742065786973742e504475706c69636174654d657461646174614b6579000404d841206475706c6963617465206d65746164617461206b657920686173206265656e2070617373656420617320706172616d657465722e3c4475706c6963617465644e46544964000504784475706c69636174652069647320617265206e6f7420616c6c6f7765642e40496e76616c69644173736574547970650006049c546865206173736574206d757374206265206f662074797065206e6f6e2d66756e6769626c652e60496e76616c69644d657461646174614174747269627574650007048d0145697468657220746865206e756d626572206f66206b657973206f7220746865206b6579206964656e74696669657220646f6573206e6f74206d6174636820746865206b65797320646566696e656420666f722074686520636f6c6c656374696f6e2e90496e76616c69644e46545472616e73666572436f6c6c656374696f6e4e6f74466f756e64000804d44661696c656420746f207472616e7366657220616e204e4654202d204e465420636f6c6c656374696f6e206e6f7420666f756e642e7c496e76616c69644e46545472616e7366657253616d65506f7274666f6c696f00090409014661696c656420746f207472616e7366657220616e204e4654202d20617474656d707420746f206d6f766520746f207468652073616d6520706f7274666f6c696f2e74496e76616c69644e46545472616e736665724e46544e6f744f776e6564000a04dc4661696c656420746f207472616e7366657220616e204e4654202d204e4654206e6f7420666f756e6420696e20706f7274666f6c696f2e7c496e76616c69644e46545472616e73666572436f756e744f766572666c6f77000b04e84661696c656420746f207472616e7366657220616e204e4654202d206964656e7469747920636f756e7420776f756c64206f766572666c6f772e8c496e76616c69644e46545472616e73666572436f6d706c69616e63654661696c757265000c04b84661696c656420746f207472616e7366657220616e204e4654202d20636f6d706c69616e6365206661696c65642e74496e76616c69644e46545472616e7366657246726f7a656e4173736574000d04b04661696c656420746f207472616e7366657220616e204e4654202d2061737365742069732066726f7a656e2e8c496e76616c69644e46545472616e73666572496e73756666696369656e74436f756e74000e043d014661696c656420746f207472616e7366657220616e204e4654202d20746865206e756d626572206f66206e66747320696e20746865206964656e7469747920697320696e73756666696369656e742e5c4d61784e756d6265724f664b6579734578636565646564000f04c4546865206d6178696d756d206e756d626572206f66206d65746164617461206b657973207761732065786365656465642e744d61784e756d6265724f664e4654735065724c656745786365656465640010041501546865206d6178696d756d206e756d626572206f66206e667473206265696e67207472616e7366657272656420696e206f6e65206c6567207761732065786365656465642e2c4e46544e6f74466f756e640011045c546865204e465420646f6573206e6f742065786973742e5c556e726567697374657265644d657461646174614b6579001204e84174206c65617374206f6e65206f6620746865206d65746164617461206b65797320686173206e6f74206265656e20726567697374657265642e245a65726f436f756e74001304a44974206973206e6f7420706f737369626c6520746f207472616e7366657272207a65726f206e66742e00750b084470616c6c65745f746573745f7574696c73144572726f7204045400010000790b102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c41646472657373016d051043616c6c01ed05245369676e617475726501d907144578747261017d0b000400300000007d0b00000420810b850b890b8d0b950b990ba10ba50b00810b10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000850b10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000890b10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e65736973040454000000008d0b10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400910b010c4572610000910b102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000950b10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400b1040120543a3a496e6465780000990b0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000004009d0b011443573c543e00009d0b10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000a10b086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400dd01013042616c616e63654f663c543e0000a50b084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000a90b0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000cc1853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010405102c8000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510300400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002c80000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010034040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004404001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022ca9040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000ad0404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010029010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010029010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000a104040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01b90401501830426c6f636b57656967687473c90401020700c817a804000b00204aa9d10113ffffffffffffffff02daf89a00010b80914b872e011366666666666666a6010b0098f73e5d0113ffffffffffffffbf01000002daf89a00010b80199ef1a2011366666666666666e6010b00204aa9d10113ffffffffffffffff01070088526a7413000000000000004002daf89a0000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468d90430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e204462576569676874e1044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ee504a10430706f6c796d6573685f64657630706f6c796d6573685f64657601000000808d5b000000000054df6acb689907609b0400000037e397fc7c91f5e40100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa70200000037c8bb1350a9a2a802000000f3ff14d5ab52705902000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd003000000bb6ba9053c5c9d7803000000595ac34c5ea1f5fe010000009ea061a615cee2fe0100000053df5001418f3b460100000003000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669785d03082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e01f904001042616265011042616265442845706f6368496e64657801002820000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f7269746965730100fd040400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f7401000d0520000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f7401000d0520000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e67650000110504000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100fd0404000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f8205765206d616b6520612074726164652d6f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e01010405101d0504000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000250504000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100d10304001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0049012049742069732073657420696e20606f6e5f66696e616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f636853746172740100cd03200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000390504000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e666967000039050400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e34536b697070656445706f63687301003d0504002029012041206c697374206f6620746865206c6173742031303020736b69707065642065706f63687320616e642074686520636f72726573706f6e64696e672073657373696f6e20696e64657870207768656e207468652065706f63682077617320736b69707065642e0031012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f663501206d75737420636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e656564206139012077617920746f2074696520746f6765746865722073657373696f6e7320616e642065706f636820696e64696365732c20692e652e207765206e65656420746f2076616c69646174652074686174290120612076616c696461746f722077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e64207768617420746865b0206163746976652065706f636820696e6465782077617320647572696e6720746861742073657373696f6e2e014905000c3445706f63684475726174696f6e28202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652820701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564015d05012454696d657374616d70012454696d657374616d70080c4e6f7701002820000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501002901040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f0161050004344d696e696d756d506572696f642820b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021065050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e0169050174041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e0171050328417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402007505040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e018105017804484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e01850505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100890540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e01008d0504000000019008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f46656591055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e7469747948284469645265636f726473000104068099050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e01010406802901040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e74446964000080040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d7300010805029d05f8040004f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d7330437573746f6d436c61696d73000104051101300400049420437573746f6d436c61696d547970654964202d3e20537472696e6720636f6e7374616e744c437573746f6d436c61696d73496e7665727365000104023011010400049420537472696e6720636f6e7374616e74202d3e20437573746f6d436c61696d54797065496454437573746f6d436c61696d496453657175656e6365010011011000000000047820546865206e6578742060437573746f6d436c61696d547970654964602e284b65795265636f7264730001040500a9050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b6579730101080605ad05290104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002820000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e636501010406802820000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e730001080205b105b505040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e0101080605b9057d0184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564297043646441757468466f725072696d6172794b6579526f746174696f6e010029010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e0100bd05040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200282000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b6579600024506172656e74446964000104068080040004c020506172656e74206964656e7469747920696620746865204449442069732061206368696c64204964656e746974792e01c10501940430496e697469616c504f4c59581840000000000000000000000000000000000001d905074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100dd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01e505012d010001e9050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c730100a504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f66000104062ced05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e67000104062c9108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100350104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100cd03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000080040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01009508040004442053746f726167652076657273696f6e2e01f10501390100019908094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100dd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f505014d0100019d080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c730100a504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f66000104062ced05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e67000104062c9108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100350104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100cd03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000080040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01009508040004442053746f726167652076657273696f6e2e01f9050155010001a1080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100dd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01fd05015d010001a5080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c730100a504040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f66000104062ced05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e67000104062c9108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100350104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100cd03200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000080040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e01009508040004442053746f726167652076657273696f6e2e0101060165010001a9080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100dd05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e010506016d010001ad080e204d756c746953696701204d756c746953696734344d756c74695369674e6f6e6365010028200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e6572730101080605b1082901040004cc205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e20626f6f6c2e3c4e756d6265724f665369676e65727301010406002820000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002820000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060028200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c7300010405b508ed0504000475012050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c746973696720286d756c74697369672c2070726f706f73616c20696429203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602b90828040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f74657301010405bd082901040004250120496e646976696475616c206d756c7469736967207369676e657220766f7465732e20286d756c7469207369672c207369676e65722c2070726f706f73616c29203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406008080000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c01010405b508c1084c00000000000000000000000000000000000000047c2044657461696c73206f662061206d756c74697369672070726f706f73616c544c6f737443726561746f7250726976696c6567657301010406802901040004290120547261636b732063726561746f72732077686f20617265206e6f206c6f6e67657220616c6c6f77656420746f2063616c6c207669615f63726561746f722065787472696e736963732e485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e0100c908040004442053746f726167652076657273696f6e2e0109060175010001cd080f1842726964676501184272696467652828436f6e74726f6c6c657200000004000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c730101080202d108d508d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e0000000400043c205468652061646d696e206b65792e1846726f7a656e01002901040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402002901040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100dd0850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c7978427269646765640101040680dd0850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d7074656401010405802901040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e0100e108040004442053746f726167652076657273696f6e2e010d060181010001e508101c5374616b696e67011c5374616b696e67a430486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e74010010100000000004a82054686520696465616c206e756d626572206f66207374616b696e67207061727469636970616e74732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100f404000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e6465640001040500000400040101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e184c65646765720001040200e9080400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e14506179656501010405002106040004e42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e2856616c696461746f72730101040500250608000004450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e284e6f6d696e61746f72730001040500f508040004650120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f2074686520736574206f66207374617368206b657973206f6620616c6c2076616c696461746f727320746f206e6f6d696e6174652e2843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e244163746976654572610000f908040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b6572730101080505fd08d9010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c69707065640101080505fd08d9010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505fd0825060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510010914000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f72636545726101000d0904000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01009d0110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010405101109040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100a90404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e4572610001080505fd082109040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505fd0818040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e73000104050025090400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c61736801010405d1082909800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e4c4f6666656e64696e6756616c696461746f727301002d09040024690120496e6469636573206f662076616c696461746f727320746861742068617665206f6666656e64656420696e20746865206163746976652065726120616e6420776865746865722074686579206172652063757272656e746c79282064697361626c65642e00690120546869732076616c75652073686f756c642062652061207375706572736574206f662064697361626c65642076616c696461746f72732073696e6365206e6f7420616c6c206f6666656e636573206c65616420746f2074686571012076616c696461746f72206265696e672064697361626c65642028696620746865726520776173206e6f20736c617368292e2054686973206973206e656564656420746f20747261636b207468652070657263656e74616765206f6649012076616c696461746f727320746861742068617665206f6666656e64656420696e207468652063757272656e74206572612c20656e737572696e672061206e65772065726120697320666f72636564206966750120604f6666656e64696e6756616c696461746f72735468726573686f6c646020697320726561636865642e205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e6471012077686574686572206120676976656e2076616c696461746f72206861732070726576696f75736c79206f6666656e646564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e38207468652065726120656e64732e48536e617073686f7456616c696461746f72730000f4040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000f4040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000350904000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500000907040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e53746174757301003909040008490120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c207765206163636570746c20736f6c7574696f6e7320746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010029010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e7469747900010405803d09040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001009d0110000000000415012045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e207468652072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f720100a1010402003853746f7261676556657273696f6e01004109040610cc2054727565206966206e6574776f726b20686173206265656e20757067726164656420746f20746869732076657273696f6e2e7c2053746f726167652076657273696f6e206f66207468652070616c6c65742e00a020546869732069732073657420746f2076362e302e3120666f72206e6577206e6574776f726b732e58506f6c796d65736853746f7261676556657273696f6e010045090400046820506f6c796d6573682053746f726167652076657273696f6e2e011d060195012c3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e4204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e48536c61736844656665724475726174696f6e101004000000140101204e756d626572206f662065726173207468617420736c6173686573206172652064656665727265642062792c20616674657220636f6d7075746174696f6e2e00bc20546869732073686f756c64206265206c657373207468616e2074686520626f6e64696e67206475726174696f6e2e2d012053657420746f203020696620736c61736865732073686f756c64206265206170706c69656420696d6d6564696174656c792c20776974686f7574206f70706f7274756e69747920666f723820696e74657276656e74696f6e2e44456c656374696f6e4c6f6f6b616865616410104b0000001c710120546865206e756d626572206f6620626c6f636b73206265666f72652074686520656e64206f6620746865206572612066726f6d20776869636820656c656374696f6e207375626d697373696f6e732061726520616c6c6f7765642e006d012053657474696e67207468697320746f207a65726f2077696c6c2064697361626c6520746865206f6666636861696e20636f6d7075746520616e64206f6e6c79206f6e2d636861696e207365712d70687261676d656e2077696c6c2420626520757365642e007501205468697320697320626f756e646564206279206265696e672077697468696e20746865206c6173742073657373696f6e2e2048656e63652c2073657474696e6720697420746f20612076616c7565206d6f7265207468616e207468659c206c656e677468206f6620612073657373696f6e2077696c6c20626520706f696e746c6573732e344d6178497465726174696f6e7310100a0000000c2901204d6178696d756d206e756d626572206f662062616c616e63696e6720697465726174696f6e7320746f2072756e20696e20746865206f6666636861696e207375626d697373696f6e2e00ec2049662073657420746f20302c2062616c616e63655f736f6c7574696f6e2077696c6c206e6f7420626520657865637574656420617420616c6c2e504d696e536f6c7574696f6e53636f726542756d709d011020a1070004610120546865207468726573686f6c64206f6620696d70726f76656d656e7420746861742073686f756c642062652070726f766964656420666f722061206e657720736f6c7574696f6e20746f2062652061636365707465642e804d61784e6f6d696e61746f72526577617264656450657256616c696461746f7210100008000010f820546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320726577617264656420666f7220656163682076616c696461746f722e00690120466f7220656163682076616c696461746f72206f6e6c79207468652060244d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732063616e20636c61696d2101207468656972207265776172642e2054686973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e5c4d617856616c696461746f725065724964656e74697479a50210100905000cf4204d6178696d756d206e756d626572206f662076616c696461746f727320666f722065616368207065726d697373696f6e6564206964656e746974792e005901204d6178206e756d626572206f662076616c696461746f727320636f756e74203d20604d617856616c696461746f725065724964656e74697479202a2053656c663a3a76616c696461746f725f636f756e742829602e844d61785661726961626c65496e666c6174696f6e546f74616c49737375616e636518400080c6a47e8d03000000000000000000047101204d6178696d756d20616d6f756e74206f662060543a3a63757272656e63793a3a746f74616c5f69737375616e63652829602061667465722074686174206e6f6e2d696e666c6174656420726577617264732067657420706169642e444669786564596561726c79526577617264184000c0444a547f0000000000000000000004010120546f74616c2079656172207265776172647320746861742067657473207061696420647572696e6720666978656420726577617264207363686564756c652e2c4d696e696d756d426f6e64184040420f0000000000000000000000000004f0204d696e696d756d20616d6f756e74206f6620504f4c59582074686174206d75737420626520626f6e64656420666f722061206e657720626f6e642e01490911204f6666656e63657301204f6666656e6365730c1c5265706f727473000104052c4d09040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e64657801010805055109a5040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405a90130040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e0001a5010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100f40400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401002901040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010055090400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f7273010069040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b657973000104050015070400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e6572000104055d0900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01110701ad01000165091348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100690904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500006d09040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000cd030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010028200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405281004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e011d0701b10108384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365584d6178536574496453657373696f6e456e74726965732820150000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e0175091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301007909040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730001080505cd0381090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505fd0810100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01490701c5010440556e7369676e65645072696f726974792820ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e019509176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100990904000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01690701e90100019d091914417373657401144173736574701c5469636b65727300010402a8a10904000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e6669670100a5090800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7300010402a8a909040008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657300010402a8fd01040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206ad0918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a80102040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100f50110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405f50130040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650001040230f501040004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a815020400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010402b1091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a82901040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e730101080602b509b90904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e74730001080205bd091d020400087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a8190210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f69644c41737365744d6574616461746156616c7565730001080205c10949020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c730001080205c1095102040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b65790001080202c5095d0204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402590279020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d650001080205c909590204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405790259020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c53706563730001080205c909610204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c5370656373000104057902610204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a85d02200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010079022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e705469636b6572734578656d707446726f6d41666669726d6174696f6e01010402a8290104000455012041206c697374206f66207469636b6572732074686174206578656d707420616c6c2075736572732066726f6d2061666669726d696e672074686520726563656976656d656e74206f66207468652061737365742e44507265417070726f7665645469636b65720101080602b5092901040004290120416c6c207469636b657273207468617420646f6e2774206e65656420616e2061666669726d6174696f6e20746f20626520726563656976656420627920616e206964656e746974792e3853746f7261676556657273696f6e0100cd09040004442053746f726167652076657273696f6e2e016d0701ed01144841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e6774681010002000000001d1091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104029902a10204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c6465725061696401010402d509290104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e0100d909040004442053746f726167652076657273696f6e2e0175070191020001dd091b28436865636b706f696e740128436865636b706f696e74302c546f74616c537570706c790101080205e1091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e63650101080205e5091840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a8ad02200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e6365557064617465730101080205ad09e909040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205e10928200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002820000000000000000004e420546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f722061207469636b65722773207363686564756c65732e485363686564756c65496453657175656e636501010402a8b1022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944544361636865644e657874436865636b706f696e747300010402a8ed09040014a820436163686564206e65787420636865636b706f696e7420666f722065616368207363686564756c652e0031012054686973206973207573656420746f20717569636b6c792066696e6420746865206e65787420636865636b706f696e742066726f6d2061207469636b65722773207363686564756c65732e007420287469636b657229202d3e206e65787420636865636b706f696e7473505363686564756c6564436865636b706f696e74730001080205fd09b50204000c5c205363686564756c656420636865636b706f696e74732e00b820287469636b65722c207363686564756c6520494429202d3e207363686564756c6520636865636b706f696e7473405363686564756c65526566436f756e740101080205fd0910100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e74730101080205fd09e90904000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e0100010a040004442053746f726167652076657273696f6e2e017d0701a9020001050a1c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a8090a08000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a8dd02040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e01000d0a040004442053746f726167652076657273696f6e2e01810701c10204584d6178436f6e646974696f6e436f6d706c65786974791010320000000001110a1d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a8f90208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a8a502100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a8190304001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a89d02100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205150a05030400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b0101040299022503040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c730101040299022103040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100190a040004442053746f726167652076657273696f6e2e01850701f50208304d61785461726765744964731010e803000000284d6178446964576874731010e803000000011d0a1e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104029902310304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e6765730001040299022d03040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f696365730101040299023906040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c5243560101040299022901040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104029902210a04001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730101080206d5095103040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e019d070129030001250a1f2c5065726d697373696f6e730000000001290a201050697073011050697073584c5072756e65486973746f726963616c5069707301002901040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901004901040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e636501006d0310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010081031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104056d032d0a0400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f736974730001080505310a350a040008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104056d03390a040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104056d033d0aa00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f7465730001080505310a410a040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c65000104056d0310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501008503040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501008503040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000450a040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e74010104056d0308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d69747465655069707301009d03040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3850726f706f73616c537461746573000104056d037d030400087c2050726f706f73616c20737461746520666f72206120676976656e2069642e742070726f706f73616c206964202d3e2070726f706f73616c53746174653853746f7261676556657273696f6e0100490a04000001a10701610300014d0a2124506f7274666f6c696f0124506f7274666f6c696f304c4e657874506f7274666f6c696f4e756d6265720101040680e820010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f730001080605510aa50304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720001080602550ae8040008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405e02820000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502590a1840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502590a18400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405e08004000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f647901010806055d0a290104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e30506f7274666f6c696f4e46540101080502610a29010400049420546865206e6674206173736f63696174656420746f2074686520706f7274666f6c696f2e48506f7274666f6c696f4c6f636b65644e46540101080502610a29010400049820416c6c206c6f636b6564206e667420666f72206120676976656e20706f7274666f6c696f2e54507265417070726f766564506f7274666f6c696f730101080502590a2901040004310120416c6c20706f7274666f6c696f73207468617420646f6e2774206e65656420746f2061666669726d2074686520726563656976656d656e74206f66206120676976656e207469636b65722e3853746f7261676556657273696f6e0100690a040004442053746f726167652076657273696f6e2e01b10701a10300016d0a222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405c10718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e740100c503200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01bd0701c1030001710a23245363686564756c657201245363686564756c65720c3c496e636f6d706c65746553696e6365000010040000184167656e64610101040510750a0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001040504cd03040010f8204c6f6f6b75702066726f6d2061206e616d6520746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e00590120466f72207633202d3e207634207468652070726576696f75736c7920756e626f756e646564206964656e7469746965732061726520426c616b65322d3235362068617368656420746f20666f726d2074686520763430206964656e7469746965732e01c50701c90308344d6178696d756d57656967687420400b00806e87740113cccccccccccccccc04290120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c65732e504d61785363686564756c6564506572426c6f636b101032000000041d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2e018d0a2428536574746c656d656e740128536574746c656d656e74502456656e7565496e666f00010405d903910a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405d903dd03040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505950a450100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505990a2901040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e75657301010805059d0a450100147101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e782056656e7565732063726561746520627920616e206964656e746974792e60204f6e6c79206e656564656420666f72207468652055492e0060206964656e74697479202d3e2076656e75655f696420282948496e737472756374696f6e44657461696c73010104058d02a10a5000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c7350496e737472756374696f6e4c65675374617475730101080505a50aa90a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e67010104058d0228200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505ad0ab10a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505b50ab10a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e537461747573305265636569707473557365640101080502b5082901040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a82901040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205b90a2901040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100d903200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e74657201008d02200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100bd0a040004442053746f726167652076657273696f6e2e40496e737472756374696f6e4d656d6f73000104058d02880400044420496e737472756374696f6e206d656d6f4c496e737472756374696f6e5374617475736573010104058d02c10a040004e820496e737472756374696f6e2073746174757365732e20696e737472756374696f6e5f6964202d3e20496e737472756374696f6e5374617475733c496e737472756374696f6e4c6567730001080505a50afd03040004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c6567504f6666436861696e41666669726d6174696f6e730101080505a50ab10a040004d90120547261636b73207468652061666669726d6174696f6e2073746174757320666f72206f6666636861696e206c65677320696e206120696e737472756374696f6e2e205b6028496e737472756374696f6e49642c204c6567496429605d202d3e205b6041666669726d6174696f6e537461747573605d01cd0701d5030001c50a252853746174697374696373012853746174697374696373144041637469766541737365745374617473010104020504c90a040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202cd0a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e636573010104020504d50a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202dd0a2901040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100e10a0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e01e50701010408404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e7350657241737365741010040000000001e50a260c53746f010c53746f0c2c46756e64726169736572730001080205e90a5104040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a84904200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d65730001080205e90a4d04040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d6501f9070145040001ed0a27205472656173757279000109080161040001f10a281c5574696c697479011c5574696c69747904184e6f6e6365730101040500282000000000000000000858204e6f6e636520666f72206072656c61795f7478602e4420504f4c594d4553483a2061646465642e011508016504044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01f50a2910426173650001390801750404184d61784c656e1010000800000001f90a2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a82501100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f660101080202b509450100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205ad0921010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a810100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205fd0ab80400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e013d08017d040001010b2b1c52656c61796572011c52656c6179657204245375627369646965730001040200050b040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e0141080181040001090b2c1c52657761726473011c52657761726473042849746e52657761726473000104020049080400040101204d6170206f66202849746e204164647265737320604163636f756e7449646029202d3e2028526577617264206049746e52657761726453746174757360292e01450801850400010d0b2d24436f6e7472616374730124436f6e74726163747318305072697374696e65436f6465000104062c110b04000465012041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2c436f646553746f72616765000104062c150b04000465012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2c4f776e6572496e666f4f66000104062c1d0b0400040d012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420697473206f776e657220696e666f726d6174696f6e2e144e6f6e6365010028200000000000000000581d0120546869732069732061202a2a6d6f6e6f746f6e69632a2a20636f756e74657220696e6372656d656e746564206f6e20636f6e747261637420696e7374616e74696174696f6e2e0005012054686973206973207573656420696e206f7264657220746f2067656e657261746520756e6971756520747269652069647320666f7220636f6e7472616374732e2901205468652074726965206964206f662061206e657720636f6e74726163742069732063616c63756c617465642066726f6d2068617368286163636f756e745f69642c206e6f6e6365292e350120546865206e6f6e63652069732072657175697265642062656361757365206f74686572776973652074686520666f6c6c6f77696e672073657175656e636520776f756c64206c65616420746f84206120706f737369626c6520636f6c6c6973696f6e206f662073746f726167653a006820312e204372656174652061206e657720636f6e74726163742e6c20322e205465726d696e6174652074686520636f6e74726163742efc20332e20496d6d6564696174656c792072656372656174652074686520636f6e74726163742077697468207468652073616d65206163636f756e745f69642e00450120546869732069732062616420626563617573652074686520636f6e74656e7473206f6620612074726965206172652064656c65746564206c617a696c7920616e64207468657265206d6967687420626559012073746f72616765206f6620746865206f6c6420696e7374616e74696174696f6e207374696c6c20696e206974207768656e20746865206e657720636f6e747261637420697320637265617465642e20506c656173655901206e6f746520746861742077652063616e2774207265706c6163652074686520636f756e7465722062792074686520626c6f636b206e756d6265722062656361757365207468652073657175656e63652061626f766551012063616e2068617070656e20696e207468652073616d6520626c6f636b2e20576520616c736f2063616e2774206b65657020746865206163636f756e7420636f756e74657220696e206d656d6f7279206f6e6c79490120626563617573652073746f7261676520697320746865206f6e6c792077617920746f20636f6d6d756e6963617465206163726f737320646966666572656e742065787472696e7369637320696e20746865302073616d6520626c6f636b2e001c2023204e6f7465003d0120446f206e6f742075736520697420746f2064657465726d696e6520746865206e756d626572206f6620636f6e7472616374732e20497420776f6e27742062652064656372656d656e74656420696664206120636f6e74726163742069732064657374726f7965642e38436f6e7472616374496e666f4f660001040500210b04000ca82054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e3444656c6574696f6e51756575650100290b040010c8204576696374656420636f6e7472616374732074686174206177616974206368696c6420747269652064656c6574696f6e2e004901204368696c6420747269652064656c6574696f6e2069732061206865617679206f7065726174696f6e20646570656e64696e67206f6e2074686520616d6f756e74206f662073746f72616765206974656d7359012073746f72656420696e207361696420747269652e205468657265666f72652074686973206f7065726174696f6e20697320706572666f726d6564206c617a696c7920696e20606f6e5f696e697469616c697a65602e014d0801890424205363686564756c65350b810804000000000100000004000080000000100000000010000000010000200000000040000004000000000000000c080000f019000006170000b70c0000431b0000ef080000f40c0000511500002e000000034b0000175a0000f108000091030000e6090000eb0a00009c090000fc1a0000e21b0000b71700005de2e10058080000b0080000a60900006a09000012080000cb0700000a080000620b0000500b00001b0b0000470b0000490b0000c80b0000570b0000310c00005a0b00008e0b0000e20a00007e0a0000800a000051230000d02000006a240000a1200000e90a0000800d0000e90a0000020b0000270b00001d0b0000220b0000e50a000016840d007842cea90cf13b924cd20c413c7612110078aeaa08003cf67d0d00781e160d007876fd4a0078a64e0d007832150d0078f6eb0c0078063a0d0078068b4300f04e250600004e1b0c0078d90100d60a6a0085038d030003c1cb866971eafeeb5400f062e0ae00c8763d253c3529a90d00de510b008c810c007a36fd3c91047260010000565a0100086e108b7f29b846a4f43c8104865a010008ea3afc0c8104894e088ef8060da104716108f6b7fd3ca1048e6d010008e645c43f352aea6995cde563cef8a298e580da2d7e40a937e101000358ba3c68020b0100e65eff00840d180025180012442000a0e53d004e152c00a0c531001e711900a0b11300466a1b00a8b51300aeea0009f105f23e33024903d2c208003cd2c60d0019034228070048046820436f7374207363686564756c6520616e64206c696d6974732e4844656c6574696f6e517565756544657074681010000400003c090120546865206d6178696d756d206e756d626572206f6620636f6e74726163747320746861742063616e2062652070656e64696e6720666f722064656c6574696f6e2e003d01205768656e206120636f6e74726163742069732064656c657465642062792063616c6c696e6720607365616c5f7465726d696e61746560206974206265636f6d657320696e61636365737369626c654d0120696d6d6564696174656c792c20627574207468652064656c6574696f6e206f66207468652073746f72616765206974656d732069742068617320616363756d756c6174656420697320706572666f726d65642901206c617465722e2054686520636f6e74726163742069732070757420696e746f207468652064656c6574696f6e2071756575652e205468697320646566696e657320686f77206d616e795d0120636f6e7472616374732063616e20626520717565756564207570206174207468652073616d652074696d652e2049662074686174206c696d6974206973207265616368656420607365616c5f7465726d696e6174656015012077696c6c206661696c2e2054686520616374696f6e206d757374206265207265747269656420696e2061206c6174657220626c6f636b20696e207468617420636173652e00b82054686520726561736f6e7320666f72206c696d6974696e6720746865207175657565206465707468206172653a00590120312e2054686520717565756520697320696e2073746f7261676520696e206f7264657220746f2062652070657273697374656e74206265747765656e20626c6f636b732e2057652077616e7420746f206c696d6974b4200974686520616d6f756e74206f662073746f7261676520746861742063616e20626520636f6e73756d65642e4d0120322e205468652071756575652069732073746f72656420696e206120766563746f7220616e64206e6565647320746f206265206465636f64656420617320612077686f6c65207768656e2072656164696e674501090969742061742074686520656e64206f66206561636820626c6f636b2e204c6f6e676572207175657565732074616b65206d6f72652077656967687420746f206465636f646520616e642068656e6365e809096c696d69742074686520616d6f756e74206f66206974656d7320746861742063616e2062652064656c657465642070657220626c6f636b2e4c44656c6574696f6e5765696768744c696d6974201c070088526a7400184d0120546865206d6178696d756d20616d6f756e74206f662077656967687420746861742063616e20626520636f6e73756d65642070657220626c6f636b20666f72206c617a7920747269652072656d6f76616c2e005d012054686520616d6f756e74206f66207765696768742074686174206973206465646963617465642070657220626c6f636b20746f20776f726b206f6e207468652064656c6574696f6e2071756575652e204c617267657245012076616c75657320616c6c6f77206d6f72652074726965206b65797320746f2062652064656c6574656420696e206561636820626c6f636b20627574207265647563652074686520616d6f756e74206f664101207765696768742074686174206973206c65667420666f72207472616e73616374696f6e732e20536565205b6053656c663a3a44656c6574696f6e51756575654465707468605d20666f72206d6f72659820696e666f726d6174696f6e2061626f7574207468652064656c6574696f6e2071756575652e384465706f73697450657242797465184060ea00000000000000000000000000001411012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682062797465206f662073746f726167652e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e384465706f7369745065724974656d1840f04902000000000000000000000000001405012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682073746f72616765206974656d2e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e284d6178436f64654c656e101000ec01001c5d0120546865206d6178696d756d206c656e677468206f66206120636f6e747261637420636f646520696e2062797465732e2054686973206c696d6974206170706c69657320746f2074686520696e737472756d656e74656451012076657273696f6e206f662074686520636f64652e205468657265666f72652060696e7374616e74696174655f776974685f636f6465602063616e206661696c206576656e207768656e20737570706c79696e679c2061207761736d2062696e6172792062656c6f772074686973206d6178696d756d2073697a652e005901205468652076616c75652073686f756c642062652063686f73656e206361726566756c6c792074616b696e6720696e746f20746865206163636f756e7420746865206f766572616c6c206d656d6f7279206c696d6974f020796f75722072756e74696d65206861732c2061732077656c6c20617320746865205b6d6178696d756d20616c6c6f7765642063616c6c737461636b5d012064657074685d28236173736f636961746564747970652e43616c6c537461636b292e204c6f6f6b20696e746f207468652060696e746567726974795f7465737428296020666f7220736f6d6520696e7369676874732e404d617853746f726167654b65794c656e10108000000004e020546865206d6178696d756d20616c6c6f7761626c65206c656e67746820696e20627974657320666f722073746f72616765206b6579732e5c556e73616665556e737461626c65496e7465726661636529010400241101204d616b6520636f6e74726163742063616c6c61626c652066756e6374696f6e73206d61726b65642061732060235b756e737461626c655d6020617661696c61626c652e003d0120436f6e7472616374732074686174207573652060235b756e737461626c655d602066756e6374696f6e7320776f6e27742062652061626c6520746f2062652075706c6f6164656420756e6c657373450120746869732069732073657420746f206074727565602e2054686973206973206f6e6c79206d65616e7420666f7220746573746e65747320616e6420646576206e6f64657320696e206f7264657220746f78206578706572696d656e742077697468206e65772066656174757265732e00282023205761726e696e6700c020446f202a2a6e6f742a2a2073657420746f20607472756560206f6e2070726f64756374696f6e7320636861696e732e444d617844656275674275666665724c656e10100000200004c420546865206d6178696d756d206c656e677468206f66207468652064656275672062756666657220696e2062797465732e01450b2e44506f6c796d657368436f6e7472616374730124436f6e747261637473045043616c6c52756e74696d6557686974656c697374010104066d082901040004f42057686974656c697374206f662065787472696e7369637320616c6c6f77656420746f2062652063616c6c65642066726f6d20636f6e7472616374732e016108018d040001490b2f20507265696d6167650120507265696d6167650824537461747573466f72000104062c4d0b0400049020546865207265717565737420737461747573206f66206120676976656e20686173682e2c507265696d616765466f7200010406550b590b04000001710801910400015d0b300c4e6674010c4e46541c304e756d6265724f664e4654730101080206ad0928200000000000000000049c2054686520746f74616c206e756d626572206f66204e46547320706572206964656e746974792e40436f6c6c656374696f6e5469636b657201010402a8990420000000000000000004c02054686520636f6c6c656374696f6e20696420636f72726573706f6e64696e6720746f2065616368207469636b65722e28436f6c6c656374696f6e010104029904610b50000000000000000000000000000000000000000004c820416c6c20636f6c6c656374696f6e2064657461696c7320666f72206120676976656e20636f6c6c656374696f6e2069642e38436f6c6c656374696f6e4b657973010104029904650b040004d020416c6c206d616e6461746f7279206d65746164617461206b65797320666f72206120676976656e20636f6c6c656374696f6e2e344d6574616461746156616c75650101080202690b4902040004450120546865206d657461646174612076616c7565206f6620616e206e667420676976656e2069747320636f6c6c656374696f6e2069642c20746f6b656e20696420616e64206d65746164617461206b65792e404e657874436f6c6c656374696f6e49640100990420000000000000000004b420546865206e65787420617661696c61626c6520696420666f7220616e204e465420636f6c6c656374696f6e2e244e6578744e46544964010104029904bd0320000000000000000004d820546865206e65787420617661696c61626c6520696420666f7220616e204e46542077697468696e206120636f6c6c656374696f6e2e01750801950408644d61784e756d6265724f66436f6c6c656374696f6e4b6579730804ff00504d61784e756d6265724f664e465473436f756e7410100a0000000001710b3124546573745574696c730124546573745574696c7300018d08019d040001750b32790b042040436865636b5370656356657273696f6e810b1038436865636b547856657273696f6e850b1030436865636b47656e65736973890b2c38436865636b4d6f7274616c6974798d0b2c28436865636b4e6f6e6365950b45012c436865636b576569676874990b4501604368617267655472616e73616374696f6e5061796d656e74a10b45014453746f726543616c6c4d65746164617461a50b4501a90b","id":"1"} \ No newline at end of file +{"jsonrpc":"2.0","result":"0x6d6574610ed50b000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f0814496e64657801102c4163636f756e74446174610114001401146e6f6e6365100114496e646578000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500141064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365732c4163636f756e744461746100001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500012c6d6973635f66726f7a656e18011c42616c616e63650001286665655f66726f7a656e18011c42616c616e636500001800000507001c0c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540120000c01186e6f726d616c2001045400012c6f7065726174696f6e616c200104540001246d616e6461746f7279200104540000200c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d6524010c75363400012870726f6f665f73697a6524010c75363400002400000628002800000506002c083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d000030000002080034102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677338013c5665633c4469676573744974656d3e0000380000023c003c102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e00060024436f6e73656e7375730800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000400105365616c0800400144436f6e73656e737573456e67696e654964000030011c5665633c75383e000500144f74686572040030011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000400000030400000008004400000248004808306672616d655f73797374656d2c4576656e745265636f7264080445014c0454012c000c01147068617365ad04011450686173650001146576656e744c010445000118746f70696373b10401185665633c543e00004c0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d653052756e74696d654576656e740001ac1853797374656d04005001706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c496e6469636573040074017870616c6c65745f696e64696365733a3a4576656e743c52756e74696d653e0003002042616c616e636573040078017c70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d653e000500485472616e73616374696f6e5061796d656e7404009001a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e000600204964656e74697479040094017c70616c6c65745f6964656e746974793a3a4576656e743c52756e74696d653e0007004c4364645365727669636550726f76696465727304002d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365323e00080044506f6c796d657368436f6d6d69747465650400390101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e0009004c436f6d6d69747465654d656d6265727368697004004d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365313e000a0048546563686e6963616c436f6d6d69747465650400550101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004005d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365333e000c004055706772616465436f6d6d69747465650400650101f470616c6c65745f636f6d6d69747465653a3a4576656e743c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d006855706772616465436f6d6d69747465654d656d6265727368697004006d0101d470616c6c65745f67726f75703a3a4576656e743c52756e74696d652c2070616c6c65745f67726f75703a3a496e7374616e6365343e000e00204d756c746953696704007501017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e000f001842726964676504008101017470616c6c65745f6272696467653a3a4576656e743c52756e74696d653e0010001c5374616b696e6704009501017870616c6c65745f7374616b696e673a3a4576656e743c52756e74696d653e001100204f6666656e6365730400a501015870616c6c65745f6f6666656e6365733a3a4576656e740012001c53657373696f6e0400ad01015470616c6c65745f73657373696f6e3a3a4576656e740013001c4772616e6470610400b101015470616c6c65745f6772616e6470613a3a4576656e7400150020496d4f6e6c696e650400c501018070616c6c65745f696d5f6f6e6c696e653a3a4576656e743c52756e74696d653e001700105375646f0400e901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e0019001441737365740400ed01017070616c6c65745f61737365743a3a4576656e743c52756e74696d653e001a004c4361706974616c446973747269627574696f6e04009502018870616c6c65745f6361706974616c5f646973747269627574696f6e3a3a4576656e74001b0028436865636b706f696e740400ad02016070616c6c65745f636865636b706f696e743a3a4576656e74001c0044436f6d706c69616e63654d616e616765720400c502018070616c6c65745f636f6d706c69616e63655f6d616e616765723a3a4576656e74001d003c436f72706f72617465416374696f6e0400f902017c70616c6c65745f636f72706f726174655f616374696f6e733a3a4576656e74001e003c436f72706f7261746542616c6c6f7404002d03017870616c6c65745f636f72706f726174655f62616c6c6f743a3a4576656e74001f00105069707304006503016c70616c6c65745f706970733a3a4576656e743c52756e74696d653e00210024506f7274666f6c696f0400a503015c70616c6c65745f706f7274666f6c696f3a3a4576656e740022002c50726f746f636f6c4665650400c503018c70616c6c65745f70726f746f636f6c5f6665653a3a4576656e743c52756e74696d653e002300245363686564756c65720400cd03018070616c6c65745f7363686564756c65723a3a4576656e743c52756e74696d653e00240028536574746c656d656e740400d903018470616c6c65745f736574746c656d656e743a3a4576656e743c52756e74696d653e002500285374617469737469637304000504016070616c6c65745f737461746973746963733a3a4576656e740026000c53746f04004904016870616c6c65745f73746f3a3a4576656e743c52756e74696d653e00270020547265617375727904006504017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e0028001c5574696c69747904006904017870616c6c65745f7574696c6974793a3a4576656e743c52756e74696d653e002900104261736504007904014870616c6c65745f626173653a3a4576656e74002a003845787465726e616c4167656e747304008104017470616c6c65745f65787465726e616c5f6167656e74733a3a4576656e74002b001c52656c6179657204008504017870616c6c65745f72656c617965723a3a4576656e743c52756e74696d653e002c0024436f6e74726163747304008904018070616c6c65745f636f6e7472616374733a3a4576656e743c52756e74696d653e002e0044506f6c796d657368436f6e74726163747304008d040188706f6c796d6573685f636f6e7472616374733a3a4576656e743c52756e74696d653e002f0020507265696d61676504009d04017c70616c6c65745f707265696d6167653a3a4576656e743c52756e74696d653e0030000c4e66740400a104014470616c6c65745f6e66743a3a4576656e7400310024546573745574696c730400a904018470616c6c65745f746573745f7574696c733a3a4576656e743c52756e74696d653e00320000500c306672616d655f73797374656d1870616c6c6574144576656e740404540001184045787472696e7369635375636365737304013464697370617463685f696e666f5401304469737061746368496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7260013444697370617463684572726f7200013464697370617463685f696e666f5401304469737061746368496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e744964000110686173682c011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e04704576656e7420666f72207468652053797374656d2070616c6c65742e540c346672616d655f737570706f7274206469737061746368304469737061746368496e666f00000c0118776569676874200118576569676874000114636c6173735801344469737061746368436c617373000120706179735f6665655c0110506179730000580c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f7279000200005c0c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000060082873705f72756e74696d653444697370617463684572726f72000134144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c65040064012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400680128546f6b656e4572726f720007002841726974686d6574696304006c013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007001485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c000064082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7240018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000068082873705f72756e74696d6528546f6b656e4572726f7200011c1c4e6f46756e647300000020576f756c644469650001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f72746564000600006c083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000070082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c6179657200010000740c3870616c6c65745f696e64696365731870616c6c6574144576656e7404045400010c34496e64657841737369676e656408010c77686f000130543a3a4163636f756e744964000114696e64657810013c543a3a4163636f756e74496e6465780000047441206163636f756e7420696e646578207761732061737369676e65642e28496e6465784672656564040114696e64657810013c543a3a4163636f756e74496e646578000104bc41206163636f756e7420696e64657820686173206265656e2066726565642075702028756e61737369676e6564292e2c496e64657846726f7a656e080114696e64657810013c543a3a4163636f756e74496e64657800010c77686f000130543a3a4163636f756e744964000204e841206163636f756e7420696e64657820686173206265656e2066726f7a656e20746f206974732063757272656e74206163636f756e742049442e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909781064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e636573205261774576656e7404244163636f756e7449640100011c1c456e646f7765640c007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e63650000043101416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e205c5b6469642c206163636f756e742c20667265655f62616c616e63655d205472616e7366657218007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e74496400007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000018011c42616c616e636500008401304f7074696f6e3c4d656d6f3e000104f45472616e7366657220737563636565646564202866726f6d5f6469642c2066726f6d2c20746f5f6469642c20746f2c2076616c75652c206d656d6f292e2842616c616e636553657410008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e6365000204d4412062616c616e6365207761732073657420627920726f6f7420286469642c2077686f2c20667265652c207265736572766564292e504163636f756e7442616c616e63654275726e65640c008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e63650003083d01546865206163636f756e7420616e642074686520616d6f756e74206f6620756e6c6f636b65642062616c616e6365206f662074686174206163636f756e74207468617420776173206275726e65642e8c2863616c6c65722049642c2063616c6c6572206163636f756e742c20616d6f756e742920526573657276656408000001244163636f756e744964000018011c42616c616e63650004041901536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e205c5b77686f2c2076616c75655d28556e726573657276656408000001244163636f756e744964000018011c42616c616e63650005042101536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e205c5b77686f2c2076616c75655d4852657365727665526570617472696174656410000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e636500008c011853746174757300060c4d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652ea05c5b66726f6d2c20746f2c2062616c616e63652c2064657374696e6174696f6e5f7374617475735d085c4576656e747320666f722074686973206d6f64756c652e007c04184f7074696f6e04045401800108104e6f6e6500000010536f6d650400800000010000800c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f6964284964656e746974794964000004000401385b75383b20555549445f4c454e5d00008404184f7074696f6e04045401880108104e6f6e6500000010536f6d65040088000001000088084c706f6c796d6573685f7072696d697469766573104d656d6f000004000401205b75383b2033325d00008c14346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e636553746174757300010810467265650000002052657365727665640001000090086870616c6c65745f7472616e73616374696f6e5f7061796d656e74205261774576656e74081c42616c616e63650118244163636f756e74496401000104485472616e73616374696f6e466565506169640c010c77686f0001244163636f756e74496400012861637475616c5f66656518011c42616c616e636500010c74697018011c42616c616e6365000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e085c4576656e747320666f722074686973206d6f64756c652e00941064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479205261774576656e7408244163636f756e7449640100184d6f6d656e740128015428446964437265617465640c008001284964656e74697479496400000001244163636f756e74496400009801705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00000c444964656e7469747920637265617465642e0088284449442c207072696d617279206b65792c207365636f6e64617279206b65797329485365636f6e646172794b657973416464656408008001284964656e74697479496400009801705665633c5365636f6e646172794b65793c4163636f756e7449643e3e00010c845365636f6e64617279206b65797320616464656420746f206964656e746974792e003c284449442c206e6577206b65797329505365636f6e646172794b65797352656d6f76656408008001284964656e7469747949640000f401385665633c4163636f756e7449643e00020c945365636f6e64617279206b6579732072656d6f7665642066726f6d206964656e746974792e0080284449442c20746865206b657973207468617420676f742072656d6f76656429605365636f6e646172794b65794c6566744964656e7469747908008001284964656e74697479496400000001244163636f756e74496400030c9041207365636f6e64617279206b6579206c656674207468656972206964656e746974792e0050284449442c207365636f6e64617279206b657929785365636f6e646172794b65795065726d697373696f6e735570646174656410008001284964656e74697479496400000001244163636f756e7449640000a0012c5065726d697373696f6e730000a0012c5065726d697373696f6e7300040c885365636f6e64617279206b6579207065726d697373696f6e7320757064617465642e000d01284449442c2075706461746564207365636f6e64617279206b65792c2070726576696f7573207065726d697373696f6e732c206e6577207065726d697373696f6e7329445072696d6172794b6579557064617465640c008001284964656e74697479496400000001244163636f756e74496400000001244163636f756e74496400050c805072696d617279206b6579206f66206964656e74697479206368616e6765642e00a4284449442c206f6c64207072696d617279206b6579206163636f756e742049442c206e65772049442928436c61696d416464656408008001284964656e7469747949640000f801344964656e74697479436c61696d00060c60436c61696d20616464656420746f206964656e746974792e0030284449442c20636c61696d2930436c61696d5265766f6b656408008001284964656e7469747949640000f801344964656e74697479436c61696d00070c70436c61696d207265766f6b65642066726f6d206964656e746974792e0030284449442c20636c61696d294841737365744469645265676973746572656408008001284964656e7469747949640000a801185469636b657200080c7041737365742773206964656e7469747920726567697374657265642e004c284173736574204449442c207469636b65722948417574686f72697a6174696f6e416464656418008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c75363400001d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e0000fc01384f7074696f6e3c4d6f6d656e743e00090c604e657720617574686f72697a6174696f6e2061646465642e00310128617574686f72697365645f62792c207461726765745f6469642c207461726765745f6b65792c20617574685f69642c20617574686f72697a6174696f6e5f646174612c206578706972792950417574686f72697a6174696f6e5265766f6b65640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000a0ca0417574686f72697a6174696f6e207265766f6b65642062792074686520617574686f72697a65722e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e52656a65637465640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000b0cd8417574686f72697a6174696f6e2072656a65637465642062792074686520757365722077686f2077617320617574686f72697a65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642954417574686f72697a6174696f6e436f6e73756d65640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000c0c5c417574686f72697a6174696f6e20636f6e73756d65642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642978417574686f72697a6174696f6e52657472794c696d6974526561636865640c007c01484f7074696f6e3c4964656e7469747949643e0000190101444f7074696f6e3c4163636f756e7449643e000028010c753634000d0cb0416363657074696e6720417574686f72697a6174696f6e207265747279206c696d697420726561636865642e00b828617574686f72697a65645f6964656e746974792c20617574686f72697a65645f6b65792c20617574685f69642988436464526571756972656d656e74466f725072696d6172794b657955706461746564040029010110626f6f6c000e0cc443444420726571756972656d656e7420666f72207570646174696e67207072696d617279206b6579206368616e6765642e0044286e65775f726571756972656d656e742950436464436c61696d73496e76616c69646174656408008001284964656e74697479496400002801184d6f6d656e74000f10410143444420636c61696d732067656e65726174656420627920604964656e74697479496460202861204344442050726f7669646572292068617665206265656e20696e76616c6964617465642066726f6d24604d6f6d656e74602e0094284344442070726f7669646572204449442c2064697361626c652066726f6d2064617465294c5365636f6e646172794b65797346726f7a656e04008001284964656e74697479496400100cc4416c6c205365636f6e64617279206b657973206f6620746865206964656e74697479204944206172652066726f7a656e2e00142844494429545365636f6e646172794b657973556e66726f7a656e04008001284964656e74697479496400110ccc416c6c205365636f6e64617279206b657973206f6620746865206964656e746974792049442061726520756e66726f7a656e2e0014284449442950437573746f6d436c61696d5479706541646465640c008001284964656e746974794964000011010144437573746f6d436c61696d547970654964000030011c5665633c75383e00120c8041206e657720437573746f6d436c61696d54797065207761732061646465642e003c284449442c2069642c2054797065293c4368696c64446964437265617465640c008001284964656e74697479496400008001284964656e74697479496400000001244163636f756e74496400130c5c4368696c64206964656e7469747920637265617465642e009028506172656e74204449442c204368696c64204449442c207072696d617279206b657929404368696c64446964556e6c696e6b65640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e74697479496400140cb44368696c64206964656e7469747920756e6c696e6b65642066726f6d20706172656e74206964656e746974792e008c2843616c6c6572204449442c20506172656e74204449442c204368696c642044494429085c4576656e747320666f722074686973206d6f64756c652e00980000029c009c0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579305365636f6e646172794b657904244163636f756e74496401000008010c6b65790001244163636f756e74496400012c7065726d697373696f6e73a0012c5065726d697373696f6e730000a00c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65792c5065726d697373696f6e7300000c01146173736574a4014041737365745065726d697373696f6e7300012465787472696e736963b8015045787472696e7369635065726d697373696f6e73000124706f7274666f6c696fdc0150506f7274666f6c696f5065726d697373696f6e730000a40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101a8010c1457686f6c650000001454686573650400b0012c42547265655365743c413e000100184578636570740400b0012c42547265655365743c413e00020000a80c4c706f6c796d6573685f7072696d697469766573187469636b6572185469636b657200000400ac01405b75383b205449434b45525f4c454e5d0000ac0000030c0000000800b00420425472656553657404045401a8000400b4000000b4000002a800b80c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101bc010c1457686f6c650000001454686573650400d4012c42547265655365743c413e000100184578636570740400d4012c42547265655365743c413e00020000bc0c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b65794450616c6c65745065726d697373696f6e73000008012c70616c6c65745f6e616d65c0012850616c6c65744e616d65000148646973706174636861626c655f6e616d6573c40144446973706174636861626c654e616d65730000c0084c706f6c796d6573685f7072696d6974697665732850616c6c65744e616d650000040030011c5665633c75383e0000c40c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101c8010c1457686f6c650000001454686573650400cc012c42547265655365743c413e000100184578636570740400cc012c42547265655365743c413e00020000c8084c706f6c796d6573685f7072696d69746976657340446973706174636861626c654e616d650000040030011c5665633c75383e0000cc0420425472656553657404045401c8000400d0000000d0000002c800d40420425472656553657404045401bc000400d8000000d8000002bc00dc0c4c706f6c796d6573685f7072696d69746976657318737562736574445375627365745265737472696374696f6e04044101e0010c1457686f6c650000001454686573650400ec012c42547265655365743c413e000100184578636570740400ec012c42547265655365743c413e00020000e00c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69642c506f7274666f6c696f4964000008010c6469648001284964656e7469747949640001106b696e64e40134506f7274666f6c696f4b696e640000e40c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4b696e640001081c44656661756c7400000010557365720400e8013c506f7274666f6c696f4e756d62657200010000e80c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f69643c506f7274666f6c696f4e756d6265720000040028010c7536340000ec0420425472656553657404045401e0000400f0000000f0000002e000f40000020000f80c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d344964656e74697479436c61696d0000140130636c61696d5f6973737565728001284964656e74697479496400013469737375616e63655f646174652801184d6f6d656e740001406c6173745f7570646174655f646174652801184d6f6d656e74000118657870697279fc01384f7074696f6e3c4d6f6d656e743e000114636c61696d01010114436c61696d0000fc04184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000001010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d14436c61696d000128284163637265646974656404000501011453636f706500000024416666696c6961746504000501011453636f7065000100244275794c6f636b757004000501011453636f70650002002853656c6c4c6f636b757004000501011453636f706500030050437573746f6d657244756544696c6967656e63650400090101144364644964000400404b6e6f77596f7572437573746f6d657204000501011453636f7065000500304a7572697364696374696f6e08000d01012c436f756e747279436f646500000501011453636f7065000600204578656d7074656404000501011453636f70650007001c426c6f636b656404000501011453636f706500080018437573746f6d080011010144437573746f6d436c61696d5479706549640000150101344f7074696f6e3c53636f70653e0009000005010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d1453636f706500010c204964656e7469747904008001284964656e746974794964000000185469636b65720400a801185469636b657200010018437573746f6d040030011c5665633c75383e0002000009010c4c706f6c796d6573685f7072696d697469766573186364645f6964144364644964000004000401205b75383b2033325d00000d010c4c706f6c796d6573685f7072696d697469766573306a7572697364696374696f6e2c436f756e747279436f64650001e90308414600000008415800010008414c00020008445a00030008415300040008414400050008414f000600084149000700084151000800084147000900084152000a0008414d000b00084157000c00084155000d00084154000e0008415a000f0008425300100008424800110008424400120008424200130008425900140008424500150008425a00160008424a00170008424d00180008425400190008424f001a00084241001b00084257001c00084256001d00084252001e00085647001f0008494f00200008424e002100084247002200084246002300084249002400084b4800250008434d002600084341002700084356002800084b59002900084346002a00085444002b0008434c002c0008434e002d0008484b002e00084d4f002f0008435800300008434300310008434f003200084b4d00330008434700340008434400350008434b003600084352003700084349003800084852003900084355003a00084359003b0008435a003c0008444b003d0008444a003e0008444d003f0008444f00400008454300410008454700420008535600430008475100440008455200450008454500460008455400470008464b00480008464f00490008464a004a00084649004b00084652004c00084746004d00085046004e00085446004f0008474100500008474d00510008474500520008444500530008474800540008474900550008475200560008474c005700084744005800084750005900084755005a00084754005b00084747005c0008474e005d00084757005e00084759005f0008485400600008484d00610008564100620008484e00630008485500640008495300650008494e006600084944006700084952006800084951006900084945006a0008494d006b0008494c006c00084954006d00084a4d006e00084a50006f00084a45007000084a4f007100084b5a007200084b45007300084b49007400084b50007500084b52007600084b57007700084b47007800084c41007900084c56007a00084c42007b00084c53007c00084c52007d00084c59007e00084c49007f00084c54008000084c55008100084d4b008200084d47008300084d57008400084d59008500084d56008600084d4c008700084d54008800084d48008900084d51008a00084d52008b00084d55008c00085954008d00084d58008e0008464d008f00084d44009000084d43009100084d4e009200084d45009300084d53009400084d41009500084d5a009600084d4d009700084e41009800084e52009900084e50009a00084e4c009b0008414e009c00084e43009d00084e5a009e00084e49009f00084e4500a000084e4700a100084e5500a200084e4600a300084d5000a400084e4f00a500084f4d00a60008504b00a70008505700a80008505300a90008504100aa0008504700ab0008505900ac0008504500ad0008504800ae0008504e00af0008504c00b00008505400b10008505200b20008514100b30008524500b40008524f00b50008525500b60008525700b70008424c00b80008534800b900084b4e00ba00084c4300bb00084d4600bc0008504d00bd0008564300be0008575300bf0008534d00c00008535400c10008534100c20008534e00c30008525300c40008534300c50008534c00c60008534700c70008534b00c80008534900c90008534200ca0008534f00cb00085a4100cc0008475300cd0008535300ce0008455300cf00084c4b00d00008534400d10008535200d20008534a00d30008535a00d40008534500d50008434800d60008535900d70008545700d80008544a00d90008545a00da0008544800db0008544c00dc0008544700dd0008544b00de0008544f00df0008545400e00008544e00e10008545200e20008544d00e30008544300e40008545600e50008554700e60008554100e70008414500e80008474200e90008555300ea0008554d00eb0008555900ec0008555a00ed0008565500ee0008564500ef0008564e00f00008564900f10008574600f20008454800f30008594500f400085a4d00f500085a5700f60008425100f70008435700f80008535800f9000011010c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d44437573746f6d436c61696d5479706549640000040010010c7533320000150104184f7074696f6e0404540105010108104e6f6e6500000010536f6d65040005010000010000190104184f7074696f6e04045401000108104e6f6e6500000010536f6d6504000000000100001d010c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e44417574686f72697a6174696f6e4461746104244163636f756e74496401000128604174746573745072696d6172794b6579526f746174696f6e04008001284964656e74697479496400000040526f746174655072696d6172794b6579000100385472616e736665725469636b65720400a801185469636b6572000200444164644d756c74695369675369676e657204000001244163636f756e744964000300585472616e7366657241737365744f776e6572736869700400a801185469636b6572000400304a6f696e4964656e746974790400a0012c5065726d697373696f6e7300050040506f7274666f6c696f437573746f64790400e0012c506f7274666f6c696f49640006002c4265636f6d654167656e740800a801185469636b65720000210101284167656e7447726f75700007004c41646452656c61796572506179696e674b65790c000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e63650008006c526f746174655072696d6172794b6579546f5365636f6e646172790400a0012c5065726d697373696f6e730009000021010c4c706f6c796d6573685f7072696d697469766573146167656e74284167656e7447726f75700001141046756c6c00000018437573746f6d04002501011041474964000100284578636570744d65746100020034506f6c796d657368563143414100030034506f6c796d65736856315049410004000025010c4c706f6c796d6573685f7072696d697469766573146167656e7410414749640000040010010c7533320000290100000500002d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449013101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e003101083070616c6c65745f67726f757024496e7374616e63653200000000350100000280003901084070616c6c65745f636f6d6d6974746565205261774576656e740c1048617368012c2c426c6f636b4e756d62657201100449013d0101282050726f706f7365640c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314008001284964656e746974794964000010013450726f706f73616c496e64657800002c01104861736800003501013c5665633c4964656e7469747949643e00003501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c008001284964656e74697479496400002c0110486173680000410101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c008001284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e003d01084070616c6c65745f636f6d6d697474656524496e7374616e6365310000000041010418526573756c74080454014501044501600108084f6b04004501000000000c45727204006000000100004501000004000049010864706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573284d61796265426c6f636b042c426c6f636b4e756d6265720110010810536f6d65040010012c426c6f636b4e756d626572000000104e6f6e65000100004d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449015101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e005101083070616c6c65745f67726f757024496e7374616e636531000000005501084070616c6c65745f636f6d6d6974746565205261774576656e740c1048617368012c2c426c6f636b4e756d6265720110044901590101282050726f706f7365640c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314008001284964656e746974794964000010013450726f706f73616c496e64657800002c01104861736800003501013c5665633c4964656e7469747949643e00003501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c008001284964656e74697479496400002c0110486173680000410101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c008001284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e005901084070616c6c65745f636f6d6d697474656524496e7374616e636533000000005d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449016101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e006101083070616c6c65745f67726f757024496e7374616e636533000000006501084070616c6c65745f636f6d6d6974746565205261774576656e740c1048617368012c2c426c6f636b4e756d6265720110044901690101282050726f706f7365640c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000008890141206d6f74696f6e2028676976656e20686173682920686173206265656e2070726f706f7365642028627920676976656e206163636f756e742920776974682061207468726573686f6c642028676976656e20604d656d626572436f756e7460292ed8506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20696e6465782c2070726f706f73616c20686173682e14566f7465641c008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400010c050141206d6f74696f6e2028676976656e20686173682920686173206265656e20766f746564206f6e20627920676976656e206163636f756e742c206c656176696e674901612074616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e950163616c6c6572204449442c2050726f706f73616c20696e6465782c2050726f706f73616c20686173682c2063757272656e7420766f74652c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e34566f746552657472616374656410008001284964656e746974794964000010013450726f706f73616c496e64657800002c011048617368000029010110626f6f6c000208cc4120766f7465206f6e2061206d6f74696f6e2028676976656e20686173682920686173206265656e207265747261637465642e050163616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c20766f7465207468617420776173207265747261637465642846696e616c566f74657314008001284964656e746974794964000010013450726f706f73616c496e64657800002c01104861736800003501013c5665633c4964656e7469747949643e00003501013c5665633c4964656e7469747949643e0003089046696e616c20766f746573206f6e2061206d6f74696f6e2028676976656e206861736829f863616c6c6572204449442c2050726f706f73616c496e6465782c2050726f706f73616c20686173682c2079657320766f746572732c206e6f20766f74657220417070726f76656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400040c090141206d6f74696f6e2077617320617070726f76656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2052656a656374656414008001284964656e74697479496400002c011048617368000010012c4d656d626572436f756e74000010012c4d656d626572436f756e74000010012c4d656d626572436f756e7400050c090141206d6f74696f6e207761732072656a656374656420627920746865207265717569726564207468726573686f6c6420776974682074686520666f6c6c6f77696e67410174616c6c79202879657320766f7465732c206e6f20766f74657320616e6420746f74616c20736561747320676976656e20726573706563746976656c7920617320604d656d626572436f756e7460292e4d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c2079617920766f746520636f756e742c206e617920766f746520636f756e742c20746f74616c2073656174732e2045786563757465640c008001284964656e74697479496400002c0110486173680000410101384469737061746368526573756c74000608390141206d6f74696f6e207761732065786563757465643b20604469737061746368526573756c746020697320604f6b28282929602069662072657475726e656420776974686f7574206572726f722e0d01506172616d65746572733a2063616c6c6572204449442c2070726f706f73616c20686173682c20726573756c74206f662070726f706f73616c2064697370617463682e6452656c65617365436f6f7264696e61746f725570646174656408008001284964656e74697479496400007c01484f7074696f6e3c4964656e7469747949643e0007089452656c6561736520636f6f7264696e61746f7220686173206265656e20757064617465642edc506172616d65746572733a2063616c6c6572204449442c20444944206f66207468652072656c6561736520636f6f7264696e61746f722e4c4578706972657341667465725570646174656408008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0008089850726f706f73616c206578706972792074696d6520686173206265656e20757064617465642ec4506172616d65746572733a2063616c6c6572204449442c206e6577206578706972792074696d652028696620616e79292e50566f74655468726573686f6c64557064617465640c008001284964656e746974794964000010010c753332000010010c75333200090884566f74696e67207468726573686f6c6420686173206265656e2075706461746564b8506172616d65746572733a2063616c6c6572204449442c206e756d657261746f722c2064656e6f6d696e61746f72085c4576656e747320666f722074686973206d6f64756c652e006901084070616c6c65745f636f6d6d697474656524496e7374616e636534000000006d011064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f7570205261774576656e740c244163636f756e74496401003052756e74696d654576656e74014c0449017101011c2c4d656d626572416464656408008001284964656e74697479496400008001284964656e746974794964000008e054686520676976656e206d656d626572207761732061646465643b2073656520746865207472616e73616374696f6e20666f722077686f2e6c63616c6c6572204449442c204e6577206d656d626572204449442e344d656d62657252656d6f76656408008001284964656e74697479496400008001284964656e746974794964000108e854686520676976656e206d656d626572207761732072656d6f7665643b2073656520746865207472616e73616374696f6e20666f722077686f2ea063616c6c6572204449442c206d656d626572204449442074686174206765742072656d6f7665642e344d656d6265725265766f6b656408008001284964656e74697479496400008001284964656e746974794964000208e454686520676976656e206d656d62657220686173206265656e207265766f6b65642061742073706563696669632074696d652d7374616d702ea063616c6c6572204449442c206d656d62657220444944207468617420676574207265766f6b65642e384d656d62657273537761707065640c008001284964656e74697479496400008001284964656e74697479496400008001284964656e746974794964000308d854776f206d656d62657273207765726520737761707065643b2073656520746865207472616e73616374696f6e20666f722077686f2e9463616c6c6572204449442c2052656d6f766564204449442c204e657720616464204449442e304d656d62657273526573657408008001284964656e74697479496400003501013c5665633c4964656e7469747949643e0004081501546865206d656d62657273686970207761732072657365743b2073656520746865207472616e73616374696f6e20666f722077686f20746865206e6577207365742069732e8063616c6c6572204449442c204c697374206f66206e6577206d656d626572732e484163746976654c696d69744368616e6765640c008001284964656e746974794964000010012c4d656d626572436f756e74000010012c4d656d626572436f756e740005042d01546865206c696d6974206f6620686f77206d616e7920616374697665206d656d626572732074686572652063616e20626520636f6e63757272656e746c7920776173206368616e6765642e1444756d6d790006046c5068616e746f6d206d656d6265722c206e6576657220757365642e085c4576656e747320666f722074686973206d6f64756c652e007101083070616c6c65745f67726f757024496e7374616e6365340000000075011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206d756c7469736967205261774576656e7404244163636f756e744964010001303c4d756c74695369674372656174656414008001284964656e74697479496400000001244163636f756e74496400000001244163636f756e7449640000790101645665633c5369676e61746f72793c4163636f756e7449643e3e000028010c753634000008ac4576656e7420656d6974746564206166746572206372656174696f6e206f662061206d756c74697369672e6501417267756d656e74733a2063616c6c6572204449442c206d756c746973696720616464726573732c207369676e657273202870656e64696e6720617070726f76616c292c207369676e6174757265732072657175697265642e3450726f706f73616c41646465640c008001284964656e74697479496400000001244163636f756e744964000028010c753634000108984576656e7420656d697474656420616674657220616464696e6720612070726f706f73616c2eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e4050726f706f73616c457865637574656410008001284964656e74697479496400000001244163636f756e744964000028010c753634000029010110626f6f6c000208a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732065786563757465642ed4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442c20726573756c742e4c4d756c74695369675369676e657241646465640c008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000308a04576656e7420656d6974746564207768656e2061207369676e61746f72792069732061646465642eb8417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206164646564207369676e65722e604d756c74695369675369676e6572417574686f72697a65640c008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e00040809014576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f727920697320617574686f72697a656420746f2062652061646465642ecc417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722e544d756c74695369675369676e657252656d6f7665640c008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000508cc4576656e7420656d6974746564207768656e2061206d756c7469736967207369676e61746f72792069732072656d6f7665642ec0417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2072656d6f766564207369676e65722e844d756c74695369675369676e61747572657352657175697265644368616e6765640c008001284964656e74697479496400000001244163636f756e744964000028010c75363400060801014576656e7420656d6974746564207768656e20746865206e756d626572206f66207265717569726564207369676e617475726573206973206368616e6765642ee4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c206e6577207265717569726564207369676e6174757265732e4050726f706f73616c417070726f76656410008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000028010c753634000708b44576656e7420656d6974746564207768656e207468652070726f706f73616c2067657420617070726f7665642e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e5450726f706f73616c52656a656374696f6e566f746510008001284964656e74697479496400000001244163636f756e74496400007d0101505369676e61746f72793c4163636f756e7449643e000028010c7536340008080d014576656e7420656d6974746564207768656e206120766f7465206973206361737420696e206661766f72206f662072656a656374696e6720612070726f706f73616c2e0101417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c20617574686f72697a6564207369676e65722c2070726f706f73616c2069642e4050726f706f73616c52656a65637465640c008001284964656e74697479496400000001244163636f756e744964000028010c753634000908a84576656e7420656d6974746564207768656e20612070726f706f73616c2069732072656a65637465642eb4417267756d656e74733a2063616c6c6572204449442c206d756c74697369672c2070726f706f73616c2049442e5c50726f706f73616c457865637574696f6e4661696c6564040060013444697370617463684572726f72000a04e44576656e7420656d6974746564207768656e207468657265277320616e206572726f7220696e2070726f706f73616c20657865637574696f6e405363686564756c696e674661696c6564040060013444697370617463684572726f72000b04745363686564756c696e67206f662070726f706f73616c206661696c732e085c4576656e747320666f722074686973206d6f64756c652e0079010000027d01007d010c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579245369676e61746f727904244163636f756e74496401000108204964656e7469747904008001284964656e7469747949640000001c4163636f756e7404000001244163636f756e744964000100008101083470616c6c65745f627269646765205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110014444436f6e74726f6c6c65724368616e67656408008001284964656e74697479496400000001244163636f756e74496400000490436f6e6669726d6174696f6e206f662061207369676e657220736574206368616e67652e3041646d696e4368616e67656408008001284964656e74697479496400000001244163636f756e74496400010474436f6e6669726d6174696f6e206f662041646d696e206368616e67652e3c54696d656c6f636b4368616e67656408008001284964656e746974794964000010012c426c6f636b4e756d626572000204a0436f6e6669726d6174696f6e206f662064656661756c742074696d656c6f636b206368616e67652e1c4272696467656408008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e0003041d01436f6e6669726d6174696f6e206f6620504f4c59582075706772616465206f6e20506f6c796d6573682066726f6d20504f4c5920746f6b656e73206f6e20457468657265756d2e1846726f7a656e04008001284964656e746974794964000404904e6f74696669636174696f6e206f6620667265657a696e6720746865206272696467652e20556e66726f7a656e04008001284964656e746974794964000504984e6f74696669636174696f6e206f6620756e667265657a696e6720746865206272696467652e2046726f7a656e547808008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e0006049c4e6f74696669636174696f6e206f6620667265657a696e672061207472616e73616374696f6e2e28556e66726f7a656e547808008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000704a44e6f74696669636174696f6e206f6620756e667265657a696e672061207472616e73616374696f6e2e3c4578656d70746564557064617465640c008001284964656e74697479496400008001284964656e746974794964000029010110626f6f6c000804c44578656d7074696f6e20737461747573206f6620616e206964656e7469747920686173206265656e20757064617465642e484272696467654c696d6974557064617465640c008001284964656e746974794964000018011c42616c616e6365000010012c426c6f636b4e756d62657200090478427269646765206c696d697420686173206265656e20757064617465642e2854787348616e646c65640400890101985665633c284163636f756e7449642c207533322c2048616e646c65645478537461747573293e000a086101416e206576656e7420656d6974746564206166746572206120766563746f72206f66207472616e73616374696f6e732069732068616e646c65642e2054686520706172616d65746572206973206120766563746f72206f6651017475706c6573206f6620726563697069656e74206163636f756e742c20697473206e6f6e63652c20616e642074686520737461747573206f66207468652070726f636573736564207472616e73616374696f6e2e4442726964676554785363686564756c65640c008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000010012c426c6f636b4e756d626572000b0450427269646765205478205363686564756c65642e5842726964676554785363686564756c654661696c65640c008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000030011c5665633c75383e000c04744661696c656420746f207363686564756c65204272696467652054782e40467265657a6541646d696e416464656408008001284964656e74697479496400000001244163636f756e744964000d048841206e657720667265657a652061646d696e20686173206265656e2061646465642e48467265657a6541646d696e52656d6f76656408008001284964656e74697479496400000001244163636f756e744964000e04804120667265657a652061646d696e20686173206265656e2072656d6f7665642e24547852656d6f76656408008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000f049c4e6f74696669636174696f6e206f662072656d6f76696e672061207472616e73616374696f6e2e3842726964676554784661696c65640c008001284964656e74697479496400008501014c42726964676554783c4163636f756e7449643e000060013444697370617463684572726f72001004e8427269646765205478206661696c65642e2020526563697069656e74206d697373696e6720434444206f72206c696d697420726561636865642e085c4576656e747320666f722074686973206d6f64756c652e008501083470616c6c65745f627269646765204272696467655478041c4163636f756e740100001001146e6f6e636510010c753332000124726563697069656e7400011c4163636f756e74000118616d6f756e7418011c42616c616e636500011c74785f686173682c011048323536000089010000028d01008d010000040c00109101009101083470616c6c65745f6272696467653c48616e646c656454785374617475730001081c53756363657373000000144572726f72040030011c5665633c75383e000100009501103870616c6c65745f7374616b696e671870616c6c65741870616c6c6574144576656e74040454000144244572615061796f75740c00100120457261496e646578000018013042616c616e63654f663c543e000018013042616c616e63654f663c543e000008550154686520657261207061796f757420686173206265656e207365743b207468652066697273742062616c616e6365206973207468652076616c696461746f722d7061796f75743b20746865207365636f6e64206973c07468652072656d61696e6465722066726f6d20746865206d6178696d756d20616d6f756e74206f66207265776172642e185265776172640c008001284964656e7469747949640000000130543a3a4163636f756e744964000018013042616c616e63654f663c543e000104bc546865206e6f6d696e61746f7220686173206265656e207265776172646564206279207468697320616d6f756e742e14536c6173680800000130543a3a4163636f756e744964000018013042616c616e63654f663c543e0002041d0141207374616b6572202876616c696461746f72206f72206e6f6d696e61746f722920686173206265656e20736c61736865642062792074686520676976656e20616d6f756e742e684f6c64536c617368696e675265706f7274446973636172646564040010013053657373696f6e496e6465780003081901416e206f6c6420736c617368696e67207265706f72742066726f6d2061207072696f72206572612077617320646973636172646564206265636175736520697420636f756c64446e6f742062652070726f6365737365642e3c5374616b696e67456c656374696f6e04009901013c456c656374696f6e436f6d707574650004048441206e657720736574206f66207374616b6572732077617320656c65637465642e38536f6c7574696f6e53746f72656404009901013c456c656374696f6e436f6d70757465000504e441206e657720736f6c7574696f6e20666f7220746865207570636f6d696e6720656c656374696f6e20686173206265656e2073746f7265642e18426f6e6465640c008001284964656e7469747949640000000130543a3a4163636f756e744964000018013042616c616e63654f663c543e000610d0416e206163636f756e742068617320626f6e646564207468697320616d6f756e742e205c5b73746173682c20616d6f756e745c5d004d014e4f54453a2054686973206576656e74206973206f6e6c7920656d6974746564207768656e2066756e64732061726520626f6e64656420766961206120646973706174636861626c652e204e6f7461626c792c210169742077696c6c206e6f7420626520656d697474656420666f72207374616b696e672072657761726473207768656e20746865792061726520616464656420746f207374616b652e20556e626f6e6465640c008001284964656e7469747949640000000130543a3a4163636f756e744964000018013042616c616e63654f663c543e00070490416e206163636f756e742068617320756e626f6e646564207468697320616d6f756e742e244e6f6d696e617465640c008001284964656e7469747949640000000130543a3a4163636f756e7449640000f401445665633c543a3a4163636f756e7449643e0008048855736572206861732075706461746564207468656972206e6f6d696e6174696f6e732457697468647261776e0800000130543a3a4163636f756e744964000018013042616c616e63654f663c543e0009085901416e206163636f756e74206861732063616c6c6564206077697468647261775f756e626f6e6465646020616e642072656d6f76656420756e626f6e64696e67206368756e6b7320776f727468206042616c616e6365606466726f6d2074686520756e6c6f636b696e672071756575652e645065726d697373696f6e65644964656e74697479416464656408008001284964656e74697479496400008001284964656e746974794964000a08ec416e20444944206861732069737375656420612063616e6469646163792e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e6c5065726d697373696f6e65644964656e7469747952656d6f76656408008001284964656e74697479496400008001284964656e746974794964000b08e854686520676976656e206d656d626572207761732072656d6f7665642e2053656520746865207472616e73616374696f6e20666f722077686f2e8c4743206964656e74697479202c2056616c696461746f722773206964656e746974792e54496e76616c6964617465644e6f6d696e61746f72730c008001284964656e7469747949640000000130543a3a4163636f756e7449640000f401445665633c543a3a4163636f756e7449643e000c081d0152656d6f766520746865206e6f6d696e61746f72732066726f6d207468652076616c6964206e6f6d696e61746f7273207768656e2074686572652043444420657870697265642e9443616c6c65722c205374617368206163636f756e744964206f66206e6f6d696e61746f727350436f6d6d697373696f6e436170557064617465640c008001284964656e74697479496400009d01011c50657262696c6c00009d01011c50657262696c6c000d08805768656e20636f6d6d697373696f6e206361702067657420757064617465642e58286f6c642076616c75652c206e65772076616c7565296c4d696e696d756d426f6e645468726573686f6c645570646174656408007c01484f7074696f6e3c4964656e7469747949643e000018013042616c616e63654f663c543e000e04ac4d696e20626f6e64207468726573686f6c6420776173207570646174656420286e65772076616c7565292e885265776172645061796d656e745363686564756c696e67496e7465727275707465640c00000130543a3a4163636f756e7449640000100120457261496e646578000060013444697370617463684572726f72000f04cc5768656e207363686564756c696e67206f6620726577617264207061796d656e74732067657420696e7465727275707465642e64536c617368696e67416c6c6f776564466f724368616e6765640400a1010138536c617368696e675377697463680010049055706461746520666f722077686f6d2062616c616e63652067657420736c61736865642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a09090999010c3870616c6c65745f7374616b696e671474797065733c456c656374696f6e436f6d7075746500010c1c4f6e436861696e000000185369676e656400010020556e7369676e6564000200009d010c3473705f61726974686d65746963287065725f7468696e67731c50657262696c6c0000040010010c7533320000a1010c3870616c6c65745f7374616b696e6714747970657338536c617368696e6753776974636800010c2456616c696461746f720000005456616c696461746f72416e644e6f6d696e61746f72000100104e6f6e6500020000a5010c3c70616c6c65745f6f6666656e6365731870616c6c6574144576656e740001041c4f6666656e63650801106b696e64a90101104b696e6400012074696d65736c6f743001384f706171756554696d65536c6f7400000c5101546865726520697320616e206f6666656e6365207265706f72746564206f662074686520676976656e20606b696e64602068617070656e656420617420746865206073657373696f6e5f696e6465786020616e643501286b696e642d7370656369666963292074696d6520736c6f742e2054686973206576656e74206973206e6f74206465706f736974656420666f72206475706c696361746520736c61736865732e4c5c5b6b696e642c2074696d65736c6f745c5d2e04304576656e747320747970652ea901000003100000000800ad010c3870616c6c65745f73657373696f6e1870616c6c6574144576656e74000104284e657753657373696f6e04013473657373696f6e5f696e64657810013053657373696f6e496e64657800000839014e65772073657373696f6e206861732068617070656e65642e204e6f746520746861742074686520617267756d656e74206973207468652073657373696f6e20696e6465782c206e6f74207468659c626c6f636b206e756d626572206173207468652074797065206d6967687420737567676573742e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909b1010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f736574b5010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909b501000002b90100b90100000408bd012800bd010c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c696300000400c101013c656432353531393a3a5075626c69630000c1010c1c73705f636f72651c65643235353139185075626c6963000004000401205b75383b2033325d0000c5010c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144576656e7404045400010c444865617274626561745265636569766564040130617574686f726974795f6964c9010138543a3a417574686f726974794964000004c041206e657720686561727462656174207761732072656365697665642066726f6d2060417574686f726974794964602e1c416c6c476f6f64000104d041742074686520656e64206f66207468652073657373696f6e2c206e6f206f6666656e63652077617320636f6d6d69747465642e2c536f6d654f66666c696e6504011c6f66666c696e65d101016c5665633c4964656e74696669636174696f6e5475706c653c543e3e000204290141742074686520656e64206f66207468652073657373696f6e2c206174206c65617374206f6e652076616c696461746f722077617320666f756e6420746f206265206f66666c696e652e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909c901104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139185075626c696300000400cd01013c737232353531393a3a5075626c69630000cd010c1c73705f636f72651c73723235353139185075626c6963000004000401205b75383b2033325d0000d101000002d50100d5010000040800d90100d901083870616c6c65745f7374616b696e67204578706f7375726508244163636f756e74496401001c42616c616e63650118000c0114746f74616cdd01011c42616c616e636500010c6f776edd01011c42616c616e63650001186f7468657273e10101ac5665633c496e646976696475616c4578706f737572653c4163636f756e7449642c2042616c616e63653e3e0000dd010000061800e101000002e50100e501083870616c6c65745f7374616b696e6748496e646976696475616c4578706f7375726508244163636f756e74496401001c42616c616e636501180008010c77686f0001244163636f756e74496400011476616c7565dd01011c42616c616e63650000e901082c70616c6c65745f7375646f205261774576656e7404244163636f756e7449640100010c1453756469640400410101384469737061746368526573756c740000048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d284b65794368616e6765640400190101444f7074696f6e3c4163636f756e7449643e000104fc546865205c5b7375646f65725c5d206a757374207377697463686564206964656e746974793b20746865206f6c64206b657920697320737570706c6965642e285375646f4173446f6e650400410101384469737061746368526573756c740002048841207375646f206a75737420746f6f6b20706c6163652e205c5b726573756c745c5d085c4576656e747320666f722074686973206d6f64756c652e00ed011064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473146173736574205261774576656e7408184d6f6d656e740128244163636f756e744964010001803041737365744372656174656420008001284964656e7469747949640000a801185469636b6572000029010110626f6f6c0000f101012441737365745479706500008001284964656e7469747949640000fd01012441737365744e616d650000010201505665633c41737365744964656e7469666965723e0000110201604f7074696f6e3c46756e64696e67526f756e644e616d653e000008804576656e7420666f72206372656174696f6e206f66207468652061737365742ec10163616c6c6572204449442f206f776e6572204449442c207469636b65722c2064697669736962696c6974792c20617373657420747970652c2062656e6566696369617279204449442c206173736574206e616d652c206964656e746966696572732c2066756e64696e6720726f756e64484964656e74696669657273557064617465640c008001284964656e7469747949640000a801185469636b65720000010201505665633c41737365744964656e7469666965723e000108d44576656e7420656d6974746564207768656e20616e7920746f6b656e206964656e746966696572732061726520757064617465642e0d0163616c6c6572204449442c207469636b65722c206120766563746f72206f6620286964656e74696669657220747970652c206964656e7469666965722076616c7565294c44697669736962696c6974794368616e6765640c008001284964656e7469747949640000a801185469636b6572000029010110626f6f6c000208844576656e7420666f72206368616e676520696e2064697669736962696c6974792e8063616c6c6572204449442c207469636b65722c2064697669736962696c697479405472616e73666572576974684461746118008001284964656e7469747949640000a801185469636b657200008001284964656e74697479496400008001284964656e746974794964000018011c42616c616e6365000030011c5665633c75383e0003083501416e206164646974696f6e616c206576656e7420746f205472616e736665723b20656d6974746564207768656e20607472616e736665725f776974685f64617461602069732063616c6c65642ec863616c6c657220444944202c207469636b65722c2066726f6d204449442c20746f204449442c2076616c75652c20646174612849734973737561626c650800a801185469636b6572000029010110626f6f6c0004085069735f6973737561626c652829206f75747075749c7469636b65722c2072657475726e2076616c7565202874727565206966206973737561626c6529405469636b6572526567697374657265640c008001284964656e7469747949640000a801185469636b65720000fc01384f7074696f6e3c4d6f6d656e743e0005087c456d6974207768656e207469636b657220697320726567697374657265642eec63616c6c657220444944202f207469636b6572206f776e6572206469642c207469636b65722c207469636b6572206f776e65722c20657870697279445469636b65725472616e736665727265640c008001284964656e7469747949640000a801185469636b657200008001284964656e74697479496400060880456d6974207768656e207469636b6572206973207472616e736665727265642ed063616c6c657220444944202f207469636b6572207472616e7366657272656420746f204449442c207469636b65722c2066726f6d6441737365744f776e6572736869705472616e736665727265640c008001284964656e7469747949640000a801185469636b657200008001284964656e746974794964000708a4456d6974207768656e20746f6b656e206f776e657273686970206973207472616e736665727265642ef463616c6c657220444944202f20746f6b656e206f776e657273686970207472616e7366657272656420746f204449442c207469636b65722c2066726f6d2c417373657446726f7a656e08008001284964656e7469747949640000a801185469636b6572000808a4416e206576656e7420656d6974746564207768656e20616e2061737365742069732066726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e344173736574556e66726f7a656e08008001284964656e7469747949640000a801185469636b6572000908ac416e206576656e7420656d6974746564207768656e20616e20617373657420697320756e66726f7a656e2e78506172616d657465723a2063616c6c6572204449442c207469636b65722e30417373657452656e616d65640c008001284964656e7469747949640000a801185469636b65720000fd01012441737365744e616d65000a08a4416e206576656e7420656d6974746564207768656e206120746f6b656e2069732072656e616d65642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e206e616d652e3c46756e64696e67526f756e645365740c008001284964656e7469747949640000a801185469636b657200001502014046756e64696e67526f756e644e616d65000b081101416e206576656e74206361727279696e6720746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e64206f662061207469636b65722ecc506172616d65746572733a2063616c6c6572204449442c207469636b65722c2066756e64696e6720726f756e64206e616d652e34446f63756d656e74416464656410008001284964656e7469747949640000a801185469636b6572000019020128446f63756d656e74496400001d020120446f63756d656e74000c048c41206e657720646f63756d656e7420617474616368656420746f20616e2061737365743c446f63756d656e7452656d6f7665640c008001284964656e7469747949640000a801185469636b6572000019020128446f63756d656e744964000d04804120646f63756d656e742072656d6f7665642066726f6d20616e20617373657440457874656e73696f6e52656d6f7665640c008001284964656e7469747949640000a801185469636b657200000001244163636f756e744964000e08604120657874656e73696f6e20676f742072656d6f7665642e7463616c6c6572204449442c207469636b65722c204163636f756e74496448436f6e74726f6c6c65725472616e7366657210008001284964656e7469747949640000a801185469636b65720000e0012c506f7274666f6c696f4964000018011c42616c616e6365000f08b44576656e7420666f72207768656e206120666f72636564207472616e736665722074616b657320706c6163652e150163616c6c6572204449442f20636f6e74726f6c6c6572204449442c207469636b65722c20506f7274666f6c696f206f6620746f6b656e20686f6c6465722c2076616c75652e54437573746f6d4173736574547970654578697374730c008001284964656e7469747949640000f5010144437573746f6d4173736574547970654964000030011c5665633c75383e001008b04120637573746f6d206173736574207479706520616c726561647920657869737473206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e64437573746f6d417373657454797065526567697374657265640c008001284964656e7469747949640000f5010144437573746f6d4173736574547970654964000030011c5665633c75383e001108b04120637573746f6d2061737365742074797065207761732072656769737465726564206f6e2d636861696e2e310163616c6c6572204449442c20746865204944206f662074686520637573746f6d20617373657420747970652c2074686520737472696e6720636f6e74656e747320726567697374657265642e5453657441737365744d6574616461746156616c756510008001284964656e7469747949640000a801185469636b657200004902014841737365744d6574616461746156616c756500004d0201a04f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e3e00120864536574206173736574206d657461646174612076616c75652ef02843616c6c6572204449442c207469636b65722c206d657461646174612076616c75652c206f7074696f6e616c2076616c75652064657461696c73297053657441737365744d6574616461746156616c756544657461696c730c008001284964656e7469747949640000a801185469636b657200005102018041737365744d6574616461746156616c756544657461696c3c4d6f6d656e743e001308dc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e8c2843616c6c6572204449442c207469636b65722c2076616c75652064657461696c732978526567697374657241737365744d657461646174614c6f63616c5479706514008001284964656e7469747949640000a801185469636b657200005902014441737365744d657461646174614e616d6500005d02015441737365744d657461646174614c6f63616c4b657900006102014441737365744d65746164617461537065630014088c5265676973746572206173736574206d65746164617461206c6f63616c20747970652e05012843616c6c6572204449442c207469636b65722c204c6f63616c2074797065206e616d652c204c6f63616c2074797065206b65792c2074797065207370656373297c526567697374657241737365744d65746164617461476c6f62616c547970650c005902014441737365744d657461646174614e616d6500007902015841737365744d65746164617461476c6f62616c4b657900006102014441737365744d6574616461746153706563001508905265676973746572206173736574206d6574616461746120676c6f62616c20747970652ebc28476c6f62616c2074797065206e616d652c20476c6f62616c2074797065206b65792c207479706520737065637329404173736574547970654368616e6765640c008001284964656e7469747949640000a801185469636b65720000f1010124417373657454797065001608cc416e206576656e7420656d6974746564207768656e207468652074797065206f6620616e206173736574206368616e6765642ebc506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720746f6b656e20747970652e5c4c6f63616c4d657461646174614b657944656c657465640c008001284964656e7469747949640000a801185469636b657200005d02015441737365744d657461646174614c6f63616c4b6579001708f0416e206576656e7420656d6974746564207768656e2061206c6f63616c206d65746164617461206b657920686173206265656e2072656d6f7665642ea8506172616d65746572733a2063616c6c6572207469636b65722c204c6f63616c2074797065206e616d65504d6574616461746156616c756544656c657465640c008001284964656e7469747949640000a801185469636b657200007d02014041737365744d657461646174614b6579001808f8416e206576656e7420656d6974746564207768656e2061206c6f63616c206d657461646174612076616c756520686173206265656e2072656d6f7665642ea8506172616d65746572733a2063616c6c6572207469636b65722c204c6f63616c2074797065206e616d654c417373657442616c616e63655570646174656418008001284964656e7469747949640000a801185469636b6572000018011c42616c616e636500008102014c4f7074696f6e3c506f7274666f6c696f49643e00008102014c4f7074696f6e3c506f7274666f6c696f49643e000085020154506f7274666f6c696f557064617465526561736f6e00190ce4456d6974746564207768656e20546f6b656e732077657265206973737565642c2072656465656d6564206f72207472616e736665727265642e3102436f6e7461696e7320746865205b604964656e746974794964605d206f66207468652072656365697665722f6973737565722f72656465656d65722c20746865205b605469636b6572605d20666f722074686520746f6b656e2c207468652062616c616e6365207468617420776173206973737565642f7472616e736665727265642f72656465656d65642cb101746865205b60506f7274666f6c696f4964605d206f662074686520736f757263652c20746865205b60506f7274666f6c696f4964605d206f66207468652064657374696e6174696f6e20616e6420746865205b60506f7274666f6c696f557064617465526561736f6e605d2e64417373657441666669726d6174696f6e4578656d7074696f6e0400a801185469636b6572001a086d01416e20617373657420686173206265656e20616464656420746f20746865206c697374206f662070726520617072726f76656420726563656976656d656e74202876616c696420666f7220616c6c206964656e746974696573292ec4506172616d65746572733a205b605469636b6572605d206f66207468652070726520617070726f7665642061737365742e7c52656d6f7665417373657441666669726d6174696f6e4578656d7074696f6e0400a801185469636b6572001b087d01416e20617373657420686173206265656e2072656d6f7665642066726f6d20746865206c697374206f662070726520617072726f76656420726563656976656d656e74202876616c696420666f7220616c6c206964656e746974696573292e90506172616d65746572733a205b605469636b6572605d206f66207468652061737365742e40507265417070726f766564417373657408008001284964656e7469747949640000a801185469636b6572001c081d01416e206964656e746974792068617320616464656420616e20617373657420746f20746865206c697374206f662070726520617072726f76656420726563656976656d656e742e2d01506172616d65746572733a205b604964656e746974794964605d206f662063616c6c65722c205b605469636b6572605d206f66207468652070726520617070726f7665642061737365742e5852656d6f7665507265417070726f766564417373657408008001284964656e7469747949640000a801185469636b6572001d082501416e206964656e74697479206861732072656d6f76656420616e20617373657420746f20746865206c697374206f662070726520617072726f76656420726563656976656d656e742ef8506172616d65746572733a205b604964656e746974794964605d206f662063616c6c65722c205b605469636b6572605d206f66207468652061737365742e4c41737365744d65646961746f727341646465640c008001284964656e7469747949640000a801185469636b657200009102015042547265655365743c4964656e7469747949643e001e08d8416e206964656e7469747920686173206164646564206d616e6461746f7279206d65646961746f727320746f20616e2061737365742e8d01506172616d65746572733a205b604964656e746974794964605d206f662063616c6c65722c205b605469636b6572605d206f66207468652061737365742c20746865206964656e74697479206f6620616c6c206d65646961746f72732061646465642e5441737365744d65646961746f727352656d6f7665640c008001284964656e7469747949640000a801185469636b657200009102015042547265655365743c4964656e7469747949643e001f08c0416e206964656e74697479206861732072656d6f766564206d65646961746f72732066726f6d20616e2061737365742e9501506172616d65746572733a205b604964656e746974794964605d206f662063616c6c65722c205b605469636b6572605d206f66207468652061737365742c20746865206964656e74697479206f6620616c6c206d65646961746f72732072656d6f7665642e085c4576656e747320666f722074686973206d6f64756c652e00f1010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365745479706500013030457175697479436f6d6d6f6e0000003c45717569747950726566657272656400010024436f6d6d6f646974790002002c4669786564496e636f6d6500030010524549540004001046756e6400050054526576656e7565536861726541677265656d656e74000600445374727563747572656450726f64756374000700284465726976617469766500080018437573746f6d0400f5010144437573746f6d417373657454797065496400090028537461626c65436f696e000a002c4e6f6e46756e6769626c650400f901013c4e6f6e46756e6769626c6554797065000b0000f5010c4c706f6c796d6573685f7072696d69746976657314617373657444437573746f6d41737365745479706549640000040010010c7533320000f9010c4c706f6c796d6573685f7072696d6974697665731461737365743c4e6f6e46756e6769626c655479706500011028446572697661746976650000002c4669786564496e636f6d650001001c496e766f69636500020018437573746f6d0400f5010144437573746f6d417373657454797065496400030000fd010c4c706f6c796d6573685f7072696d6974697665731461737365742441737365744e616d650000040030011c5665633c75383e0000010200000205020005020c4c706f6c796d6573685f7072696d6974697665734061737365745f6964656e7469666965723c41737365744964656e74696669657200011414435553495004000902011c5b75383b20395d0000001043494e5304000902011c5b75383b20395d000100104953494e0400ac01205b75383b2031325d0002000c4c454904000d0201205b75383b2032305d00030010464947490400ac01205b75383b2031325d0004000009020000030900000008000d02000003140000000800110204184f7074696f6e0404540115020108104e6f6e6500000010536f6d6504001502000001000015020c4c706f6c796d6573685f7072696d6974697665731461737365744046756e64696e67526f756e644e616d650000040030011c5665633c75383e000019020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7428446f63756d656e7449640000040010010c75333200001d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7420446f63756d656e74000014010c7572692102012c446f63756d656e74557269000130636f6e74656e745f6861736825020130446f63756d656e74486173680001106e616d653d020130446f63756d656e744e616d65000120646f635f74797065410201504f7074696f6e3c446f63756d656e74547970653e00012c66696c696e675f64617465fc01384f7074696f6e3c4d6f6d656e743e000021020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e742c446f63756d656e745572690000040030011c5665633c75383e000025020c4c706f6c796d6573685f7072696d69746976657334646f63756d656e745f6861736830446f63756d656e7448617368000124104e6f6e6500000010483531320400290201205b75383b2036345d000100104833383404002d0201205b75383b2034385d00020010483332300400310201205b75383b2034305d000300104832353604000401205b75383b2033325d00040010483232340400350201205b75383b2032385d00050010483139320400390201205b75383b2032345d000600104831363004000d0201205b75383b2032305d00070010483132380400a90101205b75383b2031365d0008000029020000034000000008002d02000003300000000800310200000328000000080035020000031c000000080039020000031800000008003d020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e744e616d650000040030011c5665633c75383e0000410204184f7074696f6e0404540145020108104e6f6e6500000010536f6d6504004502000001000045020c4c706f6c796d6573685f7072696d69746976657320646f63756d656e7430446f63756d656e74547970650000040030011c5665633c75383e000049020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614841737365744d6574616461746156616c75650000040030011c5665633c75383e00004d0204184f7074696f6e0404540151020108104e6f6e6500000010536f6d6504005102000001000051020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d6574616461746156616c756544657461696c04184d6f6d656e74012800080118657870697265fc01384f7074696f6e3c4d6f6d656e743e00012c6c6f636b5f7374617475735502017c41737365744d657461646174614c6f636b5374617475733c4d6f6d656e743e000055020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615c41737365744d657461646174614c6f636b53746174757304184d6f6d656e740128010c20556e6c6f636b6564000000184c6f636b65640001002c4c6f636b6564556e74696c04002801184d6f6d656e740002000059020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174614e616d650000040030011c5665633c75383e00005d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615441737365744d657461646174614c6f63616c4b65790000040028010c753634000061020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614441737365744d657461646174615370656300000c010c75726c6502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e6d0201804f7074696f6e3c41737365744d657461646174614465736372697074696f6e3e000120747970655f6465667502013c4f7074696f6e3c5665633c75383e3e0000650204184f7074696f6e0404540169020108104e6f6e6500000010536f6d650400690200000100006902084c706f6c796d6573685f7072696d6974697665730c55726c0000040030011c5665633c75383e00006d0204184f7074696f6e0404540171020108104e6f6e6500000010536f6d6504007102000001000071020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174616041737365744d657461646174614465736372697074696f6e0000040030011c5665633c75383e0000750204184f7074696f6e04045401300108104e6f6e6500000010536f6d65040030000001000079020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174615841737365744d65746164617461476c6f62616c4b65790000040028010c75363400007d020c4c706f6c796d6573685f7072696d6974697665733861737365745f6d657461646174614041737365744d657461646174614b657900010818476c6f62616c04007902015841737365744d65746164617461476c6f62616c4b6579000000144c6f63616c04005d02015441737365744d657461646174614c6f63616c4b657900010000810204184f7074696f6e04045401e00108104e6f6e6500000010536f6d650400e0000001000085020c4c706f6c796d6573685f7072696d69746976657324706f7274666f6c696f54506f7274666f6c696f557064617465526561736f6e0001101849737375656404014866756e64696e675f726f756e645f6e616d65110201604f7074696f6e3c46756e64696e67526f756e644e616d653e0000002052656465656d65640001002c5472616e73666572726564080138696e737472756374696f6e5f6964890201544f7074696f6e3c496e737472756374696f6e49643e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e00020048436f6e74726f6c6c65725472616e7366657200030000890204184f7074696f6e040454018d020108104e6f6e6500000010536f6d6504008d0200000100008d020c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e7434496e737472756374696f6e49640000040028010c75363400009102042042547265655365740404540180000400350100000095020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144576656e740001101c437265617465640c00990201204576656e7444696400009d020110434149640000a5020130446973747269627574696f6e000010b841206361706974616c20646973747269627574696f6e2c20776974682064657461696c7320696e636c756465642c31017761732063726561746564206279207468652044494420287065726d697373696f6e6564206167656e742920666f7220746865204341206964656e746966696564206279206043414964602e00a8284167656e74204449442c20434127732049442c20646973747269627574696f6e2064657461696c73293842656e65666974436c61696d65641800990201204576656e744469640000990201204576656e7444696400009d020110434149640000a5020130446973747269627574696f6e000018011c42616c616e63650000a902010c54617800010c51014120746f6b656e20686f6c64657227732062656e65666974206f662061206361706974616c20646973747269627574696f6e20666f722074686520676976656e206043414964602077617320636c61696d65642e0091012843616c6c6572204449442c20486f6c6465722f436c61696d616e74204449442c20434127732049442c207570646174656420646973747269627574696f6e2064657461696c732c2044494427732062656e656669742c20444944277320746178202529245265636c61696d65640c00990201204576656e7444696400009d02011043414964000018011c42616c616e636500020c9853746174732066726f6d2060707573685f62656e65666974602077617320656d69747465642e001501284167656e74204449442c20434127732049442c206d61782072657175657374656420444944732c2070726f63657373656420444944732c206661696c65642044494473291c52656d6f7665640800990201204576656e7444696400009d0201104341496400030c8c41206361706974616c20646973747269627574696f6e207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0099020c4c706f6c796d6573685f7072696d697469766573286576656e745f6f6e6c79244576656e744f6e6c7904045401800004008001045400009d02086070616c6c65745f636f72706f726174655f616374696f6e73104341496400000801187469636b6572a801185469636b65720001206c6f63616c5f6964a10201244c6f63616c434149640000a102086070616c6c65745f636f72706f726174655f616374696f6e73244c6f63616c434149640000040010010c7533320000a5020c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e30446973747269627574696f6e000020011066726f6de0012c506f7274666f6c696f496400012063757272656e6379a801185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e636500012472656d61696e696e6718011c42616c616e63650001247265636c61696d656429010110626f6f6c0001287061796d656e745f61742801184d6f6d656e74000128657870697265735f6174fc01384f7074696f6e3c4d6f6d656e743e0000a9020c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000ad021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74144576656e7400011044436865636b706f696e744372656174656414007c01484f7074696f6e3c4964656e7469747949643e0000a801185469636b65720000b1020130436865636b706f696e744964000018011c42616c616e636500002801184d6f6d656e7400000c644120636865636b706f696e742077617320637265617465642e001d012863616c6c6572204449442c207469636b65722c20636865636b706f696e742049442c20746f74616c20737570706c792c20636865636b706f696e742074696d657374616d7029844d6178696d756d5363686564756c6573436f6d706c65786974794368616e67656408008001284964656e746974794964000028010c75363400010c2901546865206d6178696d756d20636f6d706c657869747920666f7220616e20617262697472617279207469636b65722773207363686564756c652073657420776173206368616e6765642e0064284743204449442c20746865206e6577206d6178696d756d293c5363686564756c654372656174656410008001284964656e7469747949640000a801185469636b65720000b50201285363686564756c6549640000b902014c5363686564756c65436865636b706f696e747300020c884120636865636b706f696e74207363686564756c652077617320637265617465642e00ac2863616c6c6572204449442c207469636b65722c207363686564756c652069642c207363686564756c65293c5363686564756c6552656d6f76656410008001284964656e7469747949640000a801185469636b65720000b50201285363686564756c6549640000b902014c5363686564756c65436865636b706f696e747300030c884120636865636b706f696e74207363686564756c65207761732072656d6f7665642e00ac2863616c6c6572204449442c207469636b65722c207363686564756c652069642c207363686564756c6529085c4576656e747320666f722074686973206d6f64756c652e00b1020c4c706f6c796d6573685f7072696d69746976657314617373657430436865636b706f696e7449640000040028010c7536340000b5021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e74285363686564756c6549640000040028010c7536340000b9021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e744c5363686564756c65436865636b706f696e7473000004011c70656e64696e67bd02014042547265655365743c4d6f6d656e743e0000bd02042042547265655365740404540128000400c102000000c1020000022800c5021064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747348636f6d706c69616e63655f6d616e61676572144576656e7400012470436f6d706c69616e6365526571756972656d656e74437265617465640c008001284964656e7469747949640000a801185469636b65720000c9020154436f6d706c69616e6365526571756972656d656e74000008cc456d6974746564207768656e206e657720636f6d706c69616e636520726571756972656d656e7420697320637265617465642eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e70436f6d706c69616e6365526571756972656d656e7452656d6f7665640c008001284964656e7469747949640000a801185469636b6572000010010c753332000108c4456d6974746564207768656e206120636f6d706c69616e636520726571756972656d656e742069732072656d6f7665642e942863616c6c6572204449442c205469636b65722c20726571756972656d656e745f6964292e5c4173736574436f6d706c69616e63655265706c616365640c008001284964656e7469747949640000a801185469636b65720000f50201685665633c436f6d706c69616e6365526571756972656d656e743e000208b4456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206973207265706c616365642ed4506172616d65746572733a2063616c6c6572204449442c207469636b65722c206e657720617373657420636f6d706c69616e63652e504173736574436f6d706c69616e6365526573657408008001284964656e7469747949640000a801185469636b6572000308d8456d6974746564207768656e20616e20617373657420636f6d706c69616e6365206f662061207469636b65722069732072657365742e542863616c6c6572204449442c205469636b6572292e584173736574436f6d706c69616e6365526573756d656408008001284964656e7469747949640000a801185469636b65720004080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b6572206765747320726573756d652e542863616c6c6572204449442c205469636b6572292e544173736574436f6d706c69616e636550617573656408008001284964656e7469747949640000a801185469636b65720005080101456d6974746564207768656e20616e20617373657420636f6d706c69616e636520666f72206120676976656e207469636b65722067657473207061757365642e542863616c6c6572204449442c205469636b6572292e70436f6d706c69616e6365526571756972656d656e744368616e6765640c008001284964656e7469747949640000a801185469636b65720000c9020154436f6d706c69616e6365526571756972656d656e74000608e0456d6974746564207768656e20636f6d706c69616e636520726571756972656d656e7420676574206d6f6469666965642f6368616e67652eb02863616c6c6572204449442c205469636b65722c20436f6d706c69616e6365526571756972656d656e74292e785472757374656444656661756c74436c61696d49737375657241646465640c008001284964656e7469747949640000a801185469636b65720000e5020134547275737465644973737565720007081501456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b657220676574732061646465642ea82863616c6c6572204449442c205469636b65722c2041646465642054727573746564497373756572292e805472757374656444656661756c74436c61696d49737375657252656d6f7665640c008001284964656e7469747949640000a801185469636b657200008001284964656e7469747949640008081901456d6974746564207768656e2064656661756c7420636c61696d20697373756572206c69737420666f72206120676976656e207469636b6572206765742072656d6f7665642eb02863616c6c6572204449442c205469636b65722c2052656d6f7665642054727573746564497373756572292e085c4576656e747320666f722074686973206d6f64756c652e00c9020c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e6167657254436f6d706c69616e6365526571756972656d656e7400000c014473656e6465725f636f6e646974696f6e73cd0201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73cd0201385665633c436f6e646974696f6e3e000108696410010c7533320000cd02000002d10200d1020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e24436f6e646974696f6e0000080138636f6e646974696f6e5f74797065d5020134436f6e646974696f6e5479706500011c69737375657273e10201485665633c547275737465644973737565723e0000d5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e34436f6e646974696f6e5479706500011424497350726573656e74040001010114436c61696d000000204973416273656e74040001010114436c61696d0001001c4973416e794f660400d90201285665633c436c61696d3e0002002049734e6f6e654f660400d90201285665633c436c61696d3e0003002849734964656e746974790400dd0201385461726765744964656e7469747900040000d902000002010100dd020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e385461726765744964656e746974790001083445787465726e616c4167656e7400000020537065636966696304008001284964656e74697479496400010000e102000002e50200e5020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e345472757374656449737375657200000801186973737565728001284964656e74697479496400012c747275737465645f666f72e902012854727573746564466f720000e9020c4c706f6c796d6573685f7072696d69746976657324636f6e646974696f6e2854727573746564466f720001080c416e790000002053706563696669630400ed0201385665633c436c61696d547970653e00010000ed02000002f10200f1020c4c706f6c796d6573685f7072696d697469766573386964656e746974795f636c61696d24436c61696d54797065000128284163637265646974656400000024416666696c69617465000100244275794c6f636b75700002002853656c6c4c6f636b757000030050437573746f6d657244756544696c6967656e6365000400404b6e6f77596f7572437573746f6d6572000500304a7572697364696374696f6e000600204578656d707465640007001c426c6f636b656400080018437573746f6d040011010144437573746f6d436c61696d54797065496400090000f502000002c90200f902086070616c6c65745f636f72706f726174655f616374696f6e73144576656e740001205c4d617844657461696c734c656e6774684368616e67656408008001284964656e746974794964000010010c753332000008d4546865206d6178696d756d206c656e677468206f66206064657461696c736020696e20627974657320776173206368616e6765642e50284743204449442c206e6577206c656e677468297844656661756c745461726765744964656e7469746965734368616e6765640c008001284964656e7469747949640000a801185469636b65720000fd0201405461726765744964656e746974696573000108ec54686520736574206f662064656661756c7420605461726765744964656e7469746965736020666f722061207469636b6572206368616e6765642ea4284167656e74204449442c205469636b65722c204e6577205461726765744964656e746974696573297044656661756c7457697468686f6c64696e675461784368616e6765640c008001284964656e7469747949640000a801185469636b65720000a902010c546178000208c45468652064656661756c742077697468686f6c64696e672074617820666f722061207469636b6572206368616e6765642e74284167656e74204449442c205469636b65722c204e657720546178292e6044696457697468686f6c64696e675461784368616e67656410008001284964656e7469747949640000a801185469636b657200008001284964656e74697479496400000503012c4f7074696f6e3c5461783e000308ec5468652077697468686f6c64696e672074617820737065636966696320746f20612044494420666f722061207469636b6572206368616e6765642ea0284167656e74204449442c205469636b65722c205461786564204449442c204e657720546178292e2c4341496e697469617465641000990201204576656e7444696400009d0201104341496400000903013c436f72706f72617465416374696f6e000025030124434144657461696c730004084c412043412077617320696e697469617465642ea8284167656e74204449442c2043412069642c207468652043412c207468652043412064657461696c73293443414c696e6b6564546f446f630c008001284964656e74697479496400009d0201104341496400002903013c5665633c446f63756d656e7449643e000508844120434120776173206c696e6b656420746f206120736574206f6620646f63732eac284167656e74204449442c2043412049642c204c697374206f6620646f63206964656e746966696572732924434152656d6f7665640800990201204576656e7444696400009d020110434149640006084441204341207761732072656d6f7665642e48284167656e74204449442c20434120496429445265636f7264446174654368616e6765640c00990201204576656e7444696400009d0201104341496400000903013c436f72706f72617465416374696f6e0007046c412043412773207265636f72642064617465206368616e6765642e085c4576656e747320666f722074686973206d6f64756c652e00fd02086070616c6c65745f636f72706f726174655f616374696f6e73405461726765744964656e74697469657300000801286964656e7469746965733501013c5665633c4964656e7469747949643e00012474726561746d656e740103013c54617267657454726561746d656e7400000103086070616c6c65745f636f72706f726174655f616374696f6e733c54617267657454726561746d656e740001081c496e636c7564650000001c4578636c75646500010000050304184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a90200000100000903086070616c6c65745f636f72706f726174655f616374696f6e733c436f72706f72617465416374696f6e00001801106b696e640d03011843414b696e640001246465636c5f646174652801184d6f6d656e7400012c7265636f72645f64617465110301484f7074696f6e3c5265636f7264446174653e00011c74617267657473fd0201405461726765744964656e74697469657300015c64656661756c745f77697468686f6c64696e675f746178a902010c54617800013c77697468686f6c64696e675f7461781d0301585665633c284964656e7469747949642c20546178293e00000d03086070616c6c65745f636f72706f726174655f616374696f6e731843414b696e64000114485072656469637461626c6542656e6566697400000050556e7072656469637461626c6542656e65666974000100304973737565724e6f746963650002003852656f7267616e697a6174696f6e000300144f7468657200040000110304184f7074696f6e0404540115030108104e6f6e6500000010536f6d650400150300000100001503086070616c6c65745f636f72706f726174655f616374696f6e73285265636f7264446174650000080110646174652801184d6f6d656e74000128636865636b706f696e74190301304341436865636b706f696e7400001903086070616c6c65745f636f72706f726174655f616374696f6e73304341436865636b706f696e74000108245363686564756c65640800b50201285363686564756c654964000028010c753634000000204578697374696e670400b1020130436865636b706f696e744964000100001d0300000221030021030000040880a902002503086070616c6c65745f636f72706f726174655f616374696f6e7324434144657461696c730000040030011c5665633c75383e000029030000021902002d030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144576656e740001181c4372656174656414008001284964656e74697479496400009d0201104341496400003103013c42616c6c6f7454696d6552616e676500003503012842616c6c6f744d657461000029010110626f6f6c00000c7c4120636f72706f726174652062616c6c6f742077617320637265617465642e001501284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e642c2042616c6c6f74206d657461646174612c2052435620656e61626c65643f2920566f7465436173740c008001284964656e74697479496400009d0201104341496400005503013c5665633c42616c6c6f74566f74653e00010c984120766f746520776173206361737420696e206120636f72706f726174652062616c6c6f742e006028766f746572204449442c20434149642c20566f746573293052616e67654368616e6765640c008001284964656e74697479496400009d0201104341496400003103013c42616c6c6f7454696d6552616e676500020cd04120636f72706f726174652062616c6c6f74206368616e676564206974732073746172742f656e6420646174652072616e67652e0098284167656e74204449442c20434127732049442c20566f74696e672073746172742f656e64292c4d6574614368616e6765640c008001284964656e74697479496400009d0201104341496400003503012842616c6c6f744d65746100030ca04120636f72706f726174652062616c6c6f74206368616e67656420697473206d657461646174612e0088284167656e74204449442c20434127732049442c204e6577206d6574616461746129285243564368616e6765640c008001284964656e74697479496400009d02011043414964000029010110626f6f6c00040cac4120636f72706f726174652062616c6c6f74206368616e676564206974732052435620737570706f72742e0084284167656e74204449442c20434127732049442c204e657720737570706f7274291c52656d6f7665640800990201204576656e7444696400009d0201104341496400050c7c4120636f72706f726174652062616c6c6f74207761732072656d6f7665642e0050284167656e74204449442c204341277320494429085c4576656e747320666f722074686973206d6f64756c652e0031030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f743c42616c6c6f7454696d6552616e6765000008011473746172742801184d6f6d656e7400010c656e642801184d6f6d656e74000035030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f744d65746100000801147469746c653903012c42616c6c6f745469746c6500011c6d6f74696f6e733d03012c5665633c4d6f74696f6e3e000039030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c42616c6c6f745469746c650000040030011c5665633c75383e00003d0300000241030041030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74184d6f74696f6e00000c01147469746c654503012c4d6f74696f6e5469746c65000124696e666f5f6c696e6b490301384d6f74696f6e496e666f4c696e6b00011c63686f696365734d0301405665633c43686f6963655469746c653e000045030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c4d6f74696f6e5469746c650000040030011c5665633c75383e000049030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74384d6f74696f6e496e666f4c696e6b0000040030011c5665633c75383e00004d0300000251030051030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742c43686f6963655469746c650000040030011c5665633c75383e0000550300000259030059030c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f742842616c6c6f74566f74650000080114706f77657218011c42616c616e636500012066616c6c6261636b5d03012c4f7074696f6e3c7531363e00005d0304184f7074696f6e0404540161030108104e6f6e6500000010536f6d65040061030000010000610300000504006503082c70616c6c65745f70697073205261774576656e7408244163636f756e74496401002c426c6f636b4e756d6265720110015050486973746f726963616c506970735072756e65640c008001284964656e746974794964000029010110626f6f6c000029010110626f6f6c00000445015072756e696e6720486973746f726963616c205049507320697320656e61626c6564206f722064697361626c6564202863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293c50726f706f73616c4372656174656420008001284964656e74697479496400006903014c50726f706f7365723c4163636f756e7449643e0000710301145069704964000018011c42616c616e636500006502012c4f7074696f6e3c55726c3e0000750301584f7074696f6e3c5069704465736372697074696f6e3e00004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00007d03013050726f706f73616c4461746100011498412050495020776173206d61646520776974682061206042616c616e636560207374616b652e00342320506172616d65746572733a00510143616c6c6572204449442c2050726f706f7365722c205049502049442c206465706f7369742c2055524c2c206465736372697074696f6e2c206578706972792074696d652c2070726f706f73616c20646174612e5050726f706f73616c5374617465557064617465640c008001284964656e746974794964000071030114506970496400008103013450726f706f73616c5374617465000204d854726967676572656420656163682074696d6520746865207374617465206f6620612070726f706f73616c20697320616d656e64656414566f74656414008001284964656e74697479496400000001244163636f756e7449640000710301145069704964000029010110626f6f6c000018011c42616c616e6365000304f8604163636f756e7449646020766f7465642060626f6f6c60206f6e207468652070726f706f73616c207265666572656e636564206279206050697049646024506970436c6f7365640c008001284964656e7469747949640000710301145069704964000029010110626f6f6c000404e850697020686173206265656e20636c6f7365642c20626f6f6c20696e6469636174657320776865746865722064617461206973207072756e656448457865637574696f6e5363686564756c65640c008001284964656e7469747949640000710301145069704964000010012c426c6f636b4e756d626572000504e0457865637574696f6e206f6620612050495020686173206265656e207363686564756c656420617420737065636966696320626c6f636b2e7444656661756c74456e6163746d656e74506572696f644368616e6765640c008001284964656e746974794964000010012c426c6f636b4e756d626572000010012c426c6f636b4e756d626572000608d844656661756c7420656e6163746d656e7420706572696f642028696e20626c6f636b732920686173206265656e206368616e6765642e902863616c6c6572204449442c206f6c6420706572696f642c206e657720706572696f6429744d696e696d756d50726f706f73616c4465706f7369744368616e6765640c008001284964656e746974794964000018011c42616c616e6365000018011c42616c616e63650007087c4d696e696d756d206465706f73697420616d6f756e74206d6f646966696564902863616c6c6572204449442c206f6c6420616d6f756e742c206e657720616d6f756e74295c50656e64696e675069704578706972794368616e6765640c008001284964656e74697479496400004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e000808cc416d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020657870697265732e902863616c6c6572204449442c206f6c64206578706972792c206e65772065787069727929584d6178506970536b6970436f756e744368616e6765640c008001284964656e7469747949640000080130536b6970706564436f756e740000080130536b6970706564436f756e74000908cc546865206d6178696d756d2074696d65732061205049502063616e20626520736b697070656420776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c756529544163746976655069704c696d69744368616e6765640c008001284964656e746974794964000010010c753332000010010c753332000a08b8546865206d6178696d756d206e756d626572206f6620616374697665205049507320776173206368616e6765642e882863616c6c6572204449442c206f6c642076616c75652c206e65772076616c7565293850726f706f73616c526566756e640c008001284964656e7469747949640000710301145069704964000018011c42616c616e6365000b083c526566756e642070726f706f73616c482869642c20746f74616c20616d6f756e74293c536e617073686f74436c656172656408008001284964656e746974794964000085030128536e617073686f744964000c046454686520736e617073686f742077617320636c65617265642e34536e617073686f7454616b656e0c008001284964656e746974794964000085030128536e617073686f74496400008903014c5665633c536e617073686f747465645069703e000d046441206e657720736e617073686f74207761732074616b656e2e28506970536b69707065640c008001284964656e74697479496400007103011450697049640000080130536b6970706564436f756e74000e08a0412050495020696e2074686520736e617073686f742071756575652077617320736b69707065642e802867635f6469642c207069705f69642c206e65775f736b69705f636f756e742958536e617073686f74526573756c7473456e616374656414008001284964656e7469747949640000950301484f7074696f6e3c536e617073686f7449643e0000990301685665633c2850697049642c20536b6970706564436f756e74293e0000a10301285665633c50697049643e0000a10301285665633c50697049643e000f083101526573756c74732028652e672e2c20617070726f7665642c2072656a65637465642c20616e6420736b6970706564292c207765726520656e616374656420666f7220736f6d6520504950732e51012867635f6469642c20736e617073686f745f69645f6f70742c20736b69707065645f706970735f776974685f6e65775f636f756e742c2072656a65637465645f706970732c20617070726f7665645f706970732964457865637574696f6e5363686564756c696e674661696c65640c008001284964656e7469747949640000710301145069704964000010012c426c6f636b4e756d6265720010040d015363686564756c696e67206f66207468652050495020666f7220657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e3c4578706972795363686564756c65640c008001284964656e7469747949640000710301145069704964000010012c426c6f636b4e756d626572001104985468652050495020686173206265656e207363686564756c656420666f72206578706972792e584578706972795363686564756c696e674661696c65640c008001284964656e7469747949640000710301145069704964000010012c426c6f636b4e756d62657200120401015363686564756c696e67206f66207468652050495020666f7220657870697279206661696c656420696e20746865207363686564756c65722070616c6c65742e64457865637574696f6e43616e63656c6c696e674661696c65640400710301145069704964001304f043616e63656c6c696e67207468652050495020657865637574696f6e206661696c656420696e20746865207363686564756c65722070616c6c65742e085c4576656e747320666f722074686973206d6f64756c652e006903082c70616c6c65745f706970732050726f706f73657204244163636f756e7449640100010824436f6d6d756e69747904000001244163636f756e74496400000024436f6d6d697474656504006d030124436f6d6d6974746565000100006d03082c70616c6c65745f7069707324436f6d6d697474656500010824546563686e6963616c0000001c55706772616465000100007103082c70616c6c65745f706970731450697049640000040010010c7533320000750304184f7074696f6e0404540179030108104e6f6e6500000010536f6d650400790300000100007903082c70616c6c65745f70697073385069704465736372697074696f6e0000040030011c5665633c75383e00007d03082c70616c6c65745f706970733050726f706f73616c44617461000108104861736804002c0110483235360000002050726f706f73616c040030011c5665633c75383e000100008103082c70616c6c65745f706970733450726f706f73616c53746174650001181c50656e64696e670000002052656a6563746564000100245363686564756c6564000200184661696c65640003002045786563757465640004001c45787069726564000500008503082c70616c6c65745f7069707328536e617073686f7449640000040010010c753332000089030000028d03008d03082c70616c6c65745f7069707338536e617073686f74746564506970000008010869647103011450697049640001187765696768749103013c28626f6f6c2c2042616c616e636529000091030000040829011800950304184f7074696f6e0404540185030108104e6f6e6500000010536f6d6504008503000001000099030000029d03009d030000040871030800a103000002710300a5031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747324706f7274666f6c696f144576656e7400012040506f7274666f6c696f437265617465640c008001284964656e7469747949640000e8013c506f7274666f6c696f4e756d6265720000a9030134506f7274666f6c696f4e616d65000018b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c7920637265617465642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d6540506f7274666f6c696f44656c6574656408008001284964656e7469747949640000e8013c506f7274666f6c696f4e756d626572000114b054686520706f7274666f6c696f20686173206265656e207375636365737366756c6c792072656d6f7665642e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d62657240506f7274666f6c696f52656e616d65640c008001284964656e7469747949640000e8013c506f7274666f6c696f4e756d6265720000a9030134506f7274666f6c696f4e616d65000218fc54686520706f7274666f6c696f206964656e746966696564207769746820606e756d6020686173206265656e2072656e616d656420746f20606e616d65602e00302320506172616d6574657273302a206f726967696e20444944482a20706f7274666f6c696f206e756d626572402a20706f7274666f6c696f206e616d653855736572506f7274666f6c696f7308008001284964656e7469747949640000ad0301945665633c28506f7274666f6c696f4e756d6265722c20506f7274666f6c696f4e616d65293e000314d4416c6c206e6f6e2d64656661756c7420706f7274666f6c696f206e756d6265727320616e64206e616d6573206f662061204449442e00302320506172616d6574657273302a206f726967696e20444944742a20766563746f72206f66206e756d6265722d6e616d6520706169727364506f7274666f6c696f437573746f6469616e4368616e6765640c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008001284964656e746974794964000418f4437573746f6479206f66206120706f7274666f6c696f20686173206265656e20676976656e20746f206120646966666572656e74206964656e7469747900302320506172616d6574657273302a206f726967696e20444944382a20706f7274666f6c696f206964642a20706f7274666f6c696f20637573746f6469616e206469646c46756e64734d6f7665644265747765656e506f7274666f6c696f7314008001284964656e7469747949640000e0012c506f7274666f6c696f49640000e0012c506f7274666f6c696f49640000b503013c46756e644465736372697074696f6e00008401304f7074696f6e3c4d656d6f3e0005208c46756e64732068617665206d6f766564206265747765656e20706f7274666f6c696f7300302320506172616d6574657273342a204f726967696e204449442e4c2a20536f7572636520706f7274666f6c696f2e602a2044657374696e6174696f6e20706f7274666f6c696f2e882a205468652074797065206f662066756e64207468617420776173206d6f7665642e742a204f7074696f6e616c206d656d6f20666f7220746865206d6f76652e50507265417070726f766564506f7274666f6c696f0c008001284964656e7469747949640000e0012c506f7274666f6c696f49640000a801185469636b6572000618e44120706f7274666f6c696f206861732070726520617070726f7665642074686520726563656976656d656e74206f6620616e2061737365742e00302320506172616d65746572737c2a205b604964656e746974794964605d206f66207468652063616c6c65722e21012a205b60506f7274666f6c696f4964605d20746861742077696c6c20726563656976652061737365747320776974686f7574206578706c696369742061666669726d6174696f6e2e25012a205b605469636b6572605d206f6620746865206173736574207468617420686173206265656e206578656d70742066726f6d206578706c696369742061666669726d6174696f6e2e685265766f6b65507265417070726f766564506f7274666f6c696f0c008001284964656e7469747949640000e0012c506f7274666f6c696f49640000a801185469636b6572000718c44120706f7274666f6c696f206861732072656d6f7665642074686520617070726f76616c206f6620616e2061737365742e00302320506172616d65746572737c2a205b604964656e746974794964605d206f66207468652063616c6c65722ed02a205b60506f7274666f6c696f4964605d207468617420686164206974732070726520617070726f76616c207265766f6b65642ef02a205b605469636b6572605d206f6620746865206173736574207468617420686164206974732070726520617070726f76616c207265766f6b65642e085c4576656e747320666f722074686973206d6f64756c652e00a9030c4c706f6c796d6573685f7072696d6974697665732c6964656e746974795f696434506f7274666f6c696f4e616d650000040030011c5665633c75383e0000ad03000002b10300b10300000408e8a90300b5030c4c706f6c796d6573685f7072696d69746976657324706f7274666f6c696f3c46756e644465736372697074696f6e0001082046756e6769626c650801187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e63650000002c4e6f6e46756e6769626c650400b90301104e46547300010000b9030c4c706f6c796d6573685f7072696d6974697665730c6e6674104e46547300000801187469636b6572a801185469636b657200010c696473bd0301285665633c4e465449643e0000bd03000002c10300c1030c4c706f6c796d6573685f7072696d6974697665730c6e6674144e465449640000040028010c7536340000c503084c70616c6c65745f70726f746f636f6c5f666565205261774576656e7404244163636f756e7449640100010c1846656553657408008001284964656e746974794964000018011c42616c616e6365000004845468652070726f746f636f6c20666565206f6620616e206f7065726174696f6e2e38436f656666696369656e7453657408008001284964656e7469747949640000c9030120506f73526174696f000104505468652066656520636f656666696369656e742e284665654368617267656408000001244163636f756e744964000018011c42616c616e63650002043046656520636861726765642e085c4576656e747320666f722074686973206d6f64756c652e00c903084c706f6c796d6573685f7072696d69746976657320506f73526174696f0000080010010c753332000010010c7533320000cd030c4070616c6c65745f7363686564756c65721870616c6c6574144576656e74040454000118245363686564756c65640801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c753332000004505363686564756c656420736f6d65207461736b2e2043616e63656c65640801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001044c43616e63656c656420736f6d65207461736b2e28446973706174636865640c01107461736bd103016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d50301404f7074696f6e3c5461736b4e616d653e000118726573756c74410101384469737061746368526573756c74000204544469737061746368656420736f6d65207461736b2e3c43616c6c556e617661696c61626c650801107461736bd103016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d50301404f7074696f6e3c5461736b4e616d653e00030429015468652063616c6c20666f72207468652070726f7669646564206861736820776173206e6f7420666f756e6420736f20746865207461736b20686173206265656e2061626f727465642e38506572696f6469634661696c65640801107461736bd103016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d50301404f7074696f6e3c5461736b4e616d653e0004043d0154686520676976656e207461736b2077617320756e61626c6520746f2062652072656e657765642073696e636520746865206167656e64612069732066756c6c206174207468617420626c6f636b2e545065726d616e656e746c794f7665727765696768740801107461736bd103016c5461736b416464726573733c543a3a426c6f636b4e756d6265723e0001086964d50301404f7074696f6e3c5461736b4e616d653e000504f054686520676976656e207461736b2063616e206e657665722062652065786563757465642073696e6365206974206973206f7665727765696768742e04304576656e747320747970652ed10300000408101000d50304184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000d9031064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328736574746c656d656e74205261774576656e740c184d6f6d656e7401282c426c6f636b4e756d6265720110244163636f756e744964010001603056656e75654372656174656410008001284964656e7469747949640000dd03011c56656e756549640000e103013056656e756544657461696c730000e503012456656e756554797065000004ec41206e65772076656e756520686173206265656e206372656174656420286469642c2076656e75655f69642c2064657461696c732c2074797065294c56656e756544657461696c73557064617465640c008001284964656e7469747949640000dd03011c56656e756549640000e103013056656e756544657461696c730001041501416e206578697374696e672076656e756527732064657461696c7320686173206265656e207570646174656420286469642c2076656e75655f69642c2064657461696c73294056656e756554797065557064617465640c008001284964656e7469747949640000dd03011c56656e756549640000e503012456656e756554797065000204fc416e206578697374696e672076656e75652773207479706520686173206265656e207570646174656420286469642c2076656e75655f69642c2074797065294c496e737472756374696f6e41666669726d65640c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008d020134496e737472756374696f6e49640003040501416e20696e737472756374696f6e20686173206265656e2061666669726d656420286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964295041666669726d6174696f6e57697468647261776e0c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008d020134496e737472756374696f6e49640004040901416e2061666669726d6174696f6e20686173206265656e2077697468647261776e20286469642c20706f7274666f6c696f2c20696e737472756374696f6e5f6964294c496e737472756374696f6e52656a656374656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000504d8416e20696e737472756374696f6e20686173206265656e2072656a656374656420286469642c20696e737472756374696f6e5f6964293852656365697074436c61696d656418008001284964656e74697479496400008d020134496e737472756374696f6e49640000e90301144c65674964000028010c75363400000001244163636f756e7449640000ed03015c4f7074696f6e3c526563656970744d657461646174613e0006047d0141207265636569707420686173206265656e20636c61696d656420286469642c20696e737472756374696f6e5f69642c206c65675f69642c20726563656970745f7569642c207369676e65722c2072656365697074206d65746164617461293856656e756546696c746572696e670c008001284964656e7469747949640000a801185469636b6572000029010110626f6f6c000704690156656e75652066696c746572696e6720686173206265656e20656e61626c6564206f722064697361626c656420666f722061207469636b657220286469642c207469636b65722c2066696c746572696e675f656e61626c6564293456656e756573416c6c6f7765640c008001284964656e7469747949640000a801185469636b65720000f50301305665633c56656e756549643e000804dc56656e75657320616464656420746f20616c6c6f77206c69737420286469642c207469636b65722c207665633c76656e75655f69643e293456656e756573426c6f636b65640c008001284964656e7469747949640000a801185469636b65720000f50301305665633c56656e756549643e000904dc56656e75657320616464656420746f20626c6f636b206c69737420286469642c207469636b65722c207665633c76656e75655f69643e29484c65674661696c6564457865637574696f6e0c008001284964656e74697479496400008d020134496e737472756374696f6e49640000e90301144c65674964000a04dc457865637574696f6e206f662061206c6567206661696c656420286469642c20696e737472756374696f6e5f69642c206c65675f69642944496e737472756374696f6e4661696c656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000b04c8496e737472756374696f6e206661696c656420657865637574696f6e20286469642c20696e737472756374696f6e5f6964294c496e737472756374696f6e457865637574656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000c04d8496e737472756374696f6e206578656375746564207375636365737366756c6c79286469642c20696e737472756374696f6e5f6964294456656e7565556e617574686f72697a65640c008001284964656e7469747949640000a801185469636b65720000dd03011c56656e75654964000d04010156656e7565206e6f742070617274206f662074686520746f6b656e277320616c6c6f77206c69737420286469642c205469636b65722c2076656e75655f696429405363686564756c696e674661696c6564040060013444697370617463684572726f72000e04805363686564756c696e67206f6620696e737472756374696f6e206661696c732e58496e737472756374696f6e52657363686564756c656408008001284964656e74697479496400008d020134496e737472756374696f6e4964000f086c496e737472756374696f6e2069732072657363686564756c65642e702863616c6c6572204449442c20696e737472756374696f6e5f6964294c56656e75655369676e6572735570646174656410008001284964656e7469747949640000dd03011c56656e756549640000f401385665633c4163636f756e7449643e000029010110626f6f6c0010044901416e206578697374696e672076656e75652773207369676e65727320686173206265656e207570646174656420286469642c2076656e75655f69642c207369676e6572732c207570646174655f747970652968536574746c656d656e744d616e75616c6c79457865637574656408008001284964656e74697479496400008d020134496e737472756374696f6e496400110498536574746c656d656e74206d616e75616c6c7920657865637574656420286469642c2069642948496e737472756374696f6e4372656174656420008001284964656e7469747949640000dd03011c56656e7565496400008d020134496e737472756374696f6e49640000f903016c536574746c656d656e74547970653c426c6f636b4e756d6265723e0000fc01384f7074696f6e3c4d6f6d656e743e0000fc01384f7074696f6e3c4d6f6d656e743e0000fd0301205665633c4c65673e00008401304f7074696f6e3c4d656d6f3e0012088841206e657720696e737472756374696f6e20686173206265656e20637265617465645101286469642c2076656e75655f69642c20696e737472756374696f6e5f69642c20736574746c656d656e745f747970652c2074726164655f646174652c2076616c75655f646174652c206c6567732c206d656d6f29684661696c6564546f45786563757465496e737472756374696f6e08008d020134496e737472756374696f6e4964000060013444697370617463684572726f72001304784661696c656420746f206578656375746520696e737472756374696f6e2e80496e737472756374696f6e4175746f6d61746963616c6c7941666669726d65640c008001284964656e7469747949640000e0012c506f7274666f6c696f496400008d020134496e737472756374696f6e4964001408bc416e20696e737472756374696f6e20686173206265656e206175746f6d61746963616c6c792061666669726d65642ed101506172616d65746572733a205b604964656e746974794964605d206f66207468652063616c6c65722c205b60506f7274666f6c696f4964605d206f66207468652072656365697665722c20616e64205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e2e6c4d65646961746f7241666669726d6174696f6e52656365697665640c008001284964656e74697479496400008d020134496e737472756374696f6e49640000fc01384f7074696f6e3c4d6f6d656e743e001508a8416e20696e737472756374696f6e206861732061666669726d65642062792061206d65646961746f722e5101506172616d65746572733a205b604964656e746974794964605d206f6620746865206d65646961746f7220616e64205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e2e704d65646961746f7241666669726d6174696f6e57697468647261776e08008001284964656e74697479496400008d020134496e737472756374696f6e4964001608f0416e20696e737472756374696f6e2061666669726d6174696f6e20686173206265656e2077697468647261776e2062792061206d65646961746f722e5101506172616d65746572733a205b604964656e746974794964605d206f6620746865206d65646961746f7220616e64205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e2e50496e737472756374696f6e4d65646961746f727308008d020134496e737472756374696f6e496400009102015042547265655365743c4964656e7469747949643e001708bc416e20696e737472756374696f6e2077697468206d65646961746f727320686173206265656e20637265617465642e6501506172616d65746572733a205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e20616e6420746865205b604964656e746974794964605d206f6620616c6c206d65646961746f72732e085c4576656e747320666f722074686973206d6f64756c652e00dd030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e741c56656e756549640000040028010c7536340000e1030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e743056656e756544657461696c730000040030011c5665633c75383e0000e5030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e742456656e756554797065000110144f7468657200000030446973747269627574696f6e0001000c53746f0002002045786368616e676500030000e9030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74144c656749640000040028010c7536340000ed0304184f7074696f6e04045401f1030108104e6f6e6500000010536f6d650400f1030000010000f1030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e743c526563656970744d65746164617461000004000401205b75383b2033325d0000f503000002dd0300f9030c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e7438536574746c656d656e7454797065042c426c6f636b4e756d6265720110010c4c536574746c654f6e41666669726d6174696f6e00000034536574746c654f6e426c6f636b040010012c426c6f636b4e756d62657200010030536574746c654d616e75616c040010012c426c6f636b4e756d62657200020000fd0300000201040001040c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e740c4c656700010c2046756e6769626c6510011873656e646572e0012c506f7274666f6c696f49640001207265636569766572e0012c506f7274666f6c696f49640001187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e63650000002c4e6f6e46756e6769626c650c011873656e646572e0012c506f7274666f6c696f49640001207265636569766572e0012c506f7274666f6c696f49640001106e667473b90301104e465473000100204f6666436861696e10013c73656e6465725f6964656e746974798001284964656e74697479496400014472656365697665725f6964656e746974798001284964656e7469747949640001187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e63650002000005041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732873746174697374696373144576656e740001183853746174547970657341646465640c008001284964656e746974794964000009040128417373657453636f706500000d0401345665633c53746174547970653e00000c685374617420747970657320616464656420746f2061737365742e007c2843616c6c6572204449442c2041737365742c2053746174207479706573294053746174547970657352656d6f7665640c008001284964656e746974794964000009040128417373657453636f706500000d0401345665633c53746174547970653e00010c78537461742074797065732072656d6f7665642066726f6d2061737365742e007c2843616c6c6572204449442c2041737365742c20537461742074797065732944417373657453746174735570646174656410008001284964656e746974794964000009040128417373657453636f7065000011040120537461745479706500002104013c5665633c537461745570646174653e00020c50417373657420737461747320757064617465642e009c2843616c6c6572204449442c2041737365742c205374617420747970652c2055706461746573296853657441737365745472616e73666572436f6d706c69616e63650c008001284964656e746974794964000009040128417373657453636f70650000390401585665633c5472616e73666572436f6e646974696f6e3e00030ca0536574205472616e7366657220636f6d706c69616e63652072756c657320666f722061737365742e00a02843616c6c6572204449442c2041737365742c205472616e7366657220636f6e646974696f6e7329805472616e73666572436f6e646974696f6e4578656d7074696f6e7341646465640c008001284964656e7469747949640000410401685472616e73666572436f6e646974696f6e4578656d70744b657900003501013c5665633c4964656e7469747949643e00040c150141646420604964656e7469747949646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329885472616e73666572436f6e646974696f6e4578656d7074696f6e7352656d6f7665640c008001284964656e7469747949640000410401685472616e73666572436f6e646974696f6e4578656d70744b657900003501013c5665633c4964656e7469747949643e00050c210152656d6f766520604964656e7469747949646073206578656d707420666f72207472616e7366657220636f6e646974696f6e73206d61746368696e67206578656d7074206b65792e00882843616c6c6572204449442c204578656d7074206b65792c20456e74697469657329085c4576656e747320666f722074686973206d6f64756c652e0009040c4c706f6c796d6573685f7072696d697469766573287374617469737469637328417373657453636f7065000104185469636b65720400a801185469636b6572000000000d0400000211040011040c4c706f6c796d6573685f7072696d697469766573287374617469737469637320537461745479706500000801086f7015040128537461744f7054797065000130636c61696d5f6973737565721904017c4f7074696f6e3c28436c61696d547970652c204964656e746974794964293e000015040c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461744f705479706500010814436f756e740000001c42616c616e636500010000190404184f7074696f6e040454011d040108104e6f6e6500000010536f6d6504001d0400000100001d0400000408f1028000210400000225040025040c4c706f6c796d6573685f7072696d6974697665732873746174697374696373285374617455706461746500000801106b6579322904012853746174326e644b657900011476616c7565350401304f7074696f6e3c753132383e000029040c4c706f6c796d6573685f7072696d69746976657328737461746973746963732853746174326e644b65790001082c4e6f436c61696d5374617400000014436c61696d04002d04012453746174436c61696d000100002d040c4c706f6c796d6573685f7072696d69746976657328737461746973746963732453746174436c61696d00010c2841636372656469746564040029010110626f6f6c00000024416666696c69617465040029010110626f6f6c000100304a7572697364696374696f6e04003104014c4f7074696f6e3c436f756e747279436f64653e00020000310404184f7074696f6e040454010d010108104e6f6e6500000010536f6d6504000d010000010000350404184f7074696f6e04045401180108104e6f6e6500000010536f6d65040018000001000039040000023d04003d040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365445472616e73666572436f6e646974696f6e000110404d6178496e766573746f72436f756e74040028010c753634000000504d6178496e766573746f724f776e6572736869700400a902012850657263656e7461676500010028436c61696d436f756e7410002d04012453746174436c61696d00008001284964656e746974794964000028010c7536340000fc012c4f7074696f6e3c7536343e00020038436c61696d4f776e65727368697010002d04012453746174436c61696d00008001284964656e7469747949640000a902012850657263656e746167650000a902012850657263656e746167650003000041040c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e6365685472616e73666572436f6e646974696f6e4578656d70744b657900000c0114617373657409040128417373657453636f70650001086f7015040128537461744f7054797065000128636c61696d5f74797065450401444f7074696f6e3c436c61696d547970653e0000450404184f7074696f6e04045401f1020108104e6f6e6500000010536f6d650400f10200000100004904082870616c6c65745f73746f205261774576656e7404184d6f6d656e74012801184446756e647261697365724372656174656410008001284964656e74697479496400004d04013046756e64726169736572496400005104013846756e647261697365724e616d6500005504014846756e647261697365723c4d6f6d656e743e0000088841206e65772066756e6472616973657220686173206265656e20637265617465642efc284167656e74204449442c2066756e647261697365722069642c2066756e64726169736572206e616d652c2066756e647261697365722064657461696c732920496e76657374656418008001284964656e74697479496400004d04013046756e6472616973657249640000a801185469636b65720000a801185469636b6572000018011c42616c616e6365000018011c42616c616e63650001089c416e20696e766573746f7220696e76657374656420696e207468652066756e647261697365722e850128496e766573746f722c2066756e647261697365725f69642c206f66666572696e6720746f6b656e2c20726169736520746f6b656e2c206f66666572696e675f746f6b656e5f616d6f756e742c2072616973655f746f6b656e5f616d6f756e74294046756e6472616973657246726f7a656e08008001284964656e74697479496400004d04013046756e64726169736572496400020874412066756e6472616973657220686173206265656e2066726f7a656e2e68284167656e74204449442c2066756e64726169736572206964294846756e64726169736572556e66726f7a656e08008001284964656e74697479496400004d04013046756e6472616973657249640003087c412066756e6472616973657220686173206265656e20756e66726f7a656e2e68284167656e74204449442c2066756e64726169736572206964296046756e6472616973657257696e646f774d6f6469666965641800990201204576656e7444696400004d04013046756e64726169736572496400002801184d6f6d656e740000fc01384f7074696f6e3c4d6f6d656e743e00002801184d6f6d656e740000fc01384f7074696f6e3c4d6f6d656e743e00040898412066756e647261697365722077696e646f7720686173206265656e206d6f6469666965642e0901284167656e74204449442c2066756e647261697365722069642c206f6c645f73746172742c206f6c645f656e642c206e65775f73746172742c206e65775f656e64294046756e64726169736572436c6f73656408008001284964656e74697479496400004d04013046756e64726169736572496400050878412066756e6472616973657220686173206265656e2073746f707065642e68284167656e74204449442c2066756e6472616973657220696429085c4576656e747320666f722074686973206d6f64756c652e004d04082870616c6c65745f73746f3046756e6472616973657249640000040028010c75363400005104082870616c6c65745f73746f3846756e647261697365724e616d650000040030011c5665633c75383e00005504082870616c6c65745f73746f2846756e6472616973657204184d6f6d656e740128002c011c63726561746f728001284964656e7469747949640001486f66666572696e675f706f7274666f6c696fe0012c506f7274666f6c696f49640001386f66666572696e675f6173736574a801185469636b657200014472616973696e675f706f7274666f6c696fe0012c506f7274666f6c696f496400013472616973696e675f6173736574a801185469636b657200011474696572735904014c5665633c46756e64726169736572546965723e00012076656e75655f6964dd03011c56656e7565496400011473746172742801184d6f6d656e7400010c656e64fc01384f7074696f6e3c4d6f6d656e743e0001187374617475736104014046756e647261697365725374617475730001486d696e696d756d5f696e766573746d656e7418011c42616c616e6365000059040000025d04005d04082870616c6c65745f73746f3846756e647261697365725469657200000c0114746f74616c18011c42616c616e6365000114707269636518011c42616c616e636500012472656d61696e696e6718011c42616c616e636500006104082870616c6c65745f73746f4046756e64726169736572537461747573000110104c6976650000001846726f7a656e00010018436c6f7365640002002c436c6f7365644561726c79000300006504083c70616c6c65745f7472656173757279205261774576656e74081c42616c616e63650118244163636f756e7449640100010c50547265617375727944697362757273656d656e7410008001284964656e74697479496400008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500000c8844697362757273656d656e7420746f206120746172676574204964656e746974792e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e742968547265617375727944697362757273656d656e744661696c656410008001284964656e74697479496400008001284964656e74697479496400000001244163636f756e744964000018011c42616c616e636500010ca444697362757273656d656e7420746f206120746172676574204964656e74697479206661696c65642e000101287472656173757279206964656e746974792c20746172676574206964656e746974792c20746172676574207072696d617279206b65792c20616d6f756e74295454726561737572795265696d62757273656d656e7408008001284964656e746974794964000018011c42616c616e636500020c5c5472656173757279207265696d62757273656d656e742e006428736f75726365206964656e746974792c20616d6f756e7429085c4576656e747320666f722074686973206d6f64756c652e0069040c3870616c6c65745f7574696c6974791870616c6c6574144576656e74040454000128404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7260013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7260013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c74410101384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e2452656c6179656454780c012863616c6c65725f6469648001284964656e746974794964000118746172676574000130543a3a4163636f756e744964000118726573756c74410101384469737061746368526573756c740006085052656c61796564207472616e73616374696f6e2e40504f4c594d4553483a206576656e742e4c4261746368496e7465727275707465644f6c6408006d04012c4576656e74436f756e747300007104011c4572726f724174000710ac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792edc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f72206561636820646973706174636820616e64f474686520696e646578206f6620746865206669727374206661696c696e672064697370617463682061732077656c6c20617320746865206572726f722e6c504f4c594d4553483a206576656e7420646570726563617465642e5442617463684f7074696d69737469634661696c656408006d04012c4576656e74436f756e74730000750401305665633c4572726f7241743e000810ac4261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792ecc496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c20616e6429016120766563746f72206f6620616e79206661696c65642064697370617463686573207769746820746865697220696e646963657320616e64206173736f636961746564206572726f722e6c504f4c594d4553483a206576656e7420646570726563617465642e444261746368436f6d706c657465644f6c6404006d04012c4576656e74436f756e747300090cc84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722ed0496e636c75646573206120766563746f72206f66206576656e7420636f756e747320666f7220656163682064697370617463682e6c504f4c594d4553483a206576656e7420646570726563617465642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a0909096d040000021000710400000408106000750400000271040079041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731062617365144576656e740001043c556e65787065637465644572726f7204007d0401544f7074696f6e3c44697370617463684572726f723e000004e4416e20756e6578706563746564206572726f722068617070656e656420746861742073686f756c6420626520696e766573746967617465642e085c4576656e747320666f722074686973206d6f64756c652e007d0404184f7074696f6e04045401600108104e6f6e6500000010536f6d65040060000001000081041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974733c65787465726e616c5f6167656e7473144576656e740001143047726f7570437265617465641000990201204576656e744469640000a801185469636b6572000025010110414749640000b8015045787472696e7369635065726d697373696f6e7300000c6c416e204167656e742047726f75702077617320637265617465642e00d02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773207065726d697373696f6e73295c47726f75705065726d697373696f6e73557064617465641000990201204576656e744469640000a801185469636b6572000025010110414749640000b8015045787472696e7369635065726d697373696f6e7300010ca4416e204167656e742047726f75702773207065726d697373696f6e732077617320757064617465642e00e02843616c6c6572204449442c2041472773207469636b65722c20414727732049442c2041472773206e6577207065726d697373696f6e7329284167656e7441646465640c00990201204576656e744469640000a801185469636b65720000210101284167656e7447726f757000020c4c416e206167656e74207761732061646465642e00c42843616c6c65722f4167656e74204449442c204167656e742773207469636b65722c204167656e7427732067726f757029304167656e7452656d6f7665640c00990201204576656e744469640000a801185469636b657200008001284964656e74697479496400030c54416e206167656e74207761732072656d6f7665642e00a42843616c6c6572204449442c204167656e742773207469636b65722c204167656e74277320444944293047726f75704368616e6765641000990201204576656e744469640000a801185469636b657200008001284964656e7469747949640000210101284167656e7447726f757000040c74416e206167656e7427732067726f757020776173206368616e6765642e0015012843616c6c6572204449442c204167656e742773207469636b65722c204167656e742773204449442c20546865206e65772067726f7570206f6620746865206167656e7429085c4576656e747320666f722074686973206d6f64756c652e0085041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731c72656c61796572205261774576656e7404244163636f756e744964010001104c417574686f72697a6564506179696e674b65791400990201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000028010c75363400000ccc417574686f72697a6174696f6e20676976656e20666f722060706179696e675f6b65796020746f2060757365725f6b6579602e0001012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20496e697469616c20504f4c5958206c696d69742c204175746820494429444163636570746564506179696e674b65790c00990201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400010c50416363657074656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294052656d6f766564506179696e674b65790c00990201204576656e7444696400000001244163636f756e74496400000001244163636f756e74496400020c4c52656d6f76656420706179696e67206b65792e00882843616c6c6572204449442c2055736572204b65792c20506179696e67204b6579294455706461746564506f6c79784c696d69741400990201204576656e7444696400000001244163636f756e74496400000001244163636f756e744964000018011c42616c616e6365000018011c42616c616e636500030c505570646174656420706f6c7978206c696d69742e0011012843616c6c6572204449442c2055736572204b65792c20506179696e67204b65792c20504f4c5958206c696d69742c206f6c642072656d61696e696e6720504f4c595829085c4576656e747320666f722074686973206d6f64756c652e0089040c4070616c6c65745f636f6e7472616374731870616c6c6574144576656e7404045400012030496e7374616e7469617465640801206465706c6f796572000130543a3a4163636f756e744964000120636f6e7472616374000130543a3a4163636f756e744964000004d8436f6e7472616374206465706c6f7965642062792061646472657373206174207468652073706563696669656420616464726573732e285465726d696e61746564080120636f6e7472616374000130543a3a4163636f756e744964048454686520636f6e7472616374207468617420776173207465726d696e617465642e012c62656e6566696369617279000130543a3a4163636f756e74496404e4546865206163636f756e7420746861742072656365697665642074686520636f6e7472616374732072656d61696e696e672062616c616e6365011868436f6e747261637420686173206265656e2072656d6f7665642e001823204e6f7465003d01546865206f6e6c792077617920666f72206120636f6e747261637420746f2062652072656d6f76656420616e6420656d697474696e672074686973206576656e742069732062792063616c6c696e6744607365616c5f7465726d696e617465602e28436f646553746f726564040124636f64655f686173682c011c543a3a48617368000204b4436f646520776974682074686520737065636966696564206861736820686173206265656e2073746f7265642e3c436f6e7472616374456d6974746564080120636f6e7472616374000130543a3a4163636f756e744964049054686520636f6e7472616374207468617420656d697474656420746865206576656e742e01106461746130011c5665633c75383e0835014461746120737570706c6965642062792074686520636f6e74726163742e204d657461646174612067656e65726174656420647572696e6720636f6e747261637420636f6d70696c6174696f6e5c6973206e656564656420746f206465636f64652069742e03049c4120637573746f6d206576656e7420656d69747465642062792074686520636f6e74726163742e2c436f646552656d6f766564040124636f64655f686173682c011c543a3a48617368000404ac4120636f6465207769746820746865207370656369666965642068617368207761732072656d6f7665642e4c436f6e7472616374436f6465557064617465640c0120636f6e7472616374000130543a3a4163636f756e744964048c54686520636f6e7472616374207468617420686173206265656e20757064617465642e01346e65775f636f64655f686173682c011c543a3a4861736804b04e657720636f646520686173682074686174207761732073657420666f722074686520636f6e74726163742e01346f6c645f636f64655f686173682c011c543a3a48617368048c50726576696f757320636f64652068617368206f662074686520636f6e74726163742e0504784120636f6e7472616374277320636f64652077617320757064617465642e1843616c6c656408011863616c6c6572000130543a3a4163636f756e744964049c546865206163636f756e7420746861742063616c6c6564207468652060636f6e7472616374602e0120636f6e7472616374000130543a3a4163636f756e744964047454686520636f6e74726163742074686174207761732063616c6c65642e061c11014120636f6e7472616374207761732063616c6c656420656974686572206279206120706c61696e206163636f756e74206f7220616e6f7468657220636f6e74726163742e001823204e6f7465003101506c65617365206b65657020696e206d696e642074686174206c696b6520616c6c206576656e74732074686973206973206f6e6c7920656d697474656420666f72207375636365737366756c290163616c6c732e20546869732069732062656361757365206f6e206661696c75726520616c6c2073746f72616765206368616e67657320696e636c7564696e67206576656e74732061726530726f6c6c6564206261636b2e3844656c656761746543616c6c6564080120636f6e7472616374000130543a3a4163636f756e74496408210154686520636f6e7472616374207468617420706572666f726d6564207468652064656c65676174652063616c6c20616e642068656e636520696e2077686f736520636f6e74657874707468652060636f64655f68617368602069732065786563757465642e0124636f64655f686173682c012c436f6465486173683c543e049c54686520636f646520686173682074686174207761732064656c65676174652063616c6c65642e071c9c4120636f6e74726163742064656c65676174652063616c6c6564206120636f646520686173682e001823204e6f7465003101506c65617365206b65657020696e206d696e642074686174206c696b6520616c6c206576656e74732074686973206973206f6e6c7920656d697474656420666f72207375636365737366756c290163616c6c732e20546869732069732062656361757365206f6e206661696c75726520616c6c2073746f72616765206368616e67657320696e636c7564696e67206576656e74732061726530726f6c6c6564206261636b2e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a0909098d040848706f6c796d6573685f636f6e747261637473205261774576656e74081048617368012c244163636f756e744964010001083841706948617368557064617465640c009104010c417069000095040130436861696e56657273696f6e00002c011048617368000008f0456d6974746564207768656e206120636f6e74726163742073746172747320737570706f7274696e672061206e65772041504920757067726164652e2101436f6e7461696e7320746865205b60417069605d2c205b60436861696e56657273696f6e605d2c20616e642074686520627974657320666f722074686520636f646520686173682e34534352756e74696d6543616c6c08000001244163636f756e74496400009904012c45787472696e7369634964000108bc456d6974746564207768656e206120636f6e74726163742063616c6c7320696e746f207468652072756e74696d652e2901436f6e7461696e7320746865206163636f756e74206964207365742062792074686520636f6e7472616374206f776e657220616e6420746865205b6045787472696e7369634964605d2e085c4576656e747320666f722074686973206d6f64756c652e0091040848706f6c796d6573685f636f6e7472616374730c41706900000801106465736340011c5b75383b20345d0001146d616a6f7210010c753332000095040848706f6c796d6573685f636f6e74726163747330436861696e56657273696f6e0000080130737065635f76657273696f6e10010c75333200012874785f76657273696f6e10010c753332000099040c48706f6c796d6573685f636f6e7472616374733c636861696e5f657874656e73696f6e2c45787472696e73696349640000080008010875380000080108753800009d040c3c70616c6c65745f707265696d6167651870616c6c6574144576656e7404045400010c144e6f746564040110686173682c011c543a3a48617368000004684120707265696d61676520686173206265656e206e6f7465642e24526571756573746564040110686173682c011c543a3a48617368000104784120707265696d61676520686173206265656e207265717565737465642e1c436c6561726564040110686173682c011c543a3a486173680002046c4120707265696d616765206861732062656e20636c65617265642e04a1010a090909546865205b6576656e745d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f2920656d69747465640a090909627920746869732070616c6c65742e0a090909a1041064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974730c6e6674144576656e74000108504e6674436f6c6c656374696f6e437265617465640c008001284964656e7469747949640000a801185469636b65720000a504013c4e4654436f6c6c656374696f6e4964000004b4456d6974746564207768656e2061206e6577206e667420636f6c6c656374696f6e20697320637265617465642e4c4e4654506f7274666f6c696f5570646174656414008001284964656e7469747949640000b90301104e46547300008102014c4f7074696f6e3c506f7274666f6c696f49643e00008102014c4f7074696f6e3c506f7274666f6c696f49643e000085020154506f7274666f6c696f557064617465526561736f6e00010cdc456d6974746564207768656e204e4654732077657265206973737565642c2072656465656d6564206f72207472616e736665727265642e0502436f6e7461696e7320746865205b604964656e746974794964605d206f66207468652072656365697665722f6973737565722f72656465656d65722c20746865205b604e465473605d2c20746865205b60506f7274666f6c696f4964605d206f662074686520736f757263652c20746865205b60506f7274666f6c696f4964605dd46f66207468652064657374696e6174696f6e20616e6420746865205b60506f7274666f6c696f557064617465526561736f6e605d2e085c4576656e747320666f722074686973206d6f64756c652e00a5040c4c706f6c796d6573685f7072696d6974697665730c6e66743c4e4654436f6c6c656374696f6e49640000040028010c7536340000a904084470616c6c65745f746573745f7574696c73205261774576656e7404244163636f756e744964010001082444696453746174757308008001284964656e74697479496400000001244163636f756e744964000008e4456d6974732074686520604964656e7469747949646020616e642074686520604163636f756e74496460206f66207468652063616c6c65722e702843616c6c6572204449442c2043616c6c6572206163636f756e7429244364645374617475730c007c01484f7074696f6e3c4964656e7469747949643e00000001244163636f756e744964000029010110626f6f6c00010c550153686f777320746865206044494460206173736f63696174656420746f2074686520604163636f756e744964602c20616e64206120666c616720696e646963617465732069662074686174204449442068617320614076616c69642043444420636c61696d2ed828546172676574204449442c20546172676574204163636f756e742c20612076616c69642043444420636c61696d2065786973747329085c4576656e747320666f722074686973206d6f64756c652e00ad0408306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e00020000b1040000022c00b504000002d10300b90408306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ebd04014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d65c104016473705f72756e74696d653a3a52756e74696d65537472696e670000bd040000061000c1040000050200c5040c306672616d655f73797374656d1870616c6c65741043616c6c0404540001201872656d61726b04011872656d61726b30011c5665633c75383e000010684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e0034232320436f6d706c6578697479202d20604f28312960387365745f686561705f7061676573040114706167657328010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646530011c5665633c75383e0002106453657420746865206e65772072756e74696d6520636f64652e0034232320436f6d706c657869747931012d20604f2843202b2053296020776865726520604360206c656e677468206f662060636f64656020616e642060536020636f6d706c6578697479206f66206063616e5f7365745f636f6465605c7365745f636f64655f776974686f75745f636865636b73040110636f646530011c5665633c75383e000310190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e0034232320436f6d706c65786974798c2d20604f2843296020776865726520604360206c656e677468206f662060636f6465602c7365745f73746f726167650401146974656d73c90401345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973d10401205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697830010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b30011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632ec904000002cd0400cd0400000408303000d1040000023000d5040c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2001185765696768740001246d61785f626c6f636b2001185765696768740001247065725f636c617373d90401845065724469737061746368436c6173733c57656967687473506572436c6173733e0000d9040c346672616d655f737570706f7274206469737061746368405065724469737061746368436c61737304045401dd04000c01186e6f726d616cdd0401045400012c6f7065726174696f6e616cdd040104540001246d616e6461746f7279dd040104540000dd040c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632001185765696768740001346d61785f65787472696e736963e10401384f7074696f6e3c5765696768743e0001246d61785f746f74616ce10401384f7074696f6e3c5765696768743e0001207265736572766564e10401384f7074696f6e3c5765696768743e0000e10404184f7074696f6e04045401200108104e6f6e6500000010536f6d650400200000010000e5040c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000004010c6d6178e90401545065724469737061746368436c6173733c7533323e0000e9040c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000ed04082873705f776569676874733c52756e74696d65446257656967687400000801107265616428010c753634000114777269746528010c7536340000f104082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d65c104013452756e74696d65537472696e67000124696d706c5f6e616d65c104013452756e74696d65537472696e67000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c75333200011061706973f504011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013473746174655f76657273696f6e08010875380000f504040c436f7704045401f904000400f904000000f904000002fd0400fd040000040801051000010500000308000000080005050c306672616d655f73797374656d1870616c6c6574144572726f720404540001183c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e046c4572726f7220666f72207468652053797374656d2070616c6c657409050c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454010d05045300000400150501185665633c543e00000d05000004081105280011050c4473705f636f6e73656e7375735f626162650c617070185075626c696300000400cd01013c737232353531393a3a5075626c6963000015050000020d05001905084873705f636f6e73656e7375735f736c6f747310536c6f740000040028010c75363400001d050c4473705f636f6e73656e7375735f626162651c64696765737473504e657874436f6e66696744657363726970746f720001040856310801046321050128287536342c2075363429000134616c6c6f7765645f736c6f747325050130416c6c6f776564536c6f7473000100002105000004082828002505084473705f636f6e73656e7375735f6261626530416c6c6f776564536c6f747300010c305072696d617279536c6f7473000000745072696d617279416e645365636f6e64617279506c61696e536c6f74730001006c5072696d617279416e645365636f6e64617279565246536c6f74730002000029050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401040453000004002d0501185665633c543e00002d050000020400310504184f7074696f6e0404540135050108104e6f6e6500000010536f6d6504003505000001000035050c4473705f636f6e73656e7375735f626162651c646967657374732450726544696765737400010c1c5072696d6172790400390501405072696d617279507265446967657374000100385365636f6e64617279506c61696e04003d05015c5365636f6e64617279506c61696e507265446967657374000200305365636f6e646172795652460400410501545365636f6e646172795652465072654469676573740003000039050c4473705f636f6e73656e7375735f626162651c64696765737473405072696d617279507265446967657374000010013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f7419050110536c6f740001287672665f6f75747075740401245652464f75747075740001247672665f70726f6f662902012056524650726f6f6600003d050c4473705f636f6e73656e7375735f626162651c646967657374735c5365636f6e64617279506c61696e507265446967657374000008013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f7419050110536c6f74000041050c4473705f636f6e73656e7375735f626162651c64696765737473545365636f6e64617279565246507265446967657374000010013c617574686f726974795f696e64657810015473757065723a3a417574686f72697479496e646578000110736c6f7419050110536c6f740001287672665f6f75747075740401245652464f75747075740001247672665f70726f6f662902012056524650726f6f6600004505084473705f636f6e73656e7375735f62616265584261626545706f6368436f6e66696775726174696f6e00000801046321050128287536342c2075363429000134616c6c6f7765645f736c6f747325050130416c6c6f776564536c6f7473000049050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d05045300000400510501185665633c543e00004d050000040828100051050000024d050055050c2c70616c6c65745f626162651870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f6659050184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6665050140543a3a4b65794f776e657250726f6f6600001009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f6659050184426f783c45717569766f636174696f6e50726f6f663c543a3a4865616465723e3e00013c6b65795f6f776e65725f70726f6f6665050140543a3a4b65794f776e657250726f6f6600012009015265706f727420617574686f726974792065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667905017468652065717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f660d01616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63652077696c6c306265207265706f727465642e0d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e48706c616e5f636f6e6669675f6368616e6765040118636f6e6669671d0501504e657874436f6e66696744657363726970746f720002105d01506c616e20616e2065706f636820636f6e666967206368616e67652e205468652065706f636820636f6e666967206368616e6765206973207265636f7264656420616e642077696c6c20626520656e6163746564206f6e5101746865206e6578742063616c6c20746f2060656e6163745f65706f63685f6368616e6765602e2054686520636f6e6669672077696c6c20626520616374697661746564206f6e652065706f63682061667465722e59014d756c7469706c652063616c6c7320746f2074686973206d6574686f642077696c6c207265706c61636520616e79206578697374696e6720706c616e6e656420636f6e666967206368616e6765207468617420686164546e6f74206265656e20656e6163746564207965742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e5905084873705f636f6e73656e7375735f736c6f74734445717569766f636174696f6e50726f6f660818486561646572015d05084964011105001001206f6666656e646572110501084964000110736c6f7419050110536c6f7400013066697273745f6865616465725d0501184865616465720001347365636f6e645f6865616465725d05011848656164657200005d05102873705f72756e74696d651c67656e65726963186865616465721848656164657208184e756d626572011010486173680161050014012c706172656e745f686173682c0130486173683a3a4f75747075740001186e756d626572bd0401184e756d62657200012873746174655f726f6f742c0130486173683a3a4f757470757400013c65787472696e736963735f726f6f742c0130486173683a3a4f7574707574000118646967657374340118446967657374000061050c2873705f72756e74696d65187472616974732c426c616b6554776f323536000000006505082873705f73657373696f6e3c4d656d6265727368697050726f6f6600000c011c73657373696f6e10013053657373696f6e496e646578000128747269655f6e6f646573d10401305665633c5665633c75383e3e00013c76616c696461746f725f636f756e7410013856616c696461746f72436f756e74000069050c2c70616c6c65745f626162651870616c6c6574144572726f7204045400011060496e76616c696445717569766f636174696f6e50726f6f660000043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c69644b65794f776e65727368697050726f6f66000104310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400020415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e50496e76616c6964436f6e66696775726174696f6e0003048c5375626d697474656420636f6e66696775726174696f6e20697320696e76616c69642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a0909096d050c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f77240124543a3a4d6f6d656e7400003c54536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e742073706563696669656420627940604d696e696d756d506572696f64602e00d4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d7573742062652060496e686572656e74602e0034232320436f6d706c657869747931012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602961012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f28312960292e202862656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e71050000040c001829010075050c3870616c6c65745f696e64696365731870616c6c65741043616c6c04045400011414636c61696d040114696e64657810013c543a3a4163636f756e74496e6465780000309841737369676e20616e2070726576696f75736c7920756e61737369676e656420696e6465782e00dc5061796d656e743a20604465706f736974602069732072657365727665642066726f6d207468652073656e646572206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e00f02d2060696e646578603a2074686520696e64657820746f20626520636c61696d65642e2054686973206d757374206e6f7420626520696e207573652e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e207472616e7366657208010c6e6577790501504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e6465780001305d0141737369676e20616e20696e64657820616c7265616479206f776e6564206279207468652073656e64657220746f20616e6f74686572206163636f756e742e205468652062616c616e6365207265736572766174696f6eb86973206566666563746976656c79207472616e7366657272656420746f20746865206e6577206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0025012d2060696e646578603a2074686520696e64657820746f2062652072652d61737369676e65642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e1066726565040114696e64657810013c543a3a4163636f756e74496e646578000230944672656520757020616e20696e646578206f776e6564206279207468652073656e6465722e005d015061796d656e743a20416e792070726576696f7573206465706f73697420706c6163656420666f722074686520696e64657820697320756e726573657276656420696e207468652073656e646572206163636f756e742e005501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64207468652073656e646572206d757374206f776e2074686520696e6465782e000d012d2060696e646578603a2074686520696e64657820746f2062652066726565642e2054686973206d757374206265206f776e6564206279207468652073656e6465722e0084456d6974732060496e646578467265656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e38666f7263655f7472616e736665720c010c6e6577790501504163636f756e7449644c6f6f6b75704f663c543e000114696e64657810013c543a3a4163636f756e74496e646578000118667265657a6529010110626f6f6c0003345501466f72636520616e20696e64657820746f20616e206163636f756e742e205468697320646f65736e277420726571756972652061206465706f7369742e2049662074686520696e64657820697320616c7265616479e868656c642c207468656e20616e79206465706f736974206973207265696d62757273656420746f206974732063757272656e74206f776e65722e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e00a42d2060696e646578603a2074686520696e64657820746f206265202872652d2961737369676e65642e5d012d20606e6577603a20746865206e6577206f776e6572206f662074686520696e6465782e20546869732066756e6374696f6e2069732061206e6f2d6f7020696620697420697320657175616c20746f2073656e6465722e41012d2060667265657a65603a2069662073657420746f206074727565602c2077696c6c20667265657a652074686520696e64657820736f2069742063616e6e6f74206265207472616e736665727265642e0090456d6974732060496e64657841737369676e656460206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e18667265657a65040114696e64657810013c543a3a4163636f756e74496e6465780004304101467265657a6520616e20696e64657820736f2069742077696c6c20616c7761797320706f696e7420746f207468652073656e646572206163636f756e742e205468697320636f6e73756d657320746865206465706f7369742e005901546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420746865207369676e696e67206163636f756e74206d757374206861766520616c6e6f6e2d66726f7a656e206163636f756e742060696e646578602e00ac2d2060696e646578603a2074686520696e64657820746f2062652066726f7a656e20696e20706c6163652e0088456d6974732060496e64657846726f7a656e60206966207375636365737366756c2e0034232320436f6d706c6578697479242d20604f283129602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e79050c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780110011408496404000001244163636f756e74496400000014496e6465780400bd0401304163636f756e74496e6465780001000c526177040030011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d0003002441646472657373323004000d0201205b75383b2032305d000400007d050c3870616c6c65745f696e64696365731870616c6c6574144572726f720404540001142c4e6f7441737369676e65640000048c54686520696e64657820776173206e6f7420616c72656164792061737369676e65642e204e6f744f776e6572000104a454686520696e6465782069732061737369676e656420746f20616e6f74686572206163636f756e742e14496e5573650002047054686520696e64657820776173206e6f7420617661696c61626c652e2c4e6f745472616e73666572000304c854686520736f7572636520616e642064657374696e6174696f6e206163636f756e747320617265206964656e746963616c2e245065726d616e656e74000404d054686520696e646578206973207065726d616e656e7420616e64206d6179206e6f742062652066726565642f6368616e6765642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090981050000028505008505083c70616c6c65745f62616c616e6365732c42616c616e63654c6f636b041c42616c616e63650118000c01086964010501384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e738905011c526561736f6e73000089051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974732062616c616e6365731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c000200008d05083c70616c6c65745f62616c616e6365731043616c6c040454000118207472616e73666572080110646573747905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01011c42616c616e6365000058d45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e000501607472616e73666572602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e1d0149742077696c6c2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d2062792074686520605472616e73666572466565602e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e002823203c7765696768743e2d012d20446570656e64656e74206f6e20617267756d656e747320627574206e6f7420637269746963616c2c20676976656e2070726f70657220696d706c656d656e746174696f6e7320666f72c82020696e70757420636f6e6669672074797065732e205365652072656c617465642066756e6374696f6e732062656c6f772e65012d20497420636f6e7461696e732061206c696d69746564206e756d626572206f6620726561647320616e642077726974657320696e7465726e616c6c7920616e64206e6f20636f6d706c657820636f6d7075746174696f6e2e004852656c617465642066756e6374696f6e733a004d0120202d2060656e737572655f63616e5f77697468647261776020697320616c776179732063616c6c656420696e7465726e616c6c792062757420686173206120626f756e64656420636f6d706c65786974792e290120202d205472616e7366657272696e672062616c616e63657320746f206163636f756e7473207468617420646964206e6f74206578697374206265666f72652077696c6c206361757365d0202020202060543a3a4f6e4e65774163636f756e743a3a6f6e5f6e65775f6163636f756e746020746f2062652063616c6c65642e842d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e487472616e736665725f776974685f6d656d6f0c0110646573747905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01011c42616c616e63650001106d656d6f8401304f7074696f6e3c4d656d6f3e000120fc5472616e7366657220746865206e61746976652063757272656e63792077697468207468652068656c70206f66206964656e74696669657220737472696e67ec746869732066756e6374696f6e616c6974792063616e2068656c7020746f20646966666572656e746961746520746865207472616e73666572732e002823203c7765696768743e41012d2042617365205765696768743a2037332e363420c2b5732c20776f7273742063617365207363656e6172696f20286163636f756e7420637265617465642c206163636f756e742072656d6f76656429dc2d204442205765696768743a2031205265616420616e64203120577269746520746f2064657374696e6174696f6e206163636f756e742e11012d204f726967696e206163636f756e7420697320616c726561647920696e206d656d6f72792c20736f206e6f204442206f7065726174696f6e7320666f72207468656d2e2c23203c2f7765696768743e906465706f7369745f626c6f636b5f7265776172645f726573657276655f62616c616e636504011476616c7565dd01011c42616c616e6365000204dc4d6f766520736f6d6520504f4c59582066726f6d2062616c616e6365206f662073656c6620746f2062616c616e6365206f66204252522e2c7365745f62616c616e63650c010c77686f7905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f757263650001206e65775f66726565dd01011c42616c616e63650001306e65775f7265736572766564dd01011c42616c616e636500031890536574207468652062616c616e636573206f66206120676976656e206163636f756e742e001d01546869732077696c6c20616c74657220604672656542616c616e63656020616e642060526573657276656442616c616e63656020696e2073746f726167652e2069742077696c6c0501616c736f2064656372656173652074686520746f74616c2069737375616e6365206f66207468652073797374656d202860546f74616c49737375616e636560292e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e38666f7263655f7472616e736665720c0118736f757263657905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000110646573747905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011476616c7565dd01011c42616c616e636500041c4d0145786163746c7920617320607472616e73666572602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74206d6179206265287370656369666965642e002823203c7765696768743e3d012d2053616d65206173207472616e736665722c20627574206164646974696f6e616c207265616420616e6420777269746520626563617573652074686520736f75726365206163636f756e742069738c20206e6f7420617373756d656420746f20626520696e20746865206f7665726c61792e2c23203c2f7765696768743e506275726e5f6163636f756e745f62616c616e6365040118616d6f756e7418011c42616c616e636500050429014275726e732074686520676976656e20616d6f756e74206f6620746f6b656e732066726f6d207468652063616c6c6572277320667265652c20756e6c6f636b65642062616c616e63652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9105083c70616c6c65745f62616c616e636573144572726f72040454000114544c69717569646974795265737472696374696f6e73000004c44163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c204f766572666c6f7700010470476f7420616e206f766572666c6f7720616674657220616464696e674c496e73756666696369656e7442616c616e63650002047442616c616e636520746f6f206c6f7720746f2073656e642076616c7565484578697374656e7469616c4465706f736974000304e856616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369744852656365697665724364644d697373696e6700040488526563656976657220646f6573206e6f74206861766520612076616c6964204344440095050c3473705f61726974686d657469632c66697865645f706f696e7424466978656455313238000004001801107531323800009905086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e74000000085632000100009d05000002a10500a105082873705f7765696768747358576569676874546f466565436f656666696369656e74041c42616c616e6365011800100134636f6566665f696e746567657218011c42616c616e6365000128636f6566665f667261639d01011c50657262696c6c0001206e6567617469766529010110626f6f6c00011864656772656508010875380000a5050c4c706f6c796d6573685f7072696d697469766573206964656e74697479244469645265636f726404244163636f756e74496401000004012c7072696d6172795f6b6579190101444f7074696f6e3c4163636f756e7449643e0000a90500000408ad05b10500ad050c3c70616c6c65745f6964656e746974791474797065732c436c61696d3173744b657900000801187461726765748001284964656e746974794964000128636c61696d5f74797065f1020124436c61696d547970650000b1050c3c70616c6c65745f6964656e746974791474797065732c436c61696d326e644b657900000801186973737565728001284964656e74697479496400011473636f7065150101344f7074696f6e3c53636f70653e0000b5050c4c706f6c796d6573685f7072696d697469766573347365636f6e646172795f6b6579244b65795265636f726404244163636f756e7449640100010c285072696d6172794b657904008001284964656e746974794964000000305365636f6e646172794b657908008001284964656e7469747949640000a0012c5065726d697373696f6e73000100444d756c74695369675369676e65724b657904000001244163636f756e74496400020000b90500000408800000bd05000004087d012800c1050c4c706f6c796d6573685f7072696d69746976657334617574686f72697a6174696f6e34417574686f72697a6174696f6e08244163636f756e7449640100184d6f6d656e74012800140148617574686f72697a6174696f6e5f646174611d010170417574686f72697a6174696f6e446174613c4163636f756e7449643e000134617574686f72697a65645f62798001284964656e746974794964000118657870697279fc01384f7074696f6e3c4d6f6d656e743e00011c617574685f696428010c753634000114636f756e7410010c7533320000c50500000408802800c905083c70616c6c65745f6964656e746974791c56657273696f6e0000040008010875380000cd0500000408808000d105083c70616c6c65745f6964656e746974791043616c6c040454000160406364645f72656769737465725f6469640801387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797398017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e000020b8526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e746974792e002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e54696e76616c69646174655f6364645f636c61696d730c010c6364648001284964656e74697479496400013064697361626c655f66726f6d280124543a3a4d6f6d656e74000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001102101496e76616c69646174657320616e7920636c61696d2067656e6572617465642062792060636464602066726f6d206064697361626c655f66726f6d602074696d657374616d70732e009c596f752063616e20616c736f20646566696e6520616e2065787069726174696f6e2074696d652c6d0177686963682077696c6c20696e76616c696461746520616c6c20636c61696d732067656e657261746564206279207468617420606364646020616e642072656d6f766520697420617320434444206d656d6265722067726f75702e486163636570745f7072696d6172795f6b6579080140726f746174696f6e5f617574685f696428010c7536340001506f7074696f6e616c5f6364645f617574685f6964fc012c4f7074696f6e3c7536343e000234650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564250174686973206368616e676520286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e005d01446966666572732066726f6d20726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727920696e20746861742069742077696c6c20756e6c696e6b20746865206f6c64207072696d617279206b6579a4696e7374656164206f66206c656176696e672069742061732061207365636f6e64617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572986368616e67655f6364645f726571756972656d656e745f666f725f6d6b5f726f746174696f6e040134617574685f726571756972656429010110626f6f6c00031435015365742069662043444420617574686f72697a6174696f6e20697320726571756972656420666f72207570646174696e67207072696d617279206b6579206f6620616e206964656e746974792e7843616c6c61626c652076696120726f6f742028676f7665726e616e636529002c2320417267756d656e7473cc2a2060617574685f7265717569726564602043444420417574686f72697a6174696f6e207265717569726564206f72206e6f74506a6f696e5f6964656e746974795f61735f6b657904011c617574685f696428010c753634000404904a6f696e20616e206964656e746974792061732061207365636f6e64617279206b65792e546c656176655f6964656e746974795f61735f6b65790005048c4c6561766520746865207365636f6e64617279206b65792773206964656e746974792e246164645f636c61696d0c01187461726765748001284964656e746974794964000114636c61696d01010114436c61696d000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e00060cc4416464732061206e657720636c61696d207265636f7264206f7220656469747320616e206578697374696e67206f6e652e00a84f6e6c792063616c6c6564206279206469645f6973737565722773207365636f6e64617279206b65792e307265766f6b655f636c61696d0801187461726765748001284964656e746974794964000114636c61696d01010114436c61696d000704944d61726b73207468652073706563696669656420636c61696d206173207265766f6b65642e54667265657a655f7365636f6e646172795f6b657973000810c449742064697361626c657320616c6c207365636f6e64617279206b657973206174206064696460206964656e746974792e002023204572726f7273005c756e667265657a655f7365636f6e646172795f6b657973000904dc52652d656e61626c657320616c6c207365636f6e64617279206b657973206f66207468652063616c6c65722773206964656e746974792e446164645f617574686f72697a6174696f6e0c01187461726765747d01015c5369676e61746f72793c543a3a4163636f756e7449643e000110646174611d01017c417574686f72697a6174696f6e446174613c543a3a4163636f756e7449643e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e000a04584164647320616e20617574686f72697a6174696f6e2e5072656d6f76655f617574686f72697a6174696f6e0c01187461726765747d01015c5369676e61746f72793c543a3a4163636f756e7449643e00011c617574685f696428010c7536340001445f617574685f6973737565725f7061797329010110626f6f6c000b086452656d6f76657320616e20617574686f72697a6174696f6e2e75015f617574685f6973737565725f706179732064657465726d696e657320776865746865722074686520697373756572206f662074686520617574686f7269736174696f6e207061797320746865207472616e73616374696f6e206665654067635f6164645f6364645f636c61696d0401187461726765748001284964656e746974794964000c044501417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c20616464732061206e65772063646420636c61696d207265636f72642e4c67635f7265766f6b655f6364645f636c61696d0401187461726765748001284964656e746974794964000d046901417373756d696e6720746869732069732065786563757465642062792074686520474320766f74696e67206d616a6f726974792c2072656d6f76657320616e206578697374696e672063646420636c61696d207265636f72642e547265766f6b655f636c61696d5f62795f696e6465780c01187461726765748001284964656e746974794964000128636c61696d5f74797065f1020124436c61696d5479706500011473636f7065150101344f7074696f6e3c53636f70653e000e10f5015265766f6b6573206120737065636966696320636c61696d207573696e6720697473205b436c61696d20556e6971756520496e6465785d282f70616c6c65745f6964656e746974792f696e6465782e68746d6c23636c61696d2d756e697175652d696e6465782920636f6d706f7365642062792060746172676574602c6860636c61696d5f74797065602c20616e64206073636f7065602e000501506c65617365206e6f7465207468617420606f726967696e60206d7573742062652074686520697373756572206f66207468652074617267657420636c61696d2e7c726f746174655f7072696d6172795f6b65795f746f5f7365636f6e6461727908011c617574685f696428010c7536340001506f7074696f6e616c5f6364645f617574685f6964fc012c4f7074696f6e3c7536343e000f38650143616c6c2074686973207769746820746865206e6577207072696d617279206b65792e20427920696e766f6b696e672074686973206d6574686f642c2063616c6c6572206163636570747320617574686f72697a6174696f6e6501746f206265636f6d6520746865206e6577207072696d617279206b6579206f66207468652069737375696e67206964656e746974792e20496620612043444420736572766963652070726f766964657220617070726f766564290174686973206368616e67652c20286f722074686973206973206e6f74207265717569726564292c207072696d617279206b6579206f66207468652044494420697320757064617465642e005d015468652063616c6c657220286e6577207072696d617279206b657929206d757374206265206569746865722061207365636f6e64617279206b6579206f66207468652069737375696e67206964656e746974792c206f7264756e6c696e6b656420746f20616e79206964656e746974792e006101446966666572732066726f6d206163636570745f7072696d6172795f6b657920696e20746861742069742077696c6c206c6561766520746865206f6c64207072696d617279206b65792061732061207365636f6e6461727985016b6579207769746820746865207065726d697373696f6e732073706563696669656420696e2074686520636f72726573706f6e64696e6720526f746174655072696d6172794b6579546f5365636f6e6461727920617574686f72697a6174696f6ea4696e7374656164206f6620756e6c696e6b696e6720746865206f6c64207072696d617279206b65792e002c2320417267756d656e74731d012a20606f776e65725f617574685f69646020417574686f72697a6174696f6e2066726f6d20746865206f776e65722077686f20696e6974696174656420746865206368616e6765e42a20606364645f617574685f69646020417574686f72697a6174696f6e2066726f6d20612043444420736572766963652070726f7669646572946164645f7365636f6e646172795f6b6579735f776974685f617574686f72697a6174696f6e08013c6164646974696f6e616c5f6b657973d505019c5665633c5365636f6e646172794b657957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174280124543a3a4d6f6d656e74001034b041646473207365636f6e64617279206b65797320746f20746172676574206964656e7469747920606964602e0039014b65797320617265206469726563746c7920616464656420746f206964656e7469747920626563617573652065616368206f66207468656d2068617320616e20617574686f72697a6174696f6e2e00302320417267756d656e74733a0901202020202d20606f726967696e60207768696368206d75737420626520746865207072696d617279206b6579206f6620746865206964656e7469747920606964602ed4202020202d206069646020746f207768696368206e6577207365636f6e64617279206b6579732077696c6c2062652061646465642ed8202020202d20606164646974696f6e616c5f6b6579736020776869636820696e636c75646573207365636f6e64617279206b6579732c090120202020202020636f75706c6564207769746820617574686f72697a6174696f6e20646174612c20746f2061646420746f20746172676574206964656e746974792e002023204572726f7273ac202020202d2043616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722ed0202020202d204b6579732073686f756c642062652061626c6520746f206c696e6b656420746f20616e79206964656e746974792e747365745f7365636f6e646172795f6b65795f7065726d697373696f6e7308010c6b6579000130543a3a4163636f756e7449640001147065726d73a0012c5065726d697373696f6e7300110cc853657473207065726d697373696f6e7320666f7220616e20737065636966696320607461726765745f6b657960206b65792e0035014f6e6c7920746865207072696d617279206b6579206f6620616e206964656e746974792069732061626c6520746f20736574207365636f6e64617279206b6579207065726d697373696f6e732e5472656d6f76655f7365636f6e646172795f6b6579730401386b6579735f746f5f72656d6f7665f401445665633c543a3a4163636f756e7449643e001214d452656d6f76657320737065636966696564207365636f6e64617279206b657973206f662061204449442069662070726573656e742e002023204572726f727300cc5468652065787472696e7369632063616e206f6e6c792063616c6c6564206279207072696d617279206b6579206f776e65722e6872656769737465725f637573746f6d5f636c61696d5f74797065040108747930011c5665633c75383e0013186c526567697374657220637573746f6d20636c61696d20747970652e002023204572726f727349012a2060437573746f6d436c61696d54797065416c7265616479457869737473602054686520747970652074686174206973206265696e67207265676973746572656420616c7265616479206578697374732ed42a2060436f756e7465724f766572666c6f776020437573746f6d436c61696d54797065496420686173206f766572666c6f7765642ec82a2060546f6f4c6f6e6760205468652074797065206265696e67207265676973746572656420697320746f6f206c616e672e646364645f72656769737465725f6469645f776974685f6364640c01387461726765745f6163636f756e74000130543a3a4163636f756e7449640001387365636f6e646172795f6b65797398017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0014205901526567697374657220607461726765745f6163636f756e746020776974682061206e6577204964656e7469747920616e6420697373756520612043444420636c61696d2077697468206120626c616e6b204364644964002423204661696c75726545012d20606f726967696e602068617320746f206265206120616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792ef42d2045787465726e616c207365636f6e64617279206b6579732063616e206265206c696e6b656420746f206a757374206f6e65206964656e746974792e546372656174655f6368696c645f6964656e746974790401347365636f6e646172795f6b6579000130543a3a4163636f756e74496400153019014372656174652061206368696c64206964656e7469747920616e64206d616b652074686520607365636f6e646172795f6b6579602069742773207072696d617279206b65792e00c44f6e6c7920746865207072696d617279206b65792063616e20637265617465206368696c64206964656e7469746965732e002c2320417267756d656e747365012d20607365636f6e646172795f6b65796020746865207365636f6e64617279206b657920746861742077696c6c206265636f6d6520746865207072696d617279206b6579206f6620746865206e6577206964656e746974792e002023204572726f727305012d20604b65794e6f74416c6c6f77656460206f6e6c7920746865207072696d617279206b65792063616e206372656174652061206e6577206964656e746974792e4d012d20604e6f74415369676e6572602074686520607365636f6e646172795f6b657960206973206e6f742061207365636f6e64617279206b6579206f66207468652063616c6c65722773206964656e746974792e6d012d20604163636f756e744b657949734265696e6755736564602074686520607365636f6e646172795f6b6579602063616e277420626520756e6c696e6b65642066726f6d20697427732063757272656e74206964656e746974792ea1012d206049734368696c644964656e7469747960207468652063616c6c65722773206964656e7469747920697320616c72656164792061206368696c64206964656e7469747920616e642063616e277420637265617465206368696c64206964656e7469746965732e5c6372656174655f6368696c645f6964656e7469746965730801286368696c645f6b657973e10501b85665633c4372656174654368696c644964656e7469747957697468417574683c543a3a4163636f756e7449643e3e000128657870697265735f6174280124543a3a4d6f6d656e7400163c684372656174652061206368696c64206964656e7469746965732e002501546865206e6577207072696d617279206b657920666f722065616368206368696c64206964656e746974792077696c6c206e65656420746f207369676e20286f66662d636861696e2944616e20617574686f72697a6174696f6e2e00c44f6e6c7920746865207072696d617279206b65792063616e20637265617465206368696c64206964656e7469746965732e002c2320417267756d656e747349012d20606368696c645f6b6579736020746865206b65797320746861742077696c6c206265636f6d65207072696d617279206b657973206f66207468656972206f776e206368696c64206964656e746974792e002023204572726f727305012d20604b65794e6f74416c6c6f77656460206f6e6c7920746865207072696d617279206b65792063616e206372656174652061206e6577206964656e746974792e0d012d2060416c72656164794c696e6b656460206f6e65206f6620746865206b65797320697320616c7265616479206c696e6b656420746f20616e206964656e746974792ef02d20604475706c69636174654b657960206f6e65206f6620746865206b65797320697320696e636c75646564206d756c7469706c652074696d65732ea1012d206049734368696c644964656e7469747960207468652063616c6c65722773206964656e7469747920697320616c72656164792061206368696c64206964656e7469747920616e642063616e277420637265617465206368696c64206964656e7469746965732e54756e6c696e6b5f6368696c645f6964656e746974790401246368696c645f6469648001284964656e74697479496400172cc8556e6c696e6b2061206368696c64206964656e746974792066726f6d206974277320706172656e74206964656e746974792e0045014f6e6c7920746865207072696d617279206b6579206f662074686520706172656e74206f72206368696c64206964656e7469746965732063616e20756e6c696e6b20746865206964656e7469746965732e002c2320417267756d656e747311012d20606368696c645f6469646020746865206368696c64206964656e7469747920746f20756e6c696e6b2066726f6d2069747320706172656e74206964656e746974792e002023204572726f7273a1012d20604b65794e6f74416c6c6f77656460206f6e6c7920746865207072696d617279206b6579206f66206569746865722074686520706172656e74206f72206368696c64206964656e746974792063616e20756e6c696e6b20746865206964656e7469746965732e35012d20604e6f506172656e744964656e746974796020746865206964656e7469747920606368696c645f6469646020646f65736e27742068617665206120706172656e74206964656e746974792e59012d20604e6f74506172656e744f724368696c644964656e7469747960207468652063616c6c65722773206964656e746974792069736e27742074686520706172656e74206f72206368696c64206964656e746974792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed505000002d90500d9051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e74697479505365636f6e646172794b6579576974684175746804244163636f756e7449640100000801347365636f6e646172795f6b65799c015c5365636f6e646172794b65793c4163636f756e7449643e000138617574685f7369676e6174757265dd050110483531320000dd05083c7072696d69746976655f7479706573104835313200000400290201205b75383b2036345d0000e105000002e50500e5051064706f6c796d6573685f636f6d6d6f6e5f7574696c697469657318747261697473206964656e746974796c4372656174654368696c644964656e74697479576974684175746804244163636f756e74496401000008010c6b65790001244163636f756e744964000138617574685f7369676e6174757265dd050110483531320000e905083c70616c6c65745f6964656e74697479144572726f7204045400018434416c72656164794c696e6b6564000004dc4f6e65207365636f6e64617279206f72207072696d617279206b65792063616e206f6e6c792062656c6f6e6720746f206f6e6520444944584d697373696e6743757272656e744964656e74697479000104ac4d697373696e672063757272656e74206964656e74697479206f6e20746865207472616e73616374696f6e30556e617574686f72697a6564000204bc5369676e61746f7279206973206e6f742070726520617574686f72697a656420627920746865206964656e7469747944496e76616c69644163636f756e744b6579000304a84163636f756e742049642063616e6e6f74206265206578747261637465642066726f6d207369676e65725c556e417574686f72697a656443646450726f76696465720004049c4f6e6c792043444420736572766963652070726f7669646572732061726520616c6c6f7765642e74496e76616c6964417574686f72697a6174696f6e46726f6d4f776e6572000504a0416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865206f776e65722e8c496e76616c6964417574686f72697a6174696f6e46726f6d43646450726f7669646572000604bc416e20696e76616c696420617574686f72697a6174696f6e2066726f6d20746865204344442070726f76696465722e644e6f7443646450726f76696465724174746573746174696f6e000704b84174746573746174696f6e20776173206e6f7420627920612043444420736572766963652070726f76696465722e70417574686f72697a6174696f6e734e6f74466f7253616d6544696473000804a0417574686f72697a6174696f6e7320617265206e6f7420666f72207468652073616d65204449442e4c4469644d757374416c726561647945786973740009046c54686520444944206d75737420616c72656164792065786973742e50417574686f72697a6174696f6e45787069726564000a049c546865206f6666636861696e20617574686f72697a6174696f6e2068617320657870697265642e385461726765744861734e6f436464000b0480546865207461726765742044494420686173206e6f2076616c6964204344442e6c417574686f72697a6174696f6e4861734265656e5265766f6b6564000c04a8417574686f72697a6174696f6e20686173206265656e206578706c696369746c79207265766f6b65642e74496e76616c6964417574686f72697a6174696f6e5369676e6174757265000d048c416e20696e76616c696420617574686f72697a6174696f6e207369676e61747572652e344b65794e6f74416c6c6f776564000e04d454686973206b6579206973206e6f7420616c6c6f77656420746f2065786563757465206120676976656e206f7065726174696f6e2e344e6f745072696d6172794b6579000f0461014f6e6c7920746865207072696d617279206b657920697320616c6c6f77656420746f207265766f6b6520616e204964656e74697479205369676e61746f7279206f66662d636861696e20617574686f72697a6174696f6e2e3c446964446f65734e6f7445786973740010045c5468652044494420646f6573206e6f742065786973742e40446964416c72656164794578697374730011045c5468652044494420616c7265616479206578697374732e785365636f6e646172794b657973436f6e7461696e5072696d6172794b6579001204ac546865207365636f6e64617279206b65797320636f6e7461696e20746865207072696d617279206b65792e444661696c6564546f436861726765466565001304a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e284e6f74415369676e6572001404d85369676e6572206973206e6f742061207365636f6e64617279206b6579206f66207468652070726f7669646564206964656e746974796c43616e6e6f744465636f64655369676e65724163636f756e744964001504150143616e6e6f7420636f6e7665727420612060543a3a4163636f756e7449646020746f2060416e795369676e61747572653a3a5369676e65723a3a4163636f756e744964602e484d756c746953696748617342616c616e636500160421014d756c74697369672063616e206e6f7420626520756e6c696e6b65642066726f6d20616e206964656e74697479207768696c65206974207374696c6c20686f6c647320504f4c5958544163636f756e744b657949734265696e6755736564001704d0546865206163636f756e74206b6579206973206265696e6720757365642c2069742063616e277420626520756e6c696e6b65642e48437573746f6d53636f7065546f6f4c6f6e670018086c4120637573746f6d2073636f706520697320746f6f206c6f6e672e9c49742063616e206174206d6f737420626520603332602063686172616374657273206c6f6e672e70437573746f6d436c61696d54797065416c7265616479457869737473001904f454686520637573746f6d20636c61696d207479706520747279696e6720746f206265207265676973746572656420616c7265616479206578697374732e6c437573746f6d436c61696d54797065446f65734e6f744578697374001a049454686520637573746f6d20636c61696d207479706520646f6573206e6f742065786973742e44436c61696d446f65734e6f744578697374001b0454436c61696d20646f6573206e6f742065786973742e3c49734368696c644964656e74697479001c0451014964656e7469747920697320616c72656164792061206368696c64206f6620616e206f74686572206964656e746974792c2063616e277420637265617465206772616e642d6368696c64206964656e746974792e404e6f506172656e744964656e74697479001d04b0546865204964656e7469747920646f65736e27742068617665206120706172656e74206964656e746974792e604e6f74506172656e744f724368696c644964656e74697479001e04bc5468652063616c6c6572206973206e6f742074686520706172656e74206f72206368696c64206964656e746974792e304475706c69636174654b6579001f04a45468652073616d65206b65792077617320696e636c75646564206d756c7469706c652074696d65732e744578636570744e6f74416c6c6f776564466f7245787472696e73696373002004e043616e6e6f742075736520457863657074207768656e2073706563696679696e672065787472696e736963207065726d697373696f6e732e00ed05000002f10500f1051064706f6c796d6573685f636f6d6d6f6e5f7574696c6974696573187472616974731467726f757038496e6163746976654d656d62657204184d6f6d656e740128000c010869648001284964656e74697479496400013864656163746976617465645f61742801184d6f6d656e74000118657870697279fc01384f7074696f6e3c4d6f6d656e743e0000f505083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ef905083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00fd050c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c52756e74696d6543616c6c0001ac1853797374656d0400c50401ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e00000010426162650400550501a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426162652c2052756e74696d653e0001002454696d657374616d7004006d0501b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e0002001c496e64696365730400750501b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496e64696365732c2052756e74696d653e0003002042616c616e63657304008d0501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e000500204964656e746974790400d10501b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4964656e746974792c2052756e74696d653e0007004c4364645365727669636550726f7669646572730400f50501e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4364645365727669636550726f7669646572732c2052756e74696d653e00080044506f6c796d657368436f6d6d69747465650400010601d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6d6d69747465652c2052756e74696d653e0009004c436f6d6d69747465654d656d626572736869700400050601e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000a0048546563686e6963616c436f6d6d69747465650400090601dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465652c2052756e74696d653e000b0070546563686e6963616c436f6d6d69747465654d656d6265727368697004000d0601050273656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546563686e6963616c436f6d6d69747465654d656d626572736869702c2052756e74696d653e000c004055706772616465436f6d6d69747465650400110601d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465652c2052756e74696d653e000d006855706772616465436f6d6d69747465654d656d626572736869700400150601fd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c55706772616465436f6d6d69747465654d656d626572736869702c2052756e74696d653e000e00204d756c74695369670400190601b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74695369672c2052756e74696d653e000f001842726964676504001d0601ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4272696467652c2052756e74696d653e0010001c5374616b696e6704002d0601b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5374616b696e672c2052756e74696d653e0011001c53657373696f6e0400210701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53657373696f6e2c2052756e74696d653e0013001c4772616e64706104002d0701b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00150020496d4f6e6c696e650400590701b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c496d4f6e6c696e652c2052756e74696d653e001700105375646f0400790701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e00190014417373657404007d0701a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c41737365742c2052756e74696d653e001a004c4361706974616c446973747269627574696f6e0400890701e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4361706974616c446973747269627574696f6e2c2052756e74696d653e001b0028436865636b706f696e740400910701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436865636b706f696e742c2052756e74696d653e001c0044436f6d706c69616e63654d616e616765720400950701d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6d706c69616e63654d616e616765722c2052756e74696d653e001d003c436f72706f72617465416374696f6e0400990701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f72617465416374696f6e2c2052756e74696d653e001e003c436f72706f7261746542616c6c6f740400b10701d10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f72706f7261746542616c6c6f742c2052756e74696d653e001f0010506970730400b50701a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506970732c2052756e74696d653e00210024506f7274666f6c696f0400c50701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f7274666f6c696f2c2052756e74696d653e0022002c50726f746f636f6c4665650400d10701c10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f746f636f6c4665652c2052756e74696d653e002300245363686564756c65720400d90701b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5363686564756c65722c2052756e74696d653e00240028536574746c656d656e740400e10701bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c536574746c656d656e742c2052756e74696d653e002500285374617469737469637304000d0801bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c537461746973746963732c2052756e74696d653e0026000c53746f04001d0801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53746f2c2052756e74696d653e00270020547265617375727904002d0801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e0028001c5574696c6974790400390801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e002900104261736504005d0801a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426173652c2052756e74696d653e002a003845787465726e616c4167656e74730400610801cd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c45787465726e616c4167656e74732c2052756e74696d653e002b001c52656c617965720400650801b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c52656c617965722c2052756e74696d653e002c0024436f6e7472616374730400690801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c436f6e7472616374732c2052756e74696d653e002e0044506f6c796d657368436f6e74726163747304007d0801d90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c506f6c796d657368436f6e7472616374732c2052756e74696d653e002f0020507265696d6167650400910801b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c507265696d6167652c2052756e74696d653e0030000c4e66740400950801a10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e66742c2052756e74696d653e00310024546573745574696c730400ad0801b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c546573745574696c732c2052756e74696d653e003200000106084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869648001284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766529010110626f6f6c00011063616c6cfd05017c426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2c011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766529010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0506083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0906084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869648001284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766529010110626f6f6c00011063616c6cfd05017c426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2c011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766529010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e0d06083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1106084070616c6c65745f636f6d6d69747465651043616c6c080454000449000114487365745f766f74655f7468726573686f6c640801046e10010c7533320001046410010c753332000018f84368616e67652074686520766f7465207468726573686f6c64207468652064657465726d696e6573207468652077696e6e696e672070726f706f73616c2e5501466f7220652e672e2c20666f7220612073696d706c65206d616a6f72697479207573652028312c20322920776869636820726570726573656e74732074686520696e2d6571756174696f6e20223e3d20312f32222e002c2320417267756d656e7473f82a20606e60202d204e756d657261746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e01012a20606460202d2044656e6f6d696e61746f72206f6620746865206672616374696f6e20726570726573656e74696e6720766f7465207468726573686f6c642e5c7365745f72656c656173655f636f6f7264696e61746f7204010869648001284964656e74697479496400011c804368616e676573207468652072656c6561736520636f6f7264696e61746f722e002c2320417267756d656e7473c02a2060696460202d2054686520444944206f6620746865206e65772072656c6561736520636f6f7264696e61746f722e002023204572726f727325012a20604e6f74414d656d626572602c20496620746865206e657720636f6f7264696e61746f722060696460206973206e6f742070617274206f662074686520636f6d6d69747465652e447365745f657870697265735f6166746572040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e000210c04368616e676573207468652074696d6520616674657220776869636820612070726f706f73616c20657870697265732e002c2320417267756d656e7473842a206065787069727960202d20546865206e6577206578706972792074696d652e3c766f74655f6f725f70726f706f736508011c617070726f766529010110626f6f6c00011063616c6cfd05017c426f783c3c5420617320436f6e6669673c493e3e3a3a50726f706f73616c3e000344150150726f706f73657320746f2074686520636f6d6d69747465652074686174206063616c6c602073686f756c6420626520657865637574656420696e20697473206e616d652e5d01416c7465726e61746976656c792c206966207468652068617368206f66206063616c6c602068617320616c7265616479206265656e207265636f726465642c20692e652e2c20616c72656164792070726f706f7365642c1d017468656e20746869732063616c6c20636f756e7473206173206120766f74652c20692e652e2c2061732069662060766f74655f62795f6861736860207761732063616c6c65642e00202320576569676874002d0154686520776569676874206f66207468697320646973706174636861626c652069732074686174206f66206063616c6c602061732077656c6c2061732074686520636f6d706c657869747978666f72207265636f7264696e672074686520766f746520697473656c662e002c2320417267756d656e7473a02a2060617070726f766560202d206973207468697320616e20617070726f76696e6720766f74653f610120204966207468652070726f706f73616c20646f65736e27742065786973742c2070617373696e67206066616c7365602077696c6c20726573756c7420696e206572726f7220604669727374566f746552656a656374602eb42a206063616c6c60202d207468652063616c6c20746f2070726f706f736520666f7220657865637574696f6e2e002023204572726f72732d012a20604669727374566f746552656a656374602c206966206063616c6c60206861736e2774206265656e2070726f706f73656420616e642060617070726f7665203d3d2066616c7365602e09012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e10766f74650c012070726f706f73616c2c011c543a3a48617368000114696e64657810013450726f706f73616c496e64657800011c617070726f766529010110626f6f6c000428a4566f7465732060617070726f766560696e676c7920286f72206e6f742c206966206066616c73656029d46f6e20616e206578697374696e67206070726f706f73616c6020676976656e2062792069747320686173682c2060696e646578602e002c2320417267756d656e7473d42a206070726f706f73616c60202d20412068617368206f66207468652070726f706f73616c20746f20626520766f746564206f6e2e7c2a2060696e64657860202d205468652070726f706f73616c20696e6465782e2d012a2060617070726f766560202d20496620607472756560207468616e207468697320697320612060666f726020766f74652c20616e642060616761696e737460206f74686572776973652e002023204572726f727309012a20604e6f74414d656d626572602c2069662074686520606f726967696e60206973206e6f742061206d656d626572206f66207468697320636f6d6d69747465652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1506083070616c6c65745f67726f75701043616c6c08045400044900011c607365745f6163746976655f6d656d626572735f6c696d69740401146c696d697410012c4d656d626572436f756e7400001035014368616e676520746869732067726f75702773206c696d697420666f7220686f77206d616e7920636f6e63757272656e7420616374697665206d656d626572732074686579206d61792062652e002c2320417267756d656e74730d012a20606c696d697460202d20746865206e756d626572206f6620616374697665206d656d62657273207468657265206d617920626520636f6e63757272656e746c792e3864697361626c655f6d656d6265720c010c77686f8001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001086174fc01444f7074696f6e3c543a3a4d6f6d656e743e0001409444697361626c65732061206d656d626572206174207370656369666963206d6f6d656e742e004101506c65617365206e6f74652074686174206966206d656d62657220697320616c7265616479207265766f6b6564202861202276616c6964206d656d62657222292c20697473207265766f636174696f6e6c74696d652d7374616d702077696c6c20626520757064617465642e004d01416e792064697361626c6564206d656d6265722073686f756c64204e4f5420616c6c6f7720746f20616374206c696b6520616e20616374697665206d656d626572206f66207468652067726f75702e20466f725d01696e7374616e63652c20612064697361626c656420434444206d656d6265722073686f756c64204e4f542062652061626c6520746f2067656e657261746520612043444420636c61696d2e20486f776576657220616e79190167656e65726174656420636c61696d20697373756564206265666f7265206061746020776f756c6420626520636f6e7369646572656420617320612076616c6964206f6e652e005101496620796f752077616e7420746f20696e76616c696461746520616e792067656e65726174656420636c61696d2c20796f752073686f756c6420757365206053656c663a3a72656d6f76655f6d656d626572602e002c2320417267756d656e74737c2a2060617460202d205265766f636174696f6e2074696d652d7374616d702e942a206077686f60202d20546172676574206d656d626572206f66207468652067726f75702e55012a206065787069727960202d2054696d652d7374616d70207768656e206077686f602069732072656d6f7665642066726f6d204344442e20417320736f6f6e20617320697420697320657870697265642c20746865510167656e65726174656420636c61696d732077696c6c2062652022696e76616c696422206173206077686f60206973206e6f7420636f6e736964657265642061206d656d626572206f66207468652067726f75702e286164645f6d656d62657204010c77686f8001284964656e7469747949640002143901416464732061206d656d626572206077686f6020746f207468652067726f75702e204d6179206f6e6c792062652063616c6c65642066726f6d20604164644f726967696e60206f7220726f6f742e002c2320417267756d656e7473d02a20606f726967696e60202d204f726967696e20726570726573656e74696e6720604164644f726967696e60206f7220726f6f74b82a206077686f60202d204964656e74697479496420746f20626520616464656420746f207468652067726f75702e3472656d6f76655f6d656d62657204010c77686f8001284964656e746974794964000328510152656d6f7665732061206d656d626572206077686f602066726f6d20746865207365742e204d6179206f6e6c792062652063616c6c65642066726f6d206052656d6f76654f726967696e60206f7220726f6f742e004101416e7920636c61696d2070726576696f75736c792067656e6572617465642062792074686973206d656d626572206973206e6f742076616c696420617320612067726f757020636c61696d2e20466f725901696e7374616e63652c206966206120434444206d656d6265722067726f75702067656e657261746564206120636c61696d20666f72206120746172676574206964656e7469747920616e64207468656e206974206973610172656d6f7665642c207468617420636c61696d2077696c6c20626520696e76616c69642e2020496e206361736520796f752077616e7420746f206b656570207468652076616c6964697479206f662067656e657261746564dc636c61696d732c20796f75206861766520746f20757365206053656c663a3a64697361626c655f6d656d626572602066756e6374696f6e002c2320417267756d656e7473dc2a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052656d6f76654f726967696e60206f7220726f6f74c82a206077686f60202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702e2c737761705f6d656d62657208011872656d6f76658001284964656e74697479496400010c6164648001284964656e746974794964000420dc5377617073206f7574206f6e65206d656d626572206072656d6f76656020666f7220616e6f74686572206d656d6265722060616464602e00b44d6179206f6e6c792062652063616c6c65642066726f6d2060537761704f726967696e60206f7220726f6f742e002c2320417267756d656e7473d42a20606f726967696e60202d204f726967696e20726570726573656e74696e672060537761704f726967696e60206f7220726f6f74d42a206072656d6f766560202d204964656e74697479496420746f2062652072656d6f7665642066726f6d207468652067726f75702ed82a206061646460202d204964656e74697479496420746f20626520616464656420696e20706c616365206f66206072656d6f7665602e3472657365745f6d656d6265727304011c6d656d626572733501013c5665633c4964656e7469747949643e00051829014368616e67657320746865206d656d6265727368697020746f2061206e6577207365742c20646973726567617264696e6720746865206578697374696e67206d656d626572736869702eb84d6179206f6e6c792062652063616c6c65642066726f6d206052657365744f726967696e60206f7220726f6f742e002c2320417267756d656e7473d82a20606f726967696e60202d204f726967696e20726570726573656e74696e67206052657365744f726967696e60206f7220726f6f748c2a20606d656d6265727360202d204e657720736574206f66206964656e7469746965734c61626469636174655f6d656d626572736869700006284d01416c6c6f7773207468652063616c6c696e67206d656d62657220746f202a756e696c61746572616c6c7920717569742a20776974686f75742074686973206265696e67207375626a65637420746f206120474314766f74652e002c2320417267756d656e7473cc2a20606f726967696e60202d204d656d626572206f6620636f6d6d69747465652077686f2077616e747320746f20717569742e001c23204572726f7200802a204f6e6c79207072696d617279206b65792063616e2061626469636174652ea42a204c617374206d656d626572206f6620612067726f75702063616e6e6f742061626469636174652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1906083c70616c6c65745f6d756c74697369671043616c6c0404540001543c6372656174655f6d756c746973696708011c7369676e657273790101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000134736967735f726571756972656428010c75363400001448437265617465732061206d756c7469736967002c2320417267756d656e7473a5012a20607369676e65727360202d205369676e657273206f6620746865206d756c7469736967202854686579206e65656420746f2061636365707420617574686f72697a6174696f6e206265666f72652074686579206172652061637475616c6c79206164646564292e19012a2060736967735f726571756972656460202d204e756d626572206f66207369677320726571756972656420746f2070726f636573732061206d756c74692d7369672074782e986372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cfd050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0001243d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642edd01235b646570726563617465642873696e6365203d2022362e302e30222c206e6f7465203d2022506c65617365207573652074686520606372656174655f70726f706f73616c5f61735f6964656e746974796020616e642060617070726f76655f61735f6964656e746974796020696e737465616422295d846372656174655f6f725f617070726f76655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cfd050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0002243d01437265617465732061206d756c74697369672070726f706f73616c206966206974206861736e2774206265656e2063726561746564206f7220617070726f766573206974206966206974206861732e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642eb501235b646570726563617465642873696e6365203d2022362e302e30222c206e6f7465203d2022506c65617365207573652074686520606372656174655f70726f706f73616c5f61735f6b65796020616e642060617070726f76655f61735f6b65796020696e737465616422295d6c6372656174655f70726f706f73616c5f61735f6964656e746974791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cfd050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0003206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e586372656174655f70726f706f73616c5f61735f6b65791001206d756c7469736967000130543a3a4163636f756e74496400012070726f706f73616cfd050140426f783c543a3a50726f706f73616c3e000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0001286175746f5f636c6f736529010110626f6f6c0004206c437265617465732061206d756c74697369672070726f706f73616c002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732e9c2a206070726f706f73616c60202d2050726f706f73616c20746f20626520766f746564206f6e2eac2a206065787069727960202d204f7074696f6e616c2070726f706f73616c206578706972792074696d652e05012a20606175746f5f636c6f736560202d20436c6f73652070726f706f73616c206f6e20726563656976696e6720656e6f7567682072656a65637420766f7465732e3101496620746869732069732031206f7574206f6620606d60206d756c74697369672c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4c617070726f76655f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c753634000518e4417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e38617070726f76655f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c7536340006183101417070726f7665732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea42a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f20617070726f76652e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e4872656a6563745f61735f6964656e746974790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c753634000718e052656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e3472656a6563745f61735f6b65790801206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c7536340008182d0152656a656374732061206d756c74697369672070726f706f73616c207573696e67207468652063616c6c65722773207365636f6e64617279206b65792028604163636f756e74496460292e002c2320417267756d656e7473802a20606d756c746973696760202d204d756c746953696720616464726573732ea02a206070726f706f73616c5f696460202d2050726f706f73616c20696420746f2072656a6563742e010149662071756f72756d20697320726561636865642c207468652070726f706f73616c2077696c6c20626520696d6d6564696174656c792065786563757465642e886163636570745f6d756c74697369675f7369676e65725f61735f6964656e746974790401205f617574685f696428010c7536340009140d01416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206964656e746974792e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e3501235b646570726563617465642873696e6365203d2022362e312e30222c206e6f7465203d20224964656e74697479206261736564207369676e657273206e6f7420737570706f7274656422295d746163636570745f6d756c74697369675f7369676e65725f61735f6b657904011c617574685f696428010c753634000a102901416363657074732061206d756c7469736967207369676e657220617574686f72697a6174696f6e20676976656e20746f207369676e65722773206b657920284163636f756e744964292e002c2320417267756d656e7473ac2a2060617574685f696460202d2041757468206964206f662074686520617574686f72697a6174696f6e2e4c6164645f6d756c74697369675f7369676e65720401187369676e65727d01015c5369676e61746f72793c543a3a4163636f756e7449643e000b102901416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473782a20607369676e657260202d205369676e61746f727920746f206164642e5872656d6f76655f6d756c74697369675f7369676e65720401187369676e65727d01015c5369676e61746f72793c543a3a4163636f756e7449643e000c103d0152656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865206d756c746973696720697473656c662e002c2320417267756d656e7473842a20607369676e657260202d205369676e61746f727920746f2072656d6f76652e806164645f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273790101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000d244501416464732061207369676e657220746f20746865206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865246d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c746920736967842a20607369676e65727360202d205369676e61746f7269657320746f206164642e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e2829608c72656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f720801206d756c7469736967000130543a3a4163636f756e74496400011c7369676e657273790101705665633c5369676e61746f72793c543a3a4163636f756e7449643e3e000e248c52656d6f7665732061207369676e65722066726f6d20746865206d756c74697369672ef054686973206d7573742062652063616c6c6564206279207468652063726561746f72206964656e74697479206f6620746865206d756c74697369672e002c2320417267756d656e74739c2a20606d756c746973696760202d2041646472657373206f6620746865206d756c74697369672e902a20607369676e65727360202d205369676e61746f7269657320746f2072656d6f76652e00202320576569676874a4603930305f3030305f303030202b20335f3030305f303030202a207369676e6572732e6c656e282960506368616e67655f736967735f7265717569726564040134736967735f726571756972656428010c753634000f144d014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c656420627920746865406d756c746973696720697473656c662e002c2320417267756d656e7473d82a2060736967735f726571756972656460202d204e6577206e756d626572206f66207265717569726564207369676e6174757265732e5c6d616b655f6d756c74697369675f7365636f6e646172790401206d756c7469736967000130543a3a4163636f756e7449640010146901416464732061206d756c74697369672061732061207365636f6e64617279206b6579206f662063757272656e7420646964206966207468652063757272656e7420646964206973207468652063726561746f72206f6620746865246d756c74697369672e002c2320417267756d656e7473802a20606d756c746973696760202d206d756c7469207369672061646472657373546d616b655f6d756c74697369675f7072696d6172790801206d756c7469736967000130543a3a4163636f756e7449640001506f7074696f6e616c5f6364645f617574685f6964fc012c4f7074696f6e3c7536343e0011145d01416464732061206d756c746973696720617320746865207072696d617279206b6579206f66207468652063757272656e7420646964206966207468652063757272656e7420444944206973207468652063726561746f72406f6620746865206d756c74697369672e002c2320417267756d656e7473842a20606d756c74695f73696760202d206d756c746920736967206164647265737368657865637574655f7363686564756c65645f70726f706f73616c1001206d756c7469736967000130543a3a4163636f756e74496400012c70726f706f73616c5f696428010c7536340001306d756c74697369675f6469648001284964656e7469747949640001405f70726f706f73616c5f7765696768742001185765696768740012047101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20666f7220657865637574696e67207363686564756c6564206d756c74697369672070726f706f73616c2e806368616e67655f736967735f72657175697265645f7669615f63726561746f720801406d756c74697369675f6163636f756e74000130543a3a4163636f756e74496400014c7369676e6174757265735f726571756972656428010c753634001314b1014368616e67657320746865206e756d626572206f66207369676e6174757265732072657175697265642062792061206d756c74697369672e2054686973206d7573742062652063616c6c6564206279207468652063726561746f72206f6620746865206d756c74697369672e002c2320417267756d656e747379012a20606d756c74697369675f6163636f756e7460202d20546865206163636f756e74206964656e74696669657220285b604163636f756e744964605d2920666f7220746865206d756c7469207369676e6174757265206163636f756e742ef02a20607369676e6174757265735f726571756972656460202d20546865206e756d626572206f66207265717569726564207369676e6174757265732e5c72656d6f76655f63726561746f725f636f6e74726f6c730401406d756c74697369675f6163636f756e74000130543a3a4163636f756e744964001408b50152656d6f766573207468652063726561746f72206162696c69747920746f2063616c6c20606164645f6d756c74697369675f7369676e6572735f7669615f63726561746f72602c206072656d6f76655f6d756c74697369675f7369676e6572735f7669615f63726561746f72609c616e6420606368616e67655f736967735f72657175697265645f7669615f63726561746f72602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1d06083470616c6c65745f6272696467651043616c6c040454000144446368616e67655f636f6e74726f6c6c6572040128636f6e74726f6c6c6572000130543a3a4163636f756e744964000010a04368616e6765732074686520636f6e74726f6c6c6572206163636f756e742061732061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e306368616e67655f61646d696e04011461646d696e000130543a3a4163636f756e744964000110744368616e67657320746865206272696467652061646d696e206b65792e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e3c6368616e67655f74696d656c6f636b04012074696d656c6f636b100138543a3a426c6f636b4e756d626572000210704368616e676573207468652074696d656c6f636b20706572696f642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e18667265657a650003145d01467265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c65206966206974206973206e6f7420616c72656164792066726f7a656e2e205768656e2074686549016272696467652069732066726f7a656e2c20617474656d70746564207472616e73616374696f6e732067657420706f7374706f6e656420696e7374656164206f662067657474696e672068616e646c65642e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e20756e667265657a650004101101556e667265657a6573207472616e73616374696f6e2068616e646c696e6720696e2074686520627269646765206d6f64756c652069662069742069732066726f7a656e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c6368616e67655f6272696467655f6c696d6974080118616d6f756e7418011c42616c616e63650001206475726174696f6e100138543a3a426c6f636b4e756d626572000514684368616e6765732074686520627269646765206c696d6974732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ea42d20604469766973696f6e42795a65726f6020696620606475726174696f6e60206973207a65726f2e586368616e67655f6272696467655f6578656d707465640401206578656d707465642106015c5665633c284964656e7469747949642c20626f6f6c293e0006109c4368616e6765732074686520627269646765206c696d6974206578656d70746564206c6973742e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e58666f7263655f68616e646c655f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e0007142501466f726365732068616e646c696e672061207472616e73616374696f6e20627920627970617373696e672074686520627269646765206c696d697420616e642074696d656c6f636b2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e21012d20604e6f56616c69644364646020696620606272696467655f74782e726563697069656e746020646f6573206e6f74206861766520612076616c69642043444420636c61696d2e5c62617463685f70726f706f73655f6272696467655f74780401286272696467655f7478732906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000824450150726f706f736573206120766563746f72206f6620627269646765207472616e73616374696f6e732e2054686520766563746f722069732070726f63657373656420756e74696c207468652066697273744d0170726f706f73616c2077686963682063617573657320616e206572726f722c20696e207768696368206361736520746865206572726f722069732072657475726e656420616e64207468652072657374206f667070726f706f73616c7320617265206e6f742070726f6365737365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e00202320576569676874b0603530305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829604470726f706f73655f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e000918490150726f706f736573206120627269646765207472616e73616374696f6e2c20776869636820616d6f756e747320746f206d616b696e672061206d756c74697369672070726f706f73616c20666f72207468655501627269646765207472616e73616374696f6e20696620746865207472616e73616374696f6e206973206e6577206f7220617070726f76696e6720616e206578697374696e672070726f706f73616c20696620746865987472616e73616374696f6e2068617320616c7265616479206265656e2070726f706f7365642e00242323204572726f7273c82d2060436f6e74726f6c6c65724e6f74536574602069662060436f6e74726f6c6c6572736020776173206e6f74207365742e4068616e646c655f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e000a18c048616e646c657320616e20617070726f76656420627269646765207472616e73616374696f6e2070726f706f73616c2e00242323204572726f727319012d206042616443616c6c65726020696620606f726967696e60206973206e6f74206053656c663a3a636f6e74726f6c6c657260206f7220206053656c663a3a61646d696e602eec2d206054696d656c6f636b656454786020696620746865207472616e73616374696f6e20737461747573206973206054696d656c6f636b6564602e09012d206050726f706f73616c416c726561647948616e646c65646020696620746865207472616e73616374696f6e20737461747573206973206048616e646c6564602e28667265657a655f7478730401286272696467655f7478732906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000b2088467265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20325f3030305f303030202a206272696467655f7478732e6c656e28296030756e667265657a655f7478730401286272696467655f7478732906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e000c2090556e667265657a657320676976656e20627269646765207472616e73616374696f6e732e8501496620616e79206272696467652074786e20697320616c72656164792068616e646c6564207468656e20746869732066756e6374696f6e2077696c6c206a7573742069676e6f726520697420616e642070726f63657373206e657874206f6e652e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e00202320576569676874b0603430305f3030305f303030202b20375f3030305f303030202a206272696467655f7478732e6c656e2829606868616e646c655f7363686564756c65645f6272696467655f74780401246272696467655f74788501015842726964676554783c543a3a4163636f756e7449643e000d189901526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f2068616e646c652061207363686564756c65642074696d656c6f636b656420627269646765207472616e73616374696f6e2e002023204572726f7273982d20604261644f726967696e6020696620606f726967696e60206973206e6f7420726f6f742ef82d206050726f706f73616c416c726561647948616e646c656460206966207472616e73616374696f6e20737461747573206973206048616e646c6564602ebc2d206046726f7a656e547860206966207472616e73616374696f6e20737461747573206973206046726f7a656e602e406164645f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000e104c416464206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e4c72656d6f76655f667265657a655f61646d696e040130667265657a655f61646d696e000130543a3a4163636f756e744964000f105852656d6f7665206120667265657a652061646d696e2e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742e2872656d6f76655f7478730401286272696467655f7478732906016c5665633c42726964676554783c543a3a4163636f756e7449643e3e0010148452656d6f766520676976656e20627269646765207472616e73616374696f6e732e00242323204572726f7273e02d206042616441646d696e6020696620606f726967696e60206973206e6f74206053656c663a3a61646d696e282960206163636f756e742ed02d20604e6f7446726f7a656e60206966206120747820696e20606272696467655f74787360206973206e6f742066726f7a656e2e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e21060000022506002506000004088029010029060000028501002d06103870616c6c65745f7374616b696e671870616c6c65741870616c6c65741043616c6c04045400018410626f6e640c0128636f6e74726f6c6c6572790501504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dd01013042616c616e63654f663c543e00011470617965653106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e00003c610154616b6520746865206f726967696e206163636f756e74206173206120737461736820616e64206c6f636b207570206076616c756560206f66206974732062616c616e63652e2060636f6e74726f6c6c6572602077696c6c80626520746865206163636f756e74207468617420636f6e74726f6c732069742e002d016076616c756560206d757374206265206d6f7265207468616e2074686520606d696e696d756d5f62616c616e636560207370656369666965642062792060543a3a43757272656e6379602e002101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20627920746865207374617368206163636f756e742e003c456d6974732060426f6e646564602e34232320436f6d706c6578697479d02d20496e646570656e64656e74206f662074686520617267756d656e74732e204d6f64657261746520636f6d706c65786974792e1c2d204f2831292e642d20546872656520657874726120444220656e74726965732e004d014e4f54453a2054776f206f66207468652073746f726167652077726974657320286053656c663a3a626f6e646564602c206053656c663a3a7061796565602920617265205f6e657665725f20636c65616e65643d01756e6c6573732074686520606f726967696e602066616c6c732062656c6f77205f6578697374656e7469616c206465706f7369745f20616e6420676574732072656d6f76656420617320647573742e28626f6e645f65787472610401386d61785f6164646974696f6e616cdd01013042616c616e63654f663c543e000138610141646420736f6d6520657874726120616d6f756e742074686174206861766520617070656172656420696e207468652073746173682060667265655f62616c616e63656020696e746f207468652062616c616e636520757030666f72207374616b696e672e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e004d01557365207468697320696620746865726520617265206164646974696f6e616c2066756e647320696e20796f7572207374617368206163636f756e74207468617420796f75207769736820746f20626f6e642e5501556e6c696b65205b60626f6e64605d2853656c663a3a626f6e6429206f72205b60756e626f6e64605d2853656c663a3a756e626f6e642920746869732066756e6374696f6e20646f6573206e6f7420696d706f7365bc616e79206c696d69746174696f6e206f6e2074686520616d6f756e7420746861742063616e2062652061646465642e003c456d6974732060426f6e646564602e0034232320436f6d706c6578697479e42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e1c2d204f2831292e18756e626f6e6404011476616c7565dd01013042616c616e63654f663c543e00024c51015363686564756c65206120706f7274696f6e206f662074686520737461736820746f20626520756e6c6f636b656420726561647920666f72207472616e73666572206f75742061667465722074686520626f6e64fc706572696f6420656e64732e2049662074686973206c656176657320616e20616d6f756e74206163746976656c7920626f6e646564206c657373207468616e2101543a3a43757272656e63793a3a6d696e696d756d5f62616c616e636528292c207468656e20697420697320696e6372656173656420746f207468652066756c6c20616d6f756e742e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0045014f6e63652074686520756e6c6f636b20706572696f6420697320646f6e652c20796f752063616e2063616c6c206077697468647261775f756e626f6e6465646020746f2061637475616c6c79206d6f7665bc7468652066756e6473206f7574206f66206d616e6167656d656e7420726561647920666f72207472616e736665722e0031014e6f206d6f7265207468616e2061206c696d69746564206e756d626572206f6620756e6c6f636b696e67206368756e6b73202873656520604d6178556e6c6f636b696e674368756e6b736029410163616e20636f2d657869737473206174207468652073616d652074696d652e20496620746865726520617265206e6f20756e6c6f636b696e67206368756e6b7320736c6f747320617661696c61626c6545015b6043616c6c3a3a77697468647261775f756e626f6e646564605d2069732063616c6c656420746f2072656d6f766520736f6d65206f6620746865206368756e6b732028696620706f737369626c65292e00390149662061207573657220656e636f756e74657273207468652060496e73756666696369656e74426f6e6460206572726f72207768656e2063616c6c696e6720746869732065787472696e7369632c1901746865792073686f756c642063616c6c20606368696c6c6020666972737420696e206f7264657220746f206672656520757020746865697220626f6e6465642066756e64732e0044456d6974732060556e626f6e646564602e009453656520616c736f205b6043616c6c3a3a77697468647261775f756e626f6e646564605d2e4477697468647261775f756e626f6e6465640401486e756d5f736c617368696e675f7370616e7310010c753332000338290152656d6f766520616e7920756e6c6f636b6564206368756e6b732066726f6d207468652060756e6c6f636b696e67602071756575652066726f6d206f7572206d616e6167656d656e742e0031015468697320657373656e7469616c6c7920667265657320757020746861742062616c616e636520746f206265207573656420627920746865207374617368206163636f756e7420746f20646f4877686174657665722069742077616e74732e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722e0048456d697473206057697468647261776e602e006853656520616c736f205b6043616c6c3a3a756e626f6e64605d2e0034232320436f6d706c6578697479d84f285329207768657265205320697320746865206e756d626572206f6620736c617368696e67207370616e7320746f2072656d6f766509014e4f54453a2057656967687420616e6e6f746174696f6e20697320746865206b696c6c207363656e6172696f2c20776520726566756e64206f74686572776973652e2076616c696461746504011470726566733506013856616c696461746f725072656673000414e44465636c617265207468652064657369726520746f2076616c696461746520666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e206e6f6d696e61746504011c746172676574733d0601645665633c4163636f756e7449644c6f6f6b75704f663c543e3e0005280d014465636c617265207468652064657369726520746f206e6f6d696e6174652060746172676574736020666f7220746865206f726967696e20636f6e74726f6c6c65722e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0034232320436f6d706c65786974792d012d20546865207472616e73616374696f6e277320636f6d706c65786974792069732070726f706f7274696f6e616c20746f207468652073697a65206f662060746172676574736020284e29050177686963682069732063617070656420617420436f6d7061637441737369676e6d656e74733a3a4c494d49542028543a3a4d61784e6f6d696e6174696f6e73292ed42d20426f74682074686520726561647320616e642077726974657320666f6c6c6f7720612073696d696c6172207061747465726e2e146368696c6c000628c44465636c617265206e6f2064657369726520746f206569746865722076616c6964617465206f72206e6f6d696e6174652e00d8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0034232320436f6d706c6578697479e42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e502d20436f6e7461696e73206f6e6520726561642ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e247365745f706179656504011470617965653106017c52657761726444657374696e6174696f6e3c543a3a4163636f756e7449643e000730b42852652d2973657420746865207061796d656e742074617267657420666f72206120636f6e74726f6c6c65722e005101456666656374732077696c6c2062652066656c7420696e7374616e746c792028617320736f6f6e20617320746869732066756e6374696f6e20697320636f6d706c65746564207375636365737366756c6c79292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2062792074686520636f6e74726f6c6c65722c206e6f74207468652073746173682e0034232320436f6d706c6578697479182d204f283129e42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e242d2d2d2d2d2d2d2d2d387365745f636f6e74726f6c6c6572040128636f6e74726f6c6c6572790501504163636f756e7449644c6f6f6b75704f663c543e00082c8c2852652d297365742074686520636f6e74726f6c6c6572206f6620612073746173682e005101456666656374732077696c6c2062652066656c7420696e7374616e746c792028617320736f6f6e20617320746869732066756e6374696f6e20697320636f6d706c65746564207375636365737366756c6c79292e005101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f206279207468652073746173682c206e6f742074686520636f6e74726f6c6c65722e0034232320436f6d706c6578697479104f283129e42d20496e646570656e64656e74206f662074686520617267756d656e74732e20496e7369676e69666963616e7420636f6d706c65786974792e942d20436f6e7461696e732061206c696d69746564206e756d626572206f662072656164732ec42d2057726974657320617265206c696d6974656420746f2074686520606f726967696e60206163636f756e74206b65792e4c7365745f76616c696461746f725f636f756e7404010c6e6577bd04010c75333200091890536574732074686520696465616c206e756d626572206f662076616c696461746f72732e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e0034232320436f6d706c6578697479104f28312960696e6372656173655f76616c696461746f725f636f756e740401286164646974696f6e616cbd04010c753332000a1ce4496e6372656d656e74732074686520696465616c206e756d626572206f662076616c696461746f7273207570746f206d6178696d756d206f668c60456c656374696f6e50726f7669646572426173653a3a4d617857696e6e657273602e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e0034232320436f6d706c65786974799853616d65206173205b6053656c663a3a7365745f76616c696461746f725f636f756e74605d2e547363616c655f76616c696461746f725f636f756e74040118666163746f724106011c50657263656e74000b1c0d015363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f72207570746f206d6178696d756d206f668c60456c656374696f6e50726f7669646572426173653a3a4d617857696e6e657273602e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e0034232320436f6d706c65786974799853616d65206173205b6053656c663a3a7365745f76616c696461746f725f636f756e74605d2e686164645f7065726d697373696f6e65645f76616c696461746f720801206964656e746974798001284964656e746974794964000138696e74656e6465645f636f756e744506012c4f7074696f6e3c7533323e000c1c0d015363616c652075702074686520696465616c206e756d626572206f662076616c696461746f7273206279206120666163746f72207570746f206d6178696d756d206f668c60456c656374696f6e50726f7669646572426173653a3a4d617857696e6e657273602e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e0034232320436f6d706c65786974799853616d65206173205b6053656c663a3a7365745f76616c696461746f725f636f756e74605d2e7472656d6f76655f7065726d697373696f6e65645f76616c696461746f720401206964656e746974798001284964656e746974794964000d1ca90152656d6f766520616e206964656e746974792066726f6d2074686520706f6f6c206f66202877616e6e616265292076616c696461746f72206964656e7469746965732e204566666563747320617265206b6e6f776e20696e20746865206e6578742073657373696f6e2e19015374616b696e67206d6f64756c6520636865636b7320605065726d697373696f6e65644964656e746974796020746f20656e737572652076616c696461746f7273206861766560636f6d706c65746564204b594220636f6d706c69616e6365002c2320417267756d656e7473f02a206f726967696e205265717569726564206f726967696e20666f722072656d6f76696e67206120706f74656e7469616c2076616c696461746f722e882a206964656e746974792056616c696461746f722773204964656e7469747949642e7876616c69646174655f6364645f6578706972795f6e6f6d696e61746f727304011c74617267657473f401445665633c543a3a4163636f756e7449643e000e14a056616c696461746520746865206e6f6d696e61746f727320434444206578706972792074696d652e005901496620616e206163636f756e742066726f6d206120676976656e20736574206f662061646472657373206973206e6f6d696e6174696e67207468656e20636865636b2074686520434444206578706972792074696d654d016f6620697420616e642069662069742069732065787069726564207468656e20746865206163636f756e742073686f756c6420626520756e626f6e64656420616e642072656d6f7665642066726f6d207468654c6e6f6d696e6174696e672070726f636573732e487365745f636f6d6d697373696f6e5f63617004011c6e65775f6361709d01011c50657262696c6c000f1421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e587365745f6d696e5f626f6e645f7468726573686f6c640401246e65775f76616c756518013042616c616e63654f663c543e00101421014368616e67657320636f6d6d697373696f6e2072617465207768696368206170706c69657320746f20616c6c2076616c696461746f72732e204f6e6c7920476f7665726e616e6365a8636f6d6d697474656520697320616c6c6f77656420746f206368616e676520746869732076616c75652e002c2320417267756d656e74738c2a20606e65775f6361706020746865206e657720636f6d6d697373696f6e206361702e34666f7263655f6e6f5f65726173001134ac466f72636520746865726520746f206265206e6f206e6577206572617320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002423205761726e696e6700190154686520656c656374696f6e2070726f6365737320737461727473206d756c7469706c6520626c6f636b73206265666f72652074686520656e64206f6620746865206572612e3901546875732074686520656c656374696f6e2070726f63657373206d6179206265206f6e676f696e67207768656e20746869732069732063616c6c65642e20496e2074686973206361736520746865dc656c656374696f6e2077696c6c20636f6e74696e756520756e74696c20746865206e65787420657261206973207472696767657265642e0034232320436f6d706c65786974793c2d204e6f20617267756d656e74732e382d205765696768743a204f28312934666f7263655f6e65775f6572610012384901466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f6620746865206e6578742073657373696f6e2e20416674657220746869732c2069742077696c6c2062659c726573657420746f206e6f726d616c20286e6f6e2d666f7263656429206265686176696f75722e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002423205761726e696e6700190154686520656c656374696f6e2070726f6365737320737461727473206d756c7469706c6520626c6f636b73206265666f72652074686520656e64206f6620746865206572612e4901496620746869732069732063616c6c6564206a757374206265666f72652061206e657720657261206973207472696767657265642c2074686520656c656374696f6e2070726f63657373206d6179206e6f748c6861766520656e6f75676820626c6f636b7320746f20676574206120726573756c742e0034232320436f6d706c65786974793c2d204e6f20617267756d656e74732e382d205765696768743a204f283129447365745f696e76756c6e657261626c6573040134696e76756c6e657261626c6573f401445665633c543a3a4163636f756e7449643e00130cc8536574207468652076616c696461746f72732077686f2063616e6e6f7420626520736c61736865642028696620616e79292e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e34666f7263655f756e7374616b650801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c75333200140c0901466f72636520612063757272656e74207374616b657220746f206265636f6d6520636f6d706c6574656c7920756e7374616b65642c20696d6d6564696174656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e50666f7263655f6e65775f6572615f616c776179730015240101466f72636520746865726520746f2062652061206e6577206572612061742074686520656e64206f662073657373696f6e7320696e646566696e6974656c792e0084546865206469737061746368206f726967696e206d75737420626520526f6f742e002423205761726e696e6700190154686520656c656374696f6e2070726f6365737320737461727473206d756c7469706c6520626c6f636b73206265666f72652074686520656e64206f6620746865206572612e4901496620746869732069732063616c6c6564206a757374206265666f72652061206e657720657261206973207472696767657265642c2074686520656c656374696f6e2070726f63657373206d6179206e6f748c6861766520656e6f75676820626c6f636b7320746f20676574206120726573756c742e5463616e63656c5f64656665727265645f736c61736808010c657261100120457261496e646578000134736c6173685f696e64696365736d0401205665633c7533323e0016149443616e63656c20656e6163746d656e74206f66206120646566657272656420736c6173682e009843616e2062652063616c6c6564206279207468652060543a3a41646d696e4f726967696e602e000101506172616d65746572733a2065726120616e6420696e6469636573206f662074686520736c617368657320666f7220746861742065726120746f206b696c6c2e387061796f75745f7374616b65727308013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e64657800172c0d01506179206f757420616c6c20746865207374616b65727320626568696e6420612073696e676c652076616c696461746f7220666f7220612073696e676c65206572612e0049012d206076616c696461746f725f73746173686020697320746865207374617368206163636f756e74206f66207468652076616c696461746f722e205468656972206e6f6d696e61746f72732c20757020746f2501202060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602c2077696c6c20616c736f207265636569766520746865697220726577617264732e31012d206065726160206d617920626520616e7920657261206265747765656e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e005501546865206f726967696e206f6620746869732063616c6c206d757374206265205f5369676e65645f2e20416e79206163636f756e742063616e2063616c6c20746869732066756e6374696f6e2c206576656e206966746974206973206e6f74206f6e65206f6620746865207374616b6572732e0034232320436f6d706c6578697479b82d204174206d6f7374204f284d61784e6f6d696e61746f72526577617264656450657256616c696461746f72292e187265626f6e6404011476616c7565dd01013042616c616e63654f663c543e00181cdc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e00d4546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722e0034232320436f6d706c6578697479d02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73882d20426f756e64656420627920604d6178556e6c6f636b696e674368756e6b73602e447365745f686973746f72795f64657074680801446e65775f686973746f72795f6465707468bd040120457261496e6465780001446572615f6974656d735f64656c65746564bd04010c75333200191cdc5265626f6e64206120706f7274696f6e206f6620746865207374617368207363686564756c656420746f20626520756e6c6f636b65642e00d4546865206469737061746368206f726967696e206d757374206265207369676e65642062792074686520636f6e74726f6c6c65722e0034232320436f6d706c6578697479d02d2054696d6520636f6d706c65786974793a204f284c292c207768657265204c20697320756e6c6f636b696e67206368756e6b73882d20426f756e64656420627920604d6178556e6c6f636b696e674368756e6b73602e28726561705f73746173680801147374617368000130543a3a4163636f756e7449640001486e756d5f736c617368696e675f7370616e7310010c753332001a305d0152656d6f766520616c6c2064617461207374727563747572657320636f6e6365726e696e672061207374616b65722f7374617368206f6e636520697420697320617420612073746174652077686572652069742063616e0501626520636f6e736964657265642060647573746020696e20746865207374616b696e672073797374656d2e2054686520726571756972656d656e7473206172653a000501312e207468652060746f74616c5f62616c616e636560206f66207468652073746173682069732062656c6f77206578697374656e7469616c206465706f7369742e1101322e206f722c2074686520606c65646765722e746f74616c60206f66207468652073746173682069732062656c6f77206578697374656e7469616c206465706f7369742e00550154686520666f726d65722063616e2068617070656e20696e206361736573206c696b65206120736c6173683b20746865206c6174746572207768656e20612066756c6c7920756e626f6e646564206163636f756e7409016973207374696c6c20726563656976696e67207374616b696e67207265776172647320696e206052657761726444657374696e6174696f6e3a3a5374616b6564602e00310149742063616e2062652063616c6c656420627920616e796f6e652c206173206c6f6e672061732060737461736860206d65657473207468652061626f766520726571756972656d656e74732e00dc526566756e647320746865207472616e73616374696f6e20666565732075706f6e207375636365737366756c20657865637574696f6e2e607375626d69745f656c656374696f6e5f736f6c7574696f6e14011c77696e6e6572734906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163744d060148436f6d7061637441737369676e6d656e747300011473636f726519070134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a651d070130456c656374696f6e53697a65001bc4e05375626d697420616e20656c656374696f6e20726573756c7420746f2074686520636861696e2e2049662074686520736f6c7574696f6e3a0030312e2069732076616c69642e1101322e206861732061206265747465722073636f7265207468616e206120706f74656e7469616c6c79206578697374696e6720736f6c7574696f6e206f6e20636861696e2e00807468656e2c2069742077696c6c206265205f7075745f206f6e20636861696e2e00a84120736f6c7574696f6e20636f6e7369737473206f662074776f20706965636573206f6620646174613a00f0312e206077696e6e657273603a206120666c617420766563746f72206f6620616c6c207468652077696e6e657273206f662074686520726f756e642e4d01322e206061737369676e6d656e7473603a2074686520636f6d706163742076657273696f6e206f6620616e2061737369676e6d656e7420766563746f72207468617420656e636f6465732074686520656467652c202020776569676874732e001d01426f7468206f66207768696368206d617920626520636f6d7075746564207573696e67205f70687261676d656e5f2c206f7220616e79206f7468657220616c676f726974686d2e00a44164646974696f6e616c6c792c20746865207375626d6974746572206d7573742070726f766964653a00c42d20546865206073636f7265602074686174207468657920636c61696d20746865697220736f6c7574696f6e206861732e004901426f74682076616c696461746f727320616e64206e6f6d696e61746f72732077696c6c20626520726570726573656e74656420627920696e646963657320696e2074686520736f6c7574696f6e2e205468651901696e64696365732073686f756c6420726573706563742074686520636f72726573706f6e64696e6720747970657320285b6056616c696461746f72496e646578605d20616e642d015b604e6f6d696e61746f72496e646578605d292e204d6f72656f7665722c20746865792073686f756c642062652076616c6964207768656e207573656420746f20696e64657820696e746f4d015b60536e617073686f7456616c696461746f7273605d20616e64205b60536e617073686f744e6f6d696e61746f7273605d2e20416e7920696e76616c696420696e6465782077696c6c206361757365207468655d01736f6c7574696f6e20746f2062652072656a65637465642e2054686573652074776f2073746f72616765206974656d73206172652073657420647572696e672074686520656c656374696f6e2077696e646f7720616e64946d6179206265207573656420746f2064657465726d696e652074686520696e64696365732e005c4120736f6c7574696f6e2069732076616c69642069663a00e0302e204974206973207375626d6974746564207768656e205b60457261456c656374696f6e537461747573605d20697320604f70656e602ef4312e2049747320636c61696d65642073636f726520697320657175616c20746f207468652073636f726520636f6d7075746564206f6e2d636861696e2ea8322e2050726573656e74732074686520636f7272656374206e756d626572206f662077696e6e6572732e5101332e20416c6c20696e6465786573206d7573742062652076616c7565206163636f7264696e6720746f2074686520736e617073686f7420766563746f72732e20416c6c20656467652076616c756573206d7573745901202020616c736f20626520636f727265637420616e642073686f756c64206e6f74206f766572666c6f7720746865206772616e756c6172697479206f662074686520726174696f20747970652028692e652e203235363c2020206f722062696c6c696f6e292e0901342e20466f72206561636820656467652c20616c6c2074617267657473206172652061637475616c6c79206e6f6d696e617465642062792074686520766f7465722e68352e2048617320636f72726563742073656c662d766f7465732e00bc4120736f6c7574696f6e732073636f726520697320636f6e736973746564206f66203320706172616d65746572733a006101312e20606d696e207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d6178696d697a65642e6101322e206073756d207b20737570706f72742e746f74616c207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265206d696e696d697a65642e3d01332e206073756d207b20737570706f72742e746f74616c5e32207d6020666f72206561636820737570706f7274206f6620612077696e6e65722e20546869732076616c75652073686f756c64206265982020206d696e696d697a65642028746f20656e73757265206c6573732076617269616e636529002823203c7765696768743e1501546865207472616e73616374696f6e20697320617373756d656420746f20626520746865206c6f6e6765737420706174682c20612062657474657220736f6c7574696f6e2ea020202d20496e697469616c20736f6c7574696f6e20697320616c6d6f7374207468652073616d652e410120202d20576f72736520736f6c7574696f6e20697320726574726163656420696e207072652d64697370617463682d636865636b73207768696368207365747320697473206f776e207765696768742e2c23203c2f7765696768743e847375626d69745f656c656374696f6e5f736f6c7574696f6e5f756e7369676e656414011c77696e6e6572734906014c5665633c56616c696461746f72496e6465783e00011c636f6d706163744d060148436f6d7061637441737369676e6d656e747300011473636f726519070134456c656374696f6e53636f726500010c657261100120457261496e64657800011073697a651d070130456c656374696f6e53697a65001c24bc556e7369676e65642076657273696f6e206f6620607375626d69745f656c656374696f6e5f736f6c7574696f6e602e0059014e6f746520746861742074686973206d757374207061737320746865205b6056616c6964617465556e7369676e6564605d20636865636b207768696368206f6e6c7920616c6c6f7773207472616e73616374696f6e735d0166726f6d20746865206c6f63616c206e6f646520746f20626520696e636c756465642e20496e206f7468657220776f7264732c206f6e6c792074686520626c6f636b20617574686f722063616e20696e636c7564652061647472616e73616374696f6e20696e2074686520626c6f636b2e002823203c7765696768743e84536565205b607375626d69745f656c656374696f6e5f736f6c7574696f6e605d2e2c23203c2f7765696768743e607061796f75745f7374616b6572735f62795f73797374656d08013c76616c696461746f725f7374617368000130543a3a4163636f756e74496400010c657261100120457261496e646578001d006c6368616e67655f736c617368696e675f616c6c6f7765645f666f7204013c736c617368696e675f737769746368a1010138536c617368696e67537769746368001e14690153776974636820736c617368696e6720737461747573206f6e20746865206261736973206f6620676976656e2060536c617368696e67537769746368602e2043616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473742a206f726967696e202d204163636f756e744964206f6620726f6f742ee02a20736c617368696e675f737769746368202d20537769746368207573656420746f2073657420746865207461726765747320666f722073b07570646174655f7065726d697373696f6e65645f76616c696461746f725f696e74656e6465645f636f756e740801206964656e746974798001284964656e7469747949640001486e65775f696e74656e6465645f636f756e7410010c753332001f18d05570646174652074686520696e74656e6465642076616c696461746f7220636f756e7420666f72206120676976656e204449442e002c2320417267756d656e747331012a206f726967696e207768696368206d75737420626520746865207265717569726564206f726967696e20666f7220616464696e67206120706f74656e7469616c2076616c696461746f722e842a206964656e7469747920746f2061646420617320612076616c696461746f722eb42a206e65775f696e74656e6465645f636f756e74204e65772076616c7565206f6620696e74656e64656420636f546368696c6c5f66726f6d5f676f7665726e616e63650801206964656e746974798001284964656e74697479496400012873746173685f6b657973f401445665633c543a3a4163636f756e7449643e00203884474320666f72636566756c6c79206368696c6c7320612076616c696461746f722ed8456666656374732077696c6c2062652066656c742061742074686520626567696e6e696e67206f6620746865206e657874206572612e0901416e642c2069742063616e206265206f6e6c792063616c6c6564207768656e205b60457261456c656374696f6e537461747573605d2069732060436c6f736564602e002c2320417267756d656e7473702a206f726967696e207768696368206d75737420626520612047432e01012a206964656e74697479206d757374206265207065726d697373696f6e656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e15012a2073746173685f6b65797320636f6e7461696e7320746865207365636f6e64617279206b657973206f6620746865207065726d697373696f6e6564206964656e74697479002023204572726f7273b42a20604261644f726967696e6020546865206f726967696e20776173206e6f742061204743206d656d6265722e91012a206043616c6c4e6f74416c6c6f77656460205468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642ecc2a20604e6f7445786973747360205065726d697373696f6e65642076616c696461746f7220646f65736e27742065786973742edc2a20604e6f74537461736860204e6f742061207374617368206163636f756e7420666f7220746865207065726d697373696f6e65642069042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3106083870616c6c65745f7374616b696e674452657761726444657374696e6174696f6e04244163636f756e74496401000110185374616b656400000014537461736800010028436f6e74726f6c6c65720002001c4163636f756e7404000001244163636f756e744964000300003506083870616c6c65745f7374616b696e673856616c696461746f7250726566730000080128636f6d6d697373696f6e3906011c50657262696c6c00011c626c6f636b656429010110626f6f6c000039060000069d01003d0600000279050041060c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000450604184f7074696f6e04045401100108104e6f6e6500000010536f6d65040010000001000049060000026103004d06083870616c6c65745f7374616b696e6748436f6d7061637441737369676e6d656e74730000400118766f74657331510600000118766f746573325d0600000118766f74657333710600000118766f746573347d0600000118766f74657335890600000118766f74657336950600000118766f74657337a10600000118766f74657338ad0600000118766f74657339b9060000011c766f7465733130c5060000011c766f7465733131d1060000011c766f7465733132dd060000011c766f7465733133e9060000011c766f7465733134f5060000011c766f746573313501070000011c766f74657331360d070000005106000002550600550600000408bd0459060059060000066103005d0600000261060061060000040cbd046506590600650600000408590669060069060000066d06006d060c3473705f61726974686d65746963287065725f7468696e677318506572553136000004006103010c7531360000710600000275060075060000040cbd0479065906007906000003020000006506007d0600000281060081060000040cbd04850659060085060000030300000065060089060000028d06008d060000040cbd049106590600910600000304000000650600950600000299060099060000040cbd049d065906009d0600000305000000650600a106000002a50600a5060000040cbd04a906590600a90600000306000000650600ad06000002b10600b1060000040cbd04b506590600b50600000307000000650600b906000002bd0600bd060000040cbd04c106590600c10600000308000000650600c506000002c90600c9060000040cbd04cd06590600cd0600000309000000650600d106000002d50600d5060000040cbd04d906590600d9060000030a000000650600dd06000002e10600e1060000040cbd04e506590600e5060000030b000000650600e906000002ed0600ed060000040cbd04f106590600f1060000030c000000650600f506000002f90600f9060000040cbd04fd06590600fd060000030d000000650600010700000205070005070000040cbd04090759060009070000030e0000006506000d0700000211070011070000040cbd04150759060015070000030f0000006506001907084473705f6e706f735f656c656374696f6e7334456c656374696f6e53636f726500000c01346d696e696d616c5f7374616b6518013c457874656e64656442616c616e636500012473756d5f7374616b6518013c457874656e64656442616c616e636500014473756d5f7374616b655f7371756172656418013c457874656e64656442616c616e636500001d070c3870616c6c65745f7374616b696e6714747970657330456c656374696f6e53697a65000008012876616c696461746f72735906013856616c696461746f72496e6465780001286e6f6d696e61746f7273bd0401384e6f6d696e61746f72496e646578000021070c3870616c6c65745f73657373696f6e1870616c6c65741043616c6c040454000108207365745f6b6579730801106b6579732507011c543a3a4b65797300011470726f6f6630011c5665633c75383e000024e453657473207468652073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c657220746f20606b657973602e1d01416c6c6f777320616e206163636f756e7420746f20736574206974732073657373696f6e206b6579207072696f7220746f206265636f6d696e6720612076616c696461746f722ec05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e00d0546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265207369676e65642e0034232320436f6d706c657869747959012d20604f283129602e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f662060543a3a4b6579733a3a6b65795f69647328296020776869636820697320202066697865642e2870757267655f6b657973000130c852656d6f76657320616e792073657373696f6e206b6579287329206f66207468652066756e6374696f6e2063616c6c65722e00c05468697320646f65736e27742074616b652065666665637420756e74696c20746865206e6578742073657373696f6e2e005501546865206469737061746368206f726967696e206f6620746869732066756e6374696f6e206d757374206265205369676e656420616e6420746865206163636f756e74206d757374206265206569746865722062655d01636f6e7665727469626c6520746f20612076616c696461746f72204944207573696e672074686520636861696e2773207479706963616c2061646472657373696e672073797374656d20287468697320757375616c6c7951016d65616e73206265696e67206120636f6e74726f6c6c6572206163636f756e7429206f72206469726563746c7920636f6e7665727469626c6520696e746f20612076616c696461746f722049442028776869636894757375616c6c79206d65616e73206265696e672061207374617368206163636f756e74292e0034232320436f6d706c65786974793d012d20604f2831296020696e206e756d626572206f66206b65792074797065732e2041637475616c20636f737420646570656e6473206f6e20746865206e756d626572206f66206c656e677468206f6698202060543a3a4b6579733a3a6b65795f6964732829602077686963682069732066697865642e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e25070c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d652c53657373696f6e4b657973000010011c6772616e647061bd0101d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300011062616265110501c43c42616265206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000124696d5f6f6e6c696e65c90101d43c496d4f6e6c696e65206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c696300014c617574686f726974795f646973636f76657279290701fc3c417574686f72697479446973636f76657279206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000029070c5873705f617574686f726974795f646973636f766572790c617070185075626c696300000400cd01013c737232353531393a3a5075626c696300002d070c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66310701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6665050140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66310701bc426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20543a3a426c6f636b4e756d6265723e3e00013c6b65795f6f776e65725f70726f6f6665050140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100138543a3a426c6f636b4e756d62657200016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100138543a3a426c6f636b4e756d6265720002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3107085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f66080448012c044e0110000801187365745f6964280114536574496400013065717569766f636174696f6e3507014845717569766f636174696f6e3c482c204e3e00003507085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e080448012c044e011001081c507265766f7465040039070139016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265766f74653c482c204e3e2c0a417574686f726974795369676e61747572653e00000024507265636f6d6d697404004d070141016772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c206772616e6470613a3a507265636f6d6d69743c482c204e3e2c0a417574686f726974795369676e61747572653e000100003907084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401bd010456013d07045301410700100130726f756e645f6e756d62657228010c7536340001206964656e74697479bd010108496400011466697273744907011828562c2053290001187365636f6e644907011828562c20532900003d07084066696e616c6974795f6772616e6470611c507265766f7465080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e000041070c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e61747572650000040045070148656432353531393a3a5369676e6174757265000045070c1c73705f636f72651c65643235353139245369676e617475726500000400290201205b75383b2036345d00004907000004083d074107004d07084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401bd010456015107045301410700100130726f756e645f6e756d62657228010c7536340001206964656e74697479bd010108496400011466697273745507011828562c2053290001187365636f6e645507011828562c20532900005107084066696e616c6974795f6772616e64706124507265636f6d6d6974080448012c044e01100008012c7461726765745f686173682c0104480001347461726765745f6e756d6265721001044e0000550700000408510741070059070c4070616c6c65745f696d5f6f6e6c696e651870616c6c65741043616c6c040454000104246865617274626561740801246865617274626561745d0701644865617274626561743c543a3a426c6f636b4e756d6265723e0001247369676e6174757265710701bc3c543a3a417574686f7269747949642061732052756e74696d654170705075626c69633e3a3a5369676e617475726500001438232320436f6d706c65786974793a59012d20604f284b202b20452960207768657265204b206973206c656e677468206f6620604b6579736020286865617274626561742e76616c696461746f72735f6c656e2920616e642045206973206c656e677468206f66b02020606865617274626561742e6e6574776f726b5f73746174652e65787465726e616c5f61646472657373608820202d20604f284b29603a206465636f64696e67206f66206c656e67746820604b60ac20202d20604f284529603a206465636f64696e672f656e636f64696e67206f66206c656e67746820604560042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e5d07084070616c6c65745f696d5f6f6e6c696e6524486561727462656174042c426c6f636b4e756d626572011000140130626c6f636b5f6e756d62657210012c426c6f636b4e756d6265720001346e6574776f726b5f7374617465610701484f70617175654e6574776f726b537461746500013473657373696f6e5f696e64657810013053657373696f6e496e64657800013c617574686f726974795f696e64657810012441757468496e64657800013876616c696461746f72735f6c656e10010c753332000061070c1c73705f636f7265206f6666636861696e484f70617175654e6574776f726b5374617465000008011c706565725f6964650701304f706171756550656572496400014865787465726e616c5f616464726573736573690701505665633c4f70617175654d756c7469616464723e00006507081c73705f636f7265304f70617175655065657249640000040030011c5665633c75383e000069070000026d07006d070c1c73705f636f7265206f6666636861696e3c4f70617175654d756c7469616464720000040030011c5665633c75383e00007107104070616c6c65745f696d5f6f6e6c696e651c737232353531392c6170705f73723235353139245369676e61747572650000040075070148737232353531393a3a5369676e6174757265000075070c1c73705f636f72651c73723235353139245369676e617475726500000400290201205b75383b2036345d00007907082c70616c6c65745f7375646f1043616c6c040454000110107375646f04011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000028350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e547375646f5f756e636865636b65645f77656967687408011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00011c5f776569676874200118576569676874000128350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292ecc2d2054686520776569676874206f6620746869732063616c6c20697320646566696e6564206279207468652063616c6c65722e2c23203c2f7765696768743e1c7365745f6b657904010c6e65777905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f75726365000224710141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f206b65792e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e402d204f6e65204442206368616e67652e2c23203c2f7765696768743e1c7375646f5f617308010c77686f7905018c3c543a3a4c6f6f6b7570206173205374617469634c6f6f6b75703e3a3a536f7572636500011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00032c4d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002823203c7765696768743e1c2d204f2831292e602d204c696d697465642073746f726167652072656164732e5c2d204f6e6520444220777269746520286576656e74292ec42d20576569676874206f662064657269766174697665206063616c6c6020657865637574696f6e202b2031302c3030302e2c23203c2f7765696768743e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e7d07083070616c6c65745f61737365741043616c6c0404540001803c72656769737465725f7469636b65720401187469636b6572a801185469636b657200002405015265676973746572732061206e6577207469636b6572206f7220657874656e64732076616c6964697479206f6620616e206578697374696e67207469636b65722e11014e423a205469636b65722076616c696469747920646f6573206e6f742067657420636172727920666f7277617264207768656e2072656e6577696e67207469636b65722e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e782a20607469636b657260207469636b657220746f2072656769737465722e003423205065726d697373696f6e731c2a204173736574586163636570745f7469636b65725f7472616e7366657204011c617574685f696428010c75363400013068416363657074732061207469636b6572207472616e736665722e002d01436f6e73756d65732074686520617574686f72697a6174696f6e2060617574685f6964602028736565206070616c6c65745f6964656e746974793a3a636f6e73756d655f6175746860292e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ef82a2060617574685f69646020417574686f72697a6174696f6e204944206f66207469636b6572207472616e7366657220617574686f72697a6174696f6e2e00242323204572726f727369012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f696460206973206e6f7420612076616c6964207469636b6574207472616e7366657220617574686f72697a6174696f6e2e007c6163636570745f61737365745f6f776e6572736869705f7472616e7366657204011c617574685f696428010c753634000218ec546869732066756e6374696f6e206973207573656420746f20616363657074206120746f6b656e206f776e657273686970207472616e736665722e25014e423a20546f2072656a65637420746865207472616e736665722c2063616c6c2072656d6f766520617574682066756e6374696f6e20696e206964656e74697479206d6f64756c652e002c2320417267756d656e7473c9012a20606f726967696e6020497420636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e2d012a2060617574685f69646020417574686f72697a6174696f6e204944206f662074686520746f6b656e206f776e657273686970207472616e7366657220617574686f72697a6174696f6e2e306372656174655f61737365741801106e616d65fd01012441737365744e616d650001187469636b6572a801185469636b6572000124646976697369626c6529010110626f6f6c00012861737365745f74797065f101012441737365745479706500012c6964656e74696669657273010201505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64110201604f7074696f6e3c46756e64696e67526f756e644e616d653e0003602d01496e697469616c697a65732061206e657720736563757269747920746f6b656e2c20776974682074686520696e6974696174696e67206163636f756e7420617320697473206f776e65722e150154686520746f74616c20737570706c792077696c6c20696e697469616c6c79206265207a65726f2e20546f206d696e7420746f6b656e732c2075736520606973737565602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292e842a20606e616d6560202d20746865206e616d65206f662074686520746f6b656e2eb02a20607469636b657260202d20746865207469636b65722073796d626f6c206f662074686520746f6b656e2e2d012a2060646976697369626c6560202d206120626f6f6c65616e20746f206964656e74696679207468652064697669736962696c69747920737461747573206f662074686520746f6b656e2e802a206061737365745f7479706560202d2074686520617373657420747970652ec02a20606964656e7469666965727360202d206120766563746f72206f66206173736574206964656e746966696572732eb82a206066756e64696e675f726f756e6460202d206e616d65206f66207468652066756e64696e6720726f756e642e00242323204572726f7273fc2d2060496e76616c696441737365744964656e7469666965726020696620616e79206f6620606964656e74696669657273602061726520696e76616c69642e51012d20604d61784c656e6774684f6641737365744e616d6545786365656465646020696620606e616d65602773206c656e67746820657863656564732060543a3a41737365744e616d654d61784c656e677468602e55012d206046756e64696e67526f756e644e616d654d61784c656e67746845786365656465646020696620746865206e616d65206f66207468652066756e64696e6720726f756e64206973206c6f6e67657220746861747c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602ed42d20604173736574416c726561647943726561746564602069662061737365742077617320616c726561647920637265617465642e5d012d20605469636b6572546f6f4c6f6e676020696620607469636b6572602773206c656e6774682069732067726561746572207468616e2060636f6e6669672e6d61785f7469636b65725f6c656e6774686020636861696e28706172616d657465722e59022d20605469636b65724e6f74416c7068616e756d657269636020696620607469636b657260206973206e6f742079657420726567697374657265642c20616e6420636f6e7461696e73206e6f6e2d616c7068616e756d657269632063686172616374657273206f7220616e7920636861726163746572206166746572206669727374206f6363757272656e6365206f6620605c30602e00382323205065726d697373696f6e732c2a20506f7274666f6c696f18667265657a650401187469636b6572a801185469636b657200042c8c467265657a6573207472616e7366657273206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e00242323204572726f7273c02d2060416c726561647946726f7a656e6020696620607469636b65726020697320616c72656164792066726f7a656e2e003423205065726d697373696f6e731c2a20417373657420756e667265657a650401187469636b6572a801185469636b657200052c94556e667265657a6573207472616e7366657273206f66206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722eb02a20607469636b657260202d20746865207469636b6572206f66207468652066726f7a656e20746f6b656e2e00242323204572726f7273b02d20604e6f7446726f7a656e6020696620607469636b657260206973206e6f742066726f7a656e207965742e003423205065726d697373696f6e731c2a2041737365743072656e616d655f61737365740801187469636b6572a801185469636b65720001106e616d65fd01012441737365744e616d650006345852656e616d6573206120676976656e20746f6b656e2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e942a20606e616d6560202d20746865206e6577206e616d65206f662074686520746f6b656e2e00242323204572726f727311012d20604d61784c656e6774684f6641737365744e616d65457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e6060543a3a41737365744e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a2041737365741469737375650c01187469636b6572a801185469636b6572000118616d6f756e7418011c42616c616e6365000138706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e6400072c550149737375652c206f72206d696e742c206e657720746f6b656e7320746f207468652063616c6c65722c207768696368206d75737420626520616e20617574686f72697a65642065787465726e616c206167656e742e002c2320417267756d656e747329012a20606f726967696e60202d2041207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea42a20607469636b657260202d20546865205b605469636b6572605d206f662074686520746f6b656e2ed82a2060616d6f756e7460202d2054686520616d6f756e74206f6620746f6b656e7320746861742077696c6c206265206973737565642e81012a2060706f7274666f6c696f5f6b696e6460202d20546865205b60506f7274666f6c696f4b696e64605d206f662074686520706f7274666f6c696f20746861742077696c6c207265636569766520746865206d696e74656420746f6b656e732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f1872656465656d0801187469636b6572a801185469636b657200011476616c756518011c42616c616e636500083ccd0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c657227732064656661756c7420706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e738d012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732064656661756c7420706f7274666f6c696f20646f65736e2774206861766520656e6f75676820667265652062616c616e6365003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f386d616b655f646976697369626c650401187469636b6572a801185469636b657200092c944d616b657320616e20696e646976697369626c6520746f6b656e20646976697369626c652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e00242323204572726f7273ec2d20604173736574416c7265616479446976697369626c656020696620607469636b65726020697320616c726561647920646976697369626c652e003423205065726d697373696f6e731c2a204173736574346164645f646f63756d656e7473080110646f6373810701345665633c446f63756d656e743e0001187469636b6572a801185469636b6572000a248041646420646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2eb82a2060646f63736020446f63756d656e747320746f20626520617474616368656420746f20607469636b6572602e003423205065726d697373696f6e731c2a2041737365744072656d6f76655f646f63756d656e747308010c6964732903013c5665633c446f63756d656e7449643e0001187469636b6572a801185469636b6572000b248c52656d6f766520646f63756d656e747320666f72206120676976656e20746f6b656e2e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2ec82a20606964736020446f63756d656e74732069647320746f2062652072656d6f7665642066726f6d20607469636b6572602e003423205065726d697373696f6e731c2a204173736574447365745f66756e64696e675f726f756e640801187469636b6572a801185469636b65720001106e616d651502014046756e64696e67526f756e644e616d65000c34ac5365747320746865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2ee42a20606e616d6560202d207468652064657369726564206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e00242323204572726f727325012d206046756e64696e67526f756e644e616d654d61784c656e677468457863656564656460206966206c656e677468206f6620606e616d65602069732067726561746572207468616e7c60543a3a46756e64696e67526f756e644e616d654d61784c656e677468602e003423205065726d697373696f6e731c2a204173736574487570646174655f6964656e746966696572730801187469636b6572a801185469636b657200014461737365745f6964656e74696669657273010201505665633c41737365744964656e7469666965723e000d30785570646174657320746865206173736574206964656e746966696572732e002c2320417267756d656e747329012a20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2e35022a206061737365745f6964656e7469666965727360202d20746865206173736574206964656e7469666965727320746f206265207570646174656420696e2074686520666f726d206f66206120766563746f72206f66207061697273206f6620604964656e746966696572547970656020616e64206041737365744964656e746966696572602076616c75652e00242323204572726f727331012d2060496e76616c696441737365744964656e7469666965726020696620606964656e746966696572736020636f6e7461696e7320616e7920696e76616c6964206964656e7469666965722e003423205065726d697373696f6e731c2a2041737365744c636f6e74726f6c6c65725f7472616e736665720c01187469636b6572a801185469636b657200011476616c756518011c42616c616e636500013866726f6d5f706f7274666f6c696fe0012c506f7274666f6c696f4964000e1c4d01466f726365732061207472616e73666572206f6620746f6b656e2066726f6d206066726f6d5f706f7274666f6c696f6020746f207468652063616c6c657227732064656661756c7420706f7274666f6c696f2e002c2320417267756d656e747355012a20606f726967696e60204d75737420626520616e2065787465726e616c206167656e74207769746820617070726f707269617465207065726d697373696f6e7320666f72206120676976656e207469636b65722e982a20607469636b657260205469636b65722073796d626f6c206f66207468652061737365742ecc2a206076616c7565602020416d6f756e74206f6620746f6b656e73206e65656420746f20666f726365207472616e736665722efc2a206066726f6d5f706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e6872656769737465725f637573746f6d5f61737365745f74797065040108747930011c5665633c75383e000f2478526567697374657273206120637573746f6d20617373657420747970652e00d05468652070726f766964656420607479602077696c6c20626520626f756e6420746f20616e20494420696e2073746f726167652ebc5468652049442063616e207468656e206265207573656420696e20604173736574547970653a3a437573746f6d602e250153686f756c6420746865206074796020616c726561647920657869737420696e2073746f726167652c206e6f207365636f6e642049442069732061737369676e656420746f2069742e002c2320417267756d656e7473902a20606f726967696e602077686f2063616c6c6564207468652065787472696e7369632ef02a206074796020636f6e7461696e732074686520737472696e6720726570726573656e746174696f6e206f662074686520617373657420747970652e746372656174655f61737365745f776974685f637573746f6d5f747970651801106e616d65fd01012441737365744e616d650001187469636b6572a801185469636b6572000124646976697369626c6529010110626f6f6c000144637573746f6d5f61737365745f7479706530011c5665633c75383e00012c6964656e74696669657273010201505665633c41737365744964656e7469666965723e00013466756e64696e675f726f756e64110201604f7074696f6e3c46756e64696e67526f756e644e616d653e0010042d015574696c6974792065787472696e73696320746f20626174636820606372656174655f61737365746020616e64206072656769737465725f637573746f6d5f61737365745f74797065602e487365745f61737365745f6d657461646174611001187469636b6572a801185469636b657200010c6b65797d02014041737365744d657461646174614b657900011476616c75654902014841737365744d6574616461746156616c756500011864657461696c4d0201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00114464536574206173736574206d657461646174612076616c75652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a204173736574687365745f61737365745f6d657461646174615f64657461696c730c01187469636b6572a801185469636b657200010c6b65797d02014041737365744d657461646174614b657900011864657461696c5102018c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e00123cdc536574206173736574206d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e542a20606b657960204d65746164617461206b65792ee42a206064657461696c7360204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f727315012a206041737365744d657461646174614b657949734d697373696e676020696620746865206d657461646174612074797065206b657920646f65736e27742065786973742e25012a206041737365744d6574616461746156616c756549734c6f636b65646020696620746865206d657461646174612076616c756520666f7220606b657960206973206c6f636b65642e003423205065726d697373696f6e731c2a204167656e741c2a2041737365749472656769737465725f616e645f7365745f6c6f63616c5f61737365745f6d657461646174611401187469636b6572a801185469636b65720001106e616d655902014441737365744d657461646174614e616d65000110737065636102014441737365744d657461646174615370656300011476616c75654902014841737365744d6574616461746156616c756500011864657461696c4d0201ac4f7074696f6e3c41737365744d6574616461746156616c756544657461696c3c543a3a4d6f6d656e743e3e00134c9c52656769737465727320616e6420736574206c6f63616c206173736574206d657461646174612e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e642a206076616c756560204d657461646174612076616c75652e09012a206064657461696c7360204f7074696f6e616c204d657461646174612076616c75652064657461696c7320286578706972652c206c6f636b20737461747573292e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e65012a206041737365744d6574616461746156616c75654d61784c656e67746845786365656465646020696620746865206d657461646174612076616c7565206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748872656769737465725f61737365745f6d657461646174615f6c6f63616c5f747970650c01187469636b6572a801185469636b65720001106e616d655902014441737365744d657461646174614e616d65000110737065636102014441737365744d657461646174615370656300144090526567697374657273206173736574206d65746164617461206c6f63616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f7273a1012a206041737365744d657461646174614c6f63616c4b6579416c7265616479457869737473602069662061206c6f63616c206d657461646174612074797065207769746820606e616d656020616c72656164792065786973747320666f7220607469636b6572602e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e003423205065726d697373696f6e731c2a204167656e741c2a2041737365748c72656769737465725f61737365745f6d657461646174615f676c6f62616c5f747970650801106e616d655902014441737365744d657461646174614e616d65000110737065636102014441737365744d657461646174615370656300152c94526567697374657273206173736574206d6574616461746120676c6f62616c20747970652e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e5c2a20606e616d6560204d65746164617461206e616d652e882a20607370656360204d65746164617461207479706520646566696e6974696f6e2e002023204572726f727371012a206041737365744d65746164617461476c6f62616c4b6579416c726561647945786973747360206966206120676c6f6261206d657461646174612074797065207769746820606e616d656020616c7265616479206578697374732e65012a206041737365744d657461646174614e616d654d61784c656e67746845786365656465646020696620746865206d6574616461746120606e616d6560206578636565647320746865206d6178696d756d206c656e6774682eb1012a206041737365744d65746164617461547970654465664d61784c656e67746845786365656465646020696620746865206d6574616461746120607370656360207479706520646566696e6974696f6e206578636565647320746865206d6178696d756d206c656e6774682e5472656465656d5f66726f6d5f706f7274666f6c696f0c01187469636b6572a801185469636b657200011476616c756518011c42616c616e6365000124706f7274666f6c696fe40134506f7274666f6c696f4b696e64001644ad0152656465656d73206578697374696e6720746f6b656e73206279207265647563696e67207468652062616c616e6365206f66207468652063616c6c6572277320706f7274666f6c696f20616e642074686520746f74616c20737570706c79206f662074686520746f6b656e002c2320417267756d656e74732d012a20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602e7c2a20607469636b657260205469636b6572206f662074686520746f6b656e2e942a206076616c75656020416d6f756e74206f6620746f6b656e7320746f2072656465656d2ee82a2060706f7274666f6c696f602046726f6d2077686f6d20706f7274666f6c696f20746f6b656e732067657473207472616e736665727265642e002023204572726f727361012d2060556e617574686f72697a6564602049662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e7359012d2060496e76616c69644772616e756c6172697479602049662074686520616d6f756e74206973206e6f7420646976697369626c652062792031305e3620666f72206e6f6e2d646976697369626c6520746f6b656e7375012d2060496e73756666696369656e74506f7274666f6c696f42616c616e636560204966207468652063616c6c657227732060706f7274666f6c696f6020646f65736e2774206861766520656e6f75676820667265652062616c616e6365e42d2060506f7274666f6c696f446f65734e6f744578697374602049662074686520706f7274666f6c696f20646f65736e27742065786973742e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f447570646174655f61737365745f747970650801187469636b6572a801185469636b657200012861737365745f74797065f10101244173736574547970650017307455706461746573207468652074797065206f6620616e2061737365742e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e942a20607469636b657260202d20746865207469636b6572206f662074686520746f6b656e2eac2a206061737365745f7479706560202d20746865206e65772074797065206f662074686520746f6b656e2e00242323204572726f727369012d2060496e76616c6964437573746f6d417373657454797065496460206966206061737365745f7479706560206973206f66207479706520637573746f6d20616e642068617320616e20696e76616c696420747970652069642e003423205065726d697373696f6e731c2a2041737365746472656d6f76655f6c6f63616c5f6d657461646174615f6b65790801187469636b6572a801185469636b65720001246c6f63616c5f6b65795d02015441737365744d657461646174614c6f63616c4b6579001840e052656d6f76657320746865206173736574206d65746164617461206b657920616e642076616c7565206f662061206c6f63616c206b65792e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722ec82a20607469636b657260202d20746865207469636b6572206f6620746865206c6f63616c206d65746164617461206b65792e9c2a20606c6f63616c5f6b657960202d20746865206c6f63616c206d65746164617461206b65792e002023204572726f7273c501202d20605365636f6e646172794b65794e6f74417574686f72697a6564466f72417373657460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732e8501202d2060556e617574686f72697a65644167656e7460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732ee8202d206041737365744d657461646174614b657949734d697373696e6760202d20696620746865206b657920646f656e7327742065786973742e1101202d206041737365744d6574616461746156616c756549734c6f636b656460202d206966207468652076616c7565206f6620746865206b6579206973206c6f636b65642e7d01202d2041737365744d657461646174614b657942656c6f6e6773546f4e4654436f6c6c656374696f6e202d20696620746865206b65792069732061206d616e6461746f7279206b657920696e20616e204e465420636f6c6c656374696f6e2e003423205065726d697373696f6e731c2a2041737365745472656d6f76655f6d657461646174615f76616c75650801187469636b6572a801185469636b65720001306d657461646174615f6b65797d02014041737365744d657461646174614b657900193ccc52656d6f76657320746865206173736574206d657461646174612076616c7565206f662061206d65746164617461206b65792e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722ec82a20607469636b657260202d20746865207469636b6572206f6620746865206c6f63616c206d65746164617461206b65792e15012a20606d657461646174615f6b657960202d20746865206d65746164617461206b657920746861742077696c6c2068617665206974732076616c75652064656c657465642e002023204572726f7273c501202d20605365636f6e646172794b65794e6f74417574686f72697a6564466f72417373657460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732e8501202d2060556e617574686f72697a65644167656e7460202d2069662063616c6c656420627920736f6d656f6e6520776974686f75742074686520617070726f7072696174652065787465726e616c206167656e74207065726d697373696f6e732ee8202d206041737365744d657461646174614b657949734d697373696e6760202d20696620746865206b657920646f656e7327742065786973742e1101202d206041737365744d6574616461746156616c756549734c6f636b656460202d206966207468652076616c7565206f6620746865206b6579206973206c6f636b65642e003423205065726d697373696f6e731c2a204173736574646578656d70745f7469636b65725f61666669726d6174696f6e0401187469636b6572a801185469636b6572001a20f45072652d617070726f7665732074686520726563656976656d656e74206f662074686520617373657420666f7220616c6c206964656e7469746965732e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e003423205065726d697373696f6e73182a20526f6f748c72656d6f76655f7469636b65725f61666669726d6174696f6e5f6578656d7074696f6e0401187469636b6572a801185469636b6572001b20e452656d6f76657320746865207072652d617070726f76616c206f662074686520617373657420666f7220616c6c206964656e7469746965732e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206861766520697473206578656d7074696f6e2072656d6f7665642e003423205065726d697373696f6e73182a20526f6f74487072655f617070726f76655f7469636b65720401187469636b6572a801185469636b6572001c20a45072652d617070726f7665732074686520726563656976656d656e74206f6620616e2061737365742e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e003423205065726d697373696f6e731c2a2041737365746872656d6f76655f7469636b65725f7072655f617070726f76616c0401187469636b6572a801185469636b6572001d209452656d6f766573207468652070726520617070726f76616c206f6620616e2061737365742e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206861766520697473206578656d7074696f6e2072656d6f7665642e003423205065726d697373696f6e731c2a2041737365745c6164645f6d616e6461746f72795f6d65646961746f72730801187469636b6572a801185469636b65720001246d65646961746f7273850701c4426f756e64656442547265655365743c4964656e7469747949642c20543a3a4d617841737365744d65646961746f72733e001e24ad015365747320616c6c206964656e74697469657320696e2074686520606d65646961746f72736020736574206173206d616e6461746f7279206d65646961746f727320666f7220616e7920696e737472756374696f6e207472616e73666572696e6720607469636b6572602e002c2320417267756d656e7473b02a20606f726967696e603a20546865207365636f6e64617279206b6579206f66207468652073656e6465722e21012a20607469636b6572603a20546865205b605469636b6572605d206f662074686520617373657420746861742077696c6c207265717569726520746865206d65646961746f72732e6d012a20606d65646961746f7273603a204120736574206f66205b604964656e746974794964605d206f6620616c6c20746865206d616e6461746f7279206d65646961746f727320666f722074686520676976656e207469636b65722e003423205065726d697373696f6e731c2a2041737365746872656d6f76655f6d616e6461746f72795f6d65646961746f72730801187469636b6572a801185469636b65720001246d65646961746f7273850701c4426f756e64656442547265655365743c4964656e7469747949642c20543a3a4d617841737365744d65646961746f72733e001f249d0152656d6f76657320616c6c206964656e74697469657320696e2074686520606d65646961746f727360207365742066726f6d20746865206d616e6461746f7279206d65646961746f7273206c69737420666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473b02a20606f726967696e603a20546865207365636f6e64617279206b6579206f66207468652073656e6465722e25012a20607469636b6572603a20546865205b605469636b6572605d206f662074686520617373657420746861742077696c6c2068617665206d65646961746f72732072656d6f7665642ecd012a20606d65646961746f7273603a204120736574206f66205b604964656e746974794964605d206f6620616c6c20746865206d65646961746f727320746861742077696c6c2062652072656d6f7665642066726f6d20746865206d616e6461746f7279206d65646961746f7273206c6973742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e81070000021d020085070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401800453000004009102012c42547265655365743c543e000089070c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1043616c6c04045400011428646973747269627574651c011463615f69649d02011043414964000124706f7274666f6c696f8d07015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a801185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742801184d6f6d656e74000128657870697265735f6174fc01384f7074696f6e3c4d6f6d656e743e0000ac2501537461727420616e64206174746163682061206361706974616c20646973747269627574696f6e2c20746f20746865204341206964656e746966696564206279206063615f6964602c6501776974682060616d6f756e74602066756e647320696e206063757272656e6379602077697468647261776e2066726f6d2060706f7274666f6c696f602062656c6f6e67696e6720746f20606f726967696e602773204449442e00290154686520646973747269627574696f6e2077696c6c20636f6d6d656e636520617420607061796d656e745f61746020616e64206578706972652061742060657870697265735f6174602cc869662070726f76696465642c206f7220696620604e6f6e65602c207468656e2074686572652773206e6f206578706972792e0025015468652066756e64732077696c6c206265206c6f636b656420696e2060706f7274666f6c696f602066726f6d207768656e206064697374726962757465602069732063616c6c65642e35015768656e2074686572652773206e6f206578706972792c20736f6d652066756e6473206d6179206265206c6f636b656420696e646566696e6974656c7920696e2060706f7274666f6c696f602c150164756520746f20636c61696d616e7473206e6f74207769746864726177696e67206f72206e6f2062656e6566697473206265696e672070757368656420746f207468656d2e2901466f7220696e646976697369626c652063757272656e636965732c20756e6c6f636b656420616d6f756e74732c206f66206c657373207468616e206f6e652077686f6c6520756e69742ca877696c6c206e6f74206265207472616e7366657261626c652066726f6d2060706f7274666f6c696f602e4d01486f77657665722c20696620776520696d6167696e6520746861742075736572732060416c6963656020616e642060426f626020626f74682061726520656e7469746c656420746f20312e3520756e6974732c5101616e64206f6e6c7920726563656976652060316020756e69747320656163682c207468656e2060302e35202b20302e35203d20316020756e69747320617265206c65667420696e2060706f7274666f6c696f602c6c7768696368206973206e6f77207472616e736665727261626c652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e59012d2060706f7274666f6c696f60207370656369666965732074686520706f7274666f6c696f206e756d626572206f6620746865206167656e7420746f20646973747269627574652060616d6f756e74602066726f6d2ef42d206063757272656e63796020746f20776974686472617720616e6420646973747269627574652066726f6d207468652060706f7274666f6c696f602ef82d20607065725f73686172656020616d6f756e74206f66206063757272656e63796020746f20776974686472617720616e6420646973747269627574652e25012020205370656369666965642061732061207065722d6d696c6c696f6e2c20692e652e206031202f2031305e36607468206f66206f6e65206063757272656e63796020746f6b656e2ef02d2060616d6f756e7460206f66206063757272656e63796020746f20776974686472617720616e642064697374726962757465206174206d6f73742e19012d20607061796d656e745f61746020737065636966696573207768656e2062656e6566697473206d617920666972737420626520707573686564206f7220636c61696d65642e29012d2060657870697265735f617460207370656369666965732c2069662070726f76696465642c207768656e2072656d61696e696e672062656e65666974732061726520666f726665697490202020616e64206d6179206265207265636c61696d656420627920606f726967696e602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602efc2d20604578706972794265666f72655061796d656e74602069662060657870697265735f61742e756e777261702829203c3d207061796d656e745f6174602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652ee82d20605265636f72644461746541667465725374617274602069662043412773207265636f72642064617465203e207061796d656e745f61742e31012d2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f662060706f7274666f6c696f602e55012d2060496e73756666696369656e74506f7274666f6c696f42616c616e6365602069662060706f7274666f6c696f6020686173206c657373207468616e2060616d6f756e7460206f66206063757272656e6379602e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e45012d206043414e6f7442656e656669746020696620746865204341206973206e6f74206f66206b696e64205072656469637461626c6542656e656669742f556e7072656469637461626c6542656e65666974d42d2060446973747269627574696f6e416d6f756e7449735a65726f60206966207468652060616d6f756e7460206973207a65726f2ee82d2060446973747269627574696f6e506572536861726549735a65726f602069662074686520607065725f736861726560206973207a65726f2e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f14636c61696d04011463615f69649d0201104341496400015c0101436c61696d20612062656e65666974206f6620746865206361706974616c20646973747269627574696f6e20617474616368656420746f206063615f6964602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265206120686f6c646572206f662074686520617373657420616e6420656c696769626c6520666f722074686520646973747269627574696f6e2e01012d206063615f696460206964656e7469666965732074686520434120746f2073746172742061206361706974616c20646973747269627574696f6e20666f722e002023204572726f727325012d2060486f6c646572416c7265616479506169646020696620606f726967696e602773204449442068617320616c7265616479207265636569766564206974732062656e656669742e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e30707573685f62656e6566697408011463615f69649d02011043414964000118686f6c6465728001284964656e746974794964000260f8507573682062656e65666974206f6620616e206f6e676f696e6720646973747269627574696f6e20746f2074686520676976656e2060686f6c646572602e00a8546178657320617265207769746868656c6420617320737065636966696564206279207468652043412e5901506f73742d746178206561726e696e677320617265207468656e207472616e7366657272656420746f207468652064656661756c7420706f7274666f6c696f206f662074686520606f726967696e602773204449442e001101416c6c2062656e65666974732061726520726f756e646564206279207472756e636174696f6e2c20646f776e20746f20666972737420696e74656765722062656c6f772e39014d6f72656f7665722c206265666f726520706f73742d746178206561726e696e67732c20696e20696e646976697369626c652063757272656e6369657320617265207472616e736665727265642c98746865792061726520726f756e64656420646f776e20746f20612077686f6c6520756e69742e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e39012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e7320746f20707573682062656e656669747320666f722e7c2d2060686f6c6465726020746f20707573682062656e656669747320746f2e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ec42d206043616e6e6f74436c61696d4265666f726553746172746020696620606e6f77203c207061796d656e745f6174602ee42d206043616e6e6f74436c61696d41667465724578706972796020696620606e6f77203e206578706972795f61742e756e777261702829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412edc2d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f74207461726765742060686f6c646572602e35012d206042616c616e6365416d6f756e7450726f647563744f766572666c6f7765646020696620606261203d2062616c616e6365202a20616d6f756e746020776f756c64206f766572666c6f772e35012d206042616c616e6365416d6f756e7450726f64756374537570706c794469766973696f6e4661696c65646020696620606261202a20737570706c796020776f756c64206f766572666c6f772e21012d204f74686572206572726f72732063616e206f636375722069662074686520636f6d706c69616e6365206d616e616765722072656a6563747320746865207472616e736665722e1c7265636c61696d04011463615f69649d0201104341496400032c90417373756d696e67206120646973747269627574696f6e2068617320657870697265642ce4756e6c6f636b207468652072656d61696e696e6720616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e60207768696368206d757374206265207468652063726561746f72206f6620746865206361706974616c20646973747269627574696f6e207469656420746f206063615f6964602e1d012d206063615f696460206964656e7469666965732074686520434120776974682061206361706974616c20646973747269627574696f6e20746f207265636c61696d20666f722e002023204572726f727319012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602e2d012d2060416c72656164795265636c61696d65646020696620746869732066756e6374696f6e2068617320616c7265616479206265656e2063616c6c6564207375636365737366756c6c792e842d20604e6f74457870697265646020696620606e6f77203c20657870697279602e4c72656d6f76655f646973747269627574696f6e04011463615f69649d0201104341496400042cbc52656d6f766573206120646973747269627574696f6e2074686174206861736e27742073746172746564207965742cdc756e6c6f636b696e67207468652066756c6c20616d6f756e7420696e20746865206469737472696275746f7220706f7274666f6c696f2e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602e49012d206063615f696460206964656e7469666965732074686520434120776974682061206e6f742d7965742d73746172746564206361706974616c20646973747269627574696f6e20746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e19012d20604e6f53756368446973747269627574696f6e602069662074686572652773206e6f206361706974616c20646973747269627574696f6e20666f72206063615f6964602ebc2d2060446973747269627574696f6e537461727465646020696620607061796d656e745f6174203c3d206e6f77602e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8d0704184f7074696f6e04045401e80108104e6f6e6500000010536f6d650400e8000001000091070c3070616c6c65745f617373657428636865636b706f696e741043616c6c040454000110446372656174655f636865636b706f696e740401187469636b6572a801185469636b6572000024c04372656174657320612073696e676c6520636865636b706f696e74206174207468652063757272656e742074696d652e002c2320417267756d656e74732d012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ea02d20607469636b65726020746f206372656174652074686520636865636b706f696e7420666f722e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e0d012d2060436f756e7465724f766572666c6f77602069662074686520746f74616c20636865636b706f696e7420636f756e74657220776f756c64206f766572666c6f772e707365745f7363686564756c65735f6d61785f636f6d706c65786974790401386d61785f636f6d706c657869747928010c75363400012459015365747320746865206d617820636f6d706c6578697479206f662061207363686564756c652073657420666f7220616e20617262697472617279207469636b657220746f20606d61785f636f6d706c6578697479602eb8546865206e6577206d6178696d756d206973206e6f7420656e666f7263656420726574726f6163746976656c792cb4616e64206f6e6c79206170706c696573206f6e6365206e6577207363686564756c657320617265206d6164652e00a84d7573742062652063616c6c6564206173206120504950202872657175697265732022726f6f7422292e002c2320417267756d656e7473782d20606f726967696e602069732074686520726f6f74206f726967696e2e09012d20606d61785f636f6d706c65786974796020616c6c6f77656420666f7220616e20617262697472617279207469636b65722773207363686564756c65207365742e3c6372656174655f7363686564756c650801187469636b6572a801185469636b65720001207363686564756c65b902014c5363686564756c65436865636b706f696e7473000244a4437265617465732061207363686564756c652067656e65726174696e6720636865636b706f696e7473d4696e20746865206675747572652061742065697468657220612066697865642074696d65206f7220617420696e74657276616c732e000901546865207363686564756c6520737461727473206f7574207769746820607374726f6e675f7265665f636f756e74287363686564756c655f696429203c2d2030602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e982d20607469636b65726020746f2063726561746520746865207363686564756c6520666f722eb02d20607363686564756c656020746861742077696c6c2067656e657261746520636865636b706f696e74732e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e21012d2060496e73756666696369656e744163636f756e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c64206e6f7420626520636861726765642e4d012d2060436f756e7465724f766572666c6f776020696620746865207363686564756c65204944206f7220746f74616c20636865636b706f696e7420636f756e7465727320776f756c64206f766572666c6f772e003423205065726d697373696f6e731c2a2041737365743c72656d6f76655f7363686564756c650801187469636b6572a801185469636b65720001086964b50201285363686564756c654964000338fc52656d6f7665732074686520636865636b706f696e74207363686564756c65206f6620616e206173736574206964656e74696669656420627920606964602e002c2320417267756d656e747321012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f20616374206173206f776e6572206f6620607469636b6572602e9c2d20607469636b65726020746f2072656d6f766520746865207363686564756c652066726f6d2e09012d2060696460206f6620746865207363686564756c652c207768656e2069742077617320637265617465642062792060637265617465645f7363686564756c65602e002023204572726f727355012d2060556e617574686f72697a65644167656e74602069662074686520444944206f6620606f726967696e602069736e27742061207065726d697373696f6e6564206167656e7420666f7220607469636b6572602e41012d20604e6f436865636b706f696e745363686564756c6560206966206069646020646f6573206e6f74206964656e746966792061207363686564756c6520666f72207468697320607469636b6572602ef42d20605363686564756c654e6f7452656d6f7661626c656020696620606964602065786973747320627574206973206e6f742072656d6f7661626c652e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9507086470616c6c65745f636f6d706c69616e63655f6d616e616765721043616c6c040454000124686164645f636f6d706c69616e63655f726571756972656d656e740c01187469636b6572a801185469636b657200014473656e6465725f636f6e646974696f6e73cd0201385665633c436f6e646974696f6e3e00014c72656365697665725f636f6e646974696f6e73cd0201385665633c436f6e646974696f6e3e00002c050141646473206120636f6d706c69616e636520726571756972656d656e7420746f20616e206173736574277320636f6d706c69616e6365206279207469636b65722e6901496620746865726520617265206475706c696361746520436c61696d547970657320666f72206120706172746963756c61722074727573746564206973737565722c206475706c696361746573206172652072656d6f7665642e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574c42a2073656e6465725f636f6e646974696f6e73202d2053656e646572207472616e7366657220636f6e646974696f6e732ed42a2072656365697665725f636f6e646974696f6e73202d205265636569766572207472616e7366657220636f6e646974696f6e732e003423205065726d697373696f6e731c2a2041737365747472656d6f76655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a801185469636b6572000108696410010c753332000124f052656d6f766573206120636f6d706c69616e636520726571756972656d656e742066726f6d20616e206173736574277320636f6d706c69616e63652e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574f02a206964202d20436f6d706c69616e636520726571756972656d656e74206964207768696368206973206e65656420746f2062652072656d6f766564003423205065726d697373696f6e731c2a204173736574607265706c6163655f61737365745f636f6d706c69616e63650801187469636b6572a801185469636b657200014061737365745f636f6d706c69616e6365f50201685665633c436f6d706c69616e6365526571756972656d656e743e00023cfc5265706c6163657320616e206173736574277320636f6d706c69616e6365206279207469636b657220776974682061206e657720636f6d706c69616e63652e00fc436f6d706c69616e636520726571756972656d656e74732077696c6c20626520736f727465642028617363656e64696e6720627920696429206265666f72658c7265706c6163696e67207468652063757272656e7420726571756972656d656e74732e002c2320417267756d656e7473782a20607469636b657260202d20746865206173736574207469636b65722cbc2a206061737365745f636f6d706c69616e6365202d20746865206e657720617373657420636f6d706c69616e63652e002023204572726f7273f02a2060556e617574686f72697a65646020696620606f726967696e60206973206e6f7420746865206f776e6572206f6620746865207469636b65722eb1012a20604475706c69636174654173736574436f6d706c69616e636560206966206061737365745f636f6d706c69616e63656020636f6e7461696e73206d756c7469706c6520656e74726965732077697468207468652073616d652060726571756972656d656e745f6964602e003423205065726d697373696f6e731c2a2041737365745872657365745f61737365745f636f6d706c69616e63650401187469636b6572a801185469636b65720003207452656d6f76657320616e206173736574277320636f6d706c69616e6365002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745870617573655f61737365745f636f6d706c69616e63650401187469636b6572a801185469636b657200042011015061757365732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a2041737365745c726573756d655f61737365745f636f6d706c69616e63650401187469636b6572a801185469636b65720005201501526573756d65732074686520766572696669636174696f6e206f6620636f6e646974696f6e7320666f7220607469636b65726020647572696e67207472616e73666572732e002c2320417267756d656e74732d012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b6572782a207469636b6572202d2053796d626f6c206f6620746865206173736574003423205065726d697373696f6e731c2a204173736574806164645f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a801185469636b6572000118697373756572e502013454727573746564497373756572000624f84164647320616e6f746865722064656661756c74207472757374656420636c61696d2069737375657220617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a2041737365748c72656d6f76655f64656661756c745f747275737465645f636c61696d5f6973737565720801187469636b6572a801185469636b65720001186973737565728001284964656e746974794964000724750152656d6f7665732074686520676976656e2060697373756572602066726f6d2074686520736574206f662064656661756c74207472757374656420636c61696d206973737565727320617420746865207469636b6572206c6576656c2e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742ec82a20697373756572202d204964656e746974794964206f6620746865207472757374656420636c61696d206973737565722e003423205065726d697373696f6e731c2a204173736574746368616e67655f636f6d706c69616e63655f726571756972656d656e740801187469636b6572a801185469636b657200011c6e65775f726571c9020154436f6d706c69616e6365526571756972656d656e74000824f04d6f6469667920616e206578697374696e6720636f6d706c69616e636520726571756972656d656e74206f66206120676976656e207469636b65722e002c2320417267756d656e747331012a206f726967696e202d205369676e6572206f662074686520646973706174636861626c652e2049742073686f756c6420626520746865206f776e6572206f6620746865207469636b65722e7c2a207469636b6572202d2053796d626f6c206f66207468652061737365742e8c2a206e65775f726571202d20436f6d706c69616e636520726571756972656d656e742e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9907086070616c6c65745f636f72706f726174655f616374696f6e731043616c6c040454000124587365745f6d61785f64657461696c735f6c656e6774680401186c656e67746810010c753332000008d053657420746865206d617820606c656e67746860206f66206064657461696c736020696e207465726d73206f662062797465732e744d6179206f6e6c792062652063616c6c6564207669612061205049502e4c7365745f64656661756c745f746172676574730801187469636b6572a801185469636b657200011c74617267657473fd0201405461726765744964656e746974696573000134cc536574207468652064656661756c7420434120605461726765744964656e7469746965736020746f206074617267657473602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ee42d20607469636b65726020666f72207768696368207468652064656661756c74206964656e74697469657320617265206368616e67696e672ecc2d20607461726765747360207468652064656661756c7420746172676574206964656e74697469657320666f7220612043412e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e31012d2060546f6f4d616e79546172676574496473602069662060746172676574732e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e003423205065726d697373696f6e731c2a2041737365746c7365745f64656661756c745f77697468686f6c64696e675f7461780801187469636b6572a801185469636b657200010c746178a902010c5461780002303d01536574207468652064656661756c742077697468686f6c64696e672074617820666f7220616c6c204449447320616e64204341732072656c6576616e7420746f207468697320607469636b6572602e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e003423205065726d697373696f6e731c2a2041737365745c7365745f6469645f77697468686f6c64696e675f7461780c01187469636b6572a801185469636b657200012474617865645f6469648001284964656e74697479496400010c7461780503012c4f7074696f6e3c5461783e000340f4536574207468652077697468686f6c64696e6720746178206f6620607469636b65726020666f72206074617865645f6469646020746f2060746178602e810149662060536f6d652874617829602c2074686973206f7665727269646573207468652064656661756c742077697468686f6c64696e6720746178206f6620607469636b65726020746f20607461786020666f72206074617865645f646964602efc4f74686572776973652c20696620604e6f6e65602c207468652064656661756c742077697468686f6c64696e67207461782077696c6c20626520757365642e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732ec82d20607469636b6572602074686174207468652077697468686f6c64696e67207461782077696c6c206170706c7920746f2ee42d206074617865645f6469646020746861742077696c6c2068617665206974732077697468686f6c64696e672074617820757064617465642e05012d20607461786020746861742073686f756c64206265207769746868656c64207768656e20646973747269627574696e67206469766964656e64732c206574632e00242323204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e81012d2060546f6f4d616e794469645461786573602069662060536f6d6528746178296020616e6420616464696e6720746865206f7665727269646520776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e003423205065726d697373696f6e731c2a20417373657464696e6974696174655f636f72706f726174655f616374696f6e2001187469636b6572a801185469636b65720001106b696e640d03011843414b696e640001246465636c5f646174652801184d6f6d656e7400012c7265636f72645f646174659d0701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7325030124434144657461696c7300011c74617267657473a50701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f7461780503012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a90701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0004784901496e69746961746573206120434120666f7220607469636b657260206f6620606b696e64602077697468206064657461696c736020616e64206f746865722070726f766964656420617267756d656e74732e0030232320417267756d656e747345012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f6620607469636b65726020776974682072656c6576616e74207065726d697373696f6e732e8c2d20607469636b657260207468617420746865204341206973206d61646520666f722e7c2d20606b696e6460206f66204341206265696e6720696e697469617465642e982d20606465636c5f6461746560206f66204341206272696e6720696e697469616c697a65642ef02d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f6620746869732043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e4d012d206064657461696c7360206f662074686520434120696e20667265652d7465787420666f726d2c20757020746f2061206365727461696e206e756d626572206f6620627974657320696e206c656e6774682ef42d206074617267657473602c20696620616e792c20776869636820746869732043412069732072656c6576616e742f697272656c6576616e7420746f2e49012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f7461726765747360292e5d012d206064656661756c745f77697468686f6c64696e675f746178602c20696620616e792c206973207468652064656661756c742077697468686f6c64696e672074617820746f2075736520666f7220746869732043412e69012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f64656661756c745f77697468686f6c64696e675f74617860292e21012d206077697468686f6c64696e675f746178602c20696620616e792c2070726f7669646573207065722d4449442077697468686f6c64696e6720746178206f76657272696465732e59012020204f76657272696465732c2069662070726f76696465642c207468652064656661756c7420617420746865206173736574206c6576656c2028607365745f6469645f77697468686f6c64696e675f74617860292e002023204572726f72731d012d206044657461696c73546f6f4c6f6e6760206966206064657461696c732e6c656e28296020676f6573206265796f6e6420606d61785f64657461696c735f6c656e677468602e25012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602e69012d2060436f756e7465724f766572666c6f776020696e2074686520756e6c696b656c79206576656e74207468617420736f206d616e79204341732077657265206372656174656420666f72207468697320607469636b6572602cf820207468617420696e7465676572206f766572666c6f7720776f756c642068617665206f63637572656420696620696e737465616420616c6c6f7765642e75012d2060546f6f4d616e79446964546178657360206966206077697468686f6c64696e675f7461782e756e7772617028292e6c656e28296020776f756c6420676f206f76657220746865206c696d697420604d617844696457687473602e01012d20604475706c69636174654469645461786020696620612044494420697320696e636c75646564206d6f7265207468616e206f6e636520696e20607774602e55012d2060546f6f4d616e79546172676574496473602069662060746172676574732e756e7772617028292e6964656e7469746965732e6c656e2829203e20543a3a4d61785461726765744964733a3a6765742829602e01012d20604465636c44617465496e4675747572656020696620746865206465636c61726174696f6e2064617465206973206e6f7420696e2074686520706173742e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a2041737365742c6c696e6b5f63615f646f6308010869649d02011043414964000110646f63732903013c5665633c446f63756d656e7449643e000548ac4c696e6b2074686520676976656e204341206069646020746f2074686520676976656e2060646f6373602ef4416e792070726576696f7573206c696e6b7320666f7220746865204341206172652072656d6f76656420696e206661766f72206f662060646f6373602e00550154686520776f726b666c6f77206865726520697320746f206164642074686520646f63756d656e747320616e6420696e6974696174696e672074686520434120696e20616e79206f7264657220646573697265642ec44f6e636520626f74682065786973742c20746865792063616e206e6f77206265206c696e6b656420746f6765746865722e0030232320417267756d656e747351012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206069642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732ea82d2060696460206f662074686520434120746f206173736f636961746520776974682060646f6373602eb02d2060646f63736020746f206173736f6369617465207769746820746865204341207769746820606964602e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e19012d20604e6f53756368446f636020696620616e79206f662060646f63736020646f6573206e6f74206964656e7469667920616e206578697374696e6720646f63756d656e742e003423205065726d697373696f6e731c2a2041737365742472656d6f76655f636104011463615f69649d020110434149640006489452656d6f76657320746865204341206964656e746966696564206279206063615f6964602e00c44173736f63696174656420646174612c207375636820617320646f63756d656e74206c696e6b732c2062616c6c6f74732cac616e64206361706974616c20646973747269627574696f6e732061726520616c736f2072656d6f7665642e00d4416e79207363686564756c65206173736f636961746564207769746820746865207265636f726420646174652077696c6c20736565b0607374726f6e675f7265665f636f756e74287363686564756c655f696429602064656372656d656e7465642e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e782d206063615f696460206f662074686520434120746f2072656d6f76652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e003423205065726d697373696f6e731c2a204173736574486368616e67655f7265636f72645f6461746508011463615f69649d0201104341496400012c7265636f72645f646174659d0701584f7074696f6e3c5265636f726444617465537065633e00073ce04368616e67657320746865207265636f72642064617465206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e74735d012d20606f726967696e60207768696368206d75737420626520616e2065787465726e616c206167656e74206f66206063615f69642e7469636b65726020776974682072656c6576616e74207065726d697373696f6e732e742d206063615f696460206f662074686520434120746f20616c7465722eec2d20607265636f72645f64617465602c20696620616e792c20746f2063616c63756c6174652074686520696d70616374206f66207468652043412e610120202049662070726f76696465642c207468697320726573756c747320696e2061207363686564756c65642062616c616e636520736e617073686f74202822636865636b706f696e7422292061742074686520646174652e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ed82d20604e6f53756368434160206966206069646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412e51012d205768656e20607265636f72645f646174652e69735f736f6d652829602c206f74686572206572726f72732064756520746f20636865636b706f696e74207363686564756c696e67206d6179206f636375722e003423205065726d697373696f6e731c2a204173736574a0696e6974696174655f636f72706f726174655f616374696f6e5f616e645f646973747269627574651c011c63615f61726773ad07016c496e697469617465436f72706f72617465416374696f6e41726773000124706f7274666f6c696f8d07015c4f7074696f6e3c506f7274666f6c696f4e756d6265723e00012063757272656e6379a801185469636b65720001247065725f736861726518011c42616c616e6365000118616d6f756e7418011c42616c616e63650001287061796d656e745f61742801184d6f6d656e74000128657870697265735f6174fc01384f7074696f6e3c4d6f6d656e743e0008041d015574696c6974792065787472696e73696320746f2062617463682060696e6974696174655f636f72706f726174655f616374696f6e6020616e64206064697374726962757465600c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e9d0704184f7074696f6e04045401a1070108104e6f6e6500000010536f6d650400a1070000010000a107086070616c6c65745f636f72706f726174655f616374696f6e73385265636f7264446174655370656300010c245363686564756c656404002801184d6f6d656e74000000404578697374696e675363686564756c650400b50201285363686564756c654964000100204578697374696e670400b1020130436865636b706f696e74496400020000a50704184f7074696f6e04045401fd020108104e6f6e6500000010536f6d650400fd020000010000a90704184f7074696f6e040454011d030108104e6f6e6500000010536f6d6504001d030000010000ad07086070616c6c65745f636f72706f726174655f616374696f6e736c496e697469617465436f72706f72617465416374696f6e4172677300002001187469636b6572a801185469636b65720001106b696e640d03011843414b696e640001246465636c5f646174652801184d6f6d656e7400012c7265636f72645f646174659d0701584f7074696f6e3c5265636f726444617465537065633e00011c64657461696c7325030124434144657461696c7300011c74617267657473a50701604f7074696f6e3c5461726765744964656e7469746965733e00015c64656661756c745f77697468686f6c64696e675f7461780503012c4f7074696f6e3c5461783e00013c77697468686f6c64696e675f746178a90701784f7074696f6e3c5665633c284964656e7469747949642c20546178293e3e0000b1070c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f741043616c6c040454000118346174746163685f62616c6c6f7410011463615f69649d0201104341496400011472616e67653103013c42616c6c6f7454696d6552616e67650001106d6574613503012842616c6c6f744d65746100010c72637629010110626f6f6c000068e8417474616368206120636f72706f726174652062616c6c6f7420746f20746865204341206964656e746966696564206279206063615f6964602e00ac5468652062616c6c6f742077696c6c2061646d697420766f7465732077697468696e206072616e6765602eb05468652062616c6c6f742773206d657461646174612069732070726f766964656420627920606d657461602c0501776869636820696e636c75646573207468652062616c6c6f74207469746c652c20746865206d6f74696f6e732c2074686569722063686f696365732c206574632e7853656520746865206042616c6c6f744d6574616020666f72206d6f72652e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602ed02d206063615f696460206964656e7469666965732074686520434120746f20617474616368207468652062616c6c6f7420746f2ec02d206072616e67656020737065636966696573207768656e20766f74696e672073746172747320616e6420656e64732eec2d20606d6574616020737065636966696573207468652062616c6c6f742773206d657461646174612061732061666f72656d656e74696f6e65642ee42d2060726376602073706563696669657320776865746865722052435620697320656e61626c656420666f7220746869732062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef02d206043414e6f744e6f746963656020696620746865204341206973206e6f74206f662074686520604973737565724e6f7469636560206b696e642ebc2d206053746172744166746572456e6460206966206072616e67652e7374617274203e2072616e67652e656e64602e29012d20604e6f774166746572456e646020696620606e6f77203e2072616e67652e656e646020776865726520606e6f7760206973207468652063757272656e742074696d657374616d702ea82d20604e6f5265636f7264446174656020696620434120686173206e6f207265636f726420646174652e59012d20605265636f7264446174654166746572537461727460206966206064617465203e2072616e67652e73746172746020776865726520606461746560206973207468652043412773207265636f726420646174652eb82d2060416c726561647945786973747360206966207468657265277320612062616c6c6f7420616c72656164792e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e01012d2060496e73756666696369656e7442616c616e636560206966207468652070726f746f636f6c2066656520636f756c646e277420626520636861726765642e10766f746508011463615f69649d02011043414964000114766f7465735503013c5665633c42616c6c6f74566f74653e0001441101436173742060766f7465736020696e207468652062616c6c6f7420617474616368656420746f20746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747309012d20606f726967696e60207768696368206d7573742062652061207065726d697373696f6e6564207369676e6572207461726765746564206279207468652043412eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e21012d2060766f7465736020737065636966696573207468652062616c616e63657320746f2061737369676e20746f20656163682063686f69636520696e207468652062616c6c6f742e55012020205468652066756c6c20766f74696e6720706f776572206f6620606f726967696e60277320444944206d6179206265207573656420666f722065616368206d6f74696f6e20696e207468652062616c6c6f742e002023204572726f7273dc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742efc2d2060566f74696e674e6f7453746172746564602069662074686520766f74696e6720706572696f64206861736e277420636f6d6d656e636564207965742ed82d2060566f74696e67416c7265616479456e646564602069662074686520766f74696e6720706572696f642068617320656e6465642e5d012d206057726f6e67566f7465436f756e746020696620746865206e756d626572206f662063686f6963657320696e207468652062616c6c6f7420646f6573206e6f74206d617463682060766f7465732e6c656e2829602ee42d20604e6f53756368434160206966206063615f69646020646f6573206e6f74206964656e7469667920616e206578697374696e672043412ef42d20604e6f74546172676574656442794341602069662074686520434120646f6573206e6f742074617267657420606f726967696e602773204449442e21012d2060496e73756666696369656e74566f746573602069662074686520766f74696e6720706f776572207573656420666f7220616e79206d6f74696f6e20696e2060766f74657360a42020206578636565647320606f726967696e60277320444944277320766f74696e6720706f7765722e286368616e67655f656e6408011463615f69649d0201104341496400010c656e642801184d6f6d656e740002300501416d656e642074686520656e642064617465206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ec42d2060656e64602073706563696669657320746865206e657720656e642064617465206f66207468652062616c6c6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e8c2d206053746172744166746572456e646020696620607374617274203e20656e64602e2c6368616e67655f6d65746108011463615f69649d020110434149640001106d6574613503012842616c6c6f744d6574610003346101416d656e6420746865206d6574616461746120287469746c652c206d6f74696f6e732c206574632e29206f66207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e902d20606d657461602073706563696669657320746865206e6577206d657461646174612e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e31012d20604e756d6265724f6643686f696365734f766572666c6f77602069662074686520746f74616c2063686f69636520696e20606d65746160206f766572666c6f777320607573697a65602e09012d2060546f6f4c6f6e676020696620616e79206f662074686520656d62656464656420737472696e677320696e20606d657461602061726520746f6f206c6f6e672e286368616e67655f72637608011463615f69649d0201104341496400010c72637629010110626f6f6c00042c0501416d656e642052435620737570706f727420666f72207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412ecc2d206072637660207370656369666965732069662052435620697320746f20626520737570706f72746564206f72206e6f742e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e3472656d6f76655f62616c6c6f7404011463615f69649d02011043414964000528c852656d6f7665207468652062616c6c6f74206f6620746865204341206964656e746966696564206279206063615f6964602e0030232320417267756d656e747345012d20606f726967696e602069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f66206063615f69642e7469636b6572602eb82d206063615f696460206964656e746966696573207468652061747461636865642062616c6c6f7427732043412e002023204572726f727325012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220607469636b6572602edc2d20604e6f5375636842616c6c6f7460206966206063615f69646020646f6573206e6f74206964656e7469667920612062616c6c6f742e31012d2060566f74696e67416c7265616479537461727465646020696620607374617274203e3d206e6f77602c20776865726520606e6f7760206973207468652063757272656e742074696d652e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb507082c70616c6c65745f706970731043616c6c040454000144647365745f7072756e655f686973746f726963616c5f706970730401147072756e6529010110626f6f6c000014a44368616e6765207768657468657220636f6d706c65746564205049507320617265207072756e65642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20607072756e656020737065636966696573207768657468657220636f6d706c6574656420504950732073686f756c64206265207072756e65642e607365745f6d696e5f70726f706f73616c5f6465706f73697404011c6465706f73697418011c42616c616e636500011421014368616e676520746865206d696e696d756d2070726f706f73616c206465706f73697420616d6f756e7420726571756972656420746f20737461727420612070726f706f73616c2e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473f02a20606465706f7369746020746865206e6577206d696e206465706f73697420726571756972656420746f20737461727420612070726f706f73616c707365745f64656661756c745f656e6163746d656e745f706572696f640401206475726174696f6e100138543a3a426c6f636b4e756d626572000214904368616e6765207468652064656661756c7420656e6163746d656e7420706572696f642e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e747369012a20606475726174696f6e6020746865206e65772064656661756c7420656e6163746d656e7420706572696f642069742074616b657320666f722061207363686564756c65642050495020746f2062652065786563757465642e587365745f70656e64696e675f7069705f657870697279040118657870697279490101684d61796265426c6f636b3c543a3a426c6f636b4e756d6265723e00031805014368616e67652074686520616d6f756e74206f6620626c6f636b7320616674657220776869636820612070656e64696e672050495020697320657870697265642eb4496620606578706972796020697320604e6f6e6560207468656e2050495073206e65766572206578706972652e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e74731d012a2060657870697279602074686520626c6f636b2d74696d652069742074616b657320666f722061207374696c6c2d6050656e64696e67602050495020746f206578706972652e587365745f6d61785f7069705f736b69705f636f756e7404010c6d6178080130536b6970706564436f756e74000414d44368616e676520746865206d6178696d756d20736b697020636f756e742028606d61785f7069705f736b69705f636f756e7460292e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473ec2a20606d61786020736b697073206265666f72652061205049502063616e6e6f7420626520736b697070656420627920474320616e796d6f72652e507365745f6163746976655f7069705f6c696d69740401146c696d697410010c75333200051469014368616e676520746865206d6178696d756d206e756d626572206f66206163746976652050495073206265666f726520636f6d6d756e697479206d656d626572732063616e6e6f742070726f706f736520616e797468696e672e6c43616e206f6e6c792062652063616c6c656420627920726f6f742e002c2320417267756d656e7473902a20606c696d697460206f6620636f6e63757272656e742061637469766520504950732e1c70726f706f736510012070726f706f73616cfd050140426f783c543a3a50726f706f73616c3e00011c6465706f73697418011c42616c616e636500010c75726c6502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e750301584f7074696f6e3c5069704465736372697074696f6e3e000624050141206e6574776f726b206d656d6265722063726561746573206120504950206279207375626d697474696e67206120646973706174636861626c6520776869636855016368616e67657320746865206e6574776f726b20696e20736f6d657761792e2041206d696e696d756d206465706f73697420697320726571756972656420746f206f70656e2061206e65772070726f706f73616c2e002c2320417267756d656e7473c82a206070726f706f73657260206973206569746865722061207369676e696e67206b6579206f7220636f6d6d69747465652e65012020205573656420746f20756e6465727374616e6420776865746865722074686973206973206120636f6d6d69747465652070726f706f73616c20616e6420766572696669656420616761696e737420606f726967696e602e802a206070726f706f73616c60206120646973706174636861626c652063616c6c45012a20606465706f73697460206d696e696d756d206465706f7369742076616c75652c2077686963682069732069676e6f726564206966206070726f706f73657260206973206120636f6d6d69747465652ecc2a206075726c602061206c696e6b20746f2061207765627369746520666f722070726f706f73616c2064697363757373696f6e10766f74650c010869647103011450697049640001286179655f6f725f6e617929010110626f6f6c00011c6465706f73697418011c42616c616e63650007481d01566f74652065697468657220696e206661766f722028606179655f6f725f6e617960203d3d207472756529206f7220616761696e7374206120504950207769746820606964602e4d015468652022636f6e76696e6374696f6e22206f7220737472656e677468206f662074686520766f746520697320676976656e20627920606465706f736974602c2077686963682069732072657365727665642e008c4e6f746520746861742060766f746560206973202a6e6f742a2061646469746976652ef8546861742069732c2060766f74652869642c20747275652c203530296020666f6c6c6f7765642062792060766f74652869642c20747275652c2034302960490177696c6c2066697273742072657365727665206035306020616e64207468656e20726566756e6420603530202d203130602c20656e64696e672075702077697468206034306020696e206465706f7369742e2501546f206164642061746f70206f66206578697374696e6720766f7465732c20796f75276c6c206e65656420606578697374696e675f6465706f736974202b206164646974696f6e602e002c2320417267756d656e74734c2a20606964602c2070726f706f73616c206964dc2a20606179655f6f725f6e6179602c206120626f6f6c20726570726573656e74696e6720666f72206f7220616761696e737420766f7465e82a20606465706f736974602c207468652022636f6e76696374696f6e2220776974682077686963682074686520766f7465206973206d6164652e002023204572726f7273e42a20604e6f5375636850726f706f73616c60206966206069646020646f65736e2774207265666572656e636520612076616c6964205049502ee42a20604e6f7446726f6d436f6d6d756e697479602069662070726f706f73616c20776173206d616465206279206120636f6d6d69747465652ec02a2060496e636f727265637450726f706f73616c537461746560206966205049502069736e27742070656e64696e672e2d012a2060496e73756666696369656e744465706f7369746020696620606f726967696e602063616e6e6f74207265736572766520606465706f736974202d206f6c645f6465706f736974602e68617070726f76655f636f6d6d69747465655f70726f706f73616c040108696471030114506970496400081cd4417070726f766573207468652070656e64696e6720636f6d6d69747465652050495020676976656e2062792074686520606964602e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ee42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c2069736e27742070656e64696e672ee02a20604e6f744279436f6d6d697474656560206966207468652070726f706f73616c2069736e2774206279206120636f6d6d69747465652e3c72656a6563745f70726f706f73616c0401086964710301145069704964000920f852656a65637473207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e7920626f6e6465642066756e64732cb8617373756d696e67206974206861736e2774206265656e2063616e63656c6c6564206f722065786563757465642e05014e6f746520746861742070726f706f73616c73207363686564756c65642d666f722d657865637574696f6e2063616e20616c736f2062652072656a65637465642e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742e15012a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c207761732063616e63656c6c6564206f722065786563757465642e387072756e655f70726f706f73616c0401086964710301145069704964000a2429015072756e65207468652050495020676976656e2062792074686520606964602c20726566756e64696e6720616e792066756e6473206e6f7420616c726561647920726566756e6465642e6454686520504950206d6179206e6f7420626520616374697665000901546869732066756e6374696f6e20697320696e74656e64656420666f722073746f72616765206761726261676520636f6c6c656374696f6e20707572706f7365732e002023204572726f727305012a20604261644f726967696e6020756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2ed82a20604e6f5375636850726f706f73616c6020696620746865205049502077697468206069646020646f65736e27742065786973742ed42a2060496e636f727265637450726f706f73616c537461746560206966207468652070726f706f73616c206973206163746976652e5072657363686564756c655f657865637574696f6e0801086964710301145069704964000114756e74696c450601584f7074696f6e3c543a3a426c6f636b4e756d6265723e000b24e0557064617465732074686520657865637574696f6e207363686564756c65206f66207468652050495020676976656e20627920606964602e002c2320417267756d656e747331012a2060756e74696c6020646566696e6573207468652066757475726520626c6f636b2077686572652074686520656e6163746d656e7420706572696f642077696c6c2066696e69736865642e4501202020604e6f6e65602076616c7565206d65616e73207468617420656e6163746d656e7420706572696f6420697320676f696e6720746f2066696e69736820696e20746865206e65787420626c6f636b2e002023204572726f727339012a206052657363686564756c654e6f74427952656c65617365436f6f7264696e61746f726020756e6c657373207472696767657265642062792072656c6561736520636f6f7264696e61746f722e21012a2060496e636f727265637450726f706f73616c53746174656020756e6c657373207468652070726f706f73616c2077617320696e2061207363686564756c65642073746174652e38636c6561725f736e617073686f74000c10e8436c656172732074686520736e617073686f7420616e6420656d69747320746865206576656e742060536e617073686f74436c6561726564602e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e20736e617073686f74000d140d0154616b65732061206e657720736e617073686f74206f66207468652063757272656e74206c697374206f66206163746976652026262070656e64696e6720504950732e2901546865205049507320617265207468656e20736f7274656420696e746f2061207072696f72697479207175657565206261736564206f6e2065616368205049502773207765696768742e002023204572726f72733d012a20604e6f7441436f6d6d69747465654d656d62657260202d20747269676765726564207768656e2061206e6f6e2d47432d6d656d626572206578656375746573207468652066756e6374696f6e2e58656e6163745f736e617073686f745f726573756c747304011c726573756c7473b90701705665633c2850697049642c20536e617073686f74526573756c74293e000e44d0456e616374732060726573756c74736020666f7220746865205049507320696e2074686520736e617073686f742071756575652e290154686520736e617073686f742077696c6c20626520617661696c61626c6520666f72206675727468657220656e6163746d656e747320756e74696c20697420697320636c65617265642e0055015468652060726573756c7473602061726520656e636f6465642061206c697374206f6620602869642c20726573756c7429602077686572652060726573756c7460206973206170706c69656420746f20606964602e49014e6f746520746861742074686520736e617073686f74207072696f7269747920717565756520697320656e636f646564207769746820746865202a6c6f77657374207072696f726974792066697273742a2e5501736f2060726573756c7473203d205b2869642c20417070726f7665295d602077696c6c20617070726f76652060536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20315d602e002023204572726f72730d012a20604261644f726967696e60202d20756e6c657373206120474320766f74696e67206d616a6f7269747920657865637574657320746869732066756e6374696f6e2e21012a206043616e6e6f74536b697050697060202d206120676976656e205049502068617320616c7265616479206265656e20736b697070656420746f6f206d616e792074696d65732e0d012a2060536e617073686f74526573756c74546f6f4c6172676560202d206f6e206c656e28726573756c747329203e206c656e28736e617073686f745f7175657565292e702a2060536e617073686f7449644d69736d6174636860202d2069663a2420206060607465787498202020e2888320286920e2888820302e2e536e617073686f7451756575652e6c656e2829292efc2020202020726573756c74735b695d2e3020e289a020536e617073686f7451756575655b536e617073686f7451756575652e6c656e2829202d20695d2e6964142020606060f8202020546869732069732070726f746563747320616761696e737420636c656172696e67207175657565207768696c6520474320697320766f74696e672e54657865637574655f7363686564756c65645f7069700401086964710301145069704964000f04d8496e7465726e616c20646973706174636861626c6520746861742068616e646c657320657865637574696f6e206f662061205049502e506578706972655f7363686564756c65645f70697008010c6469648001284964656e7469747949640001086964710301145069704964001004dc496e7465726e616c20646973706174636861626c6520746861742068616e646c65732065787069726174696f6e206f662061205049502e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb907000002bd0700bd07000004087103c10700c107082c70616c6c65745f7069707338536e617073686f74526573756c7400010c1c417070726f76650000001852656a65637400010010536b697000020000c507084070616c6c65745f706f7274666f6c696f1043616c6c04045400012c406372656174655f706f7274666f6c696f0401106e616d65a9030134506f7274666f6c696f4e616d65000004a843726561746573206120706f7274666f6c696f20776974682074686520676976656e20606e616d65602e4064656c6574655f706f7274666f6c696f04010c6e756de8013c506f7274666f6c696f4e756d626572000120350144656c657465732061207573657220706f7274666f6c696f2e204120706f7274666f6c696f2063616e2062652064656c65746564206f6e6c7920696620697420686173206e6f2066756e64732e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2ef02a2060506f7274666f6c696f4e6f74456d707479602069662074686520706f7274666f6c696f207374696c6c20686f6c647320616e79206173736574003423205065726d697373696f6e732c2a20506f7274666f6c696f4072656e616d655f706f7274666f6c696f08010c6e756de8013c506f7274666f6c696f4e756d62657200011c746f5f6e616d65a9030134506f7274666f6c696f4e616d6500021c8052656e616d65732061206e6f6e2d64656661756c7420706f7274666f6c696f2e002023204572726f72731d012a2060506f7274666f6c696f446f65734e6f7445786973746020696620606e756d6020646f65736e2774207265666572656e636520612076616c696420706f7274666f6c696f2e003423205065726d697373696f6e732c2a20506f7274666f6c696f58717569745f706f7274666f6c696f5f637573746f647904010c706964e0012c506f7274666f6c696f4964000320bc5768656e2063616c6c65642062792074686520637573746f6469616e206f662060706f7274666f6c696f5f6964602c4901616c6c6f77732072657475726e696e672074686520637573746f6479206f662074686520706f7274666f6c696f20746f2074686520706f7274666f6c696f206f776e657220756e696c61746572616c6c792e002023204572726f72735d012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f74207468652063757272656e7420637573746f6469616e206f662060706f7274666f6c696f5f6964602e003423205065726d697373696f6e732c2a20506f7274666f6c696f606163636570745f706f7274666f6c696f5f637573746f647904011c617574685f696428010c753634000400506d6f76655f706f7274666f6c696f5f66756e64730c011066726f6de0012c506f7274666f6c696f4964000108746fe0012c506f7274666f6c696f496400011466756e6473c90701245665633c46756e643e000548a1014d6f7665732066756e6769676c6520616e206e6f6e2d66756e6769626c6520746f6b656e732066726f6d206f6e6520706f7274666f6c696f206f6620616e206964656e7469747920746f20616e6f7468657220706f7274666f6c696f206f66207468652073616d65e06964656e746974792e204d7573742062652063616c6c65642062792074686520637573746f6469616e206f66207468652073656e6465722e110146756e64732066726f6d2064656c6574656420706f7274666f6c696f732063616e20616c736f206265207265636f7665726564207669612074686973206d6574686f642e00e0412073686f7274206d656d6f2063616e20626520616464656420746f20746f206561636820746f6b656e20616d6f756e74206d6f7665642e002023204572726f727369012a2060506f7274666f6c696f446f65734e6f74457869737460206966206f6e65206f7220626f7468206f662074686520706f7274666f6c696f73207265666572656e636520616e20696e76616c696420706f7274666f6c696f2e51012a206064657374696e6174696f6e5f69735f73616d655f706f7274666f6c696f6020696620626f74682073656e64657220616e6420726563656976657220706f7274666f6c696f20617265207468652073616d6591012a2060446966666572656e744964656e74697479506f7274666f6c696f7360206966207468652073656e64657220616e6420726563656976657220706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e74697469657349012a2060556e617574686f72697a6564437573746f6469616e60206966207468652063616c6c6572206973206e6f742074686520637573746f6469616e206f66207468652066726f6d20706f7274666f6c696f41012a2060496e73756666696369656e74506f7274666f6c696f42616c616e636560206966207468652073656e64657220646f6573206e6f74206861766520656e6f75676820667265652062616c616e63654d012a20604e6f4475706c6963617465417373657473416c6c6f77656460207468652073616d65207469636b65722063616e277420626520726570656174656420696e20746865206974656d7320766563746f722e55012a2060496e76616c69645472616e736665724e46544e6f744f776e656460206966207468652063616c6c657220697320747279696e6720746f206d6f766520616e204e465420686520646f65736e2774206f776e2e31012a2060496e76616c69645472616e736665724e465449734c6f636b656460206966207468652063616c6c657220697320747279696e6720746f206d6f76652061206c6f636b6564204e46542e003423205065726d697373696f6e732c2a20506f7274666f6c696f547072655f617070726f76655f706f7274666f6c696f0801187469636b6572a801185469636b6572000130706f7274666f6c696f5f6964e0012c506f7274666f6c696f4964000624e05072652d617070726f7665732074686520726563656976656d656e74206f6620616e20617373657420746f206120706f7274666f6c696f2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e55012a2060706f7274666f6c696f5f696460202d20746865205b60506f7274666f6c696f4964605d20746861742063616e207265636569766520607469636b65726020776974686f75742061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f7472656d6f76655f706f7274666f6c696f5f7072655f617070726f76616c0801187469636b6572a801185469636b6572000130706f7274666f6c696f5f6964e0012c506f7274666f6c696f4964000724d052656d6f766573207468652070726520617070726f76616c206f6620616e20617373657420746f206120706f7274666f6c696f2e002c2320417267756d656e7473b42a20606f726967696e60202d20746865207365636f6e64617279206b6579206f66207468652073656e6465722e05012a20607469636b657260202d20746865205b605469636b6572605d20746861742077696c6c206265206578656d70742066726f6d2061666669726d6174696f6e2e55012a2060706f7274666f6c696f5f696460202d20746865205b60506f7274666f6c696f4964605d20746861742063616e207265636569766520607469636b65726020776974686f75742061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f8c616c6c6f775f6964656e746974795f746f5f6372656174655f706f7274666f6c696f73040140747275737465645f6964656e746974798001284964656e746974794964000814b1014164647320616e206964656e7469747920746861742077696c6c20626520616c6c6f77656420746f2063726561746520616e642074616b6520637573746f6479206f66206120706f7274666f6c696f20756e646572207468652063616c6c65722773206964656e746974792e002c2320417267756d656e747389012a2060747275737465645f6964656e7469747960202d20746865205b604964656e746974794964605d20746861742077696c6c20626520616c6c6f77656420746f2063616c6c20606372656174655f637573746f64795f706f7274666f6c696f602e008c7265766f6b655f6372656174655f706f7274666f6c696f735f7065726d697373696f6e0401206964656e746974798001284964656e746974794964000914a10152656d6f766573207065726d697373696f6e206f6620616e206964656e7469747920746f2063726561746520616e642074616b6520637573746f6479206f66206120706f7274666f6c696f20756e646572207468652063616c6c65722773206964656e746974792e002c2320417267756d656e7473b1012a20606964656e7469747960202d20746865205b604964656e746974794964605d20746861742077696c6c206861766520746865207065726d697373696f6e7320746f2063616c6c20606372656174655f637573746f64795f706f7274666f6c696f60207265766f6b65642e00606372656174655f637573746f64795f706f7274666f6c696f080148706f7274666f6c696f5f6f776e65725f69648001284964656e746974794964000138706f7274666f6c696f5f6e616d65a9030134506f7274666f6c696f4e616d65000a18bd0143726561746573206120706f7274666f6c696f20756e646572207468652060706f7274666f6c696f5f6f776e65725f696460206964656e7469747920616e64207472616e73666572732069747320637573746f647920746f207468652063616c6c65722773206964656e746974792e002c2320417267756d656e747331012a2060706f7274666f6c696f5f6f776e65725f696460202d20746865205b604964656e746974794964605d20746861742077696c6c206f776e20746865206e657720706f7274666f6c696f2e01012a2060706f7274666f6c696f5f6e616d6560202d20746865205b60506f7274666f6c696f4e616d65605d206f6620746865206e657720706f7274666f6c696f2e000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ec907000002cd0700cd070c4c706f6c796d6573685f7072696d69746976657324706f7274666f6c696f1046756e64000008012c6465736372697074696f6eb503013c46756e644465736372697074696f6e0001106d656d6f8401304f7074696f6e3c4d656d6f3e0000d107084c70616c6c65745f70726f746f636f6c5f6665651043616c6c040454000108486368616e67655f636f656666696369656e7404012c636f656666696369656e74c9030120506f73526174696f000010c04368616e676573207468652066656520636f656666696369656e7420666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e3c6368616e67655f626173655f6665650801086f70d507012850726f746f636f6c4f70000120626173655f66656518011c42616c616e6365000110ac4368616e67657320746865206120626173652066656520666f722074686520726f6f74206f726967696e2e002023204572726f7273882a20604261644f726967696e60202d204f6e6c7920726f6f7420616c6c6f7765642e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ed5070c64706f6c796d6573685f636f6d6d6f6e5f7574696c69746965733070726f746f636f6c5f6665652850726f746f636f6c4f700001404c417373657452656769737465725469636b65720000002841737365744973737565000100444173736574416464446f63756d656e7473000200404173736574437265617465417373657400030060436865636b706f696e744372656174655363686564756c65000400a4436f6d706c69616e63654d616e61676572416464436f6d706c69616e6365526571756972656d656e74000500584964656e746974794364645265676973746572446964000600404964656e74697479416464436c61696d000700a44964656e746974794164645365636f6e646172794b65797357697468417574686f72697a6174696f6e0008002c5069707350726f706f736500090040436f6e747261637473507574436f6465000a006c436f72706f7261746542616c6c6f7441747461636842616c6c6f74000b00744361706974616c446973747269627574696f6e44697374726962757465000c004c4e4654437265617465436f6c6c656374696f6e000d001c4e46544d696e74000e006c4964656e746974794372656174654368696c644964656e74697479000f0000d9070c4070616c6c65745f7363686564756c65721870616c6c65741043616c6c040454000118207363686564756c651001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00000470416e6f6e796d6f75736c79207363686564756c652061207461736b2e1863616e63656c0801107768656e100138543a3a426c6f636b4e756d626572000114696e64657810010c7533320001049443616e63656c20616e20616e6f6e796d6f75736c79207363686564756c6564207461736b2e387363686564756c655f6e616d656414010869640401205461736b4e616d650001107768656e100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000204585363686564756c652061206e616d6564207461736b2e3063616e63656c5f6e616d656404010869640401205461736b4e616d650003047843616e63656c2061206e616d6564207363686564756c6564207461736b2e387363686564756c655f61667465721001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000404a8416e6f6e796d6f75736c79207363686564756c652061207461736b20616674657220612064656c61792e507363686564756c655f6e616d65645f616674657214010869640401205461736b4e616d650001146166746572100138543a3a426c6f636b4e756d6265720001386d617962655f706572696f646963dd0701a04f7074696f6e3c7363686564756c653a3a506572696f643c543a3a426c6f636b4e756d6265723e3e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000504905363686564756c652061206e616d6564207461736b20616674657220612064656c61792e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632edd0704184f7074696f6e04045401d1030108104e6f6e6500000010536f6d650400d1030000010000e107084470616c6c65745f736574746c656d656e741043616c6c040454000160306372656174655f76656e75650c011c64657461696c73e103013056656e756544657461696c7300011c7369676e657273f401445665633c543a3a4163636f756e7449643e00010c747970e503012456656e756554797065000014585265676973746572732061206e65772076656e75652e00a42a206064657461696c7360202d2045787472612064657461696c732061626f757420612076656e75653d012a20607369676e65727360202d204172726179206f66207369676e65727320746861742061726520616c6c6f77656420746f207369676e20726563656970747320666f7220746869732076656e7565942a206074797060202d2054797065206f662076656e7565206265696e672063726561746564507570646174655f76656e75655f64657461696c730801086964dd03011c56656e7565496400011c64657461696c73e103013056656e756544657461696c730001105c4564697420612076656e756527732064657461696c732e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a206064657461696c7360207370656369666965732074686520757064617465642076656e75652064657461696c732e447570646174655f76656e75655f747970650801086964dd03011c56656e7565496400010c747970e503012456656e756554797065000210504564697420612076656e7565277320747970652e00b42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742eb42a206074797065602073706563696669657320746865206e65772074797065206f66207468652076656e75652e5061666669726d5f776974685f72656365697074730c010869648d020134496e737472756374696f6e496400013c726563656970745f64657461696c73e50701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000324f441666669726d7320616e20696e737472756374696f6e207573696e6720726563656970747320666f72206f6666636861696e207472616e73666572732e002c2320417267756d656e747305012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672061666669726d65642eb1012a2060726563656970745f64657461696c7360202d206120766563746f72206f66205b605265636569707444657461696c73605d2c20776869636820636f6e7461696e207468652064657461696c732061626f757420746865206f6666636861696e207472616e736665722e95012a2060706f7274666f6c696f7360202d206120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f4c7365745f76656e75655f66696c746572696e670801187469636b6572a801185469636b657200011c656e61626c656429010110626f6f6c000420c0456e61626c6573206f722064697361626c65642076656e75652066696c746572696e6720666f72206120746f6b656e2e002c2320417267756d656e7473b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e19012a2060656e61626c656460202d20426f6f6c65616e20746861742064656369646573206966207468652066696c746572696e672073686f756c6420626520656e61626c65642e003423205065726d697373696f6e731c2a20417373657430616c6c6f775f76656e7565730801187469636b6572a801185469636b657200011876656e756573f50301305665633c56656e756549643e00051c0d01416c6c6f7773206164646974696f6e616c2076656e75657320746f2063726561746520696e737472756374696f6e7320696e766f6c76696e6720616e2061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2e7d012a206076656e75657360202d204172726179206f662076656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a2041737365743c646973616c6c6f775f76656e7565730801187469636b6572a801185469636b657200011876656e756573f50301305665633c56656e756549643e00061c69015265766f6b6573207065726d697373696f6e20676976656e20746f2076656e75657320666f72206372656174696e6720696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c61722061737365742e00b42a20607469636b657260202d205469636b6572206f662074686520746f6b656e20696e207175657374696f6e2ea5012a206076656e75657360202d204172726179206f662076656e756573207468617420617265206e6f206c6f6e67657220616c6c6f77656420746f2063726561746520696e737472756374696f6e7320666f722074686520746f6b656e20696e207175657374696f6e2e003423205065726d697373696f6e731c2a204173736574507570646174655f76656e75655f7369676e6572730c01086964dd03011c56656e7565496400011c7369676e657273f401445665633c543a3a4163636f756e7449643e00012c6164645f7369676e65727329010110626f6f6c0007105c4564697420612076656e75652773207369676e6572732eb42a20606964602073706563696669657320746865204944206f66207468652076656e756520746f20656469742ec02a20607369676e657273602073706563696669657320746865207369676e65727320746f206164642f72656d6f76652e91012a20606164645f7369676e657273602073706563696669657320746865207570646174652074797065206164642f72656d6f7665206f662076656e756520776865726520616464206973207472756520616e642072656d6f76652069732066616c73652e68657865637574655f6d616e75616c5f696e737472756374696f6e18010869648d020134496e737472756374696f6e4964000124706f7274666f6c696f8102014c4f7074696f6e3c506f7274666f6c696f49643e00014866756e6769626c655f7472616e736665727310010c7533320001386e6674735f7472616e736665727310010c7533320001486f6666636861696e5f7472616e736665727310010c7533320001307765696768745f6c696d6974e10401384f7074696f6e3c5765696768743e000834844d616e75616c6c7920657865637574657320616e20696e737472756374696f6e2e002c2320417267756d656e747301012a20606964603a20546865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e20746f2062652065786563757465642e95012a2060706f7274666f6c696f603a20204f6e65206f66207468652063616c6c65722773205b60506f7274666f6c696f4964605d20776869636820697320616c736f206120636f756e74657220706174727920696e2074686520696e737472756374696f6e2e61014966204e6f6e652c207468652063616c6c6572206d757374206265207468652076656e75652063726561746f72206f72206120636f756e74657220706172747920696e2061205b604c65673a3a4f6666436861696e605d2e1d012a206066756e6769626c655f7472616e7366657273603a20546865206e756d626572206f662066756e6769626c65206c65677320696e2074686520696e737472756374696f6e2e31012a20606e6674735f7472616e7366657273603a20546865206e756d626572206f66206e667473206265696e67207472616e7366657272656420696e2074686520696e737472756374696f6e2e1d012a20606f6666636861696e5f7472616e7366657273603a20546865206e756d626572206f66206f6666636861696e206c65677320696e2074686520696e737472756374696f6e2e8d012a20607765696768745f6c696d6974603a20416e206f7074696f6e616c206d6178696d756d205b60576569676874605d2076616c756520746f206265206368617267656420666f7220657865637574696e672074686520696e737472756374696f6e2e710149662074686520607765696768745f6c696d697460206973206c657373207468616e2074686520726571756972656420616d6f756e742c2074686520696e737472756374696f6e2077696c6c206661696c20657865637574696f6e2e004d024e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f657865637574655f696e737472756374696f6e5f696e666f602072657475726e7320616e20696e7374616e6365206f66205b6045786563757465496e737472756374696f6e496e666f605d2c20776869636820636f6e7461696e732074686520636f756e7420706172616d65746572732e3c6164645f696e737472756374696f6e18012076656e75655f6964dd03011c56656e7565496400013c736574746c656d656e745f74797065f9030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773fd0301205665633c4c65673e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e0009245c416464732061206e657720696e737472756374696f6e2e002c2320417267756d656e74731d012a206076656e75655f6964603a20546865205b6056656e75654964605d206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e79012a2060736574746c656d656e745f74797065603a20546865205b60536574746c656d656e7454797065605d2073706563696679696e67207768656e2074686520696e737472756374696f6e2073686f756c6420626520736574746c65642e4d012a206074726164655f64617465603a204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f64617465603a204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f72636564292efc2a20606c656773603a204120766563746f72206f6620616c6c205b604c6567605d20696e636c7564656420696e207468697320696e737472756374696f6e2ee82a20606d656d6f603a20416e206f7074696f6e616c205b604d656d6f605d206669656c6420666f72207468697320696e737472756374696f6e2e686164645f616e645f61666669726d5f696e737472756374696f6e1c012076656e75655f6964dd03011c56656e7565496400013c736574746c656d656e745f74797065f9030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773fd0301205665633c4c65673e000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e000a348c4164647320616e642061666669726d732061206e657720696e737472756374696f6e2e002c2320417267756d656e74731d012a206076656e75655f6964603a20546865205b6056656e75654964605d206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e79012a2060736574746c656d656e745f74797065603a20546865205b60536574746c656d656e7454797065605d2073706563696679696e67207768656e2074686520696e737472756374696f6e2073686f756c6420626520736574746c65642e4d012a206074726164655f64617465603a204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f64617465603a204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f72636564292efc2a20606c656773603a204120766563746f72206f6620616c6c205b604c6567605d20696e636c7564656420696e207468697320696e737472756374696f6e2e91012a2060706f7274666f6c696f73603a204120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e2ee82a20606d656d6f603a20416e206f7074696f6e616c205b604d656d6f605d206669656c6420666f72207468697320696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f4861666669726d5f696e737472756374696f6e08010869648d020134496e737472756374696f6e4964000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000b20bc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e747305012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672061666669726d65642e95012a2060706f7274666f6c696f7360202d206120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f5077697468647261775f61666669726d6174696f6e08010869648d020134496e737472756374696f6e4964000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000c20c0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e74734d012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e2067657474696e6720616e2061666669726d6174696f6e2077697468647261776e2ec1012a2060706f7274666f6c696f7360202d206120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e207769746864726177616c2e003423205065726d697373696f6e732c2a20506f7274666f6c696f4872656a6563745f696e737472756374696f6e08010869648d020134496e737472756374696f6e4964000124706f7274666f6c696fe0012c506f7274666f6c696f4964000d208052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e747305012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672072656a65637465642e61012a2060706f7274666f6c696f60202d20746865205b60506f7274666f6c696f4964605d20746861742062656c6f6e677320746f2074686520696e737472756374696f6e20616e642069732072656a656374696e672069742e003423205065726d697373696f6e732c2a20506f7274666f6c696f74657865637574655f7363686564756c65645f696e737472756374696f6e08010869648d020134496e737472756374696f6e49640001307765696768745f6c696d6974200118576569676874000e048101526f6f742063616c6c61626c652065787472696e7369632c207573656420617320616e20696e7465726e616c2063616c6c20746f20657865637574652061207363686564756c656420736574746c656d656e7420696e737472756374696f6e2e7c61666669726d5f776974685f72656365697074735f776974685f636f756e7410010869648d020134496e737472756374696f6e496400013c726563656970745f64657461696c73e50701dc5665633c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e0001406e756d6265725f6f665f617373657473f90701604f7074696f6e3c41666669726d6174696f6e436f756e743e000f30f441666669726d7320616e20696e737472756374696f6e207573696e6720726563656970747320666f72206f6666636861696e207472616e73666572732e002c2320417267756d656e747305012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672061666669726d65642eb1012a2060726563656970745f64657461696c7360202d206120766563746f72206f66205b605265636569707444657461696c73605d2c20776869636820636f6e7461696e207468652064657461696c732061626f757420746865206f6666636861696e207472616e736665722e95012a2060706f7274666f6c696f7360202d206120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e2e19022a20606e756d6265725f6f665f61737365747360202d20616e206f7074696f6e616c205b6041666669726d6174696f6e436f756e74605d20746861742077696c6c206265207573656420666f72206120707265636973652066656520657374696d6174696f6e206265666f726520657865637574696e67207468652065787472696e7369632e0085014e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f61666669726d6174696f6e5f636f756e74602072657475726e7320616e20696e7374616e6365206f66205b6041666669726d6174696f6e436f756e74605d2e003423205065726d697373696f6e732c2a20506f7274666f6c696f7461666669726d5f696e737472756374696f6e5f776974685f636f756e740c010869648d020134496e737472756374696f6e4964000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e0001406e756d6265725f6f665f617373657473f90701604f7074696f6e3c41666669726d6174696f6e436f756e743e00102cbc50726f766964652061666669726d6174696f6e20746f20616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e747305012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672061666669726d65642e95012a2060706f7274666f6c696f7360202d206120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e2e19022a20606e756d6265725f6f665f61737365747360202d20616e206f7074696f6e616c205b6041666669726d6174696f6e436f756e74605d20746861742077696c6c206265207573656420666f72206120707265636973652066656520657374696d6174696f6e206265666f726520657865637574696e67207468652065787472696e7369632e0085014e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f61666669726d6174696f6e5f636f756e74602072657475726e7320616e20696e7374616e6365206f66205b6041666669726d6174696f6e436f756e74605d2e003423205065726d697373696f6e732c2a20506f7274666f6c696f7472656a6563745f696e737472756374696f6e5f776974685f636f756e740c010869648d020134496e737472756374696f6e4964000124706f7274666f6c696fe0012c506f7274666f6c696f49640001406e756d6265725f6f665f617373657473050801484f7074696f6e3c4173736574436f756e743e00112c8052656a6563747320616e206578697374696e6720696e737472756374696f6e2e002c2320417267756d656e747305012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672072656a65637465642e61012a2060706f7274666f6c696f60202d20746865205b60506f7274666f6c696f4964605d20746861742062656c6f6e677320746f2074686520696e737472756374696f6e20616e642069732072656a656374696e672069742e01022a20606e756d6265725f6f665f61737365747360202d20616e206f7074696f6e616c205b604173736574436f756e74605d20746861742077696c6c206265207573656420666f72206120707265636973652066656520657374696d6174696f6e206265666f726520657865637574696e67207468652065787472696e7369632e0035024e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f657865637574655f696e737472756374696f6e5f696e666f602072657475726e7320616e20696e7374616e6365206f66205b6045786563757465496e737472756374696f6e496e666f605d2c20776869636820636f6e7461696e2074686520617373657420636f756e742e003423205065726d697373696f6e732c2a20506f7274666f6c696f7c77697468647261775f61666669726d6174696f6e5f776974685f636f756e740c010869648d020134496e737472756374696f6e4964000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e0001406e756d6265725f6f665f617373657473f90701604f7074696f6e3c41666669726d6174696f6e436f756e743e00122cc0576974686472617720616e2061666669726d6174696f6e20666f72206120676976656e20696e737472756374696f6e2e002c2320417267756d656e74734d012a2060696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e2067657474696e6720616e2061666669726d6174696f6e2077697468647261776e2ec1012a2060706f7274666f6c696f7360202d206120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e207769746864726177616c2e19022a20606e756d6265725f6f665f61737365747360202d20616e206f7074696f6e616c205b6041666669726d6174696f6e436f756e74605d20746861742077696c6c206265207573656420666f72206120707265636973652066656520657374696d6174696f6e206265666f726520657865637574696e67207468652065787472696e7369632e0085014e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f61666669726d6174696f6e5f636f756e74602072657475726e7320616e20696e7374616e6365206f66205b6041666669726d6174696f6e436f756e74605d2e003423205065726d697373696f6e732c2a20506f7274666f6c696f786164645f696e737472756374696f6e5f776974685f6d65646961746f72731c012076656e75655f6964dd03011c56656e7565496400013c736574746c656d656e745f74797065f9030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773fd0301205665633c4c65673e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e0001246d65646961746f7273090801dc426f756e64656442547265655365743c4964656e7469747949642c20543a3a4d6178496e737472756374696f6e4d65646961746f72733e00132898416464732061206e657720696e737472756374696f6e2077697468206d65646961746f72732e002c2320417267756d656e74731d012a206076656e75655f6964603a20546865205b6056656e75654964605d206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e79012a2060736574746c656d656e745f74797065603a20546865205b60536574746c656d656e7454797065605d2073706563696679696e67207768656e2074686520696e737472756374696f6e2073686f756c6420626520736574746c65642e4d012a206074726164655f64617465603a204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f64617465603a204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f72636564292efc2a20606c656773603a204120766563746f72206f6620616c6c205b604c6567605d20696e636c7564656420696e207468697320696e737472756374696f6e2e19012a2060696e737472756374696f6e5f6d656d6f603a20416e206f7074696f6e616c205b604d656d6f605d206669656c6420666f72207468697320696e737472756374696f6e2e69012a20606d65646961746f7273603a204120736574206f66205b604964656e746974794964605d206f6620616c6c20746865206d616e6461746f7279206d65646961746f727320666f722074686520696e737472756374696f6e2e746164645f616e645f61666669726d5f776974685f6d65646961746f727320012076656e75655f6964dd03011c56656e7565496400013c736574746c656d656e745f74797065f9030178536574746c656d656e74547970653c543a3a426c6f636b4e756d6265723e00012874726164655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e00012876616c75655f64617465fc01444f7074696f6e3c543a3a4d6f6d656e743e0001106c656773fd0301205665633c4c65673e000128706f7274666f6c696f73f001405665633c506f7274666f6c696f49643e000140696e737472756374696f6e5f6d656d6f8401304f7074696f6e3c4d656d6f3e0001246d65646961746f7273090801dc426f756e64656442547265655365743c4964656e7469747949642c20543a3a4d6178496e737472756374696f6e4d65646961746f72733e001438c84164647320616e642061666669726d732061206e657720696e737472756374696f6e2077697468206d65646961746f72732e002c2320417267756d656e74731d012a206076656e75655f6964603a20546865205b6056656e75654964605d206f66207468652076656e7565207468697320696e737472756374696f6e2062656c6f6e677320746f2e79012a2060736574746c656d656e745f74797065603a20546865205b60536574746c656d656e7454797065605d2073706563696679696e67207768656e2074686520696e737472756374696f6e2073686f756c6420626520736574746c65642e4d012a206074726164655f64617465603a204f7074696f6e616c20646174652066726f6d2077686963682070656f706c652063616e20696e7465726163742077697468207468697320696e737472756374696f6e2e6d012a206076616c75655f64617465603a204f7074696f6e616c20646174652061667465722077686963682074686520696e737472756374696f6e2073686f756c6420626520736574746c656420286e6f7420656e666f72636564292efc2a20606c656773603a204120766563746f72206f6620616c6c205b604c6567605d20696e636c7564656420696e207468697320696e737472756374696f6e2e91012a2060706f7274666f6c696f73603a204120766563746f72206f66205b60506f7274666f6c696f4964605d20756e646572207468652063616c6c6572277320636f6e74726f6c20616e6420696e74656e64656420666f722061666669726d6174696f6e2e19012a2060696e737472756374696f6e5f6d656d6f603a20416e206f7074696f6e616c205b604d656d6f605d206669656c6420666f72207468697320696e737472756374696f6e2e69012a20606d65646961746f7273603a204120736574206f66205b604964656e746974794964605d206f6620616c6c20746865206d616e6461746f7279206d65646961746f727320666f722074686520696e737472756374696f6e2e003423205065726d697373696f6e732c2a20506f7274666f6c696f7861666669726d5f696e737472756374696f6e5f61735f6d65646961746f72080138696e737472756374696f6e5f69648d020134496e737472756374696f6e4964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e0015188d0141666669726d732074686520696e737472756374696f6e2061732061206d65646961746f72202d2073686f756c64206f6e6c792062652063616c6c6564206279206d65646961746f72732c206f74686572776973652069742077696c6c206661696c2e002c2320417267756d656e7473b02a20606f726967696e603a20546865207365636f6e64617279206b6579206f66207468652073656e6465722e41012a2060696e737472756374696f6e5f6964603a20546865205b60496e737472756374696f6e4964605d20746861742077696c6c2062652061666669726d656420627920746865206d65646961746f722ec5012a2060657870697279603a20416e204f7074696f6e616c2076616c756520666f7220646566696e696e67207768656e207468652061666669726d6174696f6e2077696c6c2065787069726520284e6f6e65206d65616e732069742077696c6c20616c776179732062652076616c6964292e8077697468647261775f61666669726d6174696f6e5f61735f6d65646961746f72040138696e737472756374696f6e5f69648d020134496e737472756374696f6e4964001614d10152656d6f76657320746865206d65646961746f7227732061666669726d6174696f6e20666f722074686520696e737472756374696f6e202d2073686f756c64206f6e6c792062652063616c6c6564206279206d65646961746f72732c206f74686572776973652069742077696c6c206661696c2e002c2320417267756d656e7473b02a20606f726967696e603a20546865207365636f6e64617279206b6579206f66207468652073656e6465722e45012a2060696e737472756374696f6e5f6964603a20546865205b60496e737472756374696f6e4964605d20746861742077696c6c2068617665207468652061666669726d6174696f6e2072656d6f7665642e7872656a6563745f696e737472756374696f6e5f61735f6d65646961746f72080138696e737472756374696f6e5f69648d020134496e737472756374696f6e49640001406e756d6265725f6f665f617373657473050801484f7074696f6e3c4173736574436f756e743e00171c750152656a6563747320616e206578697374696e6720696e737472756374696f6e202d2073686f756c64206f6e6c792062652063616c6c6564206279206d65646961746f72732c206f74686572776973652069742077696c6c206661696c2e002c2320417267756d656e747335012a2060696e737472756374696f6e5f696460202d20746865205b60496e737472756374696f6e4964605d206f662074686520696e737472756374696f6e206265696e672072656a65637465642e01022a20606e756d6265725f6f665f61737365747360202d20616e206f7074696f6e616c205b604173736574436f756e74605d20746861742077696c6c206265207573656420666f72206120707265636973652066656520657374696d6174696f6e206265666f726520657865637574696e67207468652065787472696e7369632e0035024e6f74653a2063616c6c696e672074686520727063206d6574686f6420606765745f657865637574655f696e737472756374696f6e5f696e666f602072657475726e7320616e20696e7374616e6365206f66205b6045786563757465496e737472756374696f6e496e666f605d2c20776869636820636f6e7461696e2074686520617373657420636f756e742e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652ee507000002e90700e9070c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74385265636569707444657461696c7308244163636f756e7449640100444f6666436861696e5369676e617475726501ed070018010c75696428010c753634000138696e737472756374696f6e5f69648d020134496e737472756374696f6e49640001186c65675f6964e90301144c656749640001187369676e65720001244163636f756e7449640001247369676e6174757265ed0701444f6666436861696e5369676e61747572650001206d65746164617461ed03015c4f7074696f6e3c526563656970744d657461646174613e0000ed07082873705f72756e74696d65384d756c74695369676e617475726500010c1c45643235353139040045070148656432353531393a3a5369676e61747572650000001c53723235353139040075070148737232353531393a3a5369676e61747572650001001445636473610400f107014065636473613a3a5369676e617475726500020000f1070c1c73705f636f7265146563647361245369676e617475726500000400f50701205b75383b2036355d0000f507000003410000000800f90704184f7074696f6e04045401fd070108104e6f6e6500000010536f6d650400fd070000010000fd070c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e744041666669726d6174696f6e436f756e7400000c014873656e6465725f61737365745f636f756e74010801284173736574436f756e7400015072656365697665725f61737365745f636f756e74010801284173736574436f756e740001386f6666636861696e5f636f756e7410010c753332000001080c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74284173736574436f756e7400000c012066756e6769626c6510010c7533320001306e6f6e5f66756e6769626c6510010c7533320001246f66665f636861696e10010c7533320000050804184f7074696f6e0404540101080108104e6f6e6500000010536f6d6504000108000001000009080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401800453000004009102012c42547265655365743c543e00000d08084470616c6c65745f737461746973746963731043616c6c040454000110587365745f6163746976655f61737365745f7374617473080114617373657409040128417373657453636f7065000128737461745f74797065731108014842547265655365743c53746174547970653e00003c80536574207468652061637469766520617373657420737461745f74797065732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e09012d2060737461745f747970657360202d20746865206e6577207374617420747970657320746f207265706c61636520616e79206578697374696e672074797065732e002023204572726f72731d012d206053746174547970654c696d69745265616368656460202d20746f6f206d616e79207374617420747970657320656e61626c656420666f722074686520606173736574602e85012d206043616e6e6f7452656d6f76655374617454797065496e55736560202d2063616e206e6f742072656d6f7665206120737461742074797065207468617420697320696e20757365206279207472616e7366657220636f6e646974696f6e732e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365746062617463685f7570646174655f61737365745f73746174730c0114617373657409040128417373657453636f7065000124737461745f7479706511040120537461745479706500011876616c7565731508015042547265655365743c537461745570646174653e00013cec416c6c6f77206120747275737465642069737375657220746f20696e69742f726573796e63207469636b65722f636f6d70616e792073746174732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e902d2060737461745f7479706560202d2073746174207479706520746f207570646174652eb02d206076616c75657360202d20557064617465642076616c75657320666f722060737461745f74797065602e002023204572726f727305012d206053746174547970654d697373696e6760202d2060737461745f7479706560206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d204173736574747365745f61737365745f7472616e736665725f636f6d706c69616e6365080114617373657409040128417373657453636f706500014c7472616e736665725f636f6e646974696f6e731908016c42547265655365743c5472616e73666572436f6e646974696f6e3e00023c90536574206173736574207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747325012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606173736574602ed02d2060617373657460202d2074686520617373657420746f206368616e67652074686520616374697665207374617473206f6e2e61012d20607472616e736665725f636f6e646974696f6e7360202d20746865206e6577207472616e7366657220636f6e646974696f6e20746f207265706c61636520616e79206578697374696e6720636f6e646974696f6e732e002023204572726f727355012d20605472616e73666572436f6e646974696f6e4c696d69745265616368656460202d20746f6f206d616e79207472616e7366657220636f6e64697469746f6e20656e61626c656420666f7220606173736574602e91012d206053746174547970654d697373696e6760202d2061207472616e7366657220636f6e646974696f6e2072657175697265732061207374617420747970652074686174206973206e6f7420656e61626c656420666f722074686520606173736574602e21012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365744c7365745f656e7469746965735f6578656d70740c012469735f6578656d707429010110626f6f6c0001286578656d70745f6b6579410401685472616e73666572436f6e646974696f6e4578656d70744b6579000120656e7469746965739102015042547265655365743c4964656e7469747949643e00033811015365742f756e73657420656e746974696573206578656d70742066726f6d20616e2061737365742773207472616e7366657220636f6d706c69616e63652072756c65732e002c2320417267756d656e747351012d20606f726967696e60202d2061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620606578656d70745f6b65792e6173736574602ee02d206069735f6578656d707460202d20656e61626c652f64697361626c65206578656d7074696f6e20666f722060656e746974696573602e1d012d20606578656d70745f6b657960202d2074686520617373657420616e642073746174207479706520746f206578656d7074207468652060656e746974696573602066726f6d2eec2d2060656e74697469657360202d2074686520656e74697469657320746f207365742f756e73657420746865206578656d7074696f6e20666f722e002023204572726f727321012d2060556e617574686f72697a65644167656e746020696620606f726967696e60206973206e6f74206167656e742d7065726d697373696f6e656420666f7220606173736574602e003423205065726d697373696f6e731c2d204167656e741c2d2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e1108042042547265655365740404540111040004000d040000001508042042547265655365740404540125040004002104000000190804204254726565536574040454013d0400040039040000001d08082870616c6c65745f73746f1043616c6c040454000118446372656174655f66756e647261697365722801486f66666572696e675f706f7274666f6c696fe0012c506f7274666f6c696f49640001386f66666572696e675f6173736574a801185469636b657200014472616973696e675f706f7274666f6c696fe0012c506f7274666f6c696f496400013472616973696e675f6173736574a801185469636b65720001147469657273210801385665633c5072696365546965723e00012076656e75655f6964dd03011c56656e756549640001147374617274fc01444f7074696f6e3c543a3a4d6f6d656e743e00010c656e64fc01444f7074696f6e3c543a3a4d6f6d656e743e0001486d696e696d756d5f696e766573746d656e7418011c42616c616e636500013c66756e647261697365725f6e616d655104013846756e647261697365724e616d65000040604372656174652061206e65772066756e647261697365722e000d012a20606f66666572696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e672074686520606f66666572696e675f6173736574602ea42a20606f66666572696e675f617373657460202d204173736574206265696e67206f6666657265642e05012a206072616973696e675f706f7274666f6c696f60202d20506f7274666f6c696f20636f6e7461696e696e6720746865206072616973696e675f6173736574602e35012a206072616973696e675f617373657460202d204173736574206265696e672065786368616e67656420666f7220606f66666572696e675f617373657460206f6e20696e766573746d656e742ee82a2060746965727360202d20507269636520746965727320746f2063686172676520696e766573746f7273206f6e20696e766573746d656e742ea82a206076656e75655f696460202d2056656e756520746f2068616e646c6520736574746c656d656e742e4d012a2060737461727460202d2046756e647261697365722073746172742074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c20737461727420696d6d6564696174656c792e29012a2060656e6460202d2046756e6472616973657220656e642074696d652c20696620604e6f6e6560207468652066756e647261697365722077696c6c206e65766572206578706972652ecd012a20606d696e696d756d5f696e766573746d656e7460202d204d696e696d756d20616d6f756e74206f66206072616973696e675f617373657460207468617420616e20696e766573746f72206e6565647320746f207370656e6420746f20696e7665737420696e20746869732072616973652ef02a206066756e647261697365725f6e616d6560202d2046756e64726169736572206e616d652c206f6e6c79207573656420696e20746865205549732e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f18696e766573741c0150696e766573746d656e745f706f7274666f6c696fe0012c506f7274666f6c696f496400014466756e64696e675f706f7274666f6c696fe0012c506f7274666f6c696f49640001386f66666572696e675f6173736574a801185469636b657200010869644d04013046756e64726169736572496400013c70757263686173655f616d6f756e7418011c42616c616e63650001246d61785f70726963653504013c4f7074696f6e3c42616c616e63653e00011c72656365697074290801e84f7074696f6e3c5265636569707444657461696c733c543a3a4163636f756e7449642c20543a3a4f6666436861696e5369676e61747572653e3e0001305c496e7665737420696e20612066756e647261697365722e0041012a2060696e766573746d656e745f706f7274666f6c696f60202d20506f7274666f6c696f207468617420606f66666572696e675f6173736574602077696c6c206265206465706f736974656420696e2e01012a206066756e64696e675f706f7274666f6c696f60202d20506f7274666f6c696f20746861742077696c6c2066756e642074686520696e766573746d656e742ea02a20606f66666572696e675f617373657460202d20417373657420746f20696e7665737420696e2eac2a2060696460202d204944206f66207468652066756e6472616973657220746f20696e7665737420696e2ef42a206070757263686173655f616d6f756e7460202d20416d6f756e74206f6620606f66666572696e675f61737365746020746f2070757263686173652eb9012a20606d61785f707269636560202d204d6178696d756d20707269636520746f207061792070657220756e6974206f6620606f66666572696e675f6173736574602c20496620604e6f6e6560746865726520617265206e6f20636f6e73747261696e7473206f6e2070726963652e69012a20607265636569707460202d204f66662d636861696e207265636569707420746f2075736520696e7374656164206f66206f6e2d636861696e2062616c616e636520696e206066756e64696e675f706f7274666f6c696f602e003423205065726d697373696f6e732c2a20506f7274666f6c696f44667265657a655f66756e647261697365720801386f66666572696e675f6173736574a801185469636b657200010869644d04013046756e64726169736572496400021c50467265657a6520612066756e647261697365722e00942a20606f66666572696e675f617373657460202d20417373657420746f20667265657a652ea02a2060696460202d204944206f66207468652066756e6472616973657220746f20667265657a652e003423205065726d697373696f6e731c2a2041737365744c756e667265657a655f66756e647261697365720801386f66666572696e675f6173736574a801185469636b657200010869644d04013046756e64726169736572496400031c58556e667265657a6520612066756e647261697365722e009c2a20606f66666572696e675f617373657460202d20417373657420746f20756e667265657a652ea82a2060696460202d204944206f66207468652066756e6472616973657220746f20756e667265657a652e003423205065726d697373696f6e731c2a204173736574606d6f646966795f66756e647261697365725f77696e646f771001386f66666572696e675f6173736574a801185469636b657200010869644d04013046756e6472616973657249640001147374617274280124543a3a4d6f6d656e7400010c656e64fc01444f7074696f6e3c543a3a4d6f6d656e743e000424b44d6f64696679207468652074696d652077696e646f7720612066756e647261697365722069732061637469766500942a20606f66666572696e675f617373657460202d20417373657420746f206d6f646966792ea02a2060696460202d204944206f66207468652066756e6472616973657220746f206d6f646966792ea02a2060737461727460202d204e6577207374617274206f66207468652066756e647261697365722eb82a2060656e6460202d204e657720656e64206f66207468652066756e6472616973657220746f206d6f646966792e003423205065726d697373696f6e731c2a2041737365741073746f700801386f66666572696e675f6173736574a801185469636b657200010869644d04013046756e64726169736572496400051c4853746f7020612066756e647261697365722e008c2a20606f66666572696e675f617373657460202d20417373657420746f2073746f702e982a2060696460202d204944206f66207468652066756e6472616973657220746f2073746f702e003423205065726d697373696f6e731c2a2041737365740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e21080000022508002508082870616c6c65745f73746f245072696365546965720000080114746f74616c18011c42616c616e6365000114707269636518011c42616c616e63650000290804184f7074696f6e04045401e9070108104e6f6e6500000010536f6d650400e90700000100002d08083c70616c6c65745f74726561737572791043616c6c0404540001083064697362757273656d656e7404013462656e65666963696172696573310801785665633c42656e65666963696172793c42616c616e63654f663c543e3e3e00001c51014974207472616e73666572732062616c616e6365732066726f6d20747265617375727920746f2065616368206f662062656e6566696369617269657320616e642074686520737065636966696320616d6f756e7444666f722065616368206f66207468656d2e001c23204572726f72c42a20604261644f726967696e603a204f6e6c7920726f6f742063616e2065786563757465207472616e73616374696f6e2e5d012a2060496e73756666696369656e7442616c616e6365603a2049662074726561737572792062616c616e636573206973206e6f7420656e6f75676820746f20636f76657220616c6c2062656e656669636961726965732e25012a2060496e76616c69644964656e74697479603a204966206f6e65206f66207468652062656e656669636961726965732068617320616e20696e76616c6964206964656e746974792e347265696d62757273656d656e74040118616d6f756e7418013042616c616e63654f663c543e00010c1d014974207472616e7366657273207468652073706563696669632060616d6f756e74602066726f6d20606f726967696e60206163636f756e7420696e746f2074726561737572792e0049014f6e6c79206163636f756e747320776869636820617265206173736f63696174656420746f20616e206964656e746974792063616e206d616b65206120646f6e6174696f6e20746f2074726561737572792e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e31080000023508003508084c706f6c796d6573685f7072696d6974697665732c42656e6566696369617279041c42616c616e636501180008010869648001284964656e746974794964000118616d6f756e7418011c42616c616e6365000039080c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400012814626174636804011463616c6c733d08017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000487c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e2072656c61795f74780c0118746172676574000130543a3a4163636f756e7449640001247369676e6174757265ed070150543a3a4f6666436861696e5369676e617475726500011063616c6c41080198556e6971756543616c6c3c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134a052656c617920612063616c6c20666f722061207461726765742066726f6d20616e206f726967696e00510152656c6179696e6720696e207468697320636f6e746578742072656665727320746f20746865206162696c697479206f66206f726967696e20746f206d616b6520612063616c6c206f6e20626568616c66206f661c7461726765742e00684665657320617265206368617267656420746f206f726967696e00302320506172616d6574657273842d2060746172676574603a204163636f756e7420746f2062652072656c61796564e82d20607369676e6174757265603a205369676e61747572652066726f6d2074617267657420617574686f72697a696e67207468652072656c6179c02d206063616c6c603a2043616c6c20746f2062652072656c61796564206f6e20626568616c66206f66207461726765740040504f4c594d4553483a2061646465642e2462617463685f616c6c04011463616c6c733d08017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000234ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c64697370617463685f617308012461735f6f726967696e45080154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000318c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e0034232320436f6d706c65786974791c2d204f2831292e2c666f7263655f626174636804011463616c6c733d08017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004347c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c776974685f77656967687408011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874200118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e2462617463685f6f6c6404011463616c6c733d08017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000650c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e00e8546869732077696c6c206578656375746520756e74696c20746865206669727374206f6e65206661696c7320616e64207468656e2073746f702e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e00bd01546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468656101604261746368496e7465727275707465644f6c6460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164655901616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465644f6c64604c6576656e74206973206465706f73697465642e00b8504f4c594d4553483a2052656e616d65642066726f6d206062617463686020616e6420646570726563617465642e3062617463685f61746f6d696304011463616c6c733d08017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000754c44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e001501546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c2073746f7070696e6720617420746865206669727374206661696c7572652cc0696e207768696368206361736520746865207374617465206368616e6765732061726520726f6c6c6564206261636b2e31014f6e206661696c7572652c20616e206576656e7420604261746368496e7465727275707465644f6c64286661696c7572655f6964782c206572726f722960206973206465706f73697465642e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e00202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef0496620616e792063616c6c206661696c65642c207468656e20604261746368496e7465727275707465644f6c6460206973206465706f73697465642e2101496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465644f6c6460206576656e74206973206465706f73697465642e0054504f4c594d4553483a20646570726563617465642e4062617463685f6f7074696d697374696304011463616c6c733d08017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00085cc44469737061746368206d756c7469706c652063616c6c732066726f6d207468652073656e6465722773206f726967696e2e000101546869732077696c6c206578656375746520616c6c2063616c6c732c20696e206f726465722c20697272657370656374697665206f66206661696c757265732e0901416e79206661696c757265732077696c6c20626520617661696c61626c6520696e2061206042617463684f7074696d69737469634661696c656460206576656e742e00ac4d61792062652063616c6c65642066726f6d20726f6f74206f722061207369676e6564206f726967696e2e00302320506172616d6574657273ec2d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e0000202320576569676874a02d205468652073756d206f66207468652077656967687473206f6620746865206063616c6c73602e302d204f6e65206576656e742e001501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732065786365707420616e20756e7369676e6564206f726967696e2ef4546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e206576656e74206973206465706f73697465642ef8496620616e792063616c6c206661696c65642c207468656e206042617463684f7074696d69737469634661696c656460206973206465706f73697465642cfc77697468206120766563746f72206f66206576656e7420636f756e747320666f7220656163682063616c6c2061732077656c6c206173206120766563746f72286f66206572726f72732e2101496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c657465644f6c6460206576656e74206973206465706f73697465642e0054504f4c594d4553483a20646570726563617465642e3461735f64657269766174697665080114696e6465786103010c75313600011063616c6cfd05017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000918dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e3d08000002fd05004108083870616c6c65745f7574696c69747928556e6971756543616c6c04044301fd05000801146e6f6e6365280148417574686f72697a6174696f6e4e6f6e636500011063616c6cfd050118426f783c433e000045080c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d65304f726967696e43616c6c65720001141873797374656d0400490801746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000044506f6c796d657368436f6d6d697474656504004d0801f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365313e00090048546563686e6963616c436f6d6d69747465650400510801f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365333e000b004055706772616465436f6d6d69747465650400550801f870616c6c65745f636f6d6d69747465653a3a4f726967696e3c52756e74696d652c2070616c6c65745f636f6d6d69747465653a3a496e7374616e6365343e000d0010566f69640400590801110173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a566f69640004000049080c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100010c10526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e65000200004d08084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449013d01010420456e646f72736564000000005108084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449015901010420456e646f72736564000000005508084070616c6c65745f636f6d6d6974746565245261774f726967696e08244163636f756e74496401000449016901010420456e646f72736564000000005908081c73705f636f726510566f6964000100005d08082c70616c6c65745f626173651043616c6c0404540001000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e6108085870616c6c65745f65787465726e616c5f6167656e74731043616c6c040454000120306372656174655f67726f75700801187469636b6572a801185469636b65720001147065726d73b8015045787472696e7369635065726d697373696f6e73000048e443726561746573206120637573746f6d206167656e742067726f7570202841472920666f722074686520676976656e20607469636b6572602e00d45468652041472077696c6c206861766520746865207065726d697373696f6e7320617320676976656e20627920607065726d73602e290154686973206e6577204147206973207468656e2061737369676e656420606964203d204147496453657175656e63653a3a6765742829202b20316020617320697473206041474964602c3901776869636820796f752063616e2075736520617320604167656e7447726f75703a3a437573746f6d2869642960207768656e20616464696e67206167656e747320666f7220607469636b6572602e002c2320417267756d656e74739c2d20607469636b65726020746f206164642074686520637573746f6d2067726f757020666f722e902d20607065726d7360207468617420746865206e65772041472077696c6c20686176652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672e25012d2060436f756e7465724f766572666c6f776020696620604147496453657175656e63653a3a6765742829202b20316020776f756c642065786365656420607533323a3a4d4158602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74547365745f67726f75705f7065726d697373696f6e730c01187469636b6572a801185469636b6572000108696425010110414749640001147065726d73b8015045787472696e7369635065726d697373696f6e7300013c51015570646174657320746865207065726d697373696f6e73206f662074686520637573746f6d204147206964656e74696669656420627920606964602c20666f722074686520676976656e20607469636b6572602e002c2320417267756d656e7473902d20607469636b6572602074686520637573746f6d2041472062656c6f6e677320746f2ea42d206069646020666f722074686520637573746f6d2041472077697468696e20607469636b6572602e942d20607065726d736020746f207570646174652074686520637573746f6d20414720746f2e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732e21012d2060546f6f4c6f6e676020696620607065726d73602068616420736f6d6520737472696e67206f72206c697374206c656e67746820746861742077617320746f6f206c6f6e672ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472e003423205065726d697373696f6e731c2a2041737365741c2a204167656e743072656d6f76655f6167656e740801187469636b6572a801185469636b65720001146167656e748001284964656e7469747949640002389c52656d6f76652074686520676976656e20606167656e74602066726f6d20607469636b6572602e002c2320417267756d656e7473a82d20607469636b6572602074686174206861732074686520606167656e746020746f2072656d6f76652e802d20606167656e7460206f6620607469636b65726020746f2072656d6f76652e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602ee82d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e746020697320746865206c6173742066756c6c206f6e652e003423205065726d697373696f6e731c2a2041737365741c2a204167656e742061626469636174650401187469636b6572a801185469636b657200032c804162646963617465206167656e747368697020666f7220607469636b6572602e002c2320417267756d656e7473ac2d20607469636b657260206f66207768696368207468652063616c6c657220697320616e206167656e742e002023204572726f7273e42d20604e6f74416e4167656e7460206966207468652063616c6c6572206973206e6f7420616e206167656e74206f6620607469636b6572602efc2d206052656d6f76696e674c61737446756c6c4167656e7460206966207468652063616c6c657220697320746865206c6173742066756c6c206167656e742e003423205065726d697373696f6e731c2a204173736574306368616e67655f67726f75700c01187469636b6572a801185469636b65720001146167656e748001284964656e74697479496400011467726f7570210101284167656e7447726f7570000440ec4368616e676520746865206167656e742067726f7570207468617420606167656e74602062656c6f6e677320746f20696e20607469636b6572602e002c2320417267756d656e7473802d20607469636b6572602074686174206861732074686520606167656e74602eb82d20606167656e7460206f6620607469636b65726020746f206368616e6765207468652067726f757020666f722ec82d206067726f757060207468617420606167656e74602077696c6c2062656c6f6e6720746f20696e20607469636b6572602e002023204572726f727339012d2060556e617574686f72697a65644167656e746020696620606f726967696e6020776173206e6f7420617574686f72697a656420617320616e206167656e7420746f2063616c6c20746869732ecc2d20604e6f53756368414760206966206069646020646f6573206e6f74206964656e74696679206120637573746f6d2041472ed82d20604e6f74416e4167656e746020696620606167656e7460206973206e6f7420616e206167656e74206f6620607469636b6572602e2d012d206052656d6f76696e674c61737446756c6c4167656e746020696620606167656e7460207761732061206046756c6c60206f6e6520616e64206973206265696e672064656d6f7465642e003423205065726d697373696f6e731c2a2041737365741c2a204167656e744c6163636570745f6265636f6d655f6167656e7404011c617574685f696428010c753634000540010141636365707420616e20617574686f72697a6174696f6e20627920616e206167656e742022416c696365222077686f206973737565642060617574685f696460d8746f20616c736f206265636f6d6520616e206167656e74206f6620746865207469636b657220416c696365207370656369666965642e002c2320417267756d656e7473d02d2060617574685f696460206964656e74696679696e672074686520617574686f72697a6174696f6e20746f206163636570742e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e35012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f69646020697320666f7220616e206175746820746861742068617320657870697265642e4d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f7420666f72206120604265636f6d654167656e7460206175746820747970652e25012d2060556e617574686f72697a65644167656e74602069662022416c69636522206973206e6f74207065726d697373696f6e656420746f2070726f766964652074686520617574682e0d012d20604e6f53756368414760206966207468652067726f757020726566657272656420746f206120637573746f6d207468617420646f6573206e6f742065786973742e0d012d2060416c7265616479416e4167656e7460206966207468652063616c6c657220697320616c726561647920616e206167656e74206f6620746865207469636b65722e003423205065726d697373696f6e731c2a204167656e74646372656174655f67726f75705f616e645f6164645f617574681001187469636b6572a801185469636b65720001147065726d73b8015045787472696e7369635065726d697373696f6e730001187461726765748001284964656e746974794964000118657870697279fc01444f7074696f6e3c543a3a4d6f6d656e743e000614e85574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606164645f61757468602e003423205065726d697373696f6e731c2a2041737365741c2a204167656e74786372656174655f616e645f6368616e67655f637573746f6d5f67726f75700c01187469636b6572a801185469636b65720001147065726d73b8015045787472696e7369635065726d697373696f6e730001146167656e748001284964656e74697479496400071455015574696c6974792065787472696e73696320746f20626174636820606372656174655f67726f75706020616e642020606368616e67655f67726f75706020666f7220637573746f6d2067726f757073206f6e6c792e003423205065726d697373696f6e731c2a2041737365741c2a204167656e740c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e6508083870616c6c65745f72656c617965721043616c6c040454000118387365745f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000020bd014372656174657320616e20617574686f72697a6174696f6e20746f20616c6c6f772060757365725f6b65796020746f20616363657074207468652063616c6c65722028606f726967696e203d3d20706179696e675f6b6579602920617320746865697220737562736964697365722e002c2320417267756d656e74739c2d2060757365725f6b657960207468652075736572206b657920746f207375627369646973652ee42d2060706f6c79785f6c696d6974602074686520696e697469616c20504f4c5958206c696d697420666f72207468697320737562736964792e002023204572726f727331012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e446163636570745f706179696e675f6b657904011c617574685f696428010c753634000138944163636570747320612060706179696e675f6b65796020617574686f72697a6174696f6e2e002c2320417267756d656e7473e82d2060617574685f6964602074686520617574686f72697a6174696f6e20696420746f2061636365707420612060706179696e675f6b6579602e002023204572726f727345012d2060417574686f72697a6174696f6e4572726f723a3a496e76616c6964602069662060617574685f69646020646f6573206e6f7420657869737420666f722074686520676976656e2063616c6c65722e2d012d2060417574686f72697a6174696f6e4572726f723a3a45787069726564602069662060617574685f6964602074686520617574686f72697a6174696f6e2068617320657870697265642e6d012d2060417574686f72697a6174696f6e4572726f723a3a42616454797065602069662060617574685f69646020776173206e6f742061206041646452656c61796572506179696e674b65796020617574686f72697a6174696f6e2ea5012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f206163636570742074686520617574686f72697a6174696f6e20666f72207468652060757365725f6b6579602ed9012d20604e6f74417574686f72697a6564466f72506179696e674b6579602069662074686520617574686f72697a6174696f6e20776173206372656174656420616e206964656e7469747920646966666572656e742066726f6d207468652060706179696e675f6b6579602773206964656e746974792e31012d2060557365724b65794364644d697373696e6760206966207468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e41012d2060506179696e674b65794364644d697373696e6760206966207468652060706179696e675f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e4472656d6f76655f706179696e675f6b6579080120757365725f6b6579000130543a3a4163636f756e744964000128706179696e675f6b6579000130543a3a4163636f756e74496400022cac52656d6f766573207468652060706179696e675f6b6579602066726f6d20612060757365725f6b6579602e002c2320417267756d656e7473d42d2060757365725f6b657960207468652075736572206b657920746f2072656d6f76652074686520737562736964792066726f6d2e09012d2060706179696e675f6b6579602074686520706179696e67206b6579207468617420776173207375627369646973696e67207468652060757365725f6b6579602e002023204572726f72738d012d20604e6f74417574686f72697a6564466f72557365724b65796020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2072656d6f766520746865207375627369647920666f72207468652060757365725f6b6579602ef82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e31012d20604e6f74506179696e674b657960206966207468652060706179696e675f6b65796020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e487570646174655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e74496400012c706f6c79785f6c696d697418011c42616c616e6365000328b4557064617465732074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e35012d2060706f6c79785f6c696d6974602074686520616d6f756e74206f6620504f4c595820617661696c61626c6520666f72207375627369646973696e67207468652060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e50696e6372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500042cb8496e6372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e0d012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2061646420746f207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e3d012d20604f7665726c6f776020696620746865207375627369647927732072656d61696e696e6720504f4c595820776f756c642068617665206f766572666c6f7765642060753132383a3a4d4158602e5064656372656173655f706f6c79785f6c696d6974080120757365725f6b6579000130543a3a4163636f756e744964000118616d6f756e7418011c42616c616e636500052cb844656372656173652074686520617661696c61626c6520504f4c595820666f7220612060757365725f6b6579602e002c2320417267756d656e74731d012d2060757365725f6b657960207468652075736572206b6579206f6620746865207375627369647920746f207570646174652074686520617661696c61626c6520504f4c59582e21012d2060616d6f756e74602074686520616d6f756e74206f6620504f4c595820746f2072656d6f76652066726f6d207468652073756273696479206f662060757365725f6b6579602e002023204572726f7273f82d20604e6f506179696e674b657960206966207468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e11012d20604e6f74506179696e674b65796020696620606f726967696e6020646f65736e2774206d61746368207468652063757272656e742060706179696e675f6b6579602e31012d2060556e617574686f72697a656443616c6c65726020696620606f726967696e60206973206e6f7420617574686f72697a656420746f2063616c6c20746869732065787472696e7369632e09012d20604f7665726c6f776020696620746865207375627369647920686173206c657373207468656e2060616d6f756e746020504f4c59582072656d61696e696e672e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e69080c4070616c6c65745f636f6e7472616374731870616c6c65741043616c6c0404540001243c63616c6c5f6f6c645f77656967687414011064657374790501504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d69746d0801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e0001106461746130011c5665633c75383e0000041501446570726563617465642076657273696f6e206966205b6053656c663a3a63616c6c605d20666f722075736520696e20616e20696e2d73746f72616765206043616c6c602e80696e7374616e74696174655f776974685f636f64655f6f6c645f77656967687418011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d69746d0801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0001045901446570726563617465642076657273696f6e206966205b6053656c663a3a696e7374616e74696174655f776974685f636f6465605d20666f722075736520696e20616e20696e2d73746f72616765206043616c6c602e58696e7374616e74696174655f6f6c645f77656967687418011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d69746d0801244f6c6457656967687400015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0002043101446570726563617465642076657273696f6e206966205b6053656c663a3a696e7374616e7469617465605d20666f722075736520696e20616e20696e2d73746f72616765206043616c6c602e2c75706c6f61645f636f64650c0110636f646530011c5665633c75383e00015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e00012c64657465726d696e69736d7908012c44657465726d696e69736d000350ec55706c6f6164206e65772060636f64656020776974686f757420696e7374616e74696174696e67206120636f6e74726163742066726f6d2069742e00210149662074686520636f646520646f6573206e6f7420616c72656164792065786973742061206465706f7369742069732072657365727665642066726f6d207468652063616c6c65724501616e6420756e7265736572766564206f6e6c79207768656e205b6053656c663a3a72656d6f76655f636f6465605d2069732063616c6c65642e205468652073697a65206f66207468652072657365727665f0646570656e6473206f6e2074686520696e737472756d656e7465642073697a65206f66207468652074686520737570706c6965642060636f6465602e00310149662074686520636f646520616c72656164792065786973747320696e2073746f726167652069742077696c6c207374696c6c2072657475726e20604f6b6020616e642075706772616465739474686520696e2073746f726167652076657273696f6e20746f207468652063757272656e74d05b60496e737472756374696f6e576569676874733a3a76657273696f6e605d28496e737472756374696f6e57656967687473292e0055012d206064657465726d696e69736d603a20496620746869732069732073657420746f20616e79206f746865722076616c756520627574205b6044657465726d696e69736d3a3a44657465726d696e6973746963605d450120207468656e20746865206f6e6c792077617920746f20757365207468697320636f646520697320746f2064656c65676174652063616c6c20696e746f2069742066726f6d20616e206f6666636861696efc2020657865637574696f6e2e2053657420746f205b6044657465726d696e69736d3a3a44657465726d696e6973746963605d20696620696e20646f7562742e001823204e6f7465005901416e796f6e652063616e20696e7374616e7469617465206120636f6e74726163742066726f6d20616e792075706c6f6164656420636f646520616e6420746875732070726576656e74206974732072656d6f76616c2e4101546f2061766f6964207468697320736974756174696f6e206120636f6e7374727563746f7220636f756c6420656d706c6f792061636365737320636f6e74726f6c20736f20746861742069742063616e39016f6e6c7920626520696e7374616e746961746564206279207065726d697373696f6e656420656e7469746965732e205468652073616d652069732074727565207768656e2075706c6f6164696e67a07468726f756768205b6053656c663a3a696e7374616e74696174655f776974685f636f6465605d2e2c72656d6f76655f636f6465040124636f64655f686173682c012c436f6465486173683c543e000410350152656d6f76652074686520636f64652073746f72656420756e6465722060636f64655f686173686020616e6420726566756e6420746865206465706f73697420746f20697473206f776e65722e0045014120636f64652063616e206f6e6c792062652072656d6f76656420627920697473206f726967696e616c2075706c6f616465722028697473206f776e65722920616e64206f6e6c79206966206974206973646e6f74207573656420627920616e7920636f6e74726163742e207365745f636f646508011064657374790501504163636f756e7449644c6f6f6b75704f663c543e000124636f64655f686173682c012c436f6465486173683c543e000528090150726976696c656765642066756e6374696f6e2074686174206368616e6765732074686520636f6465206f6620616e206578697374696e6720636f6e74726163742e004501546869732074616b65732063617265206f66207570646174696e6720726566636f756e747320616e6420616c6c206f74686572206e6563657373617279206f7065726174696f6e732e2052657475726e73e8616e206572726f7220696620656974686572207468652060636f64655f6861736860206f722060646573746020646f206e6f742065786973742e001823204e6f74650031015468697320646f6573202a2a6e6f742a2a206368616e6765207468652061646472657373206f662074686520636f6e747261637420696e207175657374696f6e2e2054686973206d65616e733d01746861742074686520636f6e74726163742061646472657373206973206e6f206c6f6e67657220646572697665642066726f6d2069747320636f646520686173682061667465722063616c6c696e67487468697320646973706174636861626c652e1063616c6c14011064657374790501504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e0001106461746130011c5665633c75383e00064005014d616b657320612063616c6c20746f20616e206163636f756e742c206f7074696f6e616c6c79207472616e7366657272696e6720736f6d652062616c616e63652e00302320506172616d657465727300a82a206064657374603a2041646472657373206f662074686520636f6e747261637420746f2063616c6c2efc2a206076616c7565603a205468652062616c616e636520746f207472616e736665722066726f6d2074686520606f726967696e6020746f206064657374602e15012a20606761735f6c696d6974603a2054686520676173206c696d697420656e666f72636564207768656e20657865637574696e672074686520636f6e7374727563746f722e55012a206073746f726167655f6465706f7369745f6c696d6974603a20546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642066726f6d20746865a4202063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ec42a206064617461603a2054686520696e707574206461746120746f207061737320746f2074686520636f6e74726163742e0025012a20496620746865206163636f756e74206973206120736d6172742d636f6e7472616374206163636f756e742c20746865206173736f63696174656420636f64652077696c6c206265ac657865637574656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e15012a20496620746865206163636f756e74206973206120726567756c6172206163636f756e742c20616e792076616c75652077696c6c206265207472616e736665727265642e45012a204966206e6f206163636f756e742065786973747320616e64207468652063616c6c2076616c7565206973206e6f74206c657373207468616e20606578697374656e7469616c5f6465706f736974602c11016120726567756c6172206163636f756e742077696c6c206265206372656174656420616e6420616e792076616c75652077696c6c206265207472616e736665727265642e54696e7374616e74696174655f776974685f636f646518011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0007683101496e7374616e7469617465732061206e657720636f6e74726163742066726f6d2074686520737570706c6965642060636f646560206f7074696f6e616c6c79207472616e7366657272696e6734736f6d652062616c616e63652e0021015468697320646973706174636861626c6520686173207468652073616d65206566666563742061732063616c6c696e67205b6053656c663a3a75706c6f61645f636f6465605d202b3d015b6053656c663a3a696e7374616e7469617465605d2e2042756e646c696e67207468656d20746f6765746865722070726f766964657320656666696369656e6379206761696e732e20506c65617365d8616c736f20636865636b2074686520646f63756d656e746174696f6e206f66205b6053656c663a3a75706c6f61645f636f6465605d2e00302320506172616d6574657273004d012a206076616c7565603a205468652062616c616e636520746f207472616e736665722066726f6d2074686520606f726967696e6020746f20746865206e65776c79206372656174656420636f6e74726163742e15012a20606761735f6c696d6974603a2054686520676173206c696d697420656e666f72636564207768656e20657865637574696e672074686520636f6e7374727563746f722e55012a206073746f726167655f6465706f7369745f6c696d6974603a20546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f7265736572766564c8202066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ecc2a2060636f6465603a2054686520636f6e747261637420636f646520746f206465706c6f7920696e207261772062797465732ef42a206064617461603a2054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722e31012a206073616c74603a205573656420666f722074686520616464726573732064657269766174696f6e2e20536565205b6050616c6c65743a3a636f6e74726163745f61646472657373605d2e0094496e7374616e74696174696f6e20697320657865637574656420617320666f6c6c6f77733a0059012d2054686520737570706c6965642060636f64656020697320696e737472756d656e7465642c206465706c6f7965642c20616e6420612060636f64655f6861736860206973206372656174656420666f7220746861741c2020636f64652e59012d204966207468652060636f64655f686173686020616c726561647920657869737473206f6e2074686520636861696e2074686520756e6465726c79696e672060636f6465602077696c6c206265207368617265642e49012d205468652064657374696e6174696f6e206164647265737320697320636f6d7075746564206261736564206f6e207468652073656e6465722c20636f64655f6861736820616e64207468652073616c742e01012d2054686520736d6172742d636f6e7472616374206163636f756e7420697320637265617465642061742074686520636f6d707574656420616464726573732ec02d20546865206076616c756560206973207472616e7366657272656420746f20746865206e6577206163636f756e742e41012d2054686520606465706c6f79602066756e6374696f6e20697320657865637574656420696e2074686520636f6e74657874206f6620746865206e65776c792d63726561746564206163636f756e742e2c696e7374616e746961746518011476616c7565dd01013042616c616e63654f663c543e0001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d6974750801c44f7074696f6e3c3c42616c616e63654f663c543e20617320636f6465633a3a486173436f6d706163743e3a3a547970653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e000814fc496e7374616e746961746573206120636f6e74726163742066726f6d20612070726576696f75736c79206465706c6f796564207761736d2062696e6172792e003501546869732066756e6374696f6e206973206964656e746963616c20746f205b6053656c663a3a696e7374616e74696174655f776974685f636f6465605d2062757420776974686f7574207468654901636f6465206465706c6f796d656e7420737465702e20496e73746561642c207468652060636f64655f6861736860206f6620616e206f6e2d636861696e206465706c6f796564207761736d2062696e617279446d75737420626520737570706c6965642e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e6d080000067108007108082873705f77656967687473244f6c645765696768740000040028010c7536340000750804184f7074696f6e04045401dd010108104e6f6e6500000010536f6d650400dd01000001000079080c4070616c6c65745f636f6e747261637473107761736d2c44657465726d696e69736d0001083444657465726d696e697374696300000048416c6c6f77496e64657465726d696e69736d000100007d080848706f6c796d6573685f636f6e7472616374731043616c6c0404540001186c696e7374616e74696174655f776974685f636f64655f7065726d731c0124656e646f776d656e7418011c42616c616e63650001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d69743504013c4f7074696f6e3c42616c616e63653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0001147065726d73a0012c5065726d697373696f6e730000602d01496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e6720697420776974682074686520676976656e2060636f64656020616e64206073616c74602e00c454686520636f6e74726163742077696c6c2062652061747461636865642061732061207365636f6e64617279206b65792ce07769746820607065726d736020617320697473207065726d697373696f6e732c20746f20606f726967696e602773206964656e746974792e00e054686520636f6e7472616374206973207472616e736665727265642060656e646f776d656e746020616d6f756e74206f6620504f4c59582e98546869732069732064697374696e63742066726f6d2074686520606761735f6c696d6974602c1101776869636820636f6e74726f6c7320686f77206d7563682067617320746865206465706c6f796d656e7420636f6465206d6179206174206d6f737420636f6e73756d652e002c2320417267756d656e7473e82d2060656e646f776d656e746020616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e55012d20606761735f6c696d69746020666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652e51012d206073746f726167655f6465706f7369745f6c696d69746020546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f7265736572766564c8202066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ee82d2060636f646560207769746820746865205741534d2062696e61727920646566696e696e672074686520736d61727420636f6e74726163742ef02d206064617461602054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722eb82d206073616c7460207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e210120202042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792ebc2d20607065726d7360207468617420746865206e6577207365636f6e64617279206b65792077696c6c20686176652e002023204572726f727365012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a696e7374616e74696174655f776974685f636f6465602063616e20616c736f2068617070656e20686572652ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e21012d204572726f72732074686174206172697365207768656e20616464696e672061206e6577207365636f6e64617279206b65792063616e20616c736f206f6363757220686572652e6c696e7374616e74696174655f776974685f686173685f7065726d731c0124656e646f776d656e7418011c42616c616e63650001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d69743504013c4f7074696f6e3c42616c616e63653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0001147065726d73a0012c5065726d697373696f6e7300016c3901496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e67207573696e672074686520676976656e2060636f64655f686173686020616e64206073616c74602e007c556e6c696b652060696e7374616e74696174655f776974685f636f6465602c69017468697320617373756d65732074686174206174206c65617374206f6e6520636f6e74726163742077697468207468652073616d65205741534d20636f64652068617320616c7265616479206265656e2075706c6f616465642e00c454686520636f6e74726163742077696c6c2062652061747461636865642061732061207365636f6e64617279206b65792ce07769746820607065726d736020617320697473207065726d697373696f6e732c20746f20606f726967696e602773206964656e746974792e00e054686520636f6e7472616374206973207472616e736665727265642060656e646f776d656e746020616d6f756e74206f6620504f4c59582e98546869732069732064697374696e63742066726f6d2074686520606761735f6c696d6974602c1101776869636820636f6e74726f6c7320686f77206d7563682067617320746865206465706c6f796d656e7420636f6465206d6179206174206d6f737420636f6e73756d652e002c2320417267756d656e7473e82d2060656e646f776d656e746020616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e55012d20606761735f6c696d69746020666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652e51012d206073746f726167655f6465706f7369745f6c696d69746020546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f7265736572766564c8202066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ec42d2060636f64655f6861736860206f6620616e20616c72656164792075706c6f61646564205741534d2062696e6172792ef02d206064617461602054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722eb82d206073616c7460207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e210120202042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792ebc2d20607065726d7360207468617420746865206e6577207365636f6e64617279206b65792077696c6c20686176652e002023204572726f72733d012d20416c6c20746865206572726f727320696e206070616c6c65745f636f6e7472616374733a3a43616c6c3a3a696e7374616e7469617465602063616e20616c736f2068617070656e20686572652ef02d204344442f5065726d697373696f6e732061726520636865636b65642c20756e6c696b6520696e206070616c6c65745f636f6e747261637473602e21012d204572726f72732074686174206172697365207768656e20616464696e672061206e6577207365636f6e64617279206b65792063616e20616c736f206f6363757220686572652e747570646174655f63616c6c5f72756e74696d655f77686974656c69737404011c75706461746573810801605665633c2845787472696e73696349642c20626f6f6c293e000214745570646174652043616c6c52756e74696d652077686974656c6973742e002c2320417267756d656e7473002023204572726f727390696e7374616e74696174655f776974685f636f64655f61735f7072696d6172795f6b6579180124656e646f776d656e7418011c42616c616e63650001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d69743504013c4f7074696f6e3c42616c616e63653e000110636f646530011c5665633c75383e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0003302d01496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e6720697420776974682074686520676976656e2060636f64656020616e64206073616c74602e007d0154686520636f6e74726163742077696c6c2062652061747461636865642061732061207072696d617279206b6579206f662061206e65776c792063726561746564206368696c64206964656e74697479206f66207468652063616c6c65722e002c2320417267756d656e7473ec2d2060656e646f776d656e74603a20416d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e59012d20606761735f6c696d6974603a20466f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652e19022d206073746f726167655f6465706f7369745f6c696d6974603a20546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f72657365727665642066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ed82d2060636f6465603a20546865205741534d2062696e61727920646566696e696e672074686520736d61727420636f6e74726163742ef42d206064617461603a2054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722ed5012d206073616c74603a205573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e2042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792e0090696e7374616e74696174655f776974685f686173685f61735f7072696d6172795f6b6579180124656e646f776d656e7418011c42616c616e63650001246761735f6c696d697420011857656967687400015473746f726167655f6465706f7369745f6c696d69743504013c4f7074696f6e3c42616c616e63653e000124636f64655f686173682c012c436f6465486173683c543e0001106461746130011c5665633c75383e00011073616c7430011c5665633c75383e0004383901496e7374616e746961746573206120736d61727420636f6e747261637420646566696e696e67207573696e672074686520676976656e2060636f64655f686173686020616e64206073616c74602e00e901556e6c696b652060696e7374616e74696174655f776974685f636f6465602c207468697320617373756d65732074686174206174206c65617374206f6e6520636f6e74726163742077697468207468652073616d65205741534d20636f64652068617320616c7265616479206265656e2075706c6f616465642e007d0154686520636f6e74726163742077696c6c2062652061747461636865642061732061207072696d617279206b6579206f662061206e65776c792063726561746564206368696c64206964656e74697479206f66207468652063616c6c65722e002c2320417267756d656e7473ec2d2060656e646f776d656e74603a20616d6f756e74206f6620504f4c595820746f207472616e7366657220746f2074686520636f6e74726163742e59012d20606761735f6c696d6974603a20666f7220686f77206d756368206761732074686520606465706c6f796020636f646520696e2074686520636f6e7472616374206d6179206174206d6f737420636f6e73756d652e19022d206073746f726167655f6465706f7369745f6c696d6974603a20546865206d6178696d756d20616d6f756e74206f662062616c616e636520746861742063616e20626520636861726765642f72657365727665642066726f6d207468652063616c6c657220746f2070617920666f72207468652073746f7261676520636f6e73756d65642ec82d2060636f64655f68617368603a206f6620616e20616c72656164792075706c6f61646564205741534d2062696e6172792ef42d206064617461603a2054686520696e707574206461746120746f207061737320746f2074686520636f6e747261637420636f6e7374727563746f722ed5012d206073616c74603a207573656420666f7220636f6e747261637420616464726573732064657269766174696f6e2e2042792076617279696e6720746869732c207468652073616d652060636f6465602063616e206265207573656420756e646572207468652073616d65206964656e746974792e002c757067726164655f61706908010c6170699104010c4170690001306e6578745f75706772616465890801384e657874557067726164653c543e0005000c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e8108000002850800850800000408990429010089080848706f6c796d6573685f636f6e7472616374732c4e657874557067726164650404540000080134636861696e5f76657273696f6e95040130436861696e56657273696f6e0001206170695f686173688d080138417069436f6465486173683c543e00008d080848706f6c796d6573685f636f6e7472616374732c417069436f6465486173680404540000040110686173682c012c436f6465486173683c543e000091080c3c70616c6c65745f707265696d6167651870616c6c65741043616c6c040454000110346e6f74655f707265696d616765040114627974657330011c5665633c75383e000010745265676973746572206120707265696d616765206f6e2d636861696e2e00550149662074686520707265696d616765207761732070726576696f75736c79207265717565737465642c206e6f2066656573206f72206465706f73697473206172652074616b656e20666f722070726f766964696e67550174686520707265696d6167652e204f74686572776973652c2061206465706f7369742069732074616b656e2070726f706f7274696f6e616c20746f207468652073697a65206f662074686520707265696d6167652e3c756e6e6f74655f707265696d616765040110686173682c011c543a3a48617368000118dc436c65617220616e20756e72657175657374656420707265696d6167652066726f6d207468652072756e74696d652073746f726167652e00fc496620606c656e602069732070726f76696465642c207468656e2069742077696c6c2062652061206d7563682063686561706572206f7065726174696f6e2e0001012d206068617368603a205468652068617368206f662074686520707265696d61676520746f2062652072656d6f7665642066726f6d207468652073746f72652eb82d20606c656e603a20546865206c656e677468206f662074686520707265696d616765206f66206068617368602e40726571756573745f707265696d616765040110686173682c011c543a3a48617368000210410152657175657374206120707265696d6167652062652075706c6f6164656420746f2074686520636861696e20776974686f757420706179696e6720616e792066656573206f72206465706f736974732e00550149662074686520707265696d6167652072657175657374732068617320616c7265616479206265656e2070726f7669646564206f6e2d636861696e2c20776520756e7265736572766520616e79206465706f7369743901612075736572206d6179206861766520706169642c20616e642074616b652074686520636f6e74726f6c206f662074686520707265696d616765206f7574206f662074686569722068616e64732e48756e726571756573745f707265696d616765040110686173682c011c543a3a4861736800030cbc436c65617220612070726576696f75736c79206d616465207265717565737420666f72206120707265696d6167652e002d014e4f54453a2054484953204d555354204e4f542042452043414c4c4544204f4e20606861736860204d4f52452054494d4553205448414e2060726571756573745f707265696d616765602e042501436f6e7461696e73206f6e652076617269616e742070657220646973706174636861626c6520746861742063616e2062652063616c6c656420627920616e2065787472696e7369632e9508082870616c6c65745f6e66741043616c6c040454000110546372656174655f6e66745f636f6c6c656374696f6e0c01187469636b6572a801185469636b65720001206e66745f747970659908015c4f7074696f6e3c4e6f6e46756e6769626c65547970653e00013c636f6c6c656374696f6e5f6b6579739d0801444e4654436f6c6c656374696f6e4b657973000044744372657465732061206e657720604e4654436f6c6c656374696f6e602e002c2320417267756d656e7473c5012a20606f726967696e60202d20636f6e7461696e7320746865207365636f6e64617279206b6579206f66207468652063616c6c65722028692e652e2077686f207369676e656420746865207472616e73616374696f6e20746f206578656375746520746869732066756e6374696f6e292ee42a20607469636b657260202d20746865207469636b6572206173736f63696174656420746f20746865206e657720636f6c6c656374696f6e2e89012a20606e66745f7479706560202d20696e206361736520746865206173736574206861736e2774206265656e2063726561746564207965742c206f6e652077696c6c206265206372656174656420776974682074686520676976656e20747970652e79012a2060636f6c6c656374696f6e5f6b65797360202d20616c6c206d616e6461746f7279206d65746164617461206b65797320746861742074686520746f6b656e7320696e2074686520636f6c6c656374696f6e206d75737420686176652e00242323204572726f727369012d2060436f6c6c656374696f6e416c726564795265676973746572656460202d20696620746865207469636b657220697320616c7265616479206173736f63696174656420746f20616e204e465420636f6c6c656374696f6e2e09012d2060496e76616c696441737365745479706560202d20696620746865206173736f636961746564206173736574206973206e6f74206f662074797065204e46542ed1012d20604d61784e756d6265724f664b657973457863656564656460202d20696620746865206e756d626572206f66206d65746164617461206b65797320666f722074686520636f6c6c656374696f6e2069732067726561746572207468616e20746865206d6178696d756d20616c6c6f7765642eb1012d2060556e726567697374657265644d657461646174614b657960202d20696620616e79206f6620746865206d65746164617461206b657973206e656564656420666f722074686520636f6c6c656374696f6e20686173206e6f74206265656e20726567697374657265642e45012d20604475706c69636174654d657461646174614b657960202d2069662061206475706c6963617465206d65746164617461206b65797320686173206265656e2070617373656420617320696e7075742e003423205065726d697373696f6e731c2a2041737365742469737375655f6e66740c01187469636b6572a801185469636b657200015c6e66745f6d657461646174615f61747472696275746573a50801645665633c4e46544d657461646174614174747269627574653e000138706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e640001447049737375657320616e204e465420746f207468652063616c6c65722e002c2320417267756d656e747335012a20606f726967696e60202d2069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602eb82a20607469636b657260202d20746865207469636b6572206f6620746865204e465420636f6c6c656374696f6e2e45012a20606e66745f6d657461646174615f6174747269627574657360202d20616c6c206d616e6461746f7279206d65746164617461206b65797320616e642076616c75657320666f7220746865204e46542e11012d2060706f7274666f6c696f5f6b696e6460202d2074686520706f7274666f6c696f20746861742077696c6c207265636569766520746865206d696e746564206e66742e00242323204572726f72737d012d2060436f6c6c656374696f6e4e6f74466f756e6460202d2069662074686520636f6c6c656374696f6e206173736f63696174656420746f2074686520676976656e207469636b657220686173206e6f74206265656e20637265617465642ec9022d2060496e76616c69644d6574616461746141747472696275746560202d20696620746865206e756d626572206f662061747472696275746573206973206e6f7420657175616c20746f20746865206e756d6265722073657420696e2074686520636f6c6c656374696f6e206f7220617474656d7074696e6720746f2073657420612076616c756520666f722061206b6579206e6f7420646566696e69656420696e2074686520636f6c6c656374696f6e2e45012d20604475706c69636174654d657461646174614b657960202d2069662061206475706c6963617465206d65746164617461206b65797320686173206265656e2070617373656420617320696e7075742e00003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f2872656465656d5f6e66740c01187469636b6572a801185469636b65720001186e66745f6964c10301144e46544964000138706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e6400023cc852656465656d732074686520676976656e204e46542066726f6d207468652063616c6c6572277320706f7274666f6c696f2e002c2320417267756d656e747335012a20606f726967696e60202d2069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602eb82a20607469636b657260202d20746865207469636b6572206f6620746865204e465420636f6c6c656374696f6e2eb02a20606e66745f696460202d20746865206964206f6620746865204e465420746f206265206275726e65642ee42a2060706f7274666f6c696f5f6b696e6460202d2074686520706f7274666f6c696f207468617420636f6e7461696e7320746865206e66742e00242323204572726f72737d012d2060436f6c6c656374696f6e4e6f74466f756e6460202d2069662074686520636f6c6c656374696f6e206173736f63696174656420746f2074686520676976656e207469636b657220686173206e6f74206265656e20637265617465642e0d012d20604e46544e6f74466f756e6460202d2069662074686520676976656e204e465420646f6573206e6f7420657869737420696e2074686520706f7274666f6c696f2e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f4c636f6e74726f6c6c65725f7472616e736665721001187469636b6572a801185469636b65720001106e667473b90301104e465473000140736f757263655f706f7274666f6c696fe0012c506f7274666f6c696f496400015863616c6c6572735f706f7274666f6c696f5f6b696e64e40134506f7274666f6c696f4b696e640003303501466f7263657320746865207472616e73666572206f66204e4654732066726f6d206120676976656e20706f7274666f6c696f20746f207468652063616c6c6572277320706f7274666f6c696f2e002c2320417267756d656e747335012a20606f726967696e60202d2069732061207369676e6572207468617420686173207065726d697373696f6e7320746f2061637420617320616e206167656e74206f6620607469636b6572602ec82a20607469636b657260202d20746865205b605469636b6572605d206f6620746865204e465420636f6c6c656374696f6e2ee02a20606e66745f696460202d20746865205b604e46544964605d206f6620746865204e465420746f206265207472616e736665727265642e21012a2060736f757263655f706f7274666f6c696f60202d20746865205b60506f7274666f6c696f4964605d20746861742063757272656e746c7920686f6c647320746865204e46542e35012a206063616c6c6572735f706f7274666f6c696f5f6b696e6460202d20746865205b60506f7274666f6c696f4b696e64605d206f66207468652063616c6c6572277320706f7274666f6c696f2e003423205065726d697373696f6e731c2a2041737365742c2a20506f7274666f6c696f0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652e990804184f7074696f6e04045401f9010108104e6f6e6500000010536f6d650400f90100000100009d080c4c706f6c796d6573685f7072696d6974697665730c6e6674444e4654436f6c6c656374696f6e4b65797300000400a10801545665633c41737365744d657461646174614b65793e0000a1080000027d0200a508000002a90800a9080c4c706f6c796d6573685f7072696d6974697665730c6e6674504e46544d65746164617461417474726962757465000008010c6b65797d02014041737365744d657461646174614b657900011476616c75654902014841737365744d6574616461746156616c75650000ad08084470616c6c65745f746573745f7574696c731043616c6c0404540001103072656769737465725f6469640401387365636f6e646172795f6b65797398017c5665633c5365636f6e646172794b65793c543a3a4163636f756e7449643e3e0000284d0147656e6572617465732061206e657720604964656e7469747949446020666f72207468652063616c6c65722c20616e642069737375657320612073656c662d67656e6572617465642043444420636c61696d2e00f05468652063616c6c6572206163636f756e742077696c6c20626520746865207072696d617279206b6579206f662074686174206964656e746974792e5d01466f722065616368206163636f756e74206f6620607365636f6e646172795f6b657973602c2061206e657720604a6f696e4964656e746974796020617574686f72697a6174696f6e20697320637265617465642c20736f410165616368206f66207468656d2077696c6c206e65656420746f20616363657074206974206265666f7265206265636f6d652070617274206f662074686973206e657720604964656e746974794944602e002023204572726f7273d5012d2060416c72656164794c696e6b656460206966207468652063616c6c6572206163636f756e74206f7220696620616e79206f662074686520676976656e20607365636f6e646172795f6b657973602068617320616c7265616479206c696e6b656420746f20616e20604964656e746974794944604d012d20605365636f6e646172794b657973436f6e7461696e5072696d6172794b65796020696620607365636f6e646172795f6b6579736020636f6e7461696e73207468652063616c6c6572206163636f756e742ee82d2060446964416c726561647945786973747360206966206175746f2d67656e6572617465642044494420616c7265616479206578697374732e546d6f636b5f6364645f72656769737465725f6469640401387461726765745f6163636f756e74000130543a3a4163636f756e74496400011c3d015265676973746572732061206e6577204964656e7469747920666f722074686520607461726765745f6163636f756e746020616e642069737375657320612043444420636c61696d20746f2069742e002423204661696c75726549012d20606f726967696e602068617320746f20626520616e20616374697665204344442070726f76696465722e20496e616374697665204344442070726f7669646572732063616e6e6f7420616464206e65771c636c61696d732e5d012d20607461726765745f6163636f756e746020287072696d617279206b6579206f6620746865206e6577204964656e74697479292063616e206265206c696e6b656420746f206a757374206f6e6520616e64206f6e6c79346f6e65206964656e746974792e286765745f6d795f64696400020498456d69747320616e206576656e7420776974682063616c6c65722773206964656e746974792e286765745f6364645f6f660401086f66000130543a3a4163636f756e744964000304d4456d69747320616e206576656e7420776974682063616c6c65722773206964656e7469747920616e6420434444207374617475732e0c4c446973706174636861626c652063616c6c732e005501456163682076617269616e74206f66207468697320656e756d206d61707320746f206120646973706174636861626c652066756e6374696f6e2066726f6d20746865206173736f636961746564206d6f64756c652eb108084070616c6c65745f636f6d6d697474656534506f6c796d657368566f746573042c426c6f636b4e756d626572011000100114696e64657810013450726f706f73616c496e646578000110617965733501013c5665633c4964656e7469747949643e0001106e6179733501013c5665633c4964656e7469747949643e0001186578706972794901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e0000b508084070616c6c65745f636f6d6d69747465651c56657273696f6e0000040008010875380000b908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00bd08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00c108084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00c508083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00c908084070616c6c65745f636f6d6d6974746565144572726f72080454000449000124344475706c6963617465566f7465000004804475706c696361746520766f74657320617265206e6f7420616c6c6f7765642e284e6f74414d656d6265720001088841204449442069736e27742070617274206f662074686520636f6d6d69747465652ed454686520444944206d61792065697468657220626520612063616c6c6572206f7220736f6d65206f7468657220636f6e746578742e384e6f5375636850726f706f73616c000204444e6f20737563682070726f706f73616c2e3c50726f706f73616c457870697265640003049050726f706f73616c206578697374732c206275742069742068617320657870697265642e444475706c696361746550726f706f73616c0004044c4475706c69636174652070726f706f73616c2e544d69736d617463686564566f74696e67496e646578000504604d69736d61746368656420766f74696e6720696e6465782e44496e76616c696450726f706f7274696f6e0006049450726f706f7274696f6e206d757374206265206120726174696f6e616c206e756d6265722e3c4669727374566f746552656a65637400070cfc466972737420766f7465206f6e20612070726f706f73616c20637265617465732069742c20736f206974206d75737420626520616e20617070726f76616c2e0101416c6c2070726f706f73616c7320617265206d6f74696f6e7320746f206578656375746520736f6d657468696e6720617320224743206d616a6f72697479222efc546f2072656a65637420652e672e2c2061205049502c2061206d6f74696f6e20746f2072656a6563742073686f756c64206265202a617070726f7665642a2e5450726f706f73616c734c696d697452656163686564000804b44d6178696d756d206e756d626572206f662070726f706f73616c7320686173206265656e20726561636865642e00cd08083070616c6c65745f67726f7570144572726f7208045400044900011c544f6e6c795072696d6172794b6579416c6c6f776564000004b04f6e6c79207072696d617279206b6579206f6620746865206964656e7469747920697320616c6c6f7765642e3c4475706c69636174654d656d6265720001047c47726f7570206d656d6265722077617320616464656420616c72656164792e304e6f537563684d656d626572000204a443616e27742072656d6f76652061206d656d626572207468617420646f65736e27742065786973742e504c6173744d656d62657243616e6e6f7451756974000304a84c617374206d656d626572206f662074686520636f6d6d69747465652063616e206e6f7420717569742e584d697373696e6743757272656e744964656e746974790004044c4d697373696e672063757272656e7420444944684163746976654d656d626572734c696d697445786365656465640005045d01546865206c696d697420666f7220746865206e756d626572206f6620636f6e63757272656e7420616374697665206d656d6265727320666f7220746869732067726f757020686173206265656e2065786365656465642e684163746976654d656d626572734c696d69744f766572666c6f770006041501416374697665206d656d626572206c696d6974207761732067726561746572207468616e206d6178696d756d20636f6d6d6974746565206d656d62657273206c696d69742e00d10800000408007d0100d50800000408002800d9080000040800fd0500dd0800000408d5087d0100e1080c4c706f6c796d6573685f7072696d697469766573206d756c74697369673c50726f706f73616c44657461696c73040454012800140124617070726f76616c7328010c75363400012872656a656374696f6e7328010c753634000118737461747573e508013850726f706f73616c537461747573000118657870697279fc01244f7074696f6e3c543e0001286175746f5f636c6f736529010110626f6f6c0000e5080c4c706f6c796d6573685f7072696d697469766573206d756c74697369673850726f706f73616c5374617475730001141c496e76616c69640000003c4163746976654f72457870697265640001004c457865637574696f6e5375636365737366756c0002003c457865637574696f6e4661696c65640003002052656a656374656400040000e908083c70616c6c65745f6d756c74697369671c56657273696f6e0000040008010875380000ed08083c70616c6c65745f6d756c7469736967144572726f72040454000168284364644d697373696e67000004c4546865206d756c7469736967206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e3c50726f706f73616c4d697373696e67000104705468652070726f706f73616c20646f6573206e6f742065786973742e344465636f64696e674572726f72000204444d756c746973696720616464726573732e244e6f5369676e6572730003042c4e6f207369676e6572732e7452657175697265645369676e6174757265734f75744f66426f756e6473000404a0546f6f20666577206f7220746f6f206d616e79207265717569726564207369676e6174757265732e284e6f74415369676e6572000504344e6f742061207369676e65722e384e6f537563684d756c7469736967000604444e6f2073756368206d756c74697369672e404e6f74456e6f7567685369676e6572730007044c4e6f7420656e6f756768207369676e6572732e344e6f6e63654f766572666c6f770008044441206e6f6e6365206f766572666c6f772e30416c7265616479566f74656400090438416c726561647920766f7465642e38416c7265616479415369676e6572000a0444416c72656164792061207369676e65722e444661696c6564546f436861726765466565000b04a0436f756c646e2774206368617267652066656520666f7220746865207472616e73616374696f6e2e484964656e746974794e6f7443726561746f72000c04c04964656e746974792070726f7669646564206973206e6f7420746865206d756c746973696727732063726561746f722e404368616e67654e6f74416c6c6f776564000d0425014368616e67696e67206d756c746973696720706172616d6574657273206e6f7420616c6c6f7765642073696e6365206d756c74697369672069732061207072696d617279206b65792e745369676e6572416c72656164794c696e6b6564546f4d756c7469736967000e0411015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f63696174656420776974682061206d756c74697369672e745369676e6572416c72656164794c696e6b6564546f4964656e74697479000f0415015369676e657220697320616e206163636f756e74206b6579207468617420697320616c7265616479206173736f636961746564207769746820616e206964656e746974792e804d756c74697369674e6f74416c6c6f776564546f4c696e6b546f497473656c66001004bc4d756c7469736967206e6f7420616c6c6f77656420746f2061646420697473656c662061732061207369676e65722e584d697373696e6743757272656e744964656e746974790011045843757272656e7420444944206973206d697373696e67344e6f745072696d6172794b6579001204f45468652066756e6374696f6e2063616e206f6e6c792062652063616c6c656420627920746865207072696d617279206b6579206f6620746865206469645c50726f706f73616c416c726561647952656a65637465640013047450726f706f73616c207761732072656a6563746564206561726c6965723c50726f706f73616c457870697265640014045050726f706f73616c2068617320657870697265645c50726f706f73616c416c726561647945786563757465640015047450726f706f73616c20776173206578656375746564206561726c6965725c4d756c74697369674d697373696e674964656e746974790016049c4d756c7469736967206973206e6f7420617474616368656420746f20616e206964656e74697479404661696c6564546f5363686564756c65001704785363686564756c696e67206f6620612070726f706f73616c206661696c7338546f6f4d616e795369676e6572730018046c4d6f7265207369676e657273207468616e2072657175697265642e7843726561746f72436f6e74726f6c73486176654265656e52656d6f76656400190401015468652063726561746f72206973206e6f206c6f6e67657220616c6c6f77656420746f2063616c6c207669612063726561746f722065787472696e736963732e045c4d756c7469736967206d6f64756c65206572726f72732ef10800000408001000f508083470616c6c65745f62726964676538427269646765547844657461696c042c426c6f636b4e756d626572011000100118616d6f756e7418011c42616c616e6365000118737461747573f9080138427269646765547853746174757300013c657865637574696f6e5f626c6f636b10012c426c6f636b4e756d62657200011c74785f686173682c0110483235360000f908083470616c6c65745f62726964676538427269646765547853746174757300011418416273656e740000001c50656e64696e67040008010875380001001846726f7a656e0002002854696d656c6f636b65640003001c48616e646c656400040000fd08000004081810000109083470616c6c65745f6272696467651c56657273696f6e00000400080108753800000509083470616c6c65745f627269646765144572726f7204045400013440436f6e74726f6c6c65724e6f74536574000004a45468652062726964676520636f6e74726f6c6c65722061646472657373206973206e6f74207365742e2442616443616c6c6572000104d8546865206f726967696e206973206e6f742074686520636f6e74726f6c6c6572206f72207468652061646d696e20616464726573732e2042616441646d696e00020490546865206f726967696e206973206e6f74207468652061646d696e20616464726573732e284e6f56616c69644364640003048c54686520726563697069656e742044494420686173206e6f2076616c6964204344442e5850726f706f73616c416c726561647948616e646c6564000404390154686520627269646765207472616e73616374696f6e2070726f706f73616c2068617320616c7265616479206265656e2068616e646c656420616e64207468652066756e6473206d696e7465642e30556e617574686f72697a656400050494556e617574686f72697a656420746f20706572666f726d20616e206f7065726174696f6e2e1846726f7a656e000604745468652062726964676520697320616c72656164792066726f7a656e2e244e6f7446726f7a656e0007046454686520627269646765206973206e6f742066726f7a656e2e2046726f7a656e547800080468546865207472616e73616374696f6e2069732066726f7a656e2e484272696467654c696d697452656163686564000904e4546865206964656e746974792773206d696e74656420746f74616c2068617320726561636865642074686520627269646765206c696d69742e204f766572666c6f77000a04ac546865206964656e746974792773206d696e74656420746f74616c20686173206f766572666c6f7765642e384469766973696f6e42795a65726f000b04cc54686520626c6f636b20696e74657276616c206475726174696f6e206973207a65726f2e2043616e6e6f74206469766964652e3054696d656c6f636b65645478000c0478546865207472616e73616374696f6e2069732074696d656c6f636b65642e000909083870616c6c65745f7374616b696e67345374616b696e674c656467657204045400001401147374617368000130543a3a4163636f756e744964000114746f74616cdd01013042616c616e63654f663c543e000118616374697665dd01013042616c616e63654f663c543e000124756e6c6f636b696e670d0901785665633c556e6c6f636b4368756e6b3c42616c616e63654f663c543e3e3e00013c636c61696d65645f726577617264736d0401345665633c457261496e6465783e00000d090000021109001109083870616c6c65745f7374616b696e672c556e6c6f636b4368756e6b041c42616c616e636501180008011476616c7565dd01011c42616c616e636500010c657261bd040120457261496e64657800001509083870616c6c65745f7374616b696e672c4e6f6d696e6174696f6e7304045400000c011c74617267657473190901ac426f756e6465645665633c543a3a4163636f756e7449642c20543a3a4d61784e6f6d696e6174696f6e733e0001307375626d69747465645f696e100120457261496e6465780001287375707072657373656429010110626f6f6c000019090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400f401185665633c543e00001d09083870616c6c65745f7374616b696e6734416374697665457261496e666f0000080114696e646578100120457261496e6465780001147374617274fc012c4f7074696f6e3c7536343e00002109000004081000002509083870616c6c65745f7374616b696e673c457261526577617264506f696e747304244163636f756e744964010000080114746f74616c10012c526577617264506f696e74000128696e646976696475616c2909018042547265654d61703c4163636f756e7449642c20526577617264506f696e743e00002909042042547265654d617008044b0100045601100004002d090000002d09000002f108003109083870616c6c65745f7374616b696e671c466f7263696e67000110284e6f74466f7263696e6700000020466f7263654e657700010024466f7263654e6f6e650002002c466f726365416c776179730003000035090000023909003909083870616c6c65745f7374616b696e6738556e6170706c696564536c61736808244163636f756e74496401001c42616c616e636501180014012476616c696461746f720001244163636f756e74496400010c6f776e18011c42616c616e63650001186f74686572733d0901645665633c284163636f756e7449642c2042616c616e6365293e0001247265706f7274657273f401385665633c4163636f756e7449643e0001187061796f757418011c42616c616e636500003d090000024109004109000004080018004509000004089d01180049090c3870616c6c65745f7374616b696e6720736c617368696e6734536c617368696e675370616e7300001001287370616e5f696e6465781001245370616e496e6465780001286c6173745f7374617274100120457261496e6465780001486c6173745f6e6f6e7a65726f5f736c617368100120457261496e6465780001147072696f726d0401345665633c457261496e6465783e00004d090c3870616c6c65745f7374616b696e6720736c617368696e67285370616e5265636f7264041c42616c616e636501180008011c736c617368656418011c42616c616e6365000120706169645f6f757418011c42616c616e6365000051090000025509005509000004081029010059090c3870616c6c65745f7374616b696e6714747970657338456c656374696f6e526573756c7408244163636f756e74496401001c42616c616e63650118000c013c656c65637465645f73746173686573f401385665633c4163636f756e7449643e0001246578706f7375726573d10101b85665633c284163636f756e7449642c204578706f737572653c4163636f756e7449642c2042616c616e63653e293e00011c636f6d707574659901013c456c656374696f6e436f6d7075746500005d090c3870616c6c65745f7374616b696e6714747970657338456c656374696f6e537461747573042c426c6f636b4e756d6265720110010818436c6f736564000000104f70656e040010012c426c6f636b4e756d6265720001000061090c3870616c6c65745f7374616b696e67147479706573645065726d697373696f6e65644964656e7469747950726566730000080138696e74656e6465645f636f756e7410010c75333200013472756e6e696e675f636f756e7410010c75333200006509103870616c6c65745f7374616b696e671870616c6c65741870616c6c6574144572726f720404540001b4344e6f74436f6e74726f6c6c6572000004644e6f74206120636f6e74726f6c6c6572206163636f756e742e204e6f745374617368000104504e6f742061207374617368206163636f756e742e34416c7265616479426f6e64656400020460537461736820697320616c726561647920626f6e6465642e34416c726561647950616972656400030474436f6e74726f6c6c657220697320616c7265616479207061697265642e30456d7074795461726765747300040460546172676574732063616e6e6f7420626520656d7074792e44496e76616c6964536c617368496e64657800050484536c617368207265636f726420696e646578206f7574206f6620626f756e64732e44496e73756666696369656e7456616c7565000604c843616e206e6f7420626f6e6420776974682076616c7565206c657373207468616e206d696e696d756d2062616c616e63652e304e6f4d6f72654368756e6b730007049043616e206e6f74207363686564756c65206d6f726520756e6c6f636b206368756e6b732e344e6f556e6c6f636b4368756e6b000804a043616e206e6f74207265626f6e6420776974686f757420756e6c6f636b696e67206368756e6b732e3046756e646564546172676574000904c8417474656d7074696e6720746f2074617267657420612073746173682074686174207374696c6c206861732066756e64732e48496e76616c6964457261546f526577617264000a0458496e76616c69642065726120746f207265776172642e484e6f74536f72746564416e64556e69717565000b04804974656d7320617265206e6f7420736f7274656420616e6420756e697175652e38416c7265616479436c61696d6564000c0409015265776172647320666f72207468697320657261206861766520616c7265616479206265656e20636c61696d656420666f7220746869732076616c696461746f722e7c4f6666636861696e456c656374696f6e4561726c795375626d697373696f6e000d04e0546865207375626d697474656420726573756c74206973207265636569766564206f7574206f6620746865206f70656e2077696e646f772e784f6666636861696e456c656374696f6e5765616b5375626d697373696f6e000e04fc546865207375626d697474656420726573756c74206973206e6f7420617320676f6f6420617320746865206f6e652073746f726564206f6e20636861696e2e4c536e617073686f74556e617661696c61626c65000f04cc54686520736e617073686f742064617461206f66207468652063757272656e742077696e646f77206973206d697373696e672e804f6666636861696e456c656374696f6e426f67757357696e6e6572436f756e74001004ac496e636f7272656374206e756d626572206f662077696e6e65727320776572652070726573656e7465642e6c4f6666636861696e456c656374696f6e426f67757357696e6e65720011085d014f6e65206f6620746865207375626d69747465642077696e6e657273206973206e6f7420616e206163746976652063616e646964617465206f6e20636861696e2028696e646578206973206f7574206f662072616e676534696e20736e617073686f74292e704f6666636861696e456c656374696f6e426f677573436f6d7061637400120859014572726f72207768696c65206275696c64696e67207468652061737369676e6d656e7420747970652066726f6d2074686520636f6d706163742e20546869732063616e2068617070656e20696620616e20696e646578a4697320696e76616c69642c206f72206966207468652077656967687473205f6f766572666c6f775f2e784f6666636861696e456c656374696f6e426f6775734e6f6d696e61746f7200130411014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f7273206973206e6f7420616e20616374697665206e6f6d696e61746f72206f6e20636861696e2e7c4f6666636861696e456c656374696f6e426f6775734e6f6d696e6174696f6e00140449014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e206564676520746f20776869636820746865792068617665206e6f7420766f746564206f6e20636861696e2e844f6666636861696e456c656374696f6e536c61736865644e6f6d696e6174696f6e0015085d014f6e65206f6620746865207375626d6974746564206e6f6d696e61746f72732068617320616e2065646765207768696368206973207375626d6974746564206265666f726520746865206c617374206e6f6e2d7a65726f50736c617368206f6620746865207461726765742e744f6666636861696e456c656374696f6e426f67757353656c66566f74650016042101412073656c6620766f7465206d757374206f6e6c79206265206f726967696e617465642066726f6d20612076616c696461746f7220746f204f4e4c59207468656d73656c7665732e644f6666636861696e456c656374696f6e426f677573456467650017044101546865207375626d697474656420726573756c742068617320756e6b6e6f776e206564676573207468617420617265206e6f7420616d6f6e67207468652070726573656e7465642077696e6e6572732e684f6666636861696e456c656374696f6e426f67757353636f7265001804150154686520636c61696d65642073636f726520646f6573206e6f74206d61746368207769746820746865206f6e6520636f6d70757465642066726f6d2074686520646174612e844f6666636861696e456c656374696f6e426f677573456c656374696f6e53697a650019047454686520656c656374696f6e2073697a6520697320696e76616c69642e3843616c6c4e6f74416c6c6f776564001a0445015468652063616c6c206973206e6f7420616c6c6f7765642061742074686520676976656e2074696d652064756520746f207265737472696374696f6e73206f6620656c656374696f6e20706572696f642e58496e636f7272656374536c617368696e675370616e73001b04b0496e636f7272656374206e756d626572206f6620736c617368696e67207370616e732070726f76696465642e34416c7265616479457869737473001c04985065726d697373696f6e65642076616c696461746f7220616c7265616479206578697374732e244e6f74457869737473001d04885065726d697373696f6e65642076616c696461746f72206e6f74206578697374732e204e6f4368616e6765001e04605570646174657320776974682073616d652076616c75652e60496e76616c696456616c696461746f724964656e74697479001f04b8476976656e20706f74656e7469616c2076616c696461746f72206964656e7469747920697320696e76616c69642e68496e76616c696456616c696461746f72436f6d6d697373696f6e0020049c56616c696461746f7220707265667320617265206e6f7420696e2076616c69642072616e67652e6453746173684964656e74697479446f65734e6f744578697374002104d456616c696461746f72206f72206e6f6d696e61746f72207374617368206964656e7469747920646f6573206e6f742065786973742e7053746173684964656e746974794e6f745065726d697373696f6e6564002204b856616c696461746f72207374617368206964656e7469747920776173206e6f74207065726d697373696f6e65642e5453746173684964656e746974794e6f744344446564002304784e6f6d696e61746f7220737461736820776173206e6f742043444465642e64486974496e74656e64656456616c696461746f72436f756e74002404bc52756e6e696e672076616c696461746f7220636f756e74206869742074686520696e74656e64656420636f756e742e98496e74656e646564436f756e744973457863656564696e67436f6e73656e7375734c696d697400250435015768656e2074686520696e74656e646564206e756d626572206f662076616c696461746f727320746f2072756e206973203e3d20322f33206f66206076616c696461746f725f636f756e74602e30426f6e64546f6f536d616c6c002604dc5768656e2074686520616d6f756e7420746f20626520626f6e646564206973206c657373207468616e20604d696e696d756d426f6e64602042616453746174650027043901496e7465726e616c20737461746520686173206265636f6d6520736f6d65686f7720636f7272757074656420616e6420746865206f7065726174696f6e2063616e6e6f7420636f6e74696e75652e38546f6f4d616e795461726765747300280494546f6f206d616e79206e6f6d696e6174696f6e207461726765747320737570706c6965642e244261645461726765740029043d0141206e6f6d696e6174696f6e207461726765742077617320737570706c69656420746861742077617320626c6f636b6564206f72206f7468657277697365206e6f7420612076616c696461746f722e70496e76616c696456616c696461746f72556e626f6e64416d6f756e74002a04bc56616c696461746f722073686f756c642068617665206d696e696d756d2035306b20504f4c595820626f6e6465642e2c426f756e644e6f744d6574002b0458536f6d6520626f756e64206973206e6f74206d65742e44546f6f4d616e794e6f6d696e61746f7273002c084d0154686572652061726520746f6f206d616e79206e6f6d696e61746f727320696e207468652073797374656d2e20476f7665726e616e6365206e6565647320746f2061646a75737420746865207374616b696e67b473657474696e677320746f206b656570207468696e6773207361666520666f72207468652072756e74696d652e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090969090c2873705f7374616b696e671c6f6666656e6365384f6666656e636544657461696c7308205265706f727465720100204f6666656e64657201d501000801206f6666656e646572d50101204f6666656e6465720001247265706f7274657273f401345665633c5265706f727465723e00006d0900000408a90130007109000002750900750900000408002507007909000004087d0930007d090c1c73705f636f72651863727970746f244b65795479706549640000040040011c5b75383b20345d000081090c3870616c6c65745f73657373696f6e1870616c6c6574144572726f7204045400011430496e76616c696450726f6f6600000460496e76616c6964206f776e6572736869702070726f6f662e5c4e6f4173736f63696174656456616c696461746f7249640001049c4e6f206173736f6369617465642076616c696461746f7220494420666f72206163636f756e742e344475706c6963617465644b65790002046452656769737465726564206475706c6963617465206b65792e184e6f4b657973000304a44e6f206b65797320617265206173736f63696174656420776974682074686973206163636f756e742e244e6f4163636f756e7400040419014b65792073657474696e67206163636f756e74206973206e6f74206c6976652c20736f206974277320696d706f737369626c6520746f206173736f6369617465206b6579732e04744572726f7220666f72207468652073657373696f6e2070616c6c65742e8509083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300008909083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965738d09016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564450601244f7074696f6e3c4e3e00008d090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401b901045300000400b50101185665633c543e000091090c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a09090995090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401c901045300000400990901185665633c543e00009909000002c901009d0910346672616d655f737570706f727418747261697473106d69736334577261707065724f706171756504045401a109000800bd04000000a1090104540000a109084070616c6c65745f696d5f6f6e6c696e6564426f756e6465644f70617175654e6574776f726b53746174650c4c506565724964456e636f64696e674c696d697400584d756c746941646472456e636f64696e674c696d697400384164647265737365734c696d6974000008011c706565725f6964a509019c5765616b426f756e6465645665633c75382c20506565724964456e636f64696e674c696d69743e00014865787465726e616c5f616464726573736573a909012d015765616b426f756e6465645665633c5765616b426f756e6465645665633c75382c204d756c746941646472456e636f64696e674c696d69743e2c204164647265737365734c696d69740a3e0000a5090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004003001185665633c543e0000a9090c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401a509045300000400ad0901185665633c543e0000ad09000002a50900b1090c4070616c6c65745f696d5f6f6e6c696e651870616c6c6574144572726f7204045400010828496e76616c69644b6579000004604e6f6e206578697374656e74207075626c6963206b65792e4c4475706c696361746564486561727462656174000104544475706c696361746564206865617274626561742e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909b5090c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012c045300000400b10401185665633c543e0000b909082c70616c6c65745f7375646f144572726f720404540001042c526571756972655375646f0000047c53656e646572206d75737420626520746865205375646f206163636f756e7404644572726f7220666f7220746865205375646f206d6f64756c65bd090c3070616c6c65745f6173736574147479706573485469636b6572526567697374726174696f6e0404540128000801146f776e65728001284964656e746974794964000118657870697279fc01244f7074696f6e3c543e0000c1090c3070616c6c65745f6173736574147479706573605469636b6572526567697374726174696f6e436f6e6669670404540128000801446d61785f7469636b65725f6c656e677468080108753800014c726567697374726174696f6e5f6c656e677468fc01244f7074696f6e3c543e0000c5090c3070616c6c65745f6173736574147479706573345365637572697479546f6b656e0000100130746f74616c5f737570706c7918011c42616c616e63650001246f776e65725f6469648001284964656e746974794964000124646976697369626c6529010110626f6f6c00012861737365745f74797065f10101244173736574547970650000c90900000408a88000cd0900000408a8150200d1090000040880a800d5090c3070616c6c65745f61737365741474797065735841737365744f776e65727368697052656c6174696f6e00010c204e6f744f776e65640000002c5469636b65724f776e65640001002841737365744f776e656400020000d90900000408a8190200dd0900000408a87d0200e10900000408a8590200e50900000408a85d0200e909083070616c6c65745f61737365741c56657273696f6e0000040008010875380000ed090c3070616c6c65745f6173736574146572726f72144572726f720404540001a430556e617574686f72697a65640000046c5468652075736572206973206e6f7420617574686f72697a65642e4c4173736574416c7265616479437265617465640001048c54686520746f6b656e2068617320616c7265616479206265656e20637265617465642e345469636b6572546f6f4c6f6e6700020490546865207469636b6572206c656e677468206973206f76657220746865206c696d69742e545469636b65724e6f74416c7068616e756d6572696300030498546865207469636b657220686173206e6f6e2d616c7068616e756d657269632070617274732e5c5469636b6572416c726561647952656769737465726564000404c4546865207469636b657220697320616c7265616479207265676973746572656420746f20736f6d656f6e6520656c73652e54546f74616c537570706c7941626f76654c696d69740005049054686520746f74616c20737570706c792069732061626f766520746865206c696d69742e2c4e6f537563684173736574000604384e6f207375636820746f6b656e2e34416c726561647946726f7a656e0007047054686520746f6b656e20697320616c72656164792066726f7a656e2e284e6f74416e4f776e6572000804984e6f7420616e206f776e6572206f662074686520746f6b656e206f6e20457468657265756d2e3c42616c616e63654f766572666c6f77000904a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4c546f74616c537570706c794f766572666c6f77000a04bc416e206f766572666c6f77207768696c652063616c63756c6174696e672074686520746f74616c20737570706c792e48496e76616c69644772616e756c6172697479000b045c416e20696e76616c6964206772616e756c61726974792e244e6f7446726f7a656e000c0464546865206173736574206d7573742062652066726f7a656e2e3c496e76616c69645472616e73666572000d04845472616e736665722076616c69646174696f6e20636865636b206661696c65642e4c496e73756666696369656e7442616c616e6365000e04945468652073656e6465722062616c616e6365206973206e6f742073756666696369656e742e544173736574416c7265616479446976697369626c65000f047c54686520746f6b656e20697320616c726561647920646976697369626c652e60496e76616c6964457468657265756d5369676e617475726500100494416e20696e76616c696420457468657265756d206045636473615369676e6174757265602e645469636b6572526567697374726174696f6e457870697265640011048c526567697374726174696f6e206f66207469636b65722068617320657870697265642e5053656e64657253616d6541735265636569766572001204845472616e736665727320746f2073656c6620617265206e6f7420616c6c6f776564244e6f53756368446f630013048854686520676976656e20446f63756d656e7420646f6573206e6f742065786973742e704d61784c656e6774684f6641737365744e616d654578636565646564001404bc4d6178696d756d206c656e677468206f66206173736574206e616d6520686173206265656e2065786365656465642e8446756e64696e67526f756e644e616d654d61784c656e6774684578636565646564001504ec4d6178696d756d206c656e677468206f66207468652066756e64696e6720726f756e64206e616d6520686173206265656e2065786365656465642e58496e76616c696441737365744964656e7469666965720016048c536f6d65206041737365744964656e746966696572602077617320696e76616c69642e84496e766573746f72556e697175656e657373436c61696d4e6f74416c6c6f776564001704e8496e766573746f7220556e697175656e65737320636c61696d7320617265206e6f7420616c6c6f77656420666f7220746869732061737365742e60496e76616c6964437573746f6d417373657454797065496400180470496e76616c69642060437573746f6d4173736574547970654964602e8841737365744d657461646174614e616d654d61784c656e677468457863656564656400190405014d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612074797065206e616d6520686173206265656e2065786365656465642e8c41737365744d6574616461746156616c75654d61784c656e6774684578636565646564001a04f44d6178696d756d206c656e677468206f6620746865206173736574206d657461646174612076616c756520686173206265656e2065786365656465642e9441737365744d65746164617461547970654465664d61784c656e6774684578636565646564001b041d014d6178696d756d206c656e677468206f6620746865206173736574206d65746164617461207479706520646566696e6974696f6e20686173206265656e2065786365656465642e6441737365744d657461646174614b657949734d697373696e67001c04784173736574204d65746164617461206b6579206973206d697373696e672e6841737365744d6574616461746156616c756549734c6f636b6564001d047c4173736574204d657461646174612076616c7565206973206c6f636b65642e8841737365744d657461646174614c6f63616c4b6579416c7265616479457869737473001e04cc4173736574204d65746164617461204c6f63616c207479706520616c72656164792065786973747320666f722061737365742e8c41737365744d65746164617461476c6f62616c4b6579416c7265616479457869737473001f04a84173736574204d6574616461746120476c6f62616c207479706520616c7265616479206578697374732e5c5469636b65724669727374427974654e6f7456616c6964002004c85469636b6572732073686f756c642073746172742077697468206174206c65617374206f6e652076616c696420627974652e68556e65787065637465644e6f6e46756e6769626c65546f6b656e0021042101417474656d707420746f2063616c6c20616e2065787472696e7369632074686174206973206f6e6c79207065726d697474656420666f722066756e6769626c6520746f6b656e732e6c496e636f6d70617469626c654173736574547970655570646174650022047d01417474656d707420746f20757064617465207468652074797065206f662061206e6f6e2066756e6769626c6520746f6b656e20746f20612066756e6769626c6520746f6b656e206f7220746865206f74686572207761792061726f756e642e9841737365744d657461646174614b657942656c6f6e6773546f4e4654436f6c6c656374696f6e002304f4417474656d707420746f2064656c6574652061206b65792074686174206973206e656564656420666f7220616e204e465420636f6c6c656374696f6e2e6441737365744d6574616461746156616c75654973456d707479002404bc417474656d707420746f206c6f636b2061206d657461646174612076616c7565207468617420697320656d7074792e784e756d6265724f6641737365744d65646961746f72734578636565646564002504ec4e756d626572206f66206173736574206d65646961746f727320776f756c642065786365656420746865206d6178696d756d20616c6c6f7765642e58496e76616c69645469636b65724368617261637465720026041d01496e76616c6964207469636b657220636861726163746572202d2076616c6964207365743a2041602e2e605a60206030602e2e60396020605f6020602d6020602e6020602f602e68496e76616c69645472616e7366657246726f7a656e4173736574002704bc4661696c656420746f207472616e7366657220746865206173736574202d2061737365742069732066726f7a656e2e80496e76616c69645472616e73666572436f6d706c69616e63654661696c757265002804b84661696c656420746f207472616e7366657220616e204e4654202d20636f6d706c69616e6365206661696c65642e00f109000004089d028000f5090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e1c56657273696f6e0000040008010875380000f9090c6070616c6c65745f636f72706f726174655f616374696f6e7330646973747269627574696f6e144572726f7204045400013c3043414e6f7442656e65666974000004d441206361706974616c20646973747269627574696f6e20776173206d61646520666f722061206e6f6e2d62656e656669742043412e34416c7265616479457869737473000104a84120646973747269627574696f6e20616c72656164792065786973747320666f7220746869732043412e4c4578706972794265666f72655061796d656e7400020829014120646973747269627574696f6e732070726f766964656420657870697279206461746520776173207374726963746c79206265666f726520697473207061796d656e7420646174652e2101496e206f7468657220776f7264732c2065766572797468696e6720746f206469737472696275746520776f756c6420696d6d6564696174656c7920626520666f726665697465642e44486f6c646572416c726561647950616964000304d454686520746f6b656e20686f6c6465722068617320616c7265616479206265656e20706169642074686569722062656e656669742e484e6f53756368446973747269627574696f6e000404c441206361706974616c20646973747269627574696f6e20646f65736e277420657869737420666f7220746869732043412e5843616e6e6f74436c61696d4265666f726553746172740005046101446973747269627574696f6e20616c6c6f746d656e742063616e6e6f7420626520636c61696d6564206173207468652063757272656e742074696d65206973206265666f72652073746172742d6f662d7061796d656e742e5843616e6e6f74436c61696d41667465724578706972790006046901446973747269627574696f6e27732065787069727920686173207061737365642e204449442063616e6e6f7420636c61696d20616e796d6f726520616e642068617320666f72666569746564207468652062656e65666974732e8042616c616e6365506572536861726550726f647563744f766572666c6f77656400070429014d756c7469706c69636174696f6e206f66207468652062616c616e636520776974682074686520706572207368617265207061796f757420616d6f756e74206f766572666c6f7765642e584e6f74446973747269627574696f6e43726561746f72000804c0444944206973206e6f7420746865206f6e652077686f20637265617465642074686520646973747269627574696f6e2e40416c72656164795265636c61696d6564000904d44449442077686f20637265617465642074686520646973747269627574696f6e20616c726561647920646964207265636c61696d2e284e6f7445787069726564000a04f0446973747269627574696f6e20686164206e6f742065787069726564207965742c206f722074686572652773206e6f2065787069727920646174652e4c446973747269627574696f6e53746172746564000b0401014120646973747269627574696f6e20686173206265656e206163746976617465642c20617320607061796d656e745f6174203c3d206e6f776020686f6c64732e6c496e73756666696369656e7452656d61696e696e67416d6f756e74000c042d014120646973747269627574696f6e2068617320696e73756666696369656e742072656d61696e696e6720616d6f756e74206f662063757272656e637920746f20646973747269627574652e60446973747269627574696f6e416d6f756e7449735a65726f000d0494446973747269627574696f6e2060616d6f756e74602063616e6e6f74206265207a65726f2e68446973747269627574696f6e506572536861726549735a65726f000e04a0446973747269627574696f6e20607065725f7368617265602063616e6e6f74206265207a65726f2e00fd0900000408a8b10200010a00000408fd098000050a000002b10200090a1064706f6c796d6573685f636f6d6d6f6e5f7574696c69746965731874726169747328636865636b706f696e743c4e657874436865636b706f696e747300000c011c6e6578745f61742801184d6f6d656e74000134746f74616c5f70656e64696e6728010c7536340001247363686564756c65730d0a017042547265654d61703c5363686564756c6549642c204d6f6d656e743e00000d0a042042547265654d617008044b01b50204560128000400110a000000110a000002150a00150a00000408b5022800190a00000408a8b502001d0a0c3070616c6c65745f617373657428636865636b706f696e741c56657273696f6e0000040008010875380000210a0c3070616c6c65745f617373657428636865636b706f696e74144572726f72040454000118384e6f537563685363686564756c65000004cc4120636865636b706f696e74207363686564756c6520646f6573206e6f7420657869737420666f72207468652061737365742e505363686564756c654e6f7452656d6f7661626c650001041d014120636865636b706f696e74207363686564756c65206973206e6f742072656d6f7661626c6520617320607265665f636f756e74287363686564756c655f696429203e2030602e685363686564756c65734f7665724d6178436f6d706c65786974790002042901546865206e6577207363686564756c6520776f756c642070757420746865207469636b6572206f76657220746865206d6178696d756d20636f6d706c657869747920616c6c6f7765642e3c5363686564756c654973456d7074790003047c43616e27742063726561746520616e20656d707479207363686564756c652e405363686564756c6546696e697368656400040494546865207363686564756c6520686173206e6f206d6f726520636865636b706f696e74732e745363686564756c6548617345787069726564436865636b706f696e747300050494546865207363686564756c6520686173206578706972656420636865636b706f696e74732e00250a0c4c706f6c796d6573685f7072696d69746976657348636f6d706c69616e63655f6d616e616765723c4173736574436f6d706c69616e6365000008011870617573656429010110626f6f6c000130726571756972656d656e7473f50201685665633c436f6d706c69616e6365526571756972656d656e743e0000290a086470616c6c65745f636f6d706c69616e63655f6d616e616765721c56657273696f6e00000400080108753800002d0a086470616c6c65745f636f6d706c69616e63655f6d616e61676572144572726f7204045400011c30556e617574686f72697a65640000045c55736572206973206e6f7420617574686f72697a65642e2c4469644e6f74457869737400010438446964206e6f742065786973742e78496e76616c6964436f6d706c69616e6365526571756972656d656e744964000204a0436f6d706c69616e636520726571756972656d656e7420696420646f65736e27742065786973742e84496e636f72726563744f7065726174696f6e4f6e54727573746564497373756572000304a04973737565722065786973742062757420747279696e6720746f2061646420697420616761696e2e7c4475706c6963617465436f6d706c69616e6365526571756972656d656e7473000404b0546865726520617265206475706c696361746520636f6d706c69616e636520726571756972656d656e74732e7c436f6d706c69616e6365526571756972656d656e74546f6f436f6d706c6578000504150154686520776f7273742063617365207363656e6172696f206f662074686520636f6d706c69616e636520726571756972656d656e7420697320746f6f20636f6d706c65782e4c5765696768744c696d697445786365656465640006040501546865206d6178696d756d20776569676874206c696d697420666f7220657865637574696e67207468652066756e6374696f6e207761732065786365656465642e00310a00000408a8a10200350a086070616c6c65745f636f72706f726174655f616374696f6e731c56657273696f6e0000040008010875380000390a086070616c6c65745f636f72706f726174655f616374696f6e73144572726f7204045400012c3844657461696c73546f6f4c6f6e67000004d8546865206064657461696c7360206f66206120434120657863656564656420746865206d617820616c6c6f776564206c656e6774682e3c4475706c69636174654469645461780001082101412077697468686f6c64696e6720746178206f7665727269646520666f72206120676976656e204449442077617320737065636966696564206d6f7265207468616e206f6e63652e050154686520636861696e207265667573656420746f206d616b6520612063686f6963652c20616e642068656e63652074686572652077617320616e206572726f722e3c546f6f4d616e794469645461786573000204c8546f6f206d616e792077697468686f6c64696e6720746178206f76657272696465732077657265207370656369666965642e40546f6f4d616e79546172676574496473000304e4546f6f206d616e79206964656e74697469657320696e20605461726765744964656e746974696573602077657265207370656369666965642e484e6f53756368436865636b706f696e74496400040405014f6e204341206372656174696f6e2c206120636865636b706f696e74204944207761732070726f766964656420776869636820646f65736e27742065786973742e204e6f537563684341000504a44120434120776974682074686520676976656e2060434149646020646964206e6f742065786973742e304e6f5265636f7264446174650006048854686520434120646964206e6f7420686176652061207265636f726420646174652e505265636f7264446174654166746572537461727400070cdc412043412773207265636f7264206461746520776173207374726963746c792061667465722074686520227374617274222074696d652c8c7768657265202273746172742220697320636f6e7465787420646570656e64656e742e8101466f72206578616d706c652c20697420636f756c6420626520746865207374617274206f6620612062616c6c6f742c206f72207468652073746172742d6f662d7061796d656e7420696e206361706974616c20646973747269627574696f6e2e5c4465636c4461746541667465725265636f726444617465000804ec412043412773206465636c61726174696f6e206461746520776173207374726963746c7920616674657220697473207265636f726420646174652e404465636c44617465496e467574757265000904b4412043412773206465636c61726174696f6e2064617465206f636375727320696e20746865206675747572652e3c4e6f74546172676574656442794341000a046c434120646f6573206e6f742074617267657420746865204449442e003d0a0000021800410a0c6070616c6c65745f636f72706f726174655f616374696f6e731862616c6c6f74144572726f720404540001382c43414e6f744e6f74696365000004e04120636f72706f726174652062616c6c6f7420776173206d61646520666f722061206e6f6e20604973737565724e6f74696365602043412e34416c7265616479457869737473000104b84120636f72706f726174652062616c6c6f7420616c72656164792065786973747320666f7220746869732043412e304e6f5375636842616c6c6f74000204b44120636f72706f726174652062616c6c6f7420646f65736e277420657869737420666f7220746869732043412e3453746172744166746572456e6400030411014120636f72706f726174652062616c6c6f7427732073746172742074696d6520776173207374726963746c79206166746572207468652062616c6c6f74277320656e642e2c4e6f774166746572456e640004040d014120636f72706f726174652062616c6c6f74277320656e642074696d6520776173207374726963746c79206265666f7265207468652063757272656e742074696d652e5c4e756d6265724f6643686f696365734f766572666c6f770005043901496620736f6d65206d6f74696f6e20696e206120636f72706f726174652062616c6c6f7420686173206d6f72652063686f69636573207468616e20776f756c642066697420696e2060753136602e50566f74696e67416c7265616479537461727465640006040101566f74696e67207374617274656420616c72656164792e20416d656e64696e6720612062616c6c6f74206973206e6f206c6f6e67657220706f737369626c652e40566f74696e674e6f745374617274656400070468566f74696e67206861736e27742073746172746564207965742e48566f74696e67416c7265616479456e64656400080454566f74696e6720656e64656420616c72656164792e3857726f6e67566f7465436f756e74000904150150726f7669646564206c697374206f662062616c616e63657320646f6573206e6f74206d617463682074686520746f74616c206e756d626572206f662063686f696365732e44496e73756666696369656e74566f746573000a043d01566f74696e6720706f7765722075736564206279206120444944206f6e2061206d6f74696f6e2065786365656473207468617420776869636820697320617661696c61626c6520746f207468656d2e444e6f5375636852435646616c6c6261636b000b04bc546865205243562066616c6c6261636b206f6620736f6d652063686f69636520646f6573206e6f742065786973742e3052435653656c664379636c65000c04b4546865205243562066616c6c6261636b20706f696e747320746f20746865206f726967696e2063686f6963652e345243564e6f74416c6c6f776564000d048c524356206973206e6f7420616c6c6f77656420666f7220746869732062616c6c6f742e00450a084870616c6c65745f7065726d697373696f6e73144572726f7204045400010448556e617574686f72697a656443616c6c6572000004ec5468652063616c6c6572206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e00490a082c70616c6c65745f7069707330506970734d65746164617461042c426c6f636b4e756d626572011000180108696471030114506970496400010c75726c6502012c4f7074696f6e3c55726c3e00012c6465736372697074696f6e750301584f7074696f6e3c5069704465736372697074696f6e3e000128637265617465645f617410012c426c6f636b4e756d62657200014c7472616e73616374696f6e5f76657273696f6e10010c7533320001186578706972794901015c4d61796265426c6f636b3c426c6f636b4e756d6265723e00004d0a0000040871030000510a082c70616c6c65745f706970732c4465706f736974496e666f04244163636f756e7449640100000801146f776e65720001244163636f756e744964000118616d6f756e7418011c42616c616e63650000550a082c70616c6c65745f706970730c506970082050726f706f73616c01fd05244163636f756e7449640100000c0108696471030114506970496400012070726f706f73616cfd05012050726f706f73616c00012070726f706f7365726903014c50726f706f7365723c4163636f756e7449643e0000590a082c70616c6c65745f7069707330566f74696e67526573756c740000100128617965735f636f756e7410010c753332000128617965735f7374616b6518011c42616c616e63650001286e6179735f636f756e7410010c7533320001286e6179735f7374616b6518011c42616c616e636500005d0a082c70616c6c65745f7069707310566f74650000080029010110626f6f6c000018011c42616c616e63650000610a082c70616c6c65745f7069707340536e617073686f744d65746164617461082c426c6f636b4e756d6265720110244163636f756e7449640100000c0128637265617465645f617410012c426c6f636b4e756d62657200011c6d6164655f62790001244163636f756e744964000108696485030128536e617073686f7449640000650a082c70616c6c65745f706970731c56657273696f6e0000040008010875380000690a082c70616c6c65745f70697073144572726f720404540001488452657363686564756c654e6f74427952656c65617365436f6f7264696e61746f7200000431014f6e6c79207468652047432072656c6561736520636f6f7264696e61746f7220697320616c6c6f77656420746f2072657363686564756c652070726f706f73616c20657865637574696f6e2e404e6f7446726f6d436f6d6d756e697479000108ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2ecc5468652070726f706f73616c206d7573742062652066726f6d2074686520636f6d6d756e6974792c206275742069736e27742e384e6f744279436f6d6d6974746565000208ec54686520676976656e20646973706174636861626c652063616c6c206973206e6f742076616c696420666f7220746869732070726f706f73616c2eb45468652070726f706f73616c206d75737420626520627920636f6d6d756e6974792c206275742069736e27742e44546f6f4d616e794163746976655069707300030829015468652063757272656e74206e756d626572206f6620616374697665202870656e64696e67207c207363686564756c65642920504950732065786365656420746865206d6178696d756d9c616e64207468652070726f706f73616c206973206e6f74206279206120636f6d6d69747465652e40496e636f72726563744465706f7369740004049c50726f706f7365722073706563696669657320616e20696e636f7272656374206465706f7369744c496e73756666696369656e744465706f736974000504b450726f706f7365722063616e2774206166666f726420746f206c6f636b206d696e696d756d206465706f736974384e6f5375636850726f706f73616c000604705468652070726f706f73616c20646f6573206e6f742065786973742e4c4e6f7441436f6d6d69747465654d656d626572000704844e6f742070617274206f6620676f7665726e616e636520636f6d6d69747465652e60496e76616c6964467574757265426c6f636b4e756d626572000804d85768656e206120626c6f636b206e756d626572206973206c657373207468616e2063757272656e7420626c6f636b206e756d6265722e544e756d6265724f66566f74657345786365656465640009047c5768656e206e756d626572206f6620766f746573206f766572666c6f77732e685374616b65416d6f756e744f66566f7465734578636565646564000a04985768656e207374616b6520616d6f756e74206f66206120766f7465206f766572666c6f77732e584d697373696e6743757272656e744964656e74697479000b044c4d697373696e672063757272656e742044494458496e636f727265637450726f706f73616c5374617465000c049050726f706f73616c206973206e6f7420696e2074686520636f72726563742073746174653443616e6e6f74536b6970506970000d04fc5768656e20656e616374696e6720736e617073686f7420726573756c74732c20616e20756e736b69707061626c65205049502077617320736b69707065642e58536e617073686f74526573756c74546f6f4c61726765000e041501547269656420746f20656e61637420726573756c747320666f722074686520736e617073686f74207175657565206f766572666c6f77696e6720697473206c656e6774682e48536e617073686f7449644d69736d61746368000f045d01547269656420746f20656e61637420726573756c7420666f7220504950207769746820696420646966666572656e742066726f6d20746861742061742074686520706f736974696f6e20696e207468652071756575652e705363686564756c656450726f706f73616c446f65736e744578697374001004fc457865637574696f6e206f662061207363686564756c65642070726f706f73616c206661696c65642062656361757365206974206973206d697373696e672e6c50726f706f73616c4e6f74496e5363686564756c65645374617465001104fc412070726f706f73616c2074686174206973206e6f7420696e2061207363686564756c65642073746174652063616e6e6f742062652065786563757465642e006d0a0000040880e800710a0000040880a90300750a00000408e0a800790a0000040880e0007d0a00000408e0810a00810a00000408a8c10300850a084070616c6c65745f706f7274666f6c696f1c56657273696f6e0000040008010875380000890a084070616c6c65745f706f7274666f6c696f144572726f7204045400014454506f7274666f6c696f446f65734e6f7445786973740000047054686520706f7274666f6c696f20646f65736e27742065786973742e70496e73756666696369656e74506f7274666f6c696f42616c616e63650001049c496e73756666696369656e742062616c616e636520666f722061207472616e73616374696f6e2e6844657374696e6174696f6e497353616d65506f7274666f6c696f000204e854686520736f7572636520616e642064657374696e6174696f6e20706f7274666f6c696f732073686f756c6420626520646966666572656e742e64506f7274666f6c696f4e616d65416c7265616479496e557365000304310154686520706f7274666f6c696f20636f756c646e27742062652072656e616d65642062656361757365207468652063686f73656e206e616d6520697320616c726561647920696e207573652e945365636f6e646172794b65794e6f74417574686f72697a6564466f72506f7274666f6c696f000404fc546865207365636f6e64617279206b6579206973206e6f7420617574686f72697a656420746f206163636573732074686520706f7274666f6c696f2873292e54556e617574686f72697a6564437573746f6469616e000504f454686520706f72666f6c696f277320637573746f6479206973207769746820736f6d656f6e65206f74686572207468616e207468652063616c6c65722e60496e73756666696369656e74546f6b656e734c6f636b6564000604bc43616e206e6f7420756e6c6f636b206d6f726520746f6b656e73207468616e207768617420617265206c6f636b656444506f7274666f6c696f4e6f74456d707479000704bc54686520706f7274666f6c696f207374696c6c2068617320736f6d652061737365742062616c616e6365206c6566746c446966666572656e744964656e74697479506f7274666f6c696f73000804b454686520706f7274666f6c696f732062656c6f6e6720746f20646966666572656e74206964656e746974696573604e6f4475706c6963617465417373657473416c6c6f776564000904804475706c696361746520617373657420616d6f6e6720746865206974656d732e584e46544e6f74466f756e64496e506f7274666f6c696f000a04a0546865204e465420646f6573206e6f7420657869737420696e2074686520706f7274666f6c696f2e404e4654416c72656164794c6f636b6564000b0468546865204e465420697320616c7265616479206c6f636b65642e304e46544e6f744c6f636b6564000c0478546865204e465420686173206e65766572206265656e206c6f636b65642e68496e76616c69645472616e736665724e46544e6f744f776e6564000d04c04f6e6c79206f776e6564204e4654732063616e206265206d6f766564206265747765656e20706f7274666f6c696f732e68496e76616c69645472616e736665724e465449734c6f636b6564000e04c04c6f636b6564204e4654732063616e206e6f74206265206d6f766564206265747765656e20706f7274666f6c696f732e34456d7074795472616e73666572000f04a0547279696e6720746f206d6f766520616e20616d6f756e74206f66207a65726f206173736574732e5c4d697373696e674f776e6572735065726d697373696f6e00100439015468652063616c6c657220646f65736e27742068617665207065726d697373696f6e20746f2063726561746520706f7274666f6c696f73206f6e20746865206f776e6572277320626568616c662e008d0a084c70616c6c65745f70726f746f636f6c5f666565144572726f7204045400010c68496e73756666696369656e744163636f756e7442616c616e6365000004b0496e73756666696369656e74206163636f756e742062616c616e636520746f2070617920746865206665652e4c556e48616e646c6564496d62616c616e636573000104884e6f742061626c6520746f2068616e646c65642074686520696d62616c616e63657368496e73756666696369656e745375627369647942616c616e6365000204b0496e73756666696369656e7420737562736964792062616c616e636520746f2070617920746865206665652e00910a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401950a045300000400a50a01185665633c543e0000950a04184f7074696f6e04045401990a0108104e6f6e6500000010536f6d650400990a0000010000990a084070616c6c65745f7363686564756c6572245363686564756c656414104e616d6501041043616c6c019d0a2c426c6f636b4e756d62657201103450616c6c6574734f726967696e014508244163636f756e7449640100001401206d617962655f6964d50301304f7074696f6e3c4e616d653e0001207072696f726974790801487363686564756c653a3a5072696f7269747900011063616c6c9d0a011043616c6c0001386d617962655f706572696f646963dd0701944f7074696f6e3c7363686564756c653a3a506572696f643c426c6f636b4e756d6265723e3e0001186f726967696e4508013450616c6c6574734f726967696e00009d0a10346672616d655f737570706f72741874726169747324707265696d616765731c426f756e64656404045401fd05010c184c6567616379040110686173682c01104861736800000018496e6c696e650400a10a0134426f756e646564496e6c696e65000100184c6f6f6b7570080110686173682c01104861736800010c6c656e10010c75333200020000a10a0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000a50a000002950a00a90a0c4070616c6c65745f7363686564756c65721870616c6c6574144572726f72040454000114404661696c6564546f5363686564756c65000004644661696c656420746f207363686564756c6520612063616c6c204e6f74466f756e640001047c43616e6e6f742066696e6420746865207363686564756c65642063616c6c2e5c546172676574426c6f636b4e756d626572496e50617374000204a4476976656e2074617267657420626c6f636b206e756d62657220697320696e2074686520706173742e4852657363686564756c654e6f4368616e6765000304f052657363686564756c65206661696c6564206265636175736520697420646f6573206e6f74206368616e6765207363686564756c65642074696d652e144e616d6564000404d0417474656d707420746f207573652061206e6f6e2d6e616d65642066756e6374696f6e206f6e2061206e616d6564207461736b2e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909ad0a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e741456656e7565000008011c63726561746f728001284964656e74697479496400012876656e75655f74797065e503012456656e7565547970650000b10a00000408dd038d0200b50a00000408dd030000b90a0000040880dd0300bd0a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e742c496e737472756374696f6e08184d6f6d656e7401282c426c6f636b4e756d626572011000180138696e737472756374696f6e5f69648d020134496e737472756374696f6e496400012076656e75655f6964dd03011c56656e7565496400013c736574746c656d656e745f74797065f903016c536574746c656d656e74547970653c426c6f636b4e756d6265723e000128637265617465645f6174fc01384f7074696f6e3c4d6f6d656e743e00012874726164655f64617465fc01384f7074696f6e3c4d6f6d656e743e00012876616c75655f64617465fc01384f7074696f6e3c4d6f6d656e743e0000c10a000004088d02e90300c50a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74244c656753746174757304244163636f756e7449640100010c4050656e64696e67546f6b656e4c6f636b00000040457865637574696f6e50656e64696e6700010050457865637574696f6e546f4265536b697070656408000001244163636f756e744964000028010c75363400020000c90a000004088d02e000cd0a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e744441666669726d6174696f6e53746174757300010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d656400020000d10a00000408e08d0200d50a00000408a8dd0300d90a084470616c6c65745f736574746c656d656e741c56657273696f6e0000040008010875380000dd0a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e7444496e737472756374696f6e537461747573042c426c6f636b4e756d626572011001141c556e6b6e6f776e0000001c50656e64696e67000100184661696c65640002001c53756363657373040010012c426c6f636b4e756d6265720003002052656a6563746564040010012c426c6f636b4e756d62657200040000e10a000004088d028000e50a0c4c706f6c796d6573685f7072696d69746976657328736574746c656d656e74644d65646961746f7241666669726d6174696f6e5374617475730404540128010c1c556e6b6e6f776e0000001c50656e64696e670001002041666669726d6564040118657870697279fc01244f7074696f6e3c543e00020000e90a084470616c6c65745f736574746c656d656e74144572726f720404540001ac30496e76616c696456656e75650000045456656e756520646f6573206e6f742065786973742e30556e617574686f72697a6564000104a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e58496e737472756374696f6e4e6f7441666669726d656400020488496e737472756374696f6e20686173206e6f74206265656e2061666669726d65642e48556e617574686f72697a65645369676e6572000304985369676e6572206973206e6f7420617574686f72697a6564206279207468652076656e75652e5452656365697074416c7265616479436c61696d6564000404545265636569707420616c726561647920757365642e44556e617574686f72697a656456656e7565000504a456656e756520646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e5c496e737472756374696f6e4461746573496e76616c696400060474496e737472756374696f6e2068617320696e76616c696420646174657370496e737472756374696f6e536574746c65426c6f636b506173736564000704a8496e737472756374696f6e27732074617267657420736574746c6520626c6f636b20726561636865642e40496e76616c69645369676e6174757265000804784f6666636861696e207369676e617475726520697320696e76616c69642e4853616d6553656e64657252656365697665720009048453656e64657220616e6420726563656976657220617265207468652073616d652e44536574746c654f6e50617374426c6f636b000a0461015468652070726f766964656420736574746c656d656e7420626c6f636b206e756d62657220697320696e20746865207061737420616e642063616e6e6f74206265207573656420627920746865207363686564756c65722e6c556e657870656374656441666669726d6174696f6e537461747573000b0445015468652063757272656e7420696e737472756374696f6e2061666669726d6174696f6e2073746174757320646f6573206e6f7420737570706f7274207468652072657175657374656420616374696f6e2e404661696c6564546f5363686564756c65000c048c5363686564756c696e67206f6620616e20696e737472756374696f6e206661696c732e48556e6b6e6f776e496e737472756374696f6e000d0474496e737472756374696f6e2073746174757320697320756e6b6e6f776e4c5369676e6572416c7265616479457869737473000e04845369676e657220697320616c726561647920616464656420746f2076656e75652e485369676e6572446f65734e6f744578697374000f04745369676e6572206973206e6f7420616464656420746f2076656e75652e285a65726f416d6f756e7400100494496e737472756374696f6e206c656720616d6f756e742063616e2774206265207a65726f2e80496e737472756374696f6e536574746c65426c6f636b4e6f7452656163686564001104d8496e737472756374696f6e20736574746c656d656e7420626c6f636b20686173206e6f7420796574206265656e20726561636865642e4443616c6c657249734e6f74415061727479001204b85468652063616c6c6572206973206e6f742061207061727479206f66207468697320696e737472756374696f6e2e5c4d61784e756d6265724f664e46547345786365656465640013041501546865206e756d626572206f66206e667473206265696e67207472616e7366657272656420696e2074686520696e737472756374696f6e207761732065786365656465642e944e756d6265724f665472616e736665727265644e465473556e646572657374696d61746564001404f854686520676976656e206e756d626572206f66206e667473206265696e67207472616e736665727265642077617320756e646572657374696d617465642e6052656365697074466f72496e76616c69644c656754797065001504ec4f66662d636861696e2072656365697074732063616e206f6e6c79206265207573656420666f72206f66662d636861696e206c656720747970652e4c5765696768744c696d697445786365656465640016040501546865206d6178696d756d20776569676874206c696d697420666f7220657865637574696e67207468652066756e6374696f6e207761732065786365656465642e844d61784e756d6265724f6646756e6769626c654173736574734578636565646564001704cc546865206d6178696d756d206e756d626572206f662066756e6769626c6520617373657473207761732065786365656465642e844d61784e756d6265724f664f6666436861696e4173736574734578636565646564001804d0546865206d6178696d756d206e756d626572206f66206f66662d636861696e20617373657473207761732065786365656465642e9c4e756d6265724f6646756e6769626c655472616e7366657273556e646572657374696d61746564001904e854686520676976656e206e756d626572206f662066756e6769626c65207472616e73666572732077617320756e646572657374696d617465642e5c556e65787065637465644f4646436861696e4173736574001a048c5469636b657220636f756c64206e6f7420626520666f756e64206f6e20636861696e2e644f6666436861696e417373657443616e7442654c6f636b6564001b04884f66662d436861696e206173736574732063616e6e6f74206265206c6f636b65642e9c4e756d6265724f664f6666436861696e5472616e7366657273556e646572657374696d61746564001c04ec54686520676976656e206e756d626572206f66206f66662d636861696e207472616e73666572732077617320756e646572657374696d617465642e2c4c65674e6f74466f756e64001d04884e6f206c656720776974682074686520676976656e2069642077617320666f756e6470496e70757457656967687449734c6573735468616e4d696e696d756d001e04cc54686520696e70757420776569676874206973206c657373207468616e20746865206d696e696d756d2072657175697265642e6c4d61784e756d6265724f6652656365697074734578636565646564001f04b0546865206d6178696d756d206e756d626572206f66207265636569707473207761732065786365656465642e884e6f74416c6c41666669726d6174696f6e73486176654265656e5265636569766564002004e054686572652061726520706172746965732077686f2068617665206e6f742061666669726d65642074686520696e737472756374696f6e2e90496e76616c6964496e737472756374696f6e537461747573466f72457865637574696f6e00210489014f6e6c79205b60496e737472756374696f6e5374617475733a3a50656e64696e67605d206f72205b60496e737472756374696f6e5374617475733a3a4661696c6564605d20696e737472756374696f6e732063616e2062652065786563757465642e8c4661696c6564546f52656c656173654c6f636b4f725472616e73666572417373657473002204150154686520696e737472756374696f6e206661696c656420746f2072656c65617365206173736574206c6f636b73206f72207472616e7366657220746865206173736574732e4c4475706c696361746552656365697074556964002304d04e6f206475706c6963617465207569642061726520616c6c6f77656420666f7220646966666572656e742072656365697074732e7452656365697074496e737472756374696f6e49644d6973736d61746368002404190154686520696e737472756374696f6e20696420696e20616c6c207265636569707473206d757374206d61746368207468652065787472696e73696320706172616d657465722e644d756c7469706c655265636569707473466f724f6e654c6567002504cc4d756c7469706c6520726563656970747320666f72207468652073616d65206c656720617265206e6f7420616c6c6f7765642e4c556e65787065637465644c656753746174757300260470416e20696e76616c696420686173206265656e20726561636865642e704e756d6265724f6656656e75655369676e6572734578636565646564002704c4546865206d6178696d756d206e756d626572206f662076656e7565207369676e657273207761732065786365656465642e5043616c6c657249734e6f74414d65646961746f72002804c05468652063616c6c6572206973206e6f742061206d65646961746f7220696e2074686520696e737472756374696f6e2e44496e76616c696445787069727944617465002904c4546865206d65646961746f722773206578706972792064617465206d75737420626520696e20746865206675747572652e684d65646961746f7241666669726d6174696f6e45787069726564002a04e854686520657870697279206461746520666f7220746865206d65646961746f7227732061666669726d6174696f6e20686173207061737365642e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652eed0a0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e64656442547265655365740804540111040453000004001108012c42547265655365743c543e0000f10a00000408f50a290400f50a0c4c706f6c796d6573685f7072696d697469766573287374617469737469637328537461743173744b65790000080114617373657409040128417373657453636f7065000124737461745f747970651104012053746174547970650000f90a0c4c706f6c796d6573685f7072696d6974697665734c7472616e736665725f636f6d706c69616e63655c41737365745472616e73666572436f6d706c69616e6365040453000008011870617573656429010110626f6f6c000130726571756972656d656e7473fd0a0194426f756e64656442547265655365743c5472616e73666572436f6e646974696f6e2c20533e0000fd0a0c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454013d040453000004001908012c42547265655365743c543e0000010b0000040841048000050b084470616c6c65745f737461746973746963731c56657273696f6e0000040008010875380000090b084470616c6c65745f73746174697374696373144572726f7204045400011c3c496e76616c69645472616e73666572000004545472616e73666572206e6f7420616c6c6f7765642e3c53746174547970654d697373696e67000104605374617454797065206973206e6f7420656e61626c65642e8453746174547970654e656564656442795472616e73666572436f6e646974696f6e000204a05374617454797065206973206e6565646564206279205472616e73666572436f6e646974696f6e2e6443616e6e6f7452656d6f76655374617454797065496e557365000304a84120537461747479706520697320696e2075736520616e642063616e27742062652072656d6f7665642e5053746174547970654c696d697452656163686564000404f4546865206c696d6974206f662053746174547970657320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e745472616e73666572436f6e646974696f6e4c696d6974526561636865640005041901546865206c696d6974206f66205472616e73666572436f6e646974696f6e7320616c6c6f77656420666f7220616e20617373657420686173206265656e20726561636865642e4c5765696768744c696d697445786365656465640006040501546865206d6178696d756d20776569676874206c696d697420666f7220657865637574696e67207468652066756e6374696f6e207761732065786365656465642e046453746174697374696373206d6f64756c65206572726f72732e0d0b00000408a84d0400110b082870616c6c65745f73746f144572726f7204045400013030556e617574686f72697a6564000004a853656e64657220646f6573206e6f742068617665207265717569726564207065726d697373696f6e732e204f766572666c6f770001048c416e2061726974686d65746963206f7065726174696f6e206f766572666c6f7765642e6c496e73756666696369656e74546f6b656e7352656d61696e696e67000204804e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c652e4846756e647261697365724e6f74466f756e640003045446756e64726169736572206e6f7420666f756e642e4446756e647261697365724e6f744c6976650004049c46756e64726169736572206973206569746865722066726f7a656e206f722073746f707065642e4046756e64726169736572436c6f736564000504ac46756e6472616973657220686173206265656e20636c6f7365642f73746f7070656420616c72656164792e4446756e6472616973657245787069726564000604d0496e746572616374696e67207769746820612066756e6472616973657220706173742074686520656e6420604d6f6d656e74602e30496e76616c696456656e756500070468416e20696e76616c69642076656e75652070726f76696465642e44496e76616c6964507269636554696572730008042501416e20696e646976696475616c20707269636520746965722077617320696e76616c6964206f72206120736574206f662070726963652074696572732077617320696e76616c69642e54496e76616c69644f66666572696e6757696e646f770009045d0157696e646f77202873746172742074696d652c20656e642074696d65292068617320696e76616c696420706172616d65746572732c20652e672073746172742074696d6520697320616674657220656e642074696d652e404d617850726963654578636565646564000a04bc5072696365206f662074686520696e766573746d656e7420657863656564656420746865206d61782070726963652e58496e766573746d656e74416d6f756e74546f6f4c6f77000b04e8496e766573746d656e7420616d6f756e74206973206c6f776572207468616e206d696e696d756d20696e766573746d656e7420616d6f756e742e04844572726f727320666f722074686520536574746c656d656e74206d6f64756c652e150b083c70616c6c65745f7472656173757279144572726f720404540001084c496e73756666696369656e7442616c616e63650000047850726f706f73657227732062616c616e636520697320746f6f206c6f772e3c496e76616c69644964656e7469747900010488496e76616c6964206964656e7469747920666f722064697362757273656d656e742e04784572726f7220666f7220746865207472656173757279206d6f64756c652e190b0c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400011430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e40496e76616c69645369676e6174757265000108744f6666636861696e207369676e617475726520697320696e76616c696438504f4c594d455348206572726f72405461726765744364644d697373696e670002088054617267657420646f6573206e6f74206861766520612076616c69642043444438504f4c594d455348206572726f7230496e76616c69644e6f6e63650003106850726f7669646564206e6f6e63652077617320696e76616c696411014966207468652070726f7669646564206e6f6e6365203c2063757272656e74206e6f6e63652c207468652063616c6c2077617320616c72656164792065786563757465645d014966207468652070726f7669646564206e6f6e6365203e2063757272656e74206e6f6e63652c207468652063616c6c287329206265666f7265207468652063757272656e74206661696c656420746f206578656375746538504f4c594d455348206572726f725c556e61626c65546f4465726976654163636f756e744964000404984465636f64696e672064657269766174697665206163636f756e74204964206661696c65642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a0909091d0b082c70616c6c65745f62617365144572726f720404540001081c546f6f4c6f6e6700000880457863656564656420612067656e65726963206c656e677468206c696d69742e1d01546865206c696d697420636f756c6420626520666f7220616e7920736f7274206f66206c69737473206f66207468696e67732c20696e636c7564696e67206120737472696e672e3c436f756e7465724f766572666c6f77000118b85468652073657175656e636520636f756e74657220666f7220736f6d657468696e67206f766572666c6f7765642e001d015768656e20746869732068617070656e7320646570656e6473206f6e20652e672e2c20746865206361706163697479206f6620746865206964656e74696669657220747970652e3901466f72206578616d706c652c207765206d69676874206861766520607075622073747275637420506970496428753332293b602c207769746820607533323a3a4d4158602063617061636974792e5901496e2070726163746963652c207468657365206572726f72732077696c6c206e657665722068617070656e20627574206e6f20636f646520706174682073686f756c6420726573756c7420696e20612070616e69632cfc736f20746865736520636f726e6572206361736573206e65656420746f20626520636f7665726564207769746820616e206572726f722076617269616e742e00210b00000408a8250100250b085870616c6c65745f65787465726e616c5f6167656e7473144572726f72040454000118204e6f537563684147000004ec416e20414720776974682074686520676976656e2060414749646020646964206e6f7420657869737420666f722074686520605469636b6572602e44556e617574686f72697a65644167656e74000104e8546865206167656e74206973206e6f7420617574686f72697a656420746f2063616c6c207468652063757272656e742065787472696e7369632e38416c7265616479416e4167656e74000204e85468652070726f766964656420606167656e746020697320616c726561647920616e206167656e7420666f722074686520605469636b6572602e284e6f74416e4167656e74000304d85468652070726f766964656420606167656e7460206973206e6f7420616e206167656e7420666f722074686520605469636b6572602e5452656d6f76696e674c61737446756c6c4167656e74000408e054686973206167656e7420697320746865206c6173742066756c6c206f6e652c20616e642069742773206265696e672072656d6f7665642c686d616b696e6720746865206173736574206f727068616e65642e845365636f6e646172794b65794e6f74417574686f72697a6564466f7241737365740005041d015468652063616c6c65722773207365636f6e64617279206b657920646f6573206e6f74206861766520746865207265717569726564206173736574207065726d697373696f6e2e00290b083870616c6c65745f72656c617965721c53756273696479040c416363010000080128706179696e675f6b657900010c41636300012472656d61696e696e6718011c42616c616e636500002d0b083870616c6c65745f72656c61796572144572726f7204045400011c44557365724b65794364644d697373696e67000004cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e4c506179696e674b65794364644d697373696e67000104cc5468652060757365725f6b657960206973206e6f7420617474616368656420746f2061204344442764206964656e746974792e2c4e6f506179696e674b6579000204ac5468652060757365725f6b65796020646f65736e2774206861766520612060706179696e675f6b6579602e304e6f74506179696e674b6579000304b05468652060757365725f6b65796020686173206120646966666572656e742060706179696e675f6b6579602e644e6f74417574686f72697a6564466f72506179696e674b6579000404b8546865207369676e6572206973206e6f7420617574686f72697a656420666f722060706179696e675f6b6579602e5c4e6f74417574686f72697a6564466f72557365724b6579000504b0546865207369676e6572206973206e6f7420617574686f72697a656420666f722060757365725f6b6579602e204f766572666c6f77000604b85468652072656d61696e696e6720504f4c595820666f722060757365725f6b657960206f766572666c6f7765642e00310b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000350b0c4070616c6c65745f636f6e747261637473107761736d405072656661625761736d4d6f64756c65040454000014016c696e737472756374696f6e5f776569676874735f76657273696f6ebd04010c75333200011c696e697469616cbd04010c75333200011c6d6178696d756dbd04010c753332000110636f6465390b014452656c61786564436f64655665633c543e00012c64657465726d696e69736d7908012c44657465726d696e69736d0000390b0c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e64656456656308045401080453000004003001185665633c543e00003d0b0c4070616c6c65745f636f6e747261637473107761736d244f776e6572496e666f04045400000c01146f776e65720001384163636f756e7449644f663c543e00011c6465706f736974dd01013042616c616e63654f663c543e000120726566636f756e7424010c7536340000410b0c4070616c6c65745f636f6e7472616374731c73746f7261676530436f6e7472616374496e666f040454000020011c747269655f6964a10a011854726965496400013c6465706f7369745f6163636f756e74450b01444465706f7369744163636f756e743c543e000124636f64655f686173682c012c436f6465486173683c543e00013473746f726167655f627974657310010c75333200013473746f726167655f6974656d7310010c75333200015073746f726167655f627974655f6465706f73697418013042616c616e63654f663c543e00015073746f726167655f6974656d5f6465706f73697418013042616c616e63654f663c543e00015073746f726167655f626173655f6465706f73697418013042616c616e63654f663c543e0000450b0c4070616c6c65745f636f6e7472616374731c73746f72616765384465706f7369744163636f756e74040454000004000001384163636f756e7449644f663c543e0000490b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d0b045300000400510b01185665633c543e00004d0b0c4070616c6c65745f636f6e7472616374731c73746f726167653c44656c65746564436f6e7472616374000004011c747269655f6964a10a01185472696549640000510b0000024d0b00550b0c4070616c6c65745f636f6e747261637473207363686564756c65205363686564756c6504045400000c01186c696d697473590b01184c696d69747300014c696e737472756374696f6e5f776569676874735d0b0154496e737472756374696f6e576569676874733c543e00013c686f73745f666e5f77656967687473610b0140486f7374466e576569676874733c543e0000590b0c4070616c6c65745f636f6e747261637473207363686564756c65184c696d69747300002401306576656e745f746f7069637310010c75333200011c676c6f62616c7310010c7533320001186c6f63616c7310010c753332000128706172616d657465727310010c7533320001306d656d6f72795f706167657310010c7533320001287461626c655f73697a6510010c75333200013462725f7461626c655f73697a6510010c75333200012c7375626a6563745f6c656e10010c75333200012c7061796c6f61645f6c656e10010c75333200005d0b0c4070616c6c65745f636f6e747261637473207363686564756c6548496e737472756374696f6e576569676874730404540000d8011c76657273696f6e10010c75333200012066616c6c6261636b10010c753332000120693634636f6e737410010c75333200011c6936346c6f616410010c75333200012069363473746f726510010c75333200011873656c65637410010c7533320001107223696610010c753332000108627210010c75333200011462725f696610010c75333200012062725f7461626c6510010c75333200014862725f7461626c655f7065725f656e74727910010c75333200011063616c6c10010c75333200013463616c6c5f696e64697265637410010c75333200015c63616c6c5f696e6469726563745f7065725f706172616d10010c75333200013863616c6c5f7065725f6c6f63616c10010c7533320001246c6f63616c5f67657410010c7533320001246c6f63616c5f73657410010c7533320001246c6f63616c5f74656510010c753332000128676c6f62616c5f67657410010c753332000128676c6f62616c5f73657410010c7533320001386d656d6f72795f63757272656e7410010c75333200012c6d656d6f72795f67726f7710010c753332000118693634636c7a10010c75333200011869363463747a10010c753332000124693634706f70636e7410010c75333200011869363465717a10010c753332000134693634657874656e647369333210010c753332000134693634657874656e647569333210010c7533320001286933327772617069363410010c753332000114693634657110010c7533320001146936346e6510010c7533320001186936346c747310010c7533320001186936346c747510010c75333200011869363467747310010c75333200011869363467747510010c7533320001186936346c657310010c7533320001186936346c657510010c75333200011869363467657310010c75333200011869363467657510010c75333200011869363461646410010c75333200011869363473756210010c7533320001186936346d756c10010c75333200011c6936346469767310010c75333200011c6936346469767510010c75333200011c69363472656d7310010c75333200011c69363472656d7510010c753332000118693634616e6410010c7533320001146936346f7210010c753332000118693634786f7210010c75333200011869363473686c10010c75333200011c6936347368727310010c75333200011c6936347368727510010c75333200011c693634726f746c10010c75333200011c693634726f747210010c7533320000610b0c4070616c6c65745f636f6e747261637473207363686564756c6534486f7374466e576569676874730404540000ec011863616c6c657220011857656967687400012c69735f636f6e7472616374200118576569676874000124636f64655f686173682001185765696768740001346f776e5f636f64655f6861736820011857656967687400014063616c6c65725f69735f6f726967696e20011857656967687400011c616464726573732001185765696768740001206761735f6c65667420011857656967687400011c62616c616e636520011857656967687400014476616c75655f7472616e7366657272656420011857656967687400013c6d696e696d756d5f62616c616e6365200118576569676874000130626c6f636b5f6e756d62657220011857656967687400010c6e6f772001185765696768740001347765696768745f746f5f66656520011857656967687400010c676173200118576569676874000114696e707574200118576569676874000138696e7075745f7065725f62797465200118576569676874000120722372657475726e20011857656967687400013c72657475726e5f7065725f627974652001185765696768740001247465726d696e61746520011857656967687400011872616e646f6d2001185765696768740001346465706f7369745f6576656e7420011857656967687400015c6465706f7369745f6576656e745f7065725f746f7069632001185765696768740001586465706f7369745f6576656e745f7065725f6279746520011857656967687400013464656275675f6d65737361676520011857656967687400015864656275675f6d6573736167655f7065725f6279746520011857656967687400012c7365745f73746f726167652001185765696768740001607365745f73746f726167655f7065725f6e65775f627974652001185765696768740001607365745f73746f726167655f7065725f6f6c645f627974652001185765696768740001347365745f636f64655f68617368200118576569676874000134636c6561725f73746f72616765200118576569676874000158636c6561725f73746f726167655f7065725f62797465200118576569676874000140636f6e7461696e735f73746f72616765200118576569676874000164636f6e7461696e735f73746f726167655f7065725f6279746520011857656967687400012c6765745f73746f726167652001185765696768740001506765745f73746f726167655f7065725f6279746520011857656967687400013074616b655f73746f7261676520011857656967687400015474616b655f73746f726167655f7065725f627974652001185765696768740001207472616e7366657220011857656967687400011063616c6c20011857656967687400013464656c65676174655f63616c6c20011857656967687400015c63616c6c5f7472616e736665725f73757263686172676520011857656967687400015063616c6c5f7065725f636c6f6e65645f6279746520011857656967687400012c696e7374616e7469617465200118576569676874000178696e7374616e74696174655f7472616e736665725f737572636861726765200118576569676874000168696e7374616e74696174655f7065725f696e7075745f62797465200118576569676874000164696e7374616e74696174655f7065725f73616c745f62797465200118576569676874000134686173685f736861325f323536200118576569676874000158686173685f736861325f3235365f7065725f6279746520011857656967687400013c686173685f6b656363616b5f323536200118576569676874000160686173685f6b656363616b5f3235365f7065725f6279746520011857656967687400013c686173685f626c616b65325f323536200118576569676874000160686173685f626c616b65325f3235365f7065725f6279746520011857656967687400013c686173685f626c616b65325f313238200118576569676874000160686173685f626c616b65325f3132385f7065725f6279746520011857656967687400013465636473615f7265636f76657220011857656967687400015065636473615f746f5f6574685f616464726573732001185765696768740001407265656e7472616e63655f636f756e742001185765696768740001606163636f756e745f7265656e7472616e63655f636f756e7420011857656967687400014c696e7374616e74696174696f6e5f6e6f6e63652001185765696768740000650b0c4070616c6c65745f636f6e7472616374731870616c6c6574144572726f7204045400017058496e76616c69645363686564756c6556657273696f6e000004010141206e6577207363686564756c65206d7573742068617665206120677265617465722076657273696f6e207468616e207468652063757272656e74206f6e652e40496e76616c696443616c6c466c6167730001043501496e76616c696420636f6d62696e6174696f6e206f6620666c61677320737570706c69656420746f20607365616c5f63616c6c60206f7220607365616c5f64656c65676174655f63616c6c602e204f75744f66476173000204b854686520657865637574656420636f6e7472616374206578686175737465642069747320676173206c696d69742e504f7574707574427566666572546f6f536d616c6c0003040101546865206f75747075742062756666657220737570706c69656420746f206120636f6e7472616374204150492063616c6c2077617320746f6f20736d616c6c2e385472616e736665724661696c65640004083501506572666f726d696e672074686520726571756573746564207472616e73666572206661696c65642e2050726f6261626c7920626563617573652074686572652069736e277420656e6f75676894667265652062616c616e636520696e207468652073656e6465722773206163636f756e742e4c4d617843616c6c4465707468526561636865640005082101506572666f726d696e6720612063616c6c207761732064656e6965642062656361757365207468652063616c6c696e67206465707468207265616368656420746865206c696d6974946f6620776861742069732073706563696669656420696e20746865207363686564756c652e40436f6e74726163744e6f74466f756e64000604bc4e6f20636f6e74726163742077617320666f756e64206174207468652073706563696669656420616464726573732e30436f6465546f6f4c617267650007083d0154686520636f646520737570706c69656420746f2060696e7374616e74696174655f776974685f636f646560206578636565647320746865206c696d69742073706563696669656420696e207468654463757272656e74207363686564756c652e30436f64654e6f74466f756e64000804c44e6f20636f646520636f756c6420626520666f756e642061742074686520737570706c69656420636f646520686173682e2c4f75744f66426f756e647300090425014120627566666572206f757473696465206f662073616e64626f78206d656d6f7279207761732070617373656420746f206120636f6e7472616374204150492066756e6374696f6e2e384465636f64696e674661696c6564000a042901496e7075742070617373656420746f206120636f6e7472616374204150492066756e6374696f6e206661696c656420746f206465636f646520617320657870656374656420747970652e3c436f6e747261637454726170706564000b0488436f6e7472616374207472617070656420647572696e6720657865637574696f6e2e3456616c7565546f6f4c61726765000c04cc5468652073697a6520646566696e656420696e2060543a3a4d617856616c756553697a6560207761732065786365656465642e605465726d696e617465645768696c655265656e7472616e74000d0819015465726d696e6174696f6e206f66206120636f6e7472616374206973206e6f7420616c6c6f776564207768696c652074686520636f6e747261637420697320616c7265616479e06f6e207468652063616c6c20737461636b2e2043616e2062652074726967676572656420627920607365616c5f7465726d696e617465602e38496e707574466f72776172646564000e044101607365616c5f63616c6c6020666f72776172646564207468697320636f6e74726163747320696e7075742e204974207468657265666f7265206973206e6f206c6f6e67657220617661696c61626c652e5052616e646f6d5375626a656374546f6f4c6f6e67000f04d8546865207375626a6563742070617373656420746f20607365616c5f72616e646f6d60206578636565647320746865206c696d69742e34546f6f4d616e79546f706963730010041d0154686520616d6f756e74206f6620746f706963732070617373656420746f20607365616c5f6465706f7369745f6576656e747360206578636565647320746865206c696d69742e404e6f436861696e457874656e73696f6e00110c450154686520636861696e20646f6573206e6f742070726f76696465206120636861696e20657874656e73696f6e2e2043616c6c696e672074686520636861696e20657874656e73696f6e20726573756c74734d01696e2074686973206572726f722e204e6f74652074686174207468697320757375616c6c79202073686f756c646e27742068617070656e206173206465706c6f79696e67207375636820636f6e7472616374733069732072656a65637465642e4444656c6574696f6e517565756546756c6c001214010152656d6f76616c206f66206120636f6e7472616374206661696c65642062656361757365207468652064656c6574696f6e2071756575652069732066756c6c2e00b8546869732063616e2068617070656e207768656e2063616c6c696e6720607365616c5f7465726d696e617465602e4d015468652071756575652069732066696c6c65642062792064656c6574696e6720636f6e74726163747320616e6420656d7074696564206279206120666978656420616d6f756e74206561636820626c6f636b2e2101547279696e6720616761696e20647572696e6720616e6f7468657220626c6f636b20697320746865206f6e6c792077617920746f207265736f6c766520746869732069737375652e444475706c6963617465436f6e7472616374001304c84120636f6e74726163742077697468207468652073616d65204163636f756e74496420616c7265616479206578697374732e5c5465726d696e61746564496e436f6e7374727563746f7200140cb84120636f6e74726163742073656c66206465737472756374656420696e2069747320636f6e7374727563746f722e00d0546869732063616e2062652074726967676572656420627920612063616c6c20746f20607365616c5f7465726d696e617465602e405265656e7472616e636544656e6965640015040d01412063616c6c20747269656420746f20696e766f6b65206120636f6e7472616374207468617420697320666c6167676564206173206e6f6e2d7265656e7472616e742e7053746f726167654465706f7369744e6f74456e6f75676846756e647300160421014f726967696e20646f65736e2774206861766520656e6f7567682062616c616e636520746f20706179207468652072657175697265642073746f72616765206465706f736974732e7053746f726167654465706f7369744c696d69744578686175737465640017040d014d6f72652073746f72616765207761732063726561746564207468616e20616c6c6f776564206279207468652073746f72616765206465706f736974206c696d69742e24436f6465496e5573650018044901436f64652072656d6f76616c207761732064656e69656420626563617573652074686520636f6465206973207374696c6c20696e20757365206279206174206c65617374206f6e6520636f6e74726163742e40436f6e74726163745265766572746564001910250154686520636f6e74726163742072616e20746f20636f6d706c6574696f6e20627574206465636964656420746f20726576657274206974732073746f72616765206368616e6765732e4901506c65617365206e6f746520746861742074686973206572726f72206973206f6e6c792072657475726e65642066726f6d2065787472696e736963732e205768656e2063616c6c6564206469726563746c795d016f72207669612052504320616e20604f6b602077696c6c2062652072657475726e65642e20496e20746869732063617365207468652063616c6c6572206e6565647320746f20696e73706563742074686520666c616773c4746f2064657465726d696e652077686574686572206120726576657273696f6e206861732074616b656e20706c6163652e30436f646552656a6563746564001a20450154686520636f6e7472616374277320636f64652077617320666f756e6420746f20626520696e76616c696420647572696e672076616c69646174696f6e206f7220696e737472756d656e746174696f6e2e004d01546865206d6f7374206c696b656c79206361757365206f662074686973206973207468617420616e20415049207761732075736564207768696368206973206e6f7420737570706f72746564206279207468654d016e6f64652e205468697320686170656e7320696620616e206f6c646572206e6f6465206973207573656420776974682061206e65772076657273696f6e206f6620696e6b212e20547279207570646174696e67a8796f7572206e6f646520746f20746865206e657765737420617661696c61626c652076657273696f6e2e00510141206d6f72652064657461696c6564206572726f722063616e20626520666f756e64206f6e20746865206e6f646520636f6e736f6c65206966206465627567206d657373616765732061726520656e61626c6564a8627920737570706c79696e6720602d6c72756e74696d653a3a636f6e7472616374733d6465627567602e3c496e64657465726d696e6973746963001b042101416e20696e64657465726d697374696320636f646520776173207573656420696e206120636f6e746578742077686572652074686973206973206e6f74207065726d69747465642e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909690b0848706f6c796d6573685f636f6e7472616374731c56657273696f6e00000400080108753800006d0b0848706f6c796d6573685f636f6e747261637473144572726f7204045400013034496e76616c696446756e634964000004a4496e76616c6964206066756e635f6964602070726f76696465642066726f6d20636f6e74726163742e48496e76616c696452756e74696d6543616c6c0001049c4661696c656420746f206465636f646520612076616c6964206052756e74696d6543616c6c602e445265616453746f726167654661696c6564000204fc605265616453746f7261676560206661696c656420746f2077726974652076616c756520696e746f2074686520636f6e74726163742773206275666665722e54446174614c65667441667465724465636f64696e67000304d444617461206c65667420696e20696e707574207768656e206465636f64696e6720617267756d656e7473206f6620612063616c6c2e34496e4c656e546f6f4c617267650004043901496e70757420646174612074686174206120636f6e747261637420706173736564207768656e207573696e672074686520436861696e457874656e73696f6e2077617320746f6f206c617267652e384f75744c656e546f6f4c61726765000504ec4f757470757420646174612072657475726e65642066726f6d2074686520436861696e457874656e73696f6e2077617320746f6f206c617267652e68496e7374616e746961746f72576974684e6f4964656e74697479000608b04120636f6e74726163742077617320617474656d7074656420746f20626520696e7374616e7469617465642c0d01627574206e6f206964656e746974792077617320676976656e20746f206173736f636961746520746865206e657720636f6e74726163742773206b657920776974682e4452756e74696d6543616c6c44656e696564000704cc45787472696e736963206973206e6f7420616c6c6f77656420746f2062652063616c6c656420627920636f6e7472616374732e5043616c6c65724e6f74415072696d6172794b6579000804805468652063616c6c6572206973206e6f742061207072696d617279206b65792e544d697373696e674b65795065726d697373696f6e73000904985365636f6e64617279206b6579207065726d697373696f6e7320617265206d697373696e672e4c496e76616c6964436861696e56657273696f6e000a049c4f6e6c792066757475726520636861696e2076657273696f6e732061726520616c6c6f7765642e4c4e6f5570677261646573537570706f72746564000b04d4546865726520617265206e6f2061706920757067726164657320737570706f7274656420666f722074686520636f6e74726163742e00710b083c70616c6c65745f707265696d616765345265717565737453746174757308244163636f756e74496401001c42616c616e6365011801082c556e72657175657374656408011c6465706f73697441090150284163636f756e7449642c2042616c616e63652900010c6c656e10010c753332000000245265717565737465640c011c6465706f736974750b01704f7074696f6e3c284163636f756e7449642c2042616c616e6365293e000114636f756e7410010c75333200010c6c656e4506012c4f7074696f6e3c7533323e00010000750b04184f7074696f6e0404540141090108104e6f6e6500000010536f6d65040041090000010000790b000004082c10007d0b0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003001185665633c543e0000810b0c3c70616c6c65745f707265696d6167651870616c6c6574144572726f7204045400011818546f6f426967000004a0507265696d61676520697320746f6f206c6172676520746f2073746f7265206f6e2d636861696e2e30416c72656164794e6f746564000104a4507265696d6167652068617320616c7265616479206265656e206e6f746564206f6e2d636861696e2e344e6f74417574686f72697a6564000204c85468652075736572206973206e6f7420617574686f72697a656420746f20706572666f726d207468697320616374696f6e2e204e6f744e6f746564000304fc54686520707265696d6167652063616e6e6f742062652072656d6f7665642073696e636520697420686173206e6f7420796574206265656e206e6f7465642e2452657175657374656400040409014120707265696d616765206d6179206e6f742062652072656d6f766564207768656e20746865726520617265206f75747374616e64696e672072657175657374732e304e6f745265717565737465640005042d0154686520707265696d61676520726571756573742063616e6e6f742062652072656d6f7665642073696e6365206e6f206f75747374616e64696e672072657175657374732065786973742e04b5010a090909437573746f6d205b6469737061746368206572726f72735d2868747470733a2f2f646f63732e7375627374726174652e696f2f6d61696e2d646f63732f6275696c642f6576656e74732d6572726f72732f290a0909096f6620746869732070616c6c65742e0a090909850b0c4c706f6c796d6573685f7072696d6974697665730c6e6674344e4654436f6c6c656374696f6e00000801086964a504013c4e4654436f6c6c656374696f6e49640001187469636b6572a801185469636b65720000890b04204254726565536574040454017d02000400a1080000008d0b00000408910b7d0200910b00000408a504c10300950b082870616c6c65745f6e66741c56657273696f6e0000040008010875380000990b082870616c6c65745f6e6674144572726f7204045400015c3c42616c616e63654f766572666c6f77000004a8416e206f766572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e4042616c616e6365556e646572666c6f77000104ac416e20756e646572666c6f77207768696c652063616c63756c6174696e67207468652062616c616e63652e68436f6c6c656374696f6e416c7265647952656769737465726564000204d8546865207469636b657220697320616c7265616479206173736f63696174656420746f20616e204e465420636f6c6c656374696f6e2e48436f6c6c656374696f6e4e6f74466f756e6400030488546865204e465420636f6c6c656374696f6e20646f6573206e6f742065786973742e504475706c69636174654d657461646174614b6579000404d841206475706c6963617465206d65746164617461206b657920686173206265656e2070617373656420617320706172616d657465722e3c4475706c6963617465644e46544964000504784475706c69636174652069647320617265206e6f7420616c6c6f7765642e40496e76616c69644173736574547970650006049c546865206173736574206d757374206265206f662074797065206e6f6e2d66756e6769626c652e60496e76616c69644d657461646174614174747269627574650007048d0145697468657220746865206e756d626572206f66206b657973206f7220746865206b6579206964656e74696669657220646f6573206e6f74206d6174636820746865206b65797320646566696e656420666f722074686520636f6c6c656374696f6e2e90496e76616c69644e46545472616e73666572436f6c6c656374696f6e4e6f74466f756e64000804d44661696c656420746f207472616e7366657220616e204e4654202d204e465420636f6c6c656374696f6e206e6f7420666f756e642e7c496e76616c69644e46545472616e7366657253616d65506f7274666f6c696f00090409014661696c656420746f207472616e7366657220616e204e4654202d20617474656d707420746f206d6f766520746f207468652073616d6520706f7274666f6c696f2e74496e76616c69644e46545472616e736665724e46544e6f744f776e6564000a04dc4661696c656420746f207472616e7366657220616e204e4654202d204e4654206e6f7420666f756e6420696e20706f7274666f6c696f2e7c496e76616c69644e46545472616e73666572436f756e744f766572666c6f77000b04e84661696c656420746f207472616e7366657220616e204e4654202d206964656e7469747920636f756e7420776f756c64206f766572666c6f772e8c496e76616c69644e46545472616e73666572436f6d706c69616e63654661696c757265000c04b84661696c656420746f207472616e7366657220616e204e4654202d20636f6d706c69616e6365206661696c65642e74496e76616c69644e46545472616e7366657246726f7a656e4173736574000d04b04661696c656420746f207472616e7366657220616e204e4654202d2061737365742069732066726f7a656e2e8c496e76616c69644e46545472616e73666572496e73756666696369656e74436f756e74000e043d014661696c656420746f207472616e7366657220616e204e4654202d20746865206e756d626572206f66206e66747320696e20746865206964656e7469747920697320696e73756666696369656e742e5c4d61784e756d6265724f664b6579734578636565646564000f04c4546865206d6178696d756d206e756d626572206f66206d65746164617461206b657973207761732065786365656465642e744d61784e756d6265724f664e4654735065724c656745786365656465640010041501546865206d6178696d756d206e756d626572206f66206e667473206265696e67207472616e7366657272656420696e206f6e65206c6567207761732065786365656465642e2c4e46544e6f74466f756e640011045c546865204e465420646f6573206e6f742065786973742e5c556e726567697374657265644d657461646174614b6579001204e84174206c65617374206f6e65206f6620746865206d65746164617461206b65797320686173206e6f74206265656e20726567697374657265642e245a65726f436f756e74001304a44974206973206e6f7420706f737369626c6520746f207472616e7366657272207a65726f206e66742e38537570706c794f766572666c6f77001404c4416e206f766572666c6f77207768696c652063616c63756c6174696e6720746865207570646174656420737570706c792e3c537570706c79556e646572666c6f77001504c8416e20756e646572666c6f77207768696c652063616c63756c6174696e6720746865207570646174656420737570706c792e74496e76616c69644e46545472616e736665724e465449734c6f636b6564001604a84661696c656420746f207472616e7366657220616e204e4654202d206e6674206973206c6f636b65642e009d0b084470616c6c65745f746573745f7574696c73144572726f7204045400010000a10b102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c416464726573730179051043616c6c01fd05245369676e617475726501ed0714457874726101a50b00040030000000a50b00000420a90bad0bb10bb50bbd0bc10bc90bcd0b00a90b10306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000ad0b10306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e04045400000000b10b10306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000b50b10306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c69747904045400000400b90b010c4572610000b90b102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000bd0b10306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400bd040120543a3a496e6465780000c10b0c4c706f6c796d6573685f657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000400c50b011443573c543e0000c50b10306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b57656967687404045400000000c90b086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400dd01013042616c616e63654f663c543e0000cd0b084870616c6c65745f7065726d697373696f6e734453746f726543616c6c4d6574616461746104045400000000d10b0c60706f6c796d6573685f72756e74696d655f646576656c6f701c72756e74696d651c52756e74696d6500000000c81853797374656d011853797374656d401c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e2c426c6f636b57656967687401001c180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e40416c6c45787472696e736963734c656e000010040004410120546f74616c206c656e6774682028696e2062797465732920666f7220616c6c2065787472696e736963732070757420746f6765746865722c20666f72207468652063757272656e7420626c6f636b2e24426c6f636b4861736801010405102c8000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510300400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801002c80000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e18446967657374010034040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004404001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104022cb5040400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e004d01205468652076616c756520686173207468652074797065206028543a3a426c6f636b4e756d6265722c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000b90404000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e545570677261646564546f553332526566436f756e74010029010400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e74010029010400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e50686173650000ad04040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e01c50401501830426c6f636b57656967687473d50401020700c817a804000b00204aa9d10113ffffffffffffffff02daf89a00010b80914b872e011366666666666666a6010b0098f73e5d0113ffffffffffffffbf01000002daf89a00010b80199ef1a2011366666666666666e6010b00204aa9d10113ffffffffffffffff01070088526a7413000000000000004002daf89a0000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e677468e50430000078000000a0000000a00004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e204462576569676874ed044080f0fa020000000000c2eb0b000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6ef104a10430706f6c796d6573685f64657630706f6c796d6573685f6465760100000050955b000000000054df6acb689907609b0400000037e397fc7c91f5e40100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000bc9d89904f5b923f0100000068b66ba122c93fa70200000037c8bb1350a9a2a802000000f3ff14d5ab52705902000000ab3c0572291feb8b0100000018ef58a3b67ba77001000000329342994773047f01000000001a0b29f17d01f401000000f28e8080b6e2dfd003000000bb6ba9053c5c9d7803000000595ac34c5ea1f5fe010000009ea061a615cee2fe0100000053df5001418f3b460100000004000000010484204765742074686520636861696e27732063757272656e742076657273696f6e2e28535335385072656669786103082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e010505001042616265011042616265442845706f6368496e64657801002820000000000000000004542043757272656e742065706f636820696e6465782e2c417574686f726974696573010009050400046c2043757272656e742065706f636820617574686f7269746965732e2c47656e65736973536c6f740100190520000000000000000008f82054686520736c6f74206174207768696368207468652066697273742065706f63682061637475616c6c7920737461727465642e205468697320697320309020756e74696c2074686520666972737420626c6f636b206f662074686520636861696e2e2c43757272656e74536c6f740100190520000000000000000004542043757272656e7420736c6f74206e756d6265722e2852616e646f6d6e65737301000480000000000000000000000000000000000000000000000000000000000000000028b8205468652065706f63682072616e646f6d6e65737320666f7220746865202a63757272656e742a2065706f63682e002c20232053656375726974790005012054686973204d555354204e4f54206265207573656420666f722067616d626c696e672c2061732069742063616e20626520696e666c75656e6365642062792061f8206d616c6963696f75732076616c696461746f7220696e207468652073686f7274207465726d2e204974204d4159206265207573656420696e206d616e7915012063727970746f677261706869632070726f746f636f6c732c20686f77657665722c20736f206c6f6e67206173206f6e652072656d656d6265727320746861742074686973150120286c696b652065766572797468696e6720656c7365206f6e2d636861696e29206974206973207075626c69632e20466f72206578616d706c652c2069742063616e206265050120757365642077686572652061206e756d626572206973206e656564656420746861742063616e6e6f742068617665206265656e2063686f73656e20627920616e0d01206164766572736172792c20666f7220707572706f7365732073756368206173207075626c69632d636f696e207a65726f2d6b6e6f776c656467652070726f6f66732e6050656e64696e6745706f6368436f6e6669674368616e676500001d0504000461012050656e64696e672065706f636820636f6e66696775726174696f6e206368616e676520746861742077696c6c206265206170706c696564207768656e20746865206e6578742065706f636820697320656e61637465642e384e65787452616e646f6d6e657373010004800000000000000000000000000000000000000000000000000000000000000000045c204e6578742065706f63682072616e646f6d6e6573732e3c4e657874417574686f7269746965730100090504000460204e6578742065706f636820617574686f7269746965732e305365676d656e74496e6465780100101000000000247c2052616e646f6d6e65737320756e64657220636f6e737472756374696f6e2e00f8205765206d616b6520612074726164652d6f6666206265747765656e2073746f7261676520616363657373657320616e64206c697374206c656e6774682e01012057652073746f72652074686520756e6465722d636f6e737472756374696f6e2072616e646f6d6e65737320696e207365676d656e7473206f6620757020746f942060554e4445525f434f4e535452554354494f4e5f5345474d454e545f4c454e475448602e00ec204f6e63652061207365676d656e7420726561636865732074686973206c656e6774682c20776520626567696e20746865206e657874206f6e652e090120576520726573657420616c6c207365676d656e747320616e642072657475726e20746f206030602061742074686520626567696e6e696e67206f662065766572791c2065706f63682e44556e646572436f6e737472756374696f6e0101040510290504000415012054574f582d4e4f54453a20605365676d656e74496e6465786020697320616e20696e6372656173696e6720696e74656765722c20736f2074686973206973206f6b61792e2c496e697469616c697a65640000310504000801012054656d706f726172792076616c75652028636c656172656420617420626c6f636b2066696e616c697a6174696f6e292077686963682069732060536f6d65601d01206966207065722d626c6f636b20696e697469616c697a6174696f6e2068617320616c7265616479206265656e2063616c6c656420666f722063757272656e7420626c6f636b2e4c417574686f7256726652616e646f6d6e6573730100d50304001015012054686973206669656c642073686f756c6420616c7761797320626520706f70756c6174656420647572696e6720626c6f636b2070726f63657373696e6720756e6c6573731901207365636f6e6461727920706c61696e20736c6f74732061726520656e61626c65642028776869636820646f6e277420636f6e7461696e206120565246206f7574707574292e0049012049742069732073657420696e20606f6e5f66696e616c697a65602c206265666f72652069742077696c6c20636f6e7461696e207468652076616c75652066726f6d20746865206c61737420626c6f636b2e2845706f636853746172740100d103200000000000000000145d012054686520626c6f636b206e756d62657273207768656e20746865206c61737420616e642063757272656e742065706f6368206861766520737461727465642c20726573706563746976656c7920604e2d316020616e641420604e602e4901204e4f54453a20576520747261636b207468697320697320696e206f7264657220746f20616e6e6f746174652074686520626c6f636b206e756d626572207768656e206120676976656e20706f6f6c206f66590120656e74726f7079207761732066697865642028692e652e20697420776173206b6e6f776e20746f20636861696e206f6273657276657273292e2053696e63652065706f6368732061726520646566696e656420696e590120736c6f74732c207768696368206d617920626520736b69707065642c2074686520626c6f636b206e756d62657273206d6179206e6f74206c696e6520757020776974682074686520736c6f74206e756d626572732e204c6174656e657373010010100000000014d820486f77206c617465207468652063757272656e7420626c6f636b20697320636f6d706172656420746f2069747320706172656e742e001501205468697320656e74727920697320706f70756c617465642061732070617274206f6620626c6f636b20657865637574696f6e20616e6420697320636c65616e65642075701101206f6e20626c6f636b2066696e616c697a6174696f6e2e205175657279696e6720746869732073746f7261676520656e747279206f757473696465206f6620626c6f636bb020657865637574696f6e20636f6e746578742073686f756c6420616c77617973207969656c64207a65726f2e2c45706f6368436f6e6669670000450504000861012054686520636f6e66696775726174696f6e20666f72207468652063757272656e742065706f63682e2053686f756c64206e6576657220626520604e6f6e656020617320697420697320696e697469616c697a656420696e242067656e657369732e3c4e65787445706f6368436f6e666967000045050400082d012054686520636f6e66696775726174696f6e20666f7220746865206e6578742065706f63682c20604e6f6e65602069662074686520636f6e6669672077696c6c206e6f74206368616e6765e82028796f752063616e2066616c6c6261636b20746f206045706f6368436f6e6669676020696e737465616420696e20746861742063617365292e34536b697070656445706f6368730100490504002029012041206c697374206f6620746865206c6173742031303020736b69707065642065706f63687320616e642074686520636f72726573706f6e64696e672073657373696f6e20696e64657870207768656e207468652065706f63682077617320736b69707065642e0031012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f663501206d75737420636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e656564206139012077617920746f2074696520746f6765746865722073657373696f6e7320616e642065706f636820696e64696365732c20692e652e207765206e65656420746f2076616c69646174652074686174290120612076616c696461746f722077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e64207768617420746865b0206163746976652065706f636820696e6465782077617320647572696e6720746861742073657373696f6e2e015505000c3445706f63684475726174696f6e28202c010000000000000cec2054686520616d6f756e74206f662074696d652c20696e20736c6f74732c207468617420656163682065706f63682073686f756c64206c6173742e1901204e4f54453a2043757272656e746c79206974206973206e6f7420706f737369626c6520746f206368616e6765207468652065706f6368206475726174696f6e20616674657221012074686520636861696e2068617320737461727465642e20417474656d7074696e6720746f20646f20736f2077696c6c20627269636b20626c6f636b2070726f64756374696f6e2e444578706563746564426c6f636b54696d652820701700000000000014050120546865206578706563746564206176657261676520626c6f636b2074696d6520617420776869636820424142452073686f756c64206265206372656174696e67110120626c6f636b732e2053696e636520424142452069732070726f626162696c6973746963206974206973206e6f74207472697669616c20746f20666967757265206f75740501207768617420746865206578706563746564206176657261676520626c6f636b2074696d652073686f756c64206265206261736564206f6e2074686520736c6f740901206475726174696f6e20616e642074686520736563757269747920706172616d657465722060636020287768657265206031202d20636020726570726573656e7473a0207468652070726f626162696c697479206f66206120736c6f74206265696e6720656d707479292e384d6178417574686f7269746965731010a08601000488204d6178206e756d626572206f6620617574686f72697469657320616c6c6f776564016905012454696d657374616d70012454696d657374616d70080c4e6f7701002820000000000000000004902043757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e2444696455706461746501002901040004b420446964207468652074696d657374616d7020676574207570646174656420696e207468697320626c6f636b3f016d050004344d696e696d756d506572696f642820b80b000000000000104d0120546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e204265776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a5d0120706572696f6420746861742074686520626c6f636b2070726f64756374696f6e206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c5d012067656e6572616c6c7920776f726b2077697468207468697320746f2064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20652e672e20466f7220417572612c2069742077696c6c206265a020646f75626c65207468697320706572696f64206f6e2064656661756c742073657474696e67732e00021c496e6469636573011c496e646963657304204163636f756e7473000104021071050400048820546865206c6f6f6b75702066726f6d20696e64657820746f206163636f756e742e0175050174041c4465706f736974184040420f0000000000000000000000000004ac20546865206465706f736974206e656564656420666f7220726573657276696e6720616e20696e6465782e017d050328417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000042042616c616e636573012042616c616e6365730834546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e144c6f636b7301010402008105040008b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e018d05017804484578697374656e7469616c4465706f73697418400000000000000000000000000000000004d420546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e01910505485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e7408444e6578744665654d756c7469706c6965720100950540000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100990504000000019008485472616e73616374696f6e42797465466565184064000000000000000000000000000000040d01205468652066656520746f206265207061696420666f72206d616b696e672061207472616e73616374696f6e3b20746865207065722d6279746520706f7274696f6e2e2c576569676874546f4665659d055c040000000000000000000000000000000049b400000001040d012054686520706f6c796e6f6d69616c2074686174206973206170706c69656420696e206f7264657220746f20646572697665206665652066726f6d207765696768742e0006204964656e7469747901204964656e746974794c284469645265636f7264730001040680a5050400045420444944202d3e206964656e7469747920696e666f2c497344696446726f7a656e01010406802901040004e420444944202d3e20626f6f6c207468617420696e64696361746573206966207365636f6e64617279206b657973206172652066726f7a656e2e2843757272656e74446964000080040004e02049742073746f726573207468652063757272656e74206964656e7469747920666f722063757272656e74207472616e73616374696f6e2e3043757272656e74506179657200000004000401012049742073746f726573207468652063757272656e74206761732066656520706179657220666f72207468652063757272656e74207472616e73616374696f6e18436c61696d730001080502a905f8040004f020285461726765742049442c20636c61696d20747970652920286973737565722c73636f706529202d3e204173736f63696174656420636c61696d7330437573746f6d436c61696d73000104051101300400049420437573746f6d436c61696d547970654964202d3e20537472696e6720636f6e7374616e744c437573746f6d436c61696d73496e7665727365000104023011010400049420537472696e6720636f6e7374616e74202d3e20437573746f6d436c61696d54797065496454437573746f6d436c61696d496453657175656e6365010011011000000000047820546865206e6578742060437573746f6d436c61696d547970654964602e284b65795265636f7264730001040500b5050400044501204d61702066726f6d204163636f756e74496420746f20604b65795265636f726460207468617420686f6c647320746865206b65792773206964656e7469747920616e64207065726d697373696f6e732e1c4469644b6579730101080605b905290104000401012041207265766572736520646f75626c65206d617020746f20616c6c6f772066696e64696e6720616c6c206b65797320666f7220616e206964656e746974792e444d756c7469507572706f73654e6f6e636501002820000000000000000004bc204e6f6e636520746f20656e7375726520756e6971756520616374696f6e732e207374617274732066726f6d20312e684f6666436861696e417574686f72697a6174696f6e4e6f6e636501010406802820000000000000000004c820417574686f72697a6174696f6e206e6f6e636520706572204964656e746974792e20496e697469616c6c7920697320302e38417574686f72697a6174696f6e730001080205bd05c105040004b020416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792f6b6579206861734c417574686f72697a6174696f6e73476976656e0101080605c5057d0184000000000000000000000000000000000000000000000000000000000000000000044d0120416c6c20617574686f72697a6174696f6e73207468617420616e206964656e746974792068617320676976656e2e2028417574686f72697a65722c20617574685f6964202d3e20617574686f72697a6564297043646441757468466f725072696d6172794b6579526f746174696f6e010029010400085d01204120636f6e66696720666c616720746861742c206966207365742c20696e7374727563747320616e20617574686f72697a6174696f6e2066726f6d2061204344442070726f766964657220696e206f7264657220746f9c206368616e676520746865207072696d617279206b6579206f6620616e206964656e746974792e3853746f7261676556657273696f6e0100c905040004442053746f726167652076657273696f6e2e484163636f756e744b6579526566436f756e740101040200282000000000000000001cc420486f77206d616e7920227374726f6e6722207265666572656e63657320746f20746865206163636f756e74206b65792e00fc205374726f6e67207265666572656e6365732077696c6c20626c6f636b2061206b65792066726f6d206c656176696e672069742773206964656e746974792e00cc2050616c6c657473207573696e6720227374726f6e6722207265666572656e63657320746f206163636f756e74206b6579733aac202a2052656c617965723a20466f722060757365725f6b65796020616e642060706179696e675f6b6579600024506172656e74446964000104068080040004c020506172656e74206964656e7469747920696620746865204449442069732061206368696c64204964656e746974792e204368696c644469640101080606cd052901040004050120416c6c206368696c64206964656e746974696573206f66206120706172656e742028692e6520506172656e744449442c204368696c644449442c20747275652901d10501940430496e697469616c504f4c59581840000000000000000000000000000000000001e905074c4364645365727669636550726f7669646572730138496e7374616e63653247726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100ed05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e01f505012d010001f9050844506f6c796d657368436f6d6d69747465650148496e7374616e636531436f6d6d6974746565242450726f706f73616c730100b104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f66000104062cfd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e67000104062cb108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100350104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100d103200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000080040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100b508040004442053746f726167652076657273696f6e2e0101060139010001b908094c436f6d6d69747465654d656d626572736869700138496e7374616e63653147726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100ed05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e010506014d010001bd080a48546563686e6963616c436f6d6d69747465650148496e7374616e636533436f6d6d6974746565242450726f706f73616c730100b104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f66000104062cfd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e67000104062cb108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100350104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100d103200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000080040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100b508040004442053746f726167652076657273696f6e2e0109060155010001c1080b70546563686e6963616c436f6d6d69747465654d656d626572736869700138496e7374616e63653347726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100ed05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e010d06015d010001c5080c4055706772616465436f6d6d69747465650148496e7374616e636534436f6d6d6974746565242450726f706f73616c730100b104040004902054686520686173686573206f6620746865206163746976652070726f706f73616c732e2850726f706f73616c4f66000104062cfd05040004882041637475616c2070726f706f73616c20666f72206120676976656e20686173682e18566f74696e67000104062cb108040004d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e3450726f706f73616c436f756e74010010100000000004482050726f706f73616c7320736f206661722e1c4d656d626572730100350104000498205468652063757272656e74206d656d62657273206f662074686520636f6d6d69747465652e34566f74655468726573686f6c640100d103200000000000000000048020566f7465207468726573686f6c6420666f7220616e20617070726f76616c2e4852656c65617365436f6f7264696e61746f72000080040004542052656c6561736520636f6f7264696e61746f722e3045787069726573416674657201004901040104a42054696d6520616674657220776869636820612070726f706f73616c2077696c6c206578706972652e3853746f7261676556657273696f6e0100b508040004442053746f726167652076657273696f6e2e0111060165010001c9080d6855706772616465436f6d6d69747465654d656d626572736869700138496e7374616e63653447726f75700c344163746976654d656d6265727301003501040004ec205468652063757272656e74202261637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e3c496e6163746976654d656d626572730100ed05040004f4205468652063757272656e742022696e61637469766522206d656d626572736869702c2073746f72656420617320616e206f726465726564205665632e484163746976654d656d626572734c696d6974010010100000000004c4204c696d6974206f6620686f77206d616e79202261637469766522206d656d626572732074686572652063616e2062652e011506016d010001cd080e204d756c746953696701204d756c746953696734344d756c74695369674e6f6e6365010028200000000000000000042101204e6f6e636520746f20656e7375726520756e69717565204d756c746953696720616464726573736573206172652067656e6572617465643b207374617274732066726f6d20312e3c4d756c74695369675369676e6572730101080605d1082901040004cc205369676e657273206f662061206d756c74697369672e20286d756c74697369672c207369676e657229203d3e20626f6f6c2e3c4e756d6265724f665369676e65727301010406002820000000000000000004cc204e756d626572206f6620617070726f7665642f6163636570746564207369676e657273206f662061206d756c74697369672e544d756c74695369675369676e73526571756972656401010406002820000000000000000004e020436f6e6669726d6174696f6e73207265717569726564206265666f72652070726f63657373696e672061206d756c74697369672074782e384d756c74695369675478446f6e65010104060028200000000000000000043501204e756d626572206f66207472616e73616374696f6e732070726f706f73656420696e2061206d756c74697369672e20557365642061732074782069643b207374617274732066726f6d20302e2450726f706f73616c730001080505d508fd0504000cb82050726f706f73616c732070726573656e74656420666f7220766f74696e6720746f2061206d756c74697369672e00c0206d756c7469736967202d3e2070726f706f73616c206964203d3e204f7074696f6e3c543a3a50726f706f73616c3e2e2c50726f706f73616c4964730001080602d90828040004942041206d617070696e67206f662070726f706f73616c7320746f207468656972204944732e14566f7465730101080505dd08290104000c8820496e646976696475616c206d756c7469736967207369676e657220766f7465732e00ac20286d756c74697369672c2070726f706f73616c5f696429202d3e207369676e6572203d3e20766f74652e484d756c7469536967546f4964656e7469747901010406008080000000000000000000000000000000000000000000000000000000000000000004a4204d6170732061206d756c7469736967206163636f756e7420746f20697473206964656e746974792e3850726f706f73616c44657461696c0101080505d508e1084c000000000000000000000000000000000000000c7c2044657461696c73206f662061206d756c74697369672070726f706f73616c00b0206d756c7469736967202d3e2070726f706f73616c206964203d3e2050726f706f73616c44657461696c732e544c6f737443726561746f7250726976696c6567657301010406802901040004290120547261636b732063726561746f72732077686f20617265206e6f206c6f6e67657220616c6c6f77656420746f2063616c6c207669615f63726561746f722065787472696e736963732e485472616e73616374696f6e56657273696f6e010010100000000004f420546865206c617374207472616e73616374696f6e2076657273696f6e2c207573656420666f7220606f6e5f72756e74696d655f75706772616465602e3853746f7261676556657273696f6e0100e908040004442053746f726167652076657273696f6e2e0119060175010001ed080f1842726964676501184272696467652828436f6e74726f6c6c657200000004000c410120546865206d756c7469736967206163636f756e74206f66207468652062726964676520636f6e74726f6c6c65722e205468652067656e65736973207369676e65727320616363657074207468656972450120617574686f72697a6174696f6e7320616e64206172652061626c6520746f206765742074686569722070726f706f73616c732064656c6976657265642e20546865206272696467652063726561746f729c207472616e736665727320736f6d6520504f4c5920746f207468656972206964656e746974792e3c427269646765547844657461696c730101080202f108f508d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000859012044657461696c73206f6620627269646765207472616e73616374696f6e73206964656e7469666965642077697468207061697273206f662074686520726563697069656e74206163636f756e7420616e64207468656820627269646765207472616e73616374696f6e206e6f6e63652e1441646d696e0000000400043c205468652061646d696e206b65792e1846726f7a656e01002901040004bc2057686574686572206f72206e6f742074686520627269646765206f7065726174696f6e2069732066726f7a656e2e30467265657a6541646d696e7301010402002901040004090120467265657a65206272696467652061646d696e732e20205468657365206163636f756e74732063616e206f6e6c7920667265657a6520746865206272696467652e2054696d656c6f636b0100101000000000083d012054686520627269646765207472616e73616374696f6e2074696d656c6f636b20706572696f642c20696e20626c6f636b732c2073696e63652074686520616363657074616e6365206f66207468653101207472616e73616374696f6e2070726f706f73616c20647572696e67207768696368207468652061646d696e206b65792063616e20667265657a6520746865207472616e73616374696f6e2e2c4272696467654c696d69740100fd0850000000000000000000000000000000000000000008290120546865206d6178696d756d206e756d626572206f66206272696467656420504f4c595820706572206964656e746974792077697468696e20612073657420696e74657276616c206f66f820626c6f636b732e204669656c64733a20504f4c595820616d6f756e7420616e642074686520626c6f636b20696e74657276616c206475726174696f6e2e30506f6c7978427269646765640101040680fd0850000000000000000000000000000000000000000008510120416d6f756e74206f6620504f4c5958206272696467656420627920746865206964656e7469747920696e206c61737420626c6f636b20696e74657276616c2e204669656c64733a2074686520627269646765649420616d6f756e7420616e6420746865206c61737420696e74657276616c206e756d6265722e4c4272696467654c696d69744578656d7074656401010405802901040004c0204964656e746974696573206e6f7420636f6e73747261696e65642062792074686520627269646765206c696d69742e3853746f7261676556657273696f6e01000109040004442053746f726167652076657273696f6e2e011d0601810100010509101c5374616b696e67011c5374616b696e67a430486973746f7279446570746801001010540000001c8c204e756d626572206f66206572617320746f206b65657020696e20686973746f72792e00390120496e666f726d6174696f6e206973206b65707420666f72206572617320696e20605b63757272656e745f657261202d20686973746f72795f64657074683b2063757272656e745f6572615d602e006101204d757374206265206d6f7265207468616e20746865206e756d626572206f6620657261732064656c617965642062792073657373696f6e206f74686572776973652e20492e652e2061637469766520657261206d757374390120616c7761797320626520696e20686973746f72792e20492e652e20606163746976655f657261203e2063757272656e745f657261202d20686973746f72795f646570746860206d757374206265302067756172616e746565642e3856616c696461746f72436f756e740100101000000000049c2054686520696465616c206e756d626572206f66206163746976652076616c696461746f72732e544d696e696d756d56616c696461746f72436f756e740100101000000000044101204d696e696d756d206e756d626572206f66207374616b696e67207061727469636970616e7473206265666f726520656d657267656e637920636f6e646974696f6e732061726520696d706f7365642e34496e76756c6e657261626c65730100f404000c590120416e792076616c696461746f72732074686174206d6179206e6576657220626520736c6173686564206f7220666f726369626c79206b69636b65642e20497427732061205665632073696e636520746865792772654d01206561737920746f20696e697469616c697a6520616e642074686520706572666f726d616e636520686974206973206d696e696d616c2028776520657870656374206e6f206d6f7265207468616e20666f7572ac20696e76756c6e657261626c65732920616e64207265737472696374656420746f20746573746e6574732e18426f6e64656400010405000004000c0101204d61702066726f6d20616c6c206c6f636b65642022737461736822206163636f756e747320746f2074686520636f6e74726f6c6c6572206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e184c6564676572000104020009090400044501204d61702066726f6d20616c6c2028756e6c6f636b6564292022636f6e74726f6c6c657222206163636f756e747320746f2074686520696e666f20726567617264696e6720746865207374616b696e672e1450617965650101040500310604000ce42057686572652074686520726577617264207061796d656e742073686f756c64206265206d6164652e204b657965642062792073746173682e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e2856616c696461746f7273010104050035060800000c450120546865206d61702066726f6d202877616e6e616265292076616c696461746f72207374617368206b657920746f2074686520707265666572656e636573206f6620746861742076616c696461746f722e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e50436f756e746572466f7256616c696461746f7273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d6170284e6f6d696e61746f727300010405001509040048750120546865206d61702066726f6d206e6f6d696e61746f72207374617368206b657920746f207468656972206e6f6d696e6174696f6e20707265666572656e6365732c206e616d656c79207468652076616c696461746f72732074686174582074686579207769736820746f20737570706f72742e003901204e6f7465207468617420746865206b657973206f6620746869732073746f72616765206d6170206d69676874206265636f6d65206e6f6e2d6465636f6461626c6520696e2063617365207468656d01205b60436f6e6669673a3a4d61784e6f6d696e6174696f6e73605d20636f6e66696775726174696f6e206973206465637265617365642e20496e2074686973207261726520636173652c207468657365206e6f6d696e61746f7273650120617265207374696c6c206578697374656e7420696e2073746f726167652c207468656972206b657920697320636f727265637420616e64207265747269657661626c652028692e652e2060636f6e7461696e735f6b657960710120696e6469636174657320746861742074686579206578697374292c206275742074686569722076616c75652063616e6e6f74206265206465636f6465642e205468657265666f72652c20746865206e6f6e2d6465636f6461626c656d01206e6f6d696e61746f72732077696c6c206566666563746976656c79206e6f742d65786973742c20756e74696c20746865792072652d7375626d697420746865697220707265666572656e6365732073756368207468617420697401012069732077697468696e2074686520626f756e6473206f6620746865206e65776c79207365742060436f6e6669673a3a4d61784e6f6d696e6174696f6e73602e006101205468697320696d706c696573207468617420603a3a697465725f6b65797328292e636f756e7428296020616e6420603a3a6974657228292e636f756e74282960206d696768742072657475726e20646966666572656e746d012076616c75657320666f722074686973206d61702e204d6f72656f7665722c20746865206d61696e20603a3a636f756e7428296020697320616c69676e656420776974682074686520666f726d65722c206e616d656c79207468656c206e756d626572206f66206b65797320746861742065786973742e006d01204c6173746c792c20696620616e79206f6620746865206e6f6d696e61746f7273206265636f6d65206e6f6e2d6465636f6461626c652c20746865792063616e206265206368696c6c656420696d6d6564696174656c7920766961b8205b6043616c6c3a3a6368696c6c5f6f74686572605d20646973706174636861626c6520627920616e796f6e652e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e50436f756e746572466f724e6f6d696e61746f7273010010100000000004ac436f756e74657220666f72207468652072656c6174656420636f756e7465642073746f72616765206d61702843757272656e744572610000100400105c205468652063757272656e742065726120696e6465782e006501205468697320697320746865206c617465737420706c616e6e6564206572612c20646570656e64696e67206f6e20686f77207468652053657373696f6e2070616c6c657420717565756573207468652076616c696461746f7280207365742c206974206d6967687420626520616374697665206f72206e6f742e2441637469766545726100001d09040010d820546865206163746976652065726120696e666f726d6174696f6e2c20697420686f6c647320696e64657820616e642073746172742e0059012054686520616374697665206572612069732074686520657261206265696e672063757272656e746c792072657761726465642e2056616c696461746f7220736574206f66207468697320657261206d757374206265ac20657175616c20746f205b6053657373696f6e496e746572666163653a3a76616c696461746f7273605d2e5445726173537461727453657373696f6e496e6465780001040510100400103101205468652073657373696f6e20696e646578206174207768696368207468652065726120737461727420666f7220746865206c6173742060484953544f52595f44455054486020657261732e006101204e6f74653a205468697320747261636b7320746865207374617274696e672073657373696f6e2028692e652e2073657373696f6e20696e646578207768656e20657261207374617274206265696e672061637469766529f020666f7220746865206572617320696e20605b43757272656e74457261202d20484953544f52595f44455054482c2043757272656e744572615d602e2c457261735374616b65727301010805052109d9010c0000001878204578706f73757265206f662076616c696461746f72206174206572612e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e48457261735374616b657273436c697070656401010805052109d9010c0000002c9820436c6970706564204578706f73757265206f662076616c696461746f72206174206572612e00590120546869732069732073696d696c617220746f205b60457261735374616b657273605d20627574206e756d626572206f66206e6f6d696e61746f7273206578706f736564206973207265647563656420746f20746865dc2060543a3a4d61784e6f6d696e61746f72526577617264656450657256616c696461746f72602062696767657374207374616b6572732e1d0120284e6f74653a20746865206669656c642060746f74616c6020616e6420606f776e60206f6620746865206578706f737572652072656d61696e7320756e6368616e676564292ef42054686973206973207573656420746f206c696d69742074686520692f6f20636f737420666f7220746865206e6f6d696e61746f72207061796f75742e005d012054686973206973206b657965642066697374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4101204966207374616b657273206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e20656d707479206578706f737572652069732072657475726e65642e484572617356616c696461746f7250726566730101080505210935060800001411012053696d696c617220746f2060457261735374616b657273602c207468697320686f6c64732074686520707265666572656e636573206f662076616c696461746f72732e0061012054686973206973206b65796564206669727374206279207468652065726120696e64657820746f20616c6c6f772062756c6b2064656c6574696f6e20616e64207468656e20746865207374617368206163636f756e742e00a82049732069742072656d6f7665642061667465722060484953544f52595f44455054486020657261732e4c4572617356616c696461746f7252657761726400010405101804000c09012054686520746f74616c2076616c696461746f7220657261207061796f757420666f7220746865206c6173742060484953544f52595f44455054486020657261732e0021012045726173207468617420686176656e27742066696e697368656420796574206f7220686173206265656e2072656d6f76656420646f65736e27742068617665207265776172642e4045726173526577617264506f696e74730101040510250914000000000008ac205265776172647320666f7220746865206c6173742060484953544f52595f44455054486020657261732e250120496620726577617264206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207265776172642069732072657475726e65642e3845726173546f74616c5374616b65010104051018400000000000000000000000000000000008ec2054686520746f74616c20616d6f756e74207374616b656420666f7220746865206c6173742060484953544f52595f44455054486020657261732e1d0120496620746f74616c206861736e2774206265656e20736574206f7220686173206265656e2072656d6f766564207468656e2030207374616b652069732072657475726e65642e20466f7263654572610100310904000454204d6f6465206f662065726120666f7263696e672e4c536c6173685265776172644672616374696f6e01009d0110000000000cf8205468652070657263656e74616765206f662074686520736c617368207468617420697320646973747269627574656420746f207265706f72746572732e00e4205468652072657374206f662074686520736c61736865642076616c75652069732068616e646c6564206279207468652060536c617368602e4c43616e63656c6564536c6173685061796f757401001840000000000000000000000000000000000815012054686520616d6f756e74206f662063757272656e637920676976656e20746f207265706f7274657273206f66206120736c617368206576656e7420776869636820776173ec2063616e63656c65642062792065787472616f7264696e6172792063697263756d7374616e6365732028652e672e20676f7665726e616e6365292e40556e6170706c696564536c617368657301010405103509040004c420416c6c20756e6170706c69656420736c61736865732074686174206172652071756575656420666f72206c617465722e28426f6e646564457261730100b50404001025012041206d617070696e672066726f6d207374696c6c2d626f6e646564206572617320746f207468652066697273742073657373696f6e20696e646578206f662074686174206572612e00c8204d75737420636f6e7461696e7320696e666f726d6174696f6e20666f72206572617320666f72207468652072616e67653abc20605b6163746976655f657261202d20626f756e64696e675f6475726174696f6e3b206163746976655f6572615d604c56616c696461746f72536c617368496e457261000108050521094509040008450120416c6c20736c617368696e67206576656e7473206f6e2076616c696461746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682070726f706f7274696f6e7020616e6420736c6173682076616c7565206f6620746865206572612e4c4e6f6d696e61746f72536c617368496e4572610001080505210918040004610120416c6c20736c617368696e67206576656e7473206f6e206e6f6d696e61746f72732c206d61707065642062792065726120746f20746865206869676865737420736c6173682076616c7565206f6620746865206572612e34536c617368696e675370616e73000104050049090400048c20536c617368696e67207370616e7320666f72207374617368206163636f756e74732e245370616e536c61736801010405f1084d09800000000000000000000000000000000000000000000000000000000000000000083d01205265636f72647320696e666f726d6174696f6e2061626f757420746865206d6178696d756d20736c617368206f6620612073746173682077697468696e206120736c617368696e67207370616e2cb82061732077656c6c20617320686f77206d7563682072657761726420686173206265656e2070616964206f75742e4c4f6666656e64696e6756616c696461746f727301005109040024690120496e6469636573206f662076616c696461746f727320746861742068617665206f6666656e64656420696e20746865206163746976652065726120616e6420776865746865722074686579206172652063757272656e746c79282064697361626c65642e00690120546869732076616c75652073686f756c642062652061207375706572736574206f662064697361626c65642076616c696461746f72732073696e6365206e6f7420616c6c206f6666656e636573206c65616420746f2074686571012076616c696461746f72206265696e672064697361626c65642028696620746865726520776173206e6f20736c617368292e2054686973206973206e656564656420746f20747261636b207468652070657263656e74616765206f6649012076616c696461746f727320746861742068617665206f6666656e64656420696e207468652063757272656e74206572612c20656e737572696e672061206e65772065726120697320666f72636564206966750120604f6666656e64696e6756616c696461746f72735468726573686f6c646020697320726561636865642e205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e6471012077686574686572206120676976656e2076616c696461746f72206861732070726576696f75736c79206f6666656e646564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e38207468652065726120656e64732e584561726c69657374556e6170706c696564536c617368000010040004fc20546865206561726c696573742065726120666f72207768696368207765206861766520612070656e64696e672c20756e6170706c69656420736c6173682e48536e617073686f7456616c696461746f72730000f4040008650120536e617073686f74206f662076616c696461746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e48536e617073686f744e6f6d696e61746f72730000f4040008650120536e617073686f74206f66206e6f6d696e61746f72732061742074686520626567696e6e696e67206f66207468652063757272656e7420656c656374696f6e2077696e646f772e20546869732073686f756c64206f6e6c791901206861766520612076616c7565207768656e205b60457261456c656374696f6e537461747573605d203d3d2060456c656374696f6e5374617475733a3a4f70656e285f29602e34517565756564456c65637465640000590904000c650120546865206e6578742076616c696461746f72207365742e2041742074686520656e64206f6620616e206572612c206966207468697320697320617661696c61626c652028706f74656e7469616c6c792066726f6d20746865610120726573756c74206f6620616e206f6666636861696e20776f726b6572292c20697420697320696d6d6564696174656c7920757365642e204f74686572776973652c20746865206f6e2d636861696e20656c656374696f6e342069732065786563757465642e2c51756575656453636f726500001907040004b0205468652073636f7265206f66207468652063757272656e74205b60517565756564456c6563746564605d2e44457261456c656374696f6e53746174757301005d09040008710120466c616720746f20636f6e74726f6c2074686520657865637574696f6e206f6620746865206f6666636861696e20656c656374696f6e2e205768656e20604f70656e285f29602c2077652061636365707420736f6c7574696f6e734420746f206265207375626d69747465642e54497343757272656e7453657373696f6e46696e616c010029010400084d012054727565206966207468652063757272656e74202a2a706c616e6e65642a2a2073657373696f6e2069732066696e616c2e204e6f74652074686174207468697320646f6573206e6f742074616b65206572615820666f7263696e6720696e746f206163636f756e742e505065726d697373696f6e65644964656e7469747900010405806109040004ec20456e74697469657320746861742061726520616c6c6f77656420746f2072756e206f70657261746f722f76616c696461746f72206e6f6465732e5856616c696461746f72436f6d6d697373696f6e43617001009d011000000000085d0120416c6c6f777320666c65786962696c69747920696e20636f6d6d697373696f6e2e2045766572792076616c696461746f722068617320636f6d6d697373696f6e20746861742073686f756c6420626520696e20746865402072616e6765205b302c204361705d2e504d696e696d756d426f6e645468726573686f6c64010018400000000000000000000000000000000004d020546865206d696e696d756d20616d6f756e74207769746820776869636820612076616c696461746f722063616e20626f6e642e48536c617368696e67416c6c6f776564466f720100a101040200012d0601950110384d61784e6f6d696e6174696f6e7310101000000004b4204d6178696d756d206e756d626572206f66206e6f6d696e6174696f6e7320706572206e6f6d696e61746f722e3853657373696f6e735065724572611010030000000470204e756d626572206f662073657373696f6e7320706572206572612e3c426f6e64696e674475726174696f6e10100700000004e8204e756d626572206f6620657261732074686174207374616b65642066756e6473206d7573742072656d61696e20626f6e64656420666f722e5d484d6178556e6c6f636b696e674368756e6b7310102000000028050120546865206d6178696d756d206e756d626572206f662060756e6c6f636b696e6760206368756e6b732061205b605374616b696e674c6564676572605d2063616e090120686176652e204566666563746976656c792064657465726d696e657320686f77206d616e7920756e6971756520657261732061207374616b6572206d61792062653820756e626f6e64696e6720696e2e00f8204e6f74653a20604d6178556e6c6f636b696e674368756e6b736020697320757365642061732074686520757070657220626f756e6420666f722074686501012060426f756e64656456656360206974656d20605374616b696e674c65646765722e756e6c6f636b696e67602e2053657474696e6720746869732076616c75650501206c6f776572207468616e20746865206578697374696e672076616c75652063616e206c65616420746f20696e636f6e73697374656e6369657320696e20746865090120605374616b696e674c65646765726020616e642077696c6c206e65656420746f2062652068616e646c65642070726f7065726c7920696e20612072756e74696d650501206d6967726174696f6e2e20546865207465737420607265647563696e675f6d61785f756e6c6f636b696e675f6368756e6b735f616272757074602073686f7773342074686973206566666563742e01650911204f6666656e63657301204f6666656e6365730c1c5265706f727473000104052c6909040004490120546865207072696d61727920737472756374757265207468617420686f6c647320616c6c206f6666656e6365207265636f726473206b65796564206279207265706f7274206964656e746966696572732e58436f6e63757272656e745265706f727473496e64657801010805056d09b1040400042901204120766563746f72206f66207265706f727473206f66207468652073616d65206b696e6420746861742068617070656e6564206174207468652073616d652074696d6520736c6f742e485265706f72747342794b696e64496e64657801010405a90130040018110120456e756d65726174657320616c6c207265706f727473206f662061206b696e6420616c6f6e672077697468207468652074696d6520746865792068617070656e65642e00bc20416c6c207265706f7274732061726520736f72746564206279207468652074696d65206f66206f6666656e63652e004901204e6f74652074686174207468652061637475616c2074797065206f662074686973206d617070696e6720697320605665633c75383e602c207468697320697320626563617573652076616c756573206f66690120646966666572656e7420747970657320617265206e6f7420737570706f7274656420617420746865206d6f6d656e7420736f2077652061726520646f696e6720746865206d616e75616c2073657269616c697a6174696f6e2e0001a5010000121c53657373696f6e011c53657373696f6e1c2856616c696461746f72730100f40400047c205468652063757272656e7420736574206f662076616c696461746f72732e3043757272656e74496e646578010010100000000004782043757272656e7420696e646578206f66207468652073657373696f6e2e345175657565644368616e67656401002901040008390120547275652069662074686520756e6465726c79696e672065636f6e6f6d6963206964656e746974696573206f7220776569676874696e6720626568696e64207468652076616c696461746f7273a420686173206368616e67656420696e20746865207175657565642076616c696461746f72207365742e285175657565644b657973010071090400083d012054686520717565756564206b65797320666f7220746865206e6578742073657373696f6e2e205768656e20746865206e6578742073657373696f6e20626567696e732c207468657365206b657973e02077696c6c206265207573656420746f2064657465726d696e65207468652076616c696461746f7227732073657373696f6e206b6579732e4844697361626c656456616c696461746f727301006d040400148020496e6469636573206f662064697361626c65642076616c696461746f72732e003d01205468652076656320697320616c77617973206b65707420736f7274656420736f20746861742077652063616e2066696e642077686574686572206120676976656e2076616c696461746f722069733d012064697361626c6564207573696e672062696e617279207365617263682e204974206765747320636c6561726564207768656e20606f6e5f73657373696f6e5f656e64696e67602072657475726e73642061206e657720736574206f66206964656e7469746965732e204e6578744b657973000104050025070400049c20546865206e6578742073657373696f6e206b65797320666f7220612076616c696461746f722e204b65794f776e657200010405790900040004090120546865206f776e6572206f662061206b65792e20546865206b65792069732074686520604b657954797065496460202b2074686520656e636f646564206b65792e01210701ad01000181091348417574686f72697479446973636f766572790000000000141c4772616e647061011c4772616e647061181453746174650100850904000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500008909040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c65640000d1030400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010028200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405281004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e012d0701b10108384d6178417574686f7269746965731010a0860100045c204d617820417574686f72697469657320696e20757365584d6178536574496453657373696f6e456e74726965732820150000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e0191091528486973746f726963616c00000000001620496d4f6e6c696e650120496d4f6e6c696e651038486561727462656174416674657201001010000000002c1d012054686520626c6f636b206e756d6265722061667465722077686963682069742773206f6b20746f2073656e64206865617274626561747320696e207468652063757272656e74242073657373696f6e2e0025012041742074686520626567696e6e696e67206f6620656163682073657373696f6e20776520736574207468697320746f20612076616c756520746861742073686f756c642066616c6c350120726f7567686c7920696e20746865206d6964646c65206f66207468652073657373696f6e206475726174696f6e2e20546865206964656120697320746f206669727374207761697420666f721901207468652076616c696461746f727320746f2070726f64756365206120626c6f636b20696e207468652063757272656e742073657373696f6e2c20736f207468617420746865a820686561727462656174206c61746572206f6e2077696c6c206e6f74206265206e65636573736172792e00390120546869732076616c75652077696c6c206f6e6c79206265207573656420617320612066616c6c6261636b206966207765206661696c20746f2067657420612070726f7065722073657373696f6e2d012070726f677265737320657374696d6174652066726f6d20604e65787453657373696f6e526f746174696f6e602c2061732074686f736520657374696d617465732073686f756c642062650101206d6f7265206163637572617465207468656e207468652076616c75652077652063616c63756c61746520666f7220604865617274626561744166746572602e104b65797301009509040004d0205468652063757272656e7420736574206f66206b6579732074686174206d61792069737375652061206865617274626561742e485265636569766564486561727462656174730001080505d1039d090400083d0120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206053657373696f6e496e6465786020616e64206041757468496e6465786020746fb02060577261707065724f70617175653c426f756e6465644f70617175654e6574776f726b53746174653e602e38417574686f726564426c6f636b730101080505210910100000000008150120466f7220656163682073657373696f6e20696e6465782c207765206b6565702061206d617070696e67206f66206056616c696461746f7249643c543e6020746f20746865c8206e756d626572206f6620626c6f636b7320617574686f7265642062792074686520676976656e20617574686f726974792e01590701c5010440556e7369676e65645072696f726974792820ffffffffffffffff10f0204120636f6e66696775726174696f6e20666f722062617365207072696f72697479206f6620756e7369676e6564207472616e73616374696f6e732e0015012054686973206973206578706f73656420736f20746861742069742063616e2062652074756e656420666f7220706172746963756c61722072756e74696d652c207768656eb4206d756c7469706c652070616c6c6574732073656e6420756e7369676e6564207472616e73616374696f6e732e01b109176052616e646f6d6e657373436f6c6c656374697665466c6970016052616e646f6d6e657373436f6c6c656374697665466c6970043852616e646f6d4d6174657269616c0100b50904000c610120536572696573206f6620626c6f636b20686561646572732066726f6d20746865206c61737420383120626c6f636b73207468617420616374732061732072616e646f6d2073656564206d6174657269616c2e2054686973610120697320617272616e67656420617320612072696e672062756666657220776974682060626c6f636b5f6e756d626572202520383160206265696e672074686520696e64657820696e746f20746865206056656360206f664420746865206f6c6465737420686173682e0000000018105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01790701e9010001b9091914417373657401144173736574741c5469636b65727300010402a8bd0904000874205469636b657220726567697374726174696f6e2064657461696c732e7c20287469636b657229202d3e205469636b6572526567697374726174696f6e305469636b6572436f6e6669670100c1090800000870205469636b657220726567697374726174696f6e20636f6e6669672e9420287469636b657229202d3e205469636b6572526567697374726174696f6e436f6e66696718546f6b656e7300010402a8c509040008e02044657461696c73206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e050120287469636b657229202d3e205365637572697479546f6b656e2064657461696c73205b72657475726e73205365637572697479546f6b656e207374727563745d2841737365744e616d657300010402a8fd01040008ec204173736574206e616d65206f662074686520746f6b656e20636f72726573706f6e64696e6720746f2074686520746f6b656e207469636b65722e6020287469636b657229202d3e206041737365744e616d65602442616c616e63654f660101080206c90918400000000000000000000000000000000008b42054686520746f74616c206173736574207469636b65722062616c616e636520706572206964656e746974792e6420287469636b65722c2044494429202d3e2042616c616e63652c4964656e7469666965727301010402a80102040004b82041206d6170206f662061207469636b6572206e616d6520616e64206173736574206964656e746966696572732e50437573746f6d54797065496453657175656e63650100f50110000000000cc420546865206e65787420604173736574547970653a3a437573746f6d6020494420696e207468652073657175656e63652e00d0204e756d6265727320696e207468652073657175656e63652073746172742066726f6d203120726174686572207468616e20302e2c437573746f6d547970657301010405f50130040004f8204d61707320637573746f6d20617373657420747970652069647320746f20746865207265676973746572656420737472696e6720636f6e74656e74732e48437573746f6d5479706573496e76657273650001040230f501040004610120496e7665727365206d6170206f662060437573746f6d5479706573602c2066726f6d207265676973746572656420737472696e6720636f6e74656e747320746f20637573746f6d2061737365742074797065206964732e3046756e64696e67526f756e6401010402a815020400089c20546865206e616d65206f66207468652063757272656e742066756e64696e6720726f756e642e60207469636b6572202d3e2066756e64696e6720726f756e6450497373756564496e46756e64696e67526f756e6401010402cd091840000000000000000000000000000000000811012054686520746f74616c2062616c616e636573206f6620746f6b656e732069737375656420696e20616c6c207265636f726465642066756e64696e6720726f756e64732e8c20287469636b65722c2066756e64696e6720726f756e6429202d3e2062616c616e63651846726f7a656e01010402a82901040008e82054686520736574206f662066726f7a656e2061737365747320696d706c656d656e7465642061732061206d656d62657273686970206d61702e3c207469636b6572202d3e20626f6f6c5c41737365744f776e65727368697052656c6174696f6e730101080602d109d50904000888205469636b65727320616e6420746f6b656e206f776e656420627920612075736572842028757365722c207469636b657229202d3e2041737365744f776e657273686970384173736574446f63756d656e74730001080205d9091d020400087c20446f63756d656e747320617474616368656420746f20616e2041737365747420287469636b65722c20646f635f696429202d3e20646f63756d656e74604173736574446f63756d656e7473496453657175656e636501010402a8190210000000000880205065722d7469636b657220646f63756d656e7420494420636f756e7465722e4c20287469636b657229202d3e20646f635f69644c41737365744d6574616461746156616c7565730001080205dd0949020400047c204d65746174646174612076616c75657320666f7220616e2061737365742e6441737365744d6574616461746156616c756544657461696c730001080205dd095102040004a02044657461696c7320666f7220616e2061737365742773204d657461646174612076616c7565732e6c41737365744d657461646174614c6f63616c4e616d65546f4b65790001080202e1095d0204000488204173736574204d65746164617461204c6f63616c204e616d65202d3e204b65792e7041737365744d65746164617461476c6f62616c4e616d65546f4b657900010402590279020400048c204173736574204d6574616461746120476c6f62616c204e616d65202d3e204b65792e6c41737365744d657461646174614c6f63616c4b6579546f4e616d650001080205e509590204000488204173736574204d65746164617461204c6f63616c204b6579202d3e204e616d652e7041737365744d65746164617461476c6f62616c4b6579546f4e616d6500010405790259020400048c204173736574204d6574616461746120476c6f62616c204b6579202d3e204e616d652e5c41737365744d657461646174614c6f63616c53706563730001080205e509610204000480204173736574204d65746164617461204c6f63616c204b65792073706563732e6041737365744d65746164617461476c6f62616c5370656373000104057902610204000484204173736574204d6574616461746120476c6f62616c204b65792073706563732e6441737365744d657461646174614e6578744c6f63616c4b657901010402a85d02200000000000000000047c204e657874204173736574204d65746164617461204c6f63616c204b65792e6841737365744d657461646174614e657874476c6f62616c4b6579010079022000000000000000000480204e657874204173736574204d6574616461746120476c6f62616c204b65792e705469636b6572734578656d707446726f6d41666669726d6174696f6e01010402a8290104000455012041206c697374206f66207469636b6572732074686174206578656d707420616c6c2075736572732066726f6d2061666669726d696e672074686520726563656976656d656e74206f66207468652061737365742e44507265417070726f7665645469636b65720101080602d1092901040004290120416c6c207469636b657273207468617420646f6e2774206e65656420616e2061666669726d6174696f6e20746f20626520726563656976656420627920616e206964656e746974792e484d616e6461746f72794d65646961746f727301010402a88507040004c820546865206c697374206f66206d616e6461746f7279206d65646961746f727320666f72206576657279207469636b65722e3853746f7261676556657273696f6e0100e909040004442053746f726167652076657273696f6e2e017d0701ed01144841737365744e616d654d61784c656e677468101080000000006446756e64696e67526f756e644e616d654d61784c656e677468101080000000006841737365744d657461646174614e616d654d61784c656e677468101000010000006c41737365744d6574616461746156616c75654d61784c656e677468101000200000007441737365744d65746164617461547970654465664d61784c656e6774681010002000000001ed091a4c4361706974616c446973747269627574696f6e014c4361706974616c446973747269627574696f6e0c34446973747269627574696f6e73000104029d02a50204000c350120416c6c206361706974616c20646973747269627574696f6e732c207469656420746f207468656972207265737065637469766520636f72706f7261746520616374696f6e732028434173292e005c20284341496429203d3e20446973747269627574696f6e28486f6c6465725061696401010402f109290104000c8c2048617320616e20617373657420686f6c646572206265656e2070616964207965743f00a42028434149642c2044494429202d3e2057617320444944207061696420696e2074686520434149643f3853746f7261676556657273696f6e0100f509040004442053746f726167652076657273696f6e2e0189070195020001f9091b28436865636b706f696e740128436865636b706f696e74302c546f74616c537570706c790101080205fd091840000000000000000000000000000000000cb420546f74616c20737570706c79206f662074686520746f6b656e2061742074686520636865636b706f696e742e00ec20287469636b65722c20636865636b706f696e74496429202d3e20746f74616c20737570706c7920617420676976656e20636865636b706f696e741c42616c616e63650101080205010a1840000000000000000000000000000000000c882042616c616e6365206f66206120444944206174206120636865636b706f696e742e00050120287469636b65722c206469642c20636865636b706f696e7420494429202d3e2042616c616e6365206f66206120444944206174206120636865636b706f696e7450436865636b706f696e74496453657175656e636501010402a8b102200000000000000000108c20436865636b706f696e74732049442067656e657261746f722073657175656e63652ea8204944206f6620666972737420636865636b706f696e74206973203120696e7374656164206f6620302e007c20287469636b657229202d3e206e6f2e206f6620636865636b706f696e74733842616c616e6365557064617465730101080205c909050a040008bc20436865636b706f696e747320776865726520612044494427732062616c616e63652077617320757064617465642ef020287469636b65722c2064696429202d3e205b636865636b706f696e7420494420776865726520757365722062616c616e6365206368616e6765645d2854696d657374616d70730101080205fd0928200000000000000000185c20436865636b706f696e742074696d657374616d70732e000901204576657279207363686564756c652d6f726967696e6174656420636865636b706f696e74206d6170732069747320494420746f20697473206475652074696d652e210120457665727920636865636b706f696e74206d616e75616c6c792063726561746564206d6170732069747320494420746f207468652074696d65206f66207265636f7264696e672e00d020287469636b657229202d3e2028636865636b706f696e7420494429202d3e20636865636b706f696e742074696d657374616d70585363686564756c65734d6178436f6d706c657869747901002820000000000000000004e420546865206d6178696d756d20636f6d706c657869747920616c6c6f77656420666f722061207469636b65722773207363686564756c65732e485363686564756c65496453657175656e636501010402a8b5022000000000000000000cb420436865636b706f696e74207363686564756c652049442073657175656e636520666f72207469636b6572732e006020287469636b657229202d3e207363686564756c65204944544361636865644e657874436865636b706f696e747300010402a8090a040014a820436163686564206e65787420636865636b706f696e7420666f722065616368207363686564756c652e0031012054686973206973207573656420746f20717569636b6c792066696e6420746865206e65787420636865636b706f696e742066726f6d2061207469636b65722773207363686564756c65732e007420287469636b657229202d3e206e65787420636865636b706f696e7473505363686564756c6564436865636b706f696e74730001080205190ab90204000c5c205363686564756c656420636865636b706f696e74732e00b820287469636b65722c207363686564756c6520494429202d3e207363686564756c6520636865636b706f696e7473405363686564756c65526566436f756e740101080205190a10100000000020010120486f77206d616e7920227374726f6e6722207265666572656e6365732061726520746865726520746f206120676976656e20605363686564756c654964603f00fc205468652070726573656e6365206f66206120227374726f6e6722207265666572656e63652c20696e207468652073656e7365206f66206052633c543e602ce020656e7461696c73207468617420746865207265666572656e636564207363686564756c652063616e6e6f742062652072656d6f7665642ed820546875732c206173206c6f6e6720617320607374726f6e675f7265665f636f756e74287363686564756c655f696429203e2030602cac206072656d6f76655f7363686564756c65287363686564756c655f696429602077696c6c206572726f722e00a820287469636b65722c207363686564756c6520494429202d3e207374726f6e672072656620636f756e74385363686564756c65506f696e74730101080205190a050a04000cc420416c6c2074686520636865636b706f696e7473206120676976656e207363686564756c65206f726967696e617465642e00a420287469636b65722c207363686564756c6520494429202d3e205b636865636b706f696e742049445d3853746f7261676556657273696f6e01001d0a040004442053746f726167652076657273696f6e2e01910701ad020001210a1c44436f6d706c69616e63654d616e616765720144436f6d706c69616e63654d616e616765720c404173736574436f6d706c69616e63657301010402a8250a08000004e820417373657420636f6d706c69616e636520666f722061207469636b657220285469636b6572202d3e204173736574436f6d706c69616e6365294854727573746564436c61696d49737375657201010402a8e102040004dc204c697374206f66207472757374656420636c61696d20697373756572205469636b6572202d3e20497373756572204964656e746974793853746f7261676556657273696f6e0100290a040004442053746f726167652076657273696f6e2e01950701c50204584d6178436f6e646974696f6e436f6d706c657869747910103200000000012d0a1d3c436f72706f72617465416374696f6e013c436f72706f72617465416374696f6e24404d617844657461696c734c656e67746801001010000000001c5d012044657465726d696e657320746865206d6178696d756d206e756d626572206f6620627974657320746861742074686520667265652d666f726d206064657461696c7360206f6620612043412063616e2073746f72652e002901204e6f746520746861742074686973206973206e6f7420746865206e756d626572206f662060636861726073206f7220746865206e756d626572206f66205b6772617068656d65735d2e4101205768696c652074686973206d617920626520756e6e61747572616c20696e207465726d73206f662068756d616e20756e6465727374616e64696e67206f66206120746578742773206c656e6774682c6501206974206d6f726520636c6f73656c79207265666c656374732061637475616c2073746f7261676520636f73747320286027612760206973206368656170657220746f2073746f7265207468616e20616e20656d6f6a69292e00d0205b6772617068656d65735d3a2068747470733a2f2f656e2e77696b6970656469612e6f72672f77696b692f4772617068656d655c44656661756c745461726765744964656e74697469657301010402a8fd0208000110f020546865206964656e7469746965732074617267657465642062792064656661756c7420666f722043417320666f722074686973207469636b65722c8c2065697468657220746f206265206578636c75646564206f7220696e636c756465642e007820287469636b6572203d3e20746172676574206964656e746974696573295444656661756c7457697468686f6c64696e6754617801010402a8a902100000000020ad01205468652064656661756c7420616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722074686973207469636b6572207768656e20646973747269627574696e67206469766964656e64732e00350120546f20756e6465727374616e642077697468686f6c64696e67207461782c20652e672e2c206c6574277320617373756d65207468617420796f7520686f6c642041434d45207368617265732ec42041434d45206e6f77206465636964657320746f2064697374726962757465203130302053454b20746f20416c6963652e590120416c696365206c6976657320696e2053776564656e2c20736f20536b617474657665726b6574202874686520537765646973682074617820617574686f72697479292077616e747320333025206f6620746861742e5d01205468656e2074686f736520313030202a2033302520617265207769746868656c642066726f6d20416c6963652c20616e642041434d452077696c6c2073656e64207468656d20746f20536b617474657665726b65742e006820287469636b6572203d3e202520746f2077697468686f6c64294444696457697468686f6c64696e6754617801010402a81d0304001049012054686520616d6f756e74206f662074617820746f2077697468686f6c6420282277697468686f6c64696e6720746178222c2057542920666f722061206365727461696e207469636b65722078204449442e6d0120496620616e20656e7472792065786973747320666f722061206365727461696e204449442c206974206f7665727269646573207468652064656661756c7420696e206044656661756c7457697468686f6c64696e67546178602e008820287469636b6572203d3e205b286469642c202520746f2077697468686f6c64295d304341496453657175656e636501010402a8a102100000000008b420546865206e657874207065722d605469636b65726020434120494420696e207468652073657175656e63652e4d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652e40436f72706f72617465416374696f6e730001080205310a09030400146c20416c6c207265636f72646564204341732074687573206661722ea4204f6e6c792067656e6572696320696e666f726d6174696f6e2069732073746f72656420686572652e7d01205370656369666963206043414b696e6460732c20652e672e2c2062656e656669747320616e6420636f72706f726174652062616c6c6f74732c206d617920757365206164646974696f6e616c206f6e2d636861696e2073746f726167652e00b420287469636b6572203d3e206c6f63616c204944203d3e2074686520636f72706f7261746520616374696f6e29244341446f634c696e6b010104029d022903040014d0204173736f63696174696f6e732066726f6d2043417320746f2060446f63756d656e74607320766961207468656972204944732e5c202843414964203d3e205b446f63756d656e7449645d29000501205468652060436f72706f72617465416374696f6e7360206d61702073746f72657320605469636b6572203d3e204c6f63616c4964203d3e20546865204341602c250120736f2077652063616e20696e66657220605469636b6572203d3e2043414964602e205468657265666f72652c20776520646f6e2774206e656564206120646f75626c65206d61702e1c44657461696c73010104029d022503040008e8204173736f6369617465732064657461696c7320696e20667265652d666f726d207465787420776974682061204341206279206974732049442e50202843414964203d3e20434144657461696c73293853746f7261676556657273696f6e0100350a040004442053746f726167652076657273696f6e2e01990701f90208304d61785461726765744964731010e803000000284d6178446964576874731010e80300000001390a1e3c436f72706f7261746542616c6c6f74013c436f72706f7261746542616c6c6f7418144d65746173000104029d02350304000c80204d65746164617461206f66206120636f72706f726174652062616c6c6f742e005420284341496429203d3e2042616c6c6f744d6574612854696d6552616e676573000104029d023103040010e42054696d652064657461696c73206f66206120636f72706f726174652062616c6c6f74206173736f636961746564207769746820612043412ed0205468652074696d657374616d70732064656e6f7465207768656e20766f74696e672073746172747320616e642073746f70732e006820284341496429203d3e2042616c6c6f7454696d6552616e6765404d6f74696f6e4e756d43686f69636573010104029d024906040024c82053746f72657320686f77206d616e792063686f696365732074686572652061726520696e2065616368206d6f74696f6e2e00250120417420616c6c2074696d65732c2074686520696e76617269616e7420686f6c6473207468617420606d6f74696f6e5f63686f696365735b6964785d6020697320657175616c20746f310120606d657461732e756e7772617028292e6d6f74696f6e735b6964785d2e63686f696365732e6c656e2829602e20546861742069732c2074686973206973206a75737420612063616368652c1101207573656420746f2061766f6964206665746368696e6720616c6c20746865206d6f74696f6e732077697468207468656972206173736f6369617465642074657874732e0001012060753136602063686f696365732073686f756c64206265206d6f7265207468616e20656e6f75676820746f20666974207265616c207573652063617365732e00b020284341496429203d3e204e756d626572206f662063686f6963657320696e2065616368206d6f74696f6e2e0c524356010104029d022901040010dc2049732072616e6b65642063686f69636520766f74696e6720285243562920656e61626c656420666f7220746869732062616c6c6f743f650120466f7220616e20756e6465727374616e64696e67206f6620686f77205243562069732068616e646c65642c20736565206e6f7465206f6e206042616c6c6f74566f7465602773206066616c6c6261636b60206669656c642e003c20284341496429203d3e20626f6f6c1c526573756c7473010104029d023d0a04001cb02053746f7265732074686520746f74616c20766f74652074616c6c79206f6e20656163682063686f6963652e006820524356206973206e6f74206163636f756e74656420666f722cd02061732074686572652061726520746f6f206d616e792077616e747320746f20696e74657270726574207468652067726170682c9c20616e64206265636175736520697420776f756c64206e6f7420626520656666696369656e742e008420284341496429203d3e205b63757272656e7420766f746520776569676874735d14566f7465730101080206f1095503040018ac2053746f726573206561636820444944277320766f74657320696e206120676976656e2062616c6c6f742ef8205365652074686520646f63756d656e746174696f6e206f66206042616c6c6f74566f74656020666f72206e6f746573206f6e2073656d616e746963732e008420284341496429203d3e202844494429203d3e205b766f7465207765696768745d001d012055736572206d75737420656e746572203020766f746520776569676874206966207468657920646f6e27742077616e7420746f20766f746520666f7220612063686f6963652e01b107012d030001410a1f2c5065726d697373696f6e730000000001450a201050697073011050697073584c5072756e65486973746f726963616c5069707301002901040004fc2044657465726d696e6573207768657468657220686973746f726963616c20504950206461746120697320706572736973746564206f722072656d6f766564584d696e696d756d50726f706f73616c4465706f7369740100184000000000000000000000000000000000041d0120546865206d696e696d756d20616d6f756e7420746f20626520757365642061732061206465706f73697420666f7220636f6d6d756e69747920504950206372656174696f6e2e5844656661756c74456e6163746d656e74506572696f6401001010000000000439012044656661756c7420656e6163746d656e7420706572696f6420746861742077696c6c2062652075736520616674657220612070726f706f73616c2069732061636365707465642062792047432e4050656e64696e6750697045787069727901004901040108f420486f77206d616e7920626c6f636b732077696c6c2069742074616b652c2061667465722061206050656e64696e67602050495020657870697265732cf420617373756d696e6720697420686173206e6f74207472616e736974696f6e656420746f20616e6f74686572206050726f706f73616c5374617465603f3c4d6178506970536b6970436f756e740100080400048901204d6178696d756d2074696d65732061205049502063616e20626520736b6970706564206265666f72652074726967676572696e67206043616e6e6f74536b69705069706020696e2060656e6163745f736e617073686f745f726573756c7473602e384163746976655069704c696d6974010010100000000008c420546865206d6178696d756d20616c6c6f776564206e756d62657220666f722060416374697665506970436f756e74602e0101204f6e636520726561636865642c206e657720504950732063616e6e6f742062652070726f706f73656420627920636f6d6d756e697479206d656d626572732e34506970496453657175656e63650100710310000000000409012050726f706f73616c7320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f662050495073206f66662d636861696e2e48536e617073686f74496453657175656e6365010085031000000000041d0120536e617073686f747320736f206661722e2069642063616e206265207573656420746f206b65657020747261636b206f6620736e617073686f7473206f66662d636861696e2e38416374697665506970436f756e74010010100000000004c820546f74616c20636f756e74206f662063757272656e742070656e64696e67206f72207363686564756c656420504950732e4050726f706f73616c4d65746164617461000104057103490a0400049820546865206d65746164617461206f6620746865206163746976652070726f706f73616c732e204465706f7369747300010805054d0a510a040008842054686f73652077686f2068617665206c6f636b65642061206465706f7369742e8c2070726f706f73616c202869642c2070726f706f73657229202d3e206465706f7369742450726f706f73616c73000104057103550a040008c42041637475616c2070726f706f73616c20666f72206120676976656e2069642c20696620697427732063757272656e742e602070726f706f73616c206964202d3e2070726f706f73616c3850726f706f73616c526573756c74010104057103590aa00000000000000000000000000000000000000000000000000000000000000000000000000000000008d420506f6c796d657368566f746573206f6e206120676976656e2070726f706f73616c2c206966206974206973206f6e676f696e672e682070726f706f73616c206964202d3e20766f746520636f756e743450726f706f73616c566f74657300010805054d0a5d0a040008050120566f746573207065722050726f706f73616c20616e64206163636f756e742e205573656420746f2061766f696420646f75626c6520766f74652069737375652e7c202870726f706f73616c2069642c206163636f756e7429202d3e20566f746534506970546f5363686564756c6500010405710310040004fc204d617073205049507320746f2074686520626c6f636b20617420776869636820746865792077696c6c2062652065786563757465642c20696620616e792e244c697665517565756501008903040018cc2041206c697665207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029a0206f662070656e64696e67205049507320757020746f2074686520616374697665206c696d69742ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e00450120556e6c696b652060536e617073686f745175657565602c2074686973207175657565206973206c6976652c2067657474696e6720757064617465642077697468206561636820766f746520636173742e2d012054686520736e617073686f74206973207468657265666f726520657373656e7469616c6c79206120706f696e742d696e2d74696d6520636c6f6e65206f6620746869732071756575652e34536e617073686f74517565756501008903040014590120546865207072696f7269747920717565756520286c6f77657374207072696f7269747920617420696e646578203029206f6620504950732061742074686520706f696e74206f6620736e617073686f7474696e672ef4205072696f7269747920697320646566696e65642062792074686520607765696768746020696e207468652060536e617073686f74746564506970602e000901204120717565756564205049502063616e20626520736b69707065642e20446f696e6720736f2062756d70732074686520607069705f736b69705f636f756e74602e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e30536e617073686f744d6574610000610a040004bc20546865206d65746164617461206f662074686520736e617073686f742c206966207468657265206973206f6e652e30506970536b6970436f756e7401010405710308040008d020546865206e756d626572206f662074696d65732061206365727461696e2050495020686173206265656e20736b69707065642e3501204f6e636520612028636f6e666967757261626c652920746872657368686f6c642069732065786365656465642c2061205049502063616e6e6f7420626520736b697070656420616761696e2e34436f6d6d6974746565506970730100a103040008d420416c6c206578697374696e672050495073207768657265207468652070726f706f736572206973206120636f6d6d69747465652e39012054686973206c6973742069732061206361636865206f6620616c6c2069647320696e206050726f706f73616c73602077697468206050726f706f7365723a3a436f6d6d6974746565285f29602e3850726f706f73616c53746174657300010405710381030400087c2050726f706f73616c20737461746520666f72206120676976656e2069642e742070726f706f73616c206964202d3e2070726f706f73616c53746174653853746f7261676556657273696f6e0100650a04000001b5070165030001690a2124506f7274666f6c696f0124506f7274666f6c696f344c4e657874506f7274666f6c696f4e756d6265720101040680e820010000000000000004cc20546865206e65787420706f7274666f6c696f2073657175656e6365206e756d626572206f6620616e206964656e746974792e28506f7274666f6c696f7300010806056d0aa90304000c41012054686520736574206f66206578697374696e6720706f7274666f6c696f732077697468207468656972206e616d65732e2049662061206365727461696e2070616972206f6620612044494420616e64590120706f7274666f6c696f206e756d626572206d61707320746f20604e6f6e6560207468656e2073756368206120706f7274666f6c696f20646f65736e27742065786973742e20436f6e76657273656c792c206966206135012070616972206d61707320746f2060536f6d65286e616d652960207468656e2073756368206120706f7274666f6c696f2065786973747320616e642069732063616c6c656420606e616d65602e304e616d65546f4e756d6265720001080602710ae8040008e420496e7665727365206d6170206f662060506f7274666f6c696f7360207573656420746f20656e737572652062696a6563746976697469792ca420616e6420756e697175656e657373206f66206e616d657320696e2060506f7274666f6c696f73602e4c506f7274666f6c696f4173736574436f756e7401010405e02820000000000000000004fc20486f77206d616e79206173736574732077697468206e6f6e2d7a65726f2062616c616e6365207468697320706f7274666f6c696f20636f6e7461696e732e58506f7274666f6c696f417373657442616c616e6365730101080502750a1840000000000000000000000000000000000488205468652061737365742062616c616e636573206f6620706f7274666f6c696f732e54506f7274666f6c696f4c6f636b65644173736574730101080502750a18400000000000000000000000000000000008a020416d6f756e74206f6620617373657473206c6f636b656420696e206120706f7274666f6c696f2e2d01205468657365206173736574732073686f7720757020696e20706f7274666f6c696f2062616c616e6365206275742063616e206e6f74206265207472616e7366657272656420617761792e48506f7274666f6c696f437573746f6469616e00010405e08004000481012054686520637573746f6469616e206f66206120706172746963756c617220706f7274666f6c696f2e204e6f6e6520696d706c696573207468617420746865206964656e74697479206f776e65722069732074686520637573746f6469616e2e4c506f7274666f6c696f73496e437573746f64790101080605790a290104000c550120547261636b7320616c6c2074686520706f7274666f6c696f7320696e20637573746f6479206f66206120706172746963756c6172206964656e746974792e204f6e6c79207573656420627920746865205549732ea501205768656e206074727565602069732073746f726564206173207468652076616c756520666f72206120676976656e2060286469642c2070696429602c206974206d65616e73207468617420607069646020697320696e20637573746f6479206f662060646964602ea501206066616c7365602076616c75657320617265206e65766572206578706c696369746c792073746f72656420696e20746865206d61702c20616e642061726520696e737465616420696e6665727265642062792074686520616273656e6365206f662061206b65792e30506f7274666f6c696f4e465401010805027d0a29010400049420546865206e6674206173736f63696174656420746f2074686520706f7274666f6c696f2e48506f7274666f6c696f4c6f636b65644e465401010805027d0a29010400049820416c6c206c6f636b6564206e667420666f72206120676976656e20706f7274666f6c696f2e54507265417070726f766564506f7274666f6c696f730101080502750a2901040004310120416c6c20706f7274666f6c696f73207468617420646f6e2774206e65656420746f2061666669726d2074686520726563656976656d656e74206f66206120676976656e207469636b65722e44416c6c6f776564437573746f6469616e730101080606cd0529010400043d0120437573746f6469616e7320616c6c6f77656420746f2063726561746520616e642074616b6520637573746f6479206f6620706f7274666f6c696f73206f6e20616e206964277320626568616c662e3853746f7261676556657273696f6e0100850a040004442053746f726167652076657273696f6e2e01c50701a5030001890a222c50726f746f636f6c466565012c50726f746f636f6c4665650820426173654665657301010405d50718400000000000000000000000000000000004150120546865206d617070696e67206f66206f7065726174696f6e206e616d657320746f2074686520626173652066656573206f662074686f7365206f7065726174696f6e732e2c436f656666696369656e740100c903200100000001000000041501205468652066656520636f656666696369656e74206173206120706f73697469766520726174696f6e616c20286e756d657261746f722c2064656e6f6d696e61746f72292e01d10701c50300018d0a23245363686564756c657201245363686564756c65720c3c496e636f6d706c65746553696e6365000010040000184167656e64610101040510910a0400044d01204974656d7320746f2062652065786563757465642c20696e64657865642062792074686520626c6f636b206e756d626572207468617420746865792073686f756c64206265206578656375746564206f6e2e184c6f6f6b75700001040504d103040010f8204c6f6f6b75702066726f6d2061206e616d6520746f2074686520626c6f636b206e756d62657220616e6420696e646578206f6620746865207461736b2e00590120466f72207633202d3e207634207468652070726576696f75736c7920756e626f756e646564206964656e7469746965732061726520426c616b65322d3235362068617368656420746f20666f726d2074686520763430206964656e7469746965732e01d90701cd0308344d6178696d756d57656967687420400b00806e87740113cccccccccccccccc04290120546865206d6178696d756d207765696768742074686174206d6179206265207363686564756c65642070657220626c6f636b20666f7220616e7920646973706174636861626c65732e504d61785363686564756c6564506572426c6f636b101032000000041d0120546865206d6178696d756d206e756d626572206f66207363686564756c65642063616c6c7320696e2074686520717565756520666f7220612073696e676c6520626c6f636b2e01a90a2428536574746c656d656e740128536574746c656d656e74582456656e7565496e666f00010405dd03ad0a0400049820496e666f2061626f757420612076656e75652e2076656e75655f6964202d3e2076656e75651c44657461696c7301010405dd03e103040008e420467265652d666f726d20746578742061626f757420612076656e75652e2076656e75655f6964202d3e206056656e756544657461696c736060204f6e6c79206e656564656420666f72207468652055492e4456656e7565496e737472756374696f6e730101080505b10a450100107020496e737472756374696f6e7320756e64657220612076656e75652e60204f6e6c79206e656564656420666f72207468652055492e00842076656e75655f6964202d3e20696e737472756374696f6e5f6964202d3e2028293056656e75655369676e6572730101080505b50a2901040004e4205369676e65727320616c6c6f776564206279207468652076656e75652e202876656e75655f69642c207369676e657229202d3e20626f6f6c285573657256656e7565730101080505b90a450100147101204172726179206f662076656e756573206372656174656420627920616e206964656e746974792e204f6e6c79206e656564656420666f72207468652055492e204964656e746974794964202d3e205665633c76656e75655f69643e782056656e7565732063726561746520627920616e206964656e746974792e60204f6e6c79206e656564656420666f72207468652055492e0060206964656e74697479202d3e2076656e75655f696420282948496e737472756374696f6e44657461696c73010104058d02bd0a5000000000000000000000000000000000000000000411012044657461696c732061626f757420616e20696e737472756374696f6e2e20696e737472756374696f6e5f6964202d3e20696e737472756374696f6e5f64657461696c7350496e737472756374696f6e4c65675374617475730101080505c10ac50a040004310120537461747573206f662061206c656720756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c656753746174757364496e737472756374696f6e41666669726d7350656e64696e67010104058d0228200000000000000000048101204e756d626572206f662061666669726d6174696f6e732070656e64696e67206265666f726520696e737472756374696f6e2069732065786563757465642e20696e737472756374696f6e5f6964202d3e2061666669726d5f70656e64696e673c41666669726d7352656365697665640101080505c90acd0a040004990120547261636b732061666669726d6174696f6e7320726563656976656420666f7220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c20636f756e7465725f706172747929202d3e2041666669726d6174696f6e537461747573405573657241666669726d6174696f6e730101080505d10acd0a04000855012048656c70732061207573657220747261636b2074686569722070656e64696e6720696e737472756374696f6e7320616e642061666669726d6174696f6e7320286f6e6c79206e656564656420666f72205549292ed42028636f756e7465725f70617274792c20696e737472756374696f6e5f696429202d3e2041666669726d6174696f6e537461747573305265636569707473557365640101080502d5082901040004150120547261636b7320726564656d7074696f6e206f662072656365697074732e20287369676e65722c20726563656970745f75696429202d3e20726563656970745f757365643856656e756546696c746572696e6701010402a82901040004fd0120547261636b73206966206120746f6b656e2068617320656e61626c65642066696c746572696e672076656e75657320746861742063616e2063726561746520696e737472756374696f6e7320696e766f6c76696e6720746865697220746f6b656e2e205469636b6572202d3e2066696c746572696e675f656e61626c65643856656e7565416c6c6f774c6973740101080205d50a2901040008c5012056656e75657320746861742061726520616c6c6f77656420746f2063726561746520696e737472756374696f6e7320696e766f6c76696e67206120706172746963756c6172207469636b65722e204f6e6c7920757365642069662066696c746572696e6720697320656e61626c65642e7820287469636b65722c2076656e75655f696429202d3e20616c6c6f7765643056656e7565436f756e7465720100dd03200000000000000000041901204e756d626572206f662076656e75657320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d6265722948496e737472756374696f6e436f756e74657201008d02200000000000000000043101204e756d626572206f6620696e737472756374696f6e7320696e207468652073797374656d202849742773206f6e65206d6f7265207468616e207468652061637475616c206e756d626572293853746f7261676556657273696f6e0100d90a040004442053746f726167652076657273696f6e2e40496e737472756374696f6e4d656d6f73000104058d02880400044420496e737472756374696f6e206d656d6f4c496e737472756374696f6e5374617475736573010104058d02dd0a040004e820496e737472756374696f6e2073746174757365732e20696e737472756374696f6e5f6964202d3e20496e737472756374696f6e5374617475733c496e737472756374696f6e4c6567730001080505c10a0104040004ec204c65677320756e64657220616e20696e737472756374696f6e2e2028696e737472756374696f6e5f69642c206c65675f696429202d3e204c6567504f6666436861696e41666669726d6174696f6e730101080505c10acd0a040004d90120547261636b73207468652061666669726d6174696f6e2073746174757320666f72206f6666636861696e206c65677320696e206120696e737472756374696f6e2e205b6028496e737472756374696f6e49642c204c6567496429605d202d3e205b6041666669726d6174696f6e537461747573605d504e756d6265724f6656656e75655369676e65727301010405dd0310100000000004b420547261636b7320746865206e756d626572206f66207369676e65727320656163682076656e7565206861732e80496e737472756374696f6e4d65646961746f727341666669726d6174696f6e730101080506e10ae50a040004a8205468652073746174757320666f7220746865206d65646961746f72732061666669726d6174696f6e2e01e10701d9030001e90a252853746174697374696373012853746174697374696373144041637469766541737365745374617473010104020904ed0a040004d1012041637469766520737461747320666f722061207469636b65722f636f6d70616e792e202054686572652073686f756c642062652061206d6178206c696d6974206f6e20746865206e756d626572206f662061637469766520737461747320666f722061207469636b65722f636f6d70616e792e28417373657453746174730101080202f10a18400000000000000000000000000000000004342041737365742073746174732e6041737365745472616e73666572436f6d706c69616e636573010104020904f90a080000043d01204173736574207472616e7366657220636f6d706c69616e636520666f722061207469636b65722028417373657453636f7065202d3e2041737365745472616e73666572436f6d706c69616e6365297c5472616e73666572436f6e646974696f6e4578656d7074456e7469746965730101080202010b2901040004c420456e746974696573206578656d70742066726f6d2061205472616e7366657220436f6d706c69616e63652072756c652e3853746f7261676556657273696f6e0100050b0400046c2053746f72616765206d6967726174696f6e2076657273696f6e2e010d0801050408404d61785374617473506572417373657410100a00000000744d61785472616e73666572436f6e646974696f6e7350657241737365741010040000000001090b260c53746f010c53746f0c2c46756e647261697365727300010802050d0b5504040008b020416c6c2066756e64726169736572732074686174206172652063757272656e746c792072756e6e696e672e9820287469636b65722c2066756e647261697365725f696429202d3e2046756e647261697365723c46756e64726169736572436f756e7401010402a84d04200000000000000000049c20546f74616c2066756e6472616973657273206372656174656420666f72206120746f6b656e2e3c46756e647261697365724e616d657300010802050d0b5104040008b4204e616d6520666f72207468652046756e647261697365722e204f6e6c792075736564206f6666636861696e2eac20287469636b65722c2066756e647261697365725f696429202d3e2046756e64726169736572206e616d65011d080149040001110b2720547265617375727900012d080165040001150b281c5574696c697479011c5574696c69747904184e6f6e6365730101040500282000000000000000000858204e6f6e636520666f72206072656c61795f7478602e4420504f4c594d4553483a2061646465642e013908016904044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01190b29104261736500015d0801790404184d61784c656e10100008000000011d0b2a3845787465726e616c4167656e7473013845787465726e616c4167656e747314304147496453657175656e636501010402a82501100000000010b420546865206e657874207065722d605469636b65726020414720494420696e207468652073657175656e63652e004d01205468652066756c6c20494420697320646566696e6564206173206120636f6d62696e6174696f6e206f6620605469636b65726020616e642061206e756d62657220696e20746869732073657175656e63652c90207768696368207374617274732066726f6d20312c20726174686572207468616e20302e1c4167656e744f660101080202d109450100042901204d61707320616e206167656e742028604964656e746974794964602920746f20616c6c20616c6c20605469636b6572607320746865792062656c6f6e6720746f2c20696620616e792e3047726f75704f664167656e740001080205c90921010400043501204d617073206167656e74732028604964656e746974794964602920666f72206120605469636b65726020746f207768617420414720746865792062656c6f6e6720746f2c20696620616e792e344e756d46756c6c4167656e747301010402a810100000000004dc204d617073206120605469636b65726020746f20746865206e756d626572206f66206046756c6c60206167656e747320666f722069742e4047726f75705065726d697373696f6e730001080205210bb80400045d0120466f7220637573746f6d20414773206f66206120605469636b6572602c206d61707320746f2077686174207065726d697373696f6e7320616e206167656e7420696e207468617420414720776f756c6420686176652e0161080181040001250b2b1c52656c61796572011c52656c6179657204245375627369646965730001040200290b040018ec20546865207375627369647920666f7220612060757365725f6b657960206966207468657920617265206265696e6720737562736964697365642c882061732061206d61702060757365725f6b657960203d3e206053756273696479602e0009012041206b65792063616e206f6e6c792068617665206f6e65207375627369647920617420612074696d652e2020546f206368616e67652073756273696469736572731d012061206b6579206e6565647320746f2063616c6c206072656d6f76655f706179696e675f6b65796020746f2072656d6f7665207468652063757272656e7420737562736964792ca4206265666f726520746865792063616e206163636570742061206e657720737562736964697365722e01650801850400012d0b2c24436f6e7472616374730124436f6e74726163747318305072697374696e65436f6465000104062c310b04000465012041206d617070696e672066726f6d20616e206f726967696e616c20636f6465206861736820746f20746865206f726967696e616c20636f64652c20756e746f756368656420627920696e737472756d656e746174696f6e2e2c436f646553746f72616765000104062c350b04000465012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420696e737472756d656e746564207761736d20636f64652c20726561647920666f7220657865637574696f6e2e2c4f776e6572496e666f4f66000104062c3d0b0400040d012041206d617070696e67206265747765656e20616e206f726967696e616c20636f6465206861736820616e6420697473206f776e657220696e666f726d6174696f6e2e144e6f6e6365010028200000000000000000581d0120546869732069732061202a2a6d6f6e6f746f6e69632a2a20636f756e74657220696e6372656d656e746564206f6e20636f6e747261637420696e7374616e74696174696f6e2e0005012054686973206973207573656420696e206f7264657220746f2067656e657261746520756e6971756520747269652069647320666f7220636f6e7472616374732e2901205468652074726965206964206f662061206e657720636f6e74726163742069732063616c63756c617465642066726f6d2068617368286163636f756e745f69642c206e6f6e6365292e350120546865206e6f6e63652069732072657175697265642062656361757365206f74686572776973652074686520666f6c6c6f77696e672073657175656e636520776f756c64206c65616420746f84206120706f737369626c6520636f6c6c6973696f6e206f662073746f726167653a006820312e204372656174652061206e657720636f6e74726163742e6c20322e205465726d696e6174652074686520636f6e74726163742efc20332e20496d6d6564696174656c792072656372656174652074686520636f6e74726163742077697468207468652073616d65206163636f756e745f69642e00450120546869732069732062616420626563617573652074686520636f6e74656e7473206f6620612074726965206172652064656c65746564206c617a696c7920616e64207468657265206d6967687420626559012073746f72616765206f6620746865206f6c6420696e7374616e74696174696f6e207374696c6c20696e206974207768656e20746865206e657720636f6e747261637420697320637265617465642e20506c656173655901206e6f746520746861742077652063616e2774207265706c6163652074686520636f756e7465722062792074686520626c6f636b206e756d6265722062656361757365207468652073657175656e63652061626f766551012063616e2068617070656e20696e207468652073616d6520626c6f636b2e20576520616c736f2063616e2774206b65657020746865206163636f756e7420636f756e74657220696e206d656d6f7279206f6e6c79490120626563617573652073746f7261676520697320746865206f6e6c792077617920746f20636f6d6d756e6963617465206163726f737320646966666572656e742065787472696e7369637320696e20746865302073616d6520626c6f636b2e001c2023204e6f7465003d0120446f206e6f742075736520697420746f2064657465726d696e6520746865206e756d626572206f6620636f6e7472616374732e20497420776f6e27742062652064656372656d656e74656420696664206120636f6e74726163742069732064657374726f7965642e38436f6e7472616374496e666f4f660001040500410b04000ca82054686520636f6465206173736f6369617465642077697468206120676976656e206163636f756e742e00d02054574f582d4e4f54453a20534146452073696e636520604163636f756e7449646020697320612073656375726520686173682e3444656c6574696f6e51756575650100490b040010c8204576696374656420636f6e7472616374732074686174206177616974206368696c6420747269652064656c6574696f6e2e004901204368696c6420747269652064656c6574696f6e2069732061206865617679206f7065726174696f6e20646570656e64696e67206f6e2074686520616d6f756e74206f662073746f72616765206974656d7359012073746f72656420696e207361696420747269652e205468657265666f72652074686973206f7065726174696f6e20697320706572666f726d6564206c617a696c7920696e20606f6e5f696e697469616c697a65602e01690801890424205363686564756c65550b31080400000000010000000400008000000010000000001000000001000020000000004000000400000000000000eb260000b56b0000f7bb0000703100003a360000270f000087190000512c00004c000000ca81010055db0100662b00004d0400000a2d0000e7320000022b0000403a0000774b0000202c0000cdc8ef008d2d0000d62a0000a92b0000aa2b0000ba2b0000441c0000081e00003e2c00008d270000033000005f2e0000e2230000962e00002a2b0000862000000a3000009f2e0000832e0000712c0000572e0000192c0000ab370000032e0000c435000007310000202c00009b2b0000902b0000402d0000b92d0000212a0000a92d0000daec2c0000b626500d008683ba0d000a5c3f00007e181400001ae22e0000ea4d2d0000eebcb400000e852e0000ceb72a0000fab92d00009a822e0000ae95970000a233100000d6e7260000b50200d60a6a0000d505000319b6e98600e68bd600000e9f900100161dad3c005514004e211a0000510c00e2d3133e00f265010000a25e01000026ec56840002960e3e0016620100005a97ee0d00d55100f2d3fe0d003d6c00aab0233e001679010000fe45827200032cdeb947001e1f2aad00e270720000c10200036ed54c9800ce4f900d00ad1e00711f00dee22e0000d50e008634380000d13500f63b2900007119007e2e4c0000711900d2c9160c0092899903008a3617000056a918000076aa160000046820436f7374207363686564756c6520616e64206c696d6974732e4844656c6574696f6e517565756544657074681010000400003c090120546865206d6178696d756d206e756d626572206f6620636f6e74726163747320746861742063616e2062652070656e64696e6720666f722064656c6574696f6e2e003d01205768656e206120636f6e74726163742069732064656c657465642062792063616c6c696e6720607365616c5f7465726d696e61746560206974206265636f6d657320696e61636365737369626c654d0120696d6d6564696174656c792c20627574207468652064656c6574696f6e206f66207468652073746f72616765206974656d732069742068617320616363756d756c6174656420697320706572666f726d65642901206c617465722e2054686520636f6e74726163742069732070757420696e746f207468652064656c6574696f6e2071756575652e205468697320646566696e657320686f77206d616e795d0120636f6e7472616374732063616e20626520717565756564207570206174207468652073616d652074696d652e2049662074686174206c696d6974206973207265616368656420607365616c5f7465726d696e6174656015012077696c6c206661696c2e2054686520616374696f6e206d757374206265207265747269656420696e2061206c6174657220626c6f636b20696e207468617420636173652e00b82054686520726561736f6e7320666f72206c696d6974696e6720746865207175657565206465707468206172653a00590120312e2054686520717565756520697320696e2073746f7261676520696e206f7264657220746f2062652070657273697374656e74206265747765656e20626c6f636b732e2057652077616e7420746f206c696d6974b4200974686520616d6f756e74206f662073746f7261676520746861742063616e20626520636f6e73756d65642e4d0120322e205468652071756575652069732073746f72656420696e206120766563746f7220616e64206e6565647320746f206265206465636f64656420617320612077686f6c65207768656e2072656164696e674501090969742061742074686520656e64206f66206561636820626c6f636b2e204c6f6e676572207175657565732074616b65206d6f72652077656967687420746f206465636f646520616e642068656e6365e809096c696d69742074686520616d6f756e74206f66206974656d7320746861742063616e2062652064656c657465642070657220626c6f636b2e4c44656c6574696f6e5765696768744c696d6974201c070088526a7400184d0120546865206d6178696d756d20616d6f756e74206f662077656967687420746861742063616e20626520636f6e73756d65642070657220626c6f636b20666f72206c617a7920747269652072656d6f76616c2e005d012054686520616d6f756e74206f66207765696768742074686174206973206465646963617465642070657220626c6f636b20746f20776f726b206f6e207468652064656c6574696f6e2071756575652e204c617267657245012076616c75657320616c6c6f77206d6f72652074726965206b65797320746f2062652064656c6574656420696e206561636820626c6f636b20627574207265647563652074686520616d6f756e74206f664101207765696768742074686174206973206c65667420666f72207472616e73616374696f6e732e20536565205b6053656c663a3a44656c6574696f6e51756575654465707468605d20666f72206d6f72659820696e666f726d6174696f6e2061626f7574207468652064656c6574696f6e2071756575652e384465706f73697450657242797465184060ea00000000000000000000000000001411012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682062797465206f662073746f726167652e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e384465706f7369745065724974656d1840f04902000000000000000000000000001405012054686520616d6f756e74206f662062616c616e636520612063616c6c65722068617320746f2070617920666f7220656163682073746f72616765206974656d2e001c2023204e6f7465002901204368616e67696e6720746869732076616c756520666f7220616e206578697374696e6720636861696e206d69676874206e65656420612073746f72616765206d6967726174696f6e2e284d6178436f64654c656e101000ec01001c5d0120546865206d6178696d756d206c656e677468206f66206120636f6e747261637420636f646520696e2062797465732e2054686973206c696d6974206170706c69657320746f2074686520696e737472756d656e74656451012076657273696f6e206f662074686520636f64652e205468657265666f72652060696e7374616e74696174655f776974685f636f6465602063616e206661696c206576656e207768656e20737570706c79696e679c2061207761736d2062696e6172792062656c6f772074686973206d6178696d756d2073697a652e005901205468652076616c75652073686f756c642062652063686f73656e206361726566756c6c792074616b696e6720696e746f20746865206163636f756e7420746865206f766572616c6c206d656d6f7279206c696d6974f020796f75722072756e74696d65206861732c2061732077656c6c20617320746865205b6d6178696d756d20616c6c6f7765642063616c6c737461636b5d012064657074685d28236173736f636961746564747970652e43616c6c537461636b292e204c6f6f6b20696e746f207468652060696e746567726974795f7465737428296020666f7220736f6d6520696e7369676874732e404d617853746f726167654b65794c656e10108000000004e020546865206d6178696d756d20616c6c6f7761626c65206c656e67746820696e20627974657320666f722073746f72616765206b6579732e5c556e73616665556e737461626c65496e7465726661636529010400241101204d616b6520636f6e74726163742063616c6c61626c652066756e6374696f6e73206d61726b65642061732060235b756e737461626c655d6020617661696c61626c652e003d0120436f6e7472616374732074686174207573652060235b756e737461626c655d602066756e6374696f6e7320776f6e27742062652061626c6520746f2062652075706c6f6164656420756e6c657373450120746869732069732073657420746f206074727565602e2054686973206973206f6e6c79206d65616e7420666f7220746573746e65747320616e6420646576206e6f64657320696e206f7264657220746f78206578706572696d656e742077697468206e65772066656174757265732e00282023205761726e696e6700c020446f202a2a6e6f742a2a2073657420746f20607472756560206f6e2070726f64756374696f6e7320636861696e732e444d617844656275674275666665724c656e10100000200004c420546865206d6178696d756d206c656e677468206f66207468652064656275672062756666657220696e2062797465732e01650b2e44506f6c796d657368436f6e7472616374730144506f6c796d657368436f6e747261637473105043616c6c52756e74696d6557686974656c6973740101040699042901040004f42057686974656c697374206f662065787472696e7369637320616c6c6f77656420746f2062652063616c6c65642066726f6d20636f6e7472616374732e3853746f7261676556657273696f6e0100690b040004442053746f726167652076657273696f6e2e384170694e6578745570677261646500010405910489080400040d012053746f7265732074686520636861696e2076657273696f6e20616e6420636f6465206861736820666f7220746865206e65787420636861696e20757067726164652e3843757272656e74417069486173680001040591048d08040004a82053746f7265732074686520636f6465206861736820666f72207468652063757272656e74206170692e017d08018d0400016d0b2f20507265696d6167650120507265696d6167650824537461747573466f72000104062c710b0400049020546865207265717565737420737461747573206f66206120676976656e20686173682e2c507265696d616765466f7200010406790b7d0b040000019108019d040001810b300c4e6674010c4e465428304e756d6265724f664e4654730101080206c90928200000000000000000049c2054686520746f74616c206e756d626572206f66204e46547320706572206964656e746974792e40436f6c6c656374696f6e5469636b657201010402a8a50420000000000000000004c02054686520636f6c6c656374696f6e20696420636f72726573706f6e64696e6720746f2065616368207469636b65722e28436f6c6c656374696f6e01010402a504850b50000000000000000000000000000000000000000004c820416c6c20636f6c6c656374696f6e2064657461696c7320666f72206120676976656e20636f6c6c656374696f6e2069642e38436f6c6c656374696f6e4b65797301010402a504890b040004d020416c6c206d616e6461746f7279206d65746164617461206b65797320666f72206120676976656e20636f6c6c656374696f6e2e344d6574616461746156616c756501010802028d0b4902040004450120546865206d657461646174612076616c7565206f6620616e206e667420676976656e2069747320636f6c6c656374696f6e2069642c20746f6b656e20696420616e64206d65746164617461206b65792e404e657874436f6c6c656374696f6e49640100a50420000000000000000004b420546865206e65787420617661696c61626c6520696420666f7220616e204e465420636f6c6c656374696f6e2e244e6578744e4654496401010402a504c10320000000000000000004d820546865206e65787420617661696c61626c6520696420666f7220616e204e46542077697468696e206120636f6c6c656374696f6e2e404e465473496e436f6c6c656374696f6e01010402a82820000000000000000004a42054686520746f74616c206e756d626572206f66204e46547320696e206120636f6c6c656374696f6e204e46544f776e65720001080202810ae00400046c20547261636b7320746865206f776e6572206f6620616e204e46543853746f7261676556657273696f6e0100950b040004442053746f726167652076657273696f6e2e01950801a10408644d61784e756d6265724f66436f6c6c656374696f6e4b6579730804ff00504d61784e756d6265724f664e465473436f756e7410100a0000000001990b3124546573745574696c730124546573745574696c730001ad0801a90400019d0b32a10b042040436865636b5370656356657273696f6ea90b1038436865636b547856657273696f6ead0b1030436865636b47656e65736973b10b2c38436865636b4d6f7274616c697479b50b2c28436865636b4e6f6e6365bd0b45012c436865636b576569676874c10b4501604368617267655472616e73616374696f6e5061796d656e74c90b45014453746f726543616c6c4d65746164617461cd0b4501d10b","id":"1"} \ No newline at end of file diff --git a/scripts/cli/src/interfaces/augment-api-consts.ts b/scripts/cli/src/interfaces/augment-api-consts.ts index d29becf060..9fde6cce36 100644 --- a/scripts/cli/src/interfaces/augment-api-consts.ts +++ b/scripts/cli/src/interfaces/augment-api-consts.ts @@ -4,7 +4,6 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { Codec } from '@polkadot/types-codec/types'; -import type { Perbill, Permill } from '@polkadot/types/interfaces/runtime'; import type { FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, PalletContractsSchedule, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightToFeeCoefficient, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/consts' { @@ -232,66 +231,30 @@ declare module '@polkadot/api-base/types/consts' { }; staking: { /** - * Number of eras that staked funds must remain bonded for. + * Number of eras that staked funds must remain bonded for.] **/ bondingDuration: u32 & AugmentedConst; /** - * The number of blocks before the end of the era from which election submissions are allowed. - * - * Setting this to zero will disable the offchain compute and only on-chain seq-phragmen will - * be used. - * - * This is bounded by being within the last session. Hence, setting it to a value more than the - * length of a session will be pointless. - **/ - electionLookahead: u32 & AugmentedConst; - /** - * Total year rewards that gets paid during fixed reward schedule. - **/ - fixedYearlyReward: u128 & AugmentedConst; - /** - * Maximum number of balancing iterations to run in the offchain submission. - * - * If set to 0, balance_solution will not be executed at all. - **/ - maxIterations: u32 & AugmentedConst; - /** - * The maximum number of nominators rewarded for each validator. - * - * For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim - * their reward. This used to limit the i/o cost for the nominator payout. + * Maximum number of nominations per nominator. **/ - maxNominatorRewardedPerValidator: u32 & AugmentedConst; + maxNominations: u32 & AugmentedConst; /** - * Maximum number of validators for each permissioned identity. + * The maximum number of `unlocking` chunks a [`StakingLedger`] can + * have. Effectively determines how many unique eras a staker may be + * unbonding in. * - * Max number of validators count = `MaxValidatorPerIdentity * Self::validator_count()`. + * Note: `MaxUnlockingChunks` is used as the upper bound for the + * `BoundedVec` item `StakingLedger.unlocking`. Setting this value + * lower than the existing value can lead to inconsistencies in the + * `StakingLedger` and will need to be handled properly in a runtime + * migration. The test `reducing_max_unlocking_chunks_abrupt` shows + * this effect. **/ - maxValidatorPerIdentity: Permill & AugmentedConst; - /** - * Maximum amount of `T::currency::total_issuance()` after that non-inflated rewards get paid. - **/ - maxVariableInflationTotalIssuance: u128 & AugmentedConst; - /** - * Minimum amount of POLYX that must be bonded for a new bond. - **/ - minimumBond: u128 & AugmentedConst; - /** - * The threshold of improvement that should be provided for a new solution to be accepted. - **/ - minSolutionScoreBump: Perbill & AugmentedConst; + maxUnlockingChunks: u32 & AugmentedConst; /** * Number of sessions per era. **/ sessionsPerEra: u32 & AugmentedConst; - /** - * Number of eras that slashes are deferred by, after computation. - * - * This should be less than the bonding duration. - * Set to 0 if slashes should be applied immediately, without opportunity for - * intervention. - **/ - slashDeferDuration: u32 & AugmentedConst; /** * Generic const **/ diff --git a/scripts/cli/src/interfaces/augment-api-errors.ts b/scripts/cli/src/interfaces/augment-api-errors.ts index 1bc74115ce..53c0d07e19 100644 --- a/scripts/cli/src/interfaces/augment-api-errors.ts +++ b/scripts/cli/src/interfaces/augment-api-errors.ts @@ -86,10 +86,22 @@ declare module '@polkadot/api-base/types/errors' { * An invalid granularity. **/ InvalidGranularity: AugmentedError; + /** + * Invalid ticker character - valid set: A`..`Z` `0`..`9` `_` `-` `.` `/`. + **/ + InvalidTickerCharacter: AugmentedError; /** * Transfer validation check failed. **/ InvalidTransfer: AugmentedError; + /** + * Failed to transfer an NFT - compliance failed. + **/ + InvalidTransferComplianceFailure: AugmentedError; + /** + * Failed to transfer the asset - asset is frozen. + **/ + InvalidTransferFrozenAsset: AugmentedError; /** * Investor Uniqueness claims are not allowed for this asset. **/ @@ -114,6 +126,10 @@ declare module '@polkadot/api-base/types/errors' { * The asset must be frozen. **/ NotFrozen: AugmentedError; + /** + * Number of asset mediators would exceed the maximum allowed. + **/ + NumberOfAssetMediatorsExceeded: AugmentedError; /** * Transfers to self are not allowed **/ @@ -831,26 +847,10 @@ declare module '@polkadot/api-base/types/errors' { * Cannot convert a `T::AccountId` to `AnySignature::Signer::AccountId`. **/ CannotDecodeSignerAccountId: AugmentedError; - /** - * CDDId should be unique & same within all cdd claims possessed by a DID. - **/ - CDDIdNotUniqueForIdentity: AugmentedError; - /** - * Claim and Proof versions are different. - **/ - ClaimAndProofVersionsDoNotMatch: AugmentedError; /** * Claim does not exist. **/ ClaimDoesNotExist: AugmentedError; - /** - * Try to add a claim variant using un-designated extrinsic. - **/ - ClaimVariantNotAllowed: AugmentedError; - /** - * Current identity cannot be forwarded, it is not a secondary key of target identity. - **/ - CurrentIdentityCannotBeForwarded: AugmentedError; /** * The custom claim type trying to be registered already exists. **/ @@ -904,10 +904,6 @@ declare module '@polkadot/api-base/types/errors' { * An invalid authorization signature. **/ InvalidAuthorizationSignature: AugmentedError; - /** - * Non systematic CDD providers can not create default cdd_id claims. - **/ - InvalidCDDId: AugmentedError; /** * Identity is already a child of an other identity, can't create grand-child identity. **/ @@ -952,10 +948,6 @@ declare module '@polkadot/api-base/types/errors' { * The target DID has no valid CDD. **/ TargetHasNoCdd: AugmentedError; - /** - * Try to delete the IU claim even when the user has non zero balance at given scopeId. - **/ - TargetHasNonZeroBalanceAtScopeId: AugmentedError; /** * Signatory is not pre authorized by the identity **/ @@ -1172,6 +1164,10 @@ declare module '@polkadot/api-base/types/errors' { * Failed to transfer an NFT - the number of nfts in the identity is insufficient. **/ InvalidNFTTransferInsufficientCount: AugmentedError; + /** + * Failed to transfer an NFT - nft is locked. + **/ + InvalidNFTTransferNFTIsLocked: AugmentedError; /** * Failed to transfer an NFT - NFT not found in portfolio. **/ @@ -1192,6 +1188,14 @@ declare module '@polkadot/api-base/types/errors' { * The NFT does not exist. **/ NFTNotFound: AugmentedError; + /** + * An overflow while calculating the updated supply. + **/ + SupplyOverflow: AugmentedError; + /** + * An underflow while calculating the updated supply. + **/ + SupplyUnderflow: AugmentedError; /** * At least one of the metadata keys has not been registered. **/ @@ -1342,6 +1346,10 @@ declare module '@polkadot/api-base/types/errors' { [key: string]: AugmentedError; }; polymeshContracts: { + /** + * The caller is not a primary key. + **/ + CallerNotAPrimaryKey: AugmentedError; /** * Data left in input when decoding arguments of a call. **/ @@ -1355,6 +1363,10 @@ declare module '@polkadot/api-base/types/errors' { * but no identity was given to associate the new contract's key with. **/ InstantiatorWithNoIdentity: AugmentedError; + /** + * Only future chain versions are allowed. + **/ + InvalidChainVersion: AugmentedError; /** * Invalid `func_id` provided from contract. **/ @@ -1363,6 +1375,14 @@ declare module '@polkadot/api-base/types/errors' { * Failed to decode a valid `RuntimeCall`. **/ InvalidRuntimeCall: AugmentedError; + /** + * Secondary key permissions are missing. + **/ + MissingKeyPermissions: AugmentedError; + /** + * There are no api upgrades supported for the contract. + **/ + NoUpgradesSupported: AugmentedError; /** * Output data returned from the ChainExtension was too large. **/ @@ -1409,6 +1429,10 @@ declare module '@polkadot/api-base/types/errors' { * Only owned NFTs can be moved between portfolios. **/ InvalidTransferNFTNotOwned: AugmentedError; + /** + * The caller doesn't have permission to create portfolios on the owner's behalf. + **/ + MissingOwnersPermission: AugmentedError; /** * The NFT is already locked. **/ @@ -1532,28 +1556,6 @@ declare module '@polkadot/api-base/types/errors' { **/ [key: string]: AugmentedError; }; - rewards: { - /** - * Provided signature was invalid. - **/ - InvalidSignature: AugmentedError; - /** - * Itn reward was already claimed. - **/ - ItnRewardAlreadyClaimed: AugmentedError; - /** - * Balance can not be converted to a primitive. - **/ - UnableToCovertBalance: AugmentedError; - /** - * Address was not found in the list of Itn addresses. - **/ - UnknownItnAddress: AugmentedError; - /** - * Generic error - **/ - [key: string]: AugmentedError; - }; scheduler: { /** * Failed to schedule a call @@ -1607,6 +1609,10 @@ declare module '@polkadot/api-base/types/errors' { [key: string]: AugmentedError; }; settlement: { + /** + * The caller is not a mediator in the instruction. + **/ + CallerIsNotAMediator: AugmentedError; /** * The caller is not a party of this instruction. **/ @@ -1643,6 +1649,10 @@ declare module '@polkadot/api-base/types/errors' { * Instruction's target settle block reached. **/ InstructionSettleBlockPassed: AugmentedError; + /** + * The mediator's expiry date must be in the future. + **/ + InvalidExpiryDate: AugmentedError; /** * Only [`InstructionStatus::Pending`] or [`InstructionStatus::Failed`] instructions can be executed. **/ @@ -1675,6 +1685,10 @@ declare module '@polkadot/api-base/types/errors' { * The maximum number of receipts was exceeded. **/ MaxNumberOfReceiptsExceeded: AugmentedError; + /** + * The expiry date for the mediator's affirmation has passed. + **/ + MediatorAffirmationExpired: AugmentedError; /** * Multiple receipts for the same leg are not allowed. **/ @@ -1695,6 +1709,10 @@ declare module '@polkadot/api-base/types/errors' { * The given number of nfts being transferred was underestimated. **/ NumberOfTransferredNFTsUnderestimated: AugmentedError; + /** + * The maximum number of venue signers was exceeded. + **/ + NumberOfVenueSignersExceeded: AugmentedError; /** * Off-Chain assets cannot be locked. **/ @@ -1797,6 +1815,10 @@ declare module '@polkadot/api-base/types/errors' { * When the amount to be bonded is less than `MinimumBond` **/ BondTooSmall: AugmentedError; + /** + * Some bound is not met. + **/ + BoundNotMet: AugmentedError; /** * The call is not allowed at the given time due to restrictions of election period. **/ @@ -1940,6 +1962,11 @@ declare module '@polkadot/api-base/types/errors' { * Validator stash identity was not permissioned. **/ StashIdentityNotPermissioned: AugmentedError; + /** + * There are too many nominators in the system. Governance needs to adjust the staking + * settings to keep things safe for the runtime. + **/ + TooManyNominators: AugmentedError; /** * Too many nomination targets supplied. **/ @@ -2281,6 +2308,10 @@ declare module '@polkadot/api-base/types/errors' { * Too many calls batched. **/ TooManyCalls: AugmentedError; + /** + * Decoding derivative account Id failed. + **/ + UnableToDeriveAccountId: AugmentedError; /** * Generic error **/ diff --git a/scripts/cli/src/interfaces/augment-api-events.ts b/scripts/cli/src/interfaces/augment-api-events.ts index 863e07da05..e56cb34902 100644 --- a/scripts/cli/src/interfaces/augment-api-events.ts +++ b/scripts/cli/src/interfaces/augment-api-events.ts @@ -2,14 +2,19 @@ /* eslint-disable */ import type { ApiTypes } from '@polkadot/api-base/types'; -import type { Bytes, Null, Option, Result, U8aFixed, Vec, bool, u128, u32, u64, u8 } from '@polkadot/types-codec'; +import type { BTreeSet, Bytes, Null, Option, Result, U8aFixed, Vec, bool, u128, u32, u64, u8 } from '@polkadot/types-codec'; import type { ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { FrameSupportDispatchDispatchInfo, FrameSupportTokensMiscBalanceStatus, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesMaybeBlock, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesMemo, PolymeshPrimitivesNftNfTs, PolymeshPrimitivesPortfolioFundDescription, PolymeshPrimitivesPortfolioPortfolioUpdateReason, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementReceiptMetadata, PolymeshPrimitivesSettlementSettlementType, PolymeshPrimitivesSettlementVenueType, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, SpConsensusGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; +import type { FrameSupportDispatchDispatchInfo, FrameSupportTokensMiscBalanceStatus, PalletBridgeBridgeTx, PalletBridgeHandledTxStatus, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletImOnlineSr25519AppSr25519Public, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsSnapshottedPip, PalletStakingElectionCompute, PalletStakingExposure, PalletStakingSlashingSwitch, PalletStoFundraiser, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesMaybeBlock, PolymeshContractsApi, PolymeshContractsChainExtensionExtrinsicId, PolymeshContractsChainVersion, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesMemo, PolymeshPrimitivesNftNfTs, PolymeshPrimitivesPortfolioFundDescription, PolymeshPrimitivesPortfolioPortfolioUpdateReason, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementReceiptMetadata, PolymeshPrimitivesSettlementSettlementType, PolymeshPrimitivesSettlementVenueType, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, SpConsensusGrandpaAppPublic, SpRuntimeDispatchError } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/events' { export interface AugmentedEvents { asset: { + /** + * An asset has been added to the list of pre aprroved receivement (valid for all identities). + * Parameters: [`Ticker`] of the pre approved asset. + **/ + AssetAffirmationExemption: AugmentedEvent; /** * Emitted when Tokens were issued, redeemed or transferred. * Contains the [`IdentityId`] of the receiver/issuer/redeemer, the [`Ticker`] for the token, the balance that was issued/transferred/redeemed, @@ -26,6 +31,16 @@ declare module '@polkadot/api-base/types/events' { * Parameter: caller DID, ticker. **/ AssetFrozen: AugmentedEvent; + /** + * An identity has added mandatory mediators to an asset. + * Parameters: [`IdentityId`] of caller, [`Ticker`] of the asset, the identity of all mediators added. + **/ + AssetMediatorsAdded: AugmentedEvent]>; + /** + * An identity has removed mediators from an asset. + * Parameters: [`IdentityId`] of caller, [`Ticker`] of the asset, the identity of all mediators removed. + **/ + AssetMediatorsRemoved: AugmentedEvent]>; /** * Emit when token ownership is transferred. * caller DID / token ownership transferred to DID, ticker, from @@ -104,6 +119,11 @@ declare module '@polkadot/api-base/types/events' { * Parameters: caller ticker, Local type name **/ MetadataValueDeleted: AugmentedEvent; + /** + * An identity has added an asset to the list of pre aprroved receivement. + * Parameters: [`IdentityId`] of caller, [`Ticker`] of the pre approved asset. + **/ + PreApprovedAsset: AugmentedEvent; /** * Register asset metadata global type. * (Global type name, Global type key, type specs) @@ -114,6 +134,16 @@ declare module '@polkadot/api-base/types/events' { * (Caller DID, ticker, Local type name, Local type key, type specs) **/ RegisterAssetMetadataLocalType: AugmentedEvent; + /** + * An asset has been removed from the list of pre aprroved receivement (valid for all identities). + * Parameters: [`Ticker`] of the asset. + **/ + RemoveAssetAffirmationExemption: AugmentedEvent; + /** + * An identity has removed an asset to the list of pre aprroved receivement. + * Parameters: [`IdentityId`] of caller, [`Ticker`] of the asset. + **/ + RemovePreApprovedAsset: AugmentedEvent; /** * Set asset metadata value. * (Caller DID, ticker, metadata value, optional value details) @@ -1071,6 +1101,16 @@ declare module '@polkadot/api-base/types/events' { [key: string]: AugmentedEvent; }; polymeshContracts: { + /** + * Emitted when a contract starts supporting a new API upgrade. + * Contains the [`Api`], [`ChainVersion`], and the bytes for the code hash. + **/ + ApiHashUpdated: AugmentedEvent; + /** + * Emitted when a contract calls into the runtime. + * Contains the account id set by the contract owner and the [`ExtrinsicId`]. + **/ + SCRuntimeCall: AugmentedEvent; /** * Generic event **/ @@ -1123,6 +1163,24 @@ declare module '@polkadot/api-base/types/events' { * * portfolio name **/ PortfolioRenamed: AugmentedEvent; + /** + * A portfolio has pre approved the receivement of an asset. + * + * # Parameters + * * [`IdentityId`] of the caller. + * * [`PortfolioId`] that will receive assets without explicit affirmation. + * * [`Ticker`] of the asset that has been exempt from explicit affirmation. + **/ + PreApprovedPortfolio: AugmentedEvent; + /** + * A portfolio has removed the approval of an asset. + * + * # Parameters + * * [`IdentityId`] of the caller. + * * [`PortfolioId`] that had its pre approval revoked. + * * [`Ticker`] of the asset that had its pre approval revoked. + **/ + RevokePreApprovedPortfolio: AugmentedEvent; /** * All non-default portfolio numbers and names of a DID. * @@ -1202,16 +1260,6 @@ declare module '@polkadot/api-base/types/events' { **/ [key: string]: AugmentedEvent; }; - rewards: { - /** - * Itn reward was claimed. - **/ - ItnRewardClaimed: AugmentedEvent; - /** - * Generic event - **/ - [key: string]: AugmentedEvent; - }; scheduler: { /** * The call for the provided hash was not found so the task has been aborted. @@ -1266,6 +1314,11 @@ declare module '@polkadot/api-base/types/events' { * An instruction has been affirmed (did, portfolio, instruction_id) **/ InstructionAffirmed: AugmentedEvent; + /** + * An instruction has been automatically affirmed. + * Parameters: [`IdentityId`] of the caller, [`PortfolioId`] of the receiver, and [`InstructionId`] of the instruction. + **/ + InstructionAutomaticallyAffirmed: AugmentedEvent; /** * A new instruction has been created * (did, venue_id, instruction_id, settlement_type, trade_date, value_date, legs, memo) @@ -1279,6 +1332,11 @@ declare module '@polkadot/api-base/types/events' { * Instruction failed execution (did, instruction_id) **/ InstructionFailed: AugmentedEvent; + /** + * An instruction with mediators has been created. + * Parameters: [`InstructionId`] of the instruction and the [`IdentityId`] of all mediators. + **/ + InstructionMediators: AugmentedEvent]>; /** * An instruction has been rejected (did, instruction_id) **/ @@ -1292,6 +1350,16 @@ declare module '@polkadot/api-base/types/events' { * Execution of a leg failed (did, instruction_id, leg_id) **/ LegFailedExecution: AugmentedEvent; + /** + * An instruction has affirmed by a mediator. + * Parameters: [`IdentityId`] of the mediator and [`InstructionId`] of the instruction. + **/ + MediatorAffirmationReceived: AugmentedEvent]>; + /** + * An instruction affirmation has been withdrawn by a mediator. + * Parameters: [`IdentityId`] of the mediator and [`InstructionId`] of the instruction. + **/ + MediatorAffirmationWithdrawn: AugmentedEvent; /** * A receipt has been claimed (did, instruction_id, leg_id, receipt_uid, signer, receipt metadata) **/ @@ -1343,7 +1411,7 @@ declare module '@polkadot/api-base/types/events' { }; staking: { /** - * An account has bonded this amount. \[did, stash, amount\] + * An account has bonded this amount. \[stash, amount\] * * NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably, * it will not be emitted for staking rewards when they are added to stake. @@ -1357,7 +1425,6 @@ declare module '@polkadot/api-base/types/events' { /** * The era payout has been set; the first balance is the validator-payout; the second is * the remainder from the maximum amount of reward. - * \[era_index, validator_payout, remainder\] **/ EraPayout: AugmentedEvent; /** @@ -1375,7 +1442,7 @@ declare module '@polkadot/api-base/types/events' { Nominated: AugmentedEvent]>; /** * An old slashing report from a prior era was discarded because it could - * not be processed. \[session_index\] + * not be processed. **/ OldSlashingReportDiscarded: AugmentedEvent; /** @@ -1389,7 +1456,7 @@ declare module '@polkadot/api-base/types/events' { **/ PermissionedIdentityRemoved: AugmentedEvent; /** - * The staker has been rewarded by this amount. \[stash_identity, stash, amount\] + * The nominator has been rewarded by this amount. **/ Reward: AugmentedEvent; /** @@ -1397,8 +1464,7 @@ declare module '@polkadot/api-base/types/events' { **/ RewardPaymentSchedulingInterrupted: AugmentedEvent; /** - * One validator (and its nominators) has been slashed by the given amount. - * \[validator, amount\] + * A staker (validator or nominator) has been slashed by the given amount. **/ Slash: AugmentedEvent; /** @@ -1406,20 +1472,20 @@ declare module '@polkadot/api-base/types/events' { **/ SlashingAllowedForChanged: AugmentedEvent; /** - * A new solution for the upcoming election has been stored. \[compute\] + * A new solution for the upcoming election has been stored. **/ SolutionStored: AugmentedEvent; /** - * A new set of stakers was elected with the given \[compute\]. + * A new set of stakers was elected. **/ StakingElection: AugmentedEvent; /** - * An account has unbonded this amount. \[did, stash, amount\] + * An account has unbonded this amount. **/ Unbonded: AugmentedEvent; /** * An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance` - * from the unlocking queue. \[stash, amount\] + * from the unlocking queue. **/ Withdrawn: AugmentedEvent; /** @@ -1453,13 +1519,13 @@ declare module '@polkadot/api-base/types/events' { **/ StatTypesRemoved: AugmentedEvent]>; /** - * Add `ScopeId`s exempt for transfer conditions matching exempt key. + * Add `IdentityId`s exempt for transfer conditions matching exempt key. * * (Caller DID, Exempt key, Entities) **/ TransferConditionExemptionsAdded: AugmentedEvent]>; /** - * Remove `ScopeId`s exempt for transfer conditions matching exempt key. + * Remove `IdentityId`s exempt for transfer conditions matching exempt key. * * (Caller DID, Exempt key, Entities) **/ diff --git a/scripts/cli/src/interfaces/augment-api-query.ts b/scripts/cli/src/interfaces/augment-api-query.ts index fc9af94180..f21e39a049 100644 --- a/scripts/cli/src/interfaces/augment-api-query.ts +++ b/scripts/cli/src/interfaces/augment-api-query.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { BTreeSet, Bytes, Null, Option, U8aFixed, Vec, WrapperOpaque, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, Perbill, Permill } from '@polkadot/types/interfaces/runtime'; -import type { FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletContractsStorageContractInfo, PalletContractsStorageDeletedContract, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsProposalState, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletPreimageRequestStatus, PalletRelayerSubsidy, PalletRewardsItnRewardStatus, PalletSchedulerScheduled, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointNextCheckpoints, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshContractsChainExtensionExtrinsicId, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesMemo, PolymeshPrimitivesMultisigProposalDetails, PolymeshPrimitivesNftNftCollection, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementAffirmationStatus, PolymeshPrimitivesSettlementInstruction, PolymeshPrimitivesSettlementInstructionStatus, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementLegStatus, PolymeshPrimitivesSettlementVenue, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusBabeDigestsPreDigest, SpCoreCryptoKeyTypeId, SpNposElectionsElectionScore, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; +import type { FrameSupportDispatchPerDispatchClassWeight, FrameSystemAccountInfo, FrameSystemEventRecord, FrameSystemLastRuntimeUpgradeInfo, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletBalancesBalanceLock, PalletBridgeBridgeTxDetail, PalletCommitteePolymeshVotes, PalletContractsStorageContractInfo, PalletContractsStorageDeletedContract, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsTargetIdentities, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineSr25519AppSr25519Public, PalletPipsDepositInfo, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsProposalState, PalletPipsSnapshotMetadata, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletPreimageRequestStatus, PalletRelayerSubsidy, PalletSchedulerScheduled, PalletStakingActiveEraInfo, PalletStakingElectionResult, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingValidatorPrefs, PalletStoFundraiser, PalletTransactionPaymentReleases, PolymeshCommonUtilitiesCheckpointNextCheckpoints, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshContractsApi, PolymeshContractsApiCodeHash, PolymeshContractsChainExtensionExtrinsicId, PolymeshContractsNextUpgrade, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAuthorization, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesMemo, PolymeshPrimitivesMultisigProposalDetails, PolymeshPrimitivesNftNftCollection, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementAffirmationStatus, PolymeshPrimitivesSettlementInstruction, PolymeshPrimitivesSettlementInstructionStatus, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementLegStatus, PolymeshPrimitivesSettlementMediatorAffirmationStatus, PolymeshPrimitivesSettlementVenue, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusBabeDigestsPreDigest, SpCoreCryptoKeyTypeId, SpNposElectionsElectionScore, SpRuntimeDigest, SpStakingOffenceOffenceDetails } from '@polkadot/types/lookup'; import type { Observable } from '@polkadot/types/types'; declare module '@polkadot/api-base/types/storage' { @@ -109,6 +109,10 @@ declare module '@polkadot/api-base/types/storage' { * (ticker, funding round) -> balance **/ issuedInFundingRound: AugmentedQuery | [PolymeshPrimitivesTicker | string | Uint8Array, Bytes | string | Uint8Array]) => Observable, [ITuple<[PolymeshPrimitivesTicker, Bytes]>]> & QueryableStorageEntry]>; + /** + * The list of mandatory mediators for every ticker. + **/ + mandatoryMediators: AugmentedQuery Observable>, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * All tickers that don't need an affirmation to be received by an identity. **/ @@ -768,6 +772,10 @@ declare module '@polkadot/api-base/types/storage' { * change the primary key of an identity. **/ cddAuthForPrimaryKeyRotation: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * All child identities of a parent (i.e ParentDID, ChildDID, true) + **/ + childDid: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * (Target ID, claim type) (issuer,scope) -> Associated claims **/ @@ -904,16 +912,20 @@ declare module '@polkadot/api-base/types/storage' { numberOfSigners: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Details of a multisig proposal + * + * multisig -> proposal id => ProposalDetails. **/ - proposalDetail: AugmentedQuery | [AccountId32 | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId32, u64]>]> & QueryableStorageEntry]>; + proposalDetail: AugmentedQuery Observable, [AccountId32, u64]> & QueryableStorageEntry; /** * A mapping of proposals to their IDs. **/ proposalIds: AugmentedQuery Observable>, [AccountId32, Call]> & QueryableStorageEntry; /** - * Proposals presented for voting to a multisig (multisig, proposal id) => Option. + * Proposals presented for voting to a multisig. + * + * multisig -> proposal id => Option. **/ - proposals: AugmentedQuery | [AccountId32 | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable>, [ITuple<[AccountId32, u64]>]> & QueryableStorageEntry]>; + proposals: AugmentedQuery Observable>, [AccountId32, u64]> & QueryableStorageEntry; /** * Storage version. **/ @@ -923,9 +935,11 @@ declare module '@polkadot/api-base/types/storage' { **/ transactionVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** - * Individual multisig signer votes. (multi sig, signer, proposal) => vote. + * Individual multisig signer votes. + * + * (multisig, proposal_id) -> signer => vote. **/ - votes: AugmentedQuery | [AccountId32 | string | Uint8Array, PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array, u64 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId32, PolymeshPrimitivesSecondaryKeySignatory, u64]>]> & QueryableStorageEntry]>; + votes: AugmentedQuery | [AccountId32 | string | Uint8Array, u64 | AnyNumber | Uint8Array], arg2: PolymeshPrimitivesSecondaryKeySignatory | { Identity: any } | { Account: any } | string | Uint8Array) => Observable, [ITuple<[AccountId32, u64]>, PolymeshPrimitivesSecondaryKeySignatory]> & QueryableStorageEntry, PolymeshPrimitivesSecondaryKeySignatory]>; /** * Generic query **/ @@ -956,10 +970,22 @@ declare module '@polkadot/api-base/types/storage' { * The next available id for an NFT within a collection. **/ nextNFTId: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; + /** + * Tracks the owner of an NFT + **/ + nftOwner: AugmentedQuery Observable>, [PolymeshPrimitivesTicker, u64]> & QueryableStorageEntry; + /** + * The total number of NFTs in a collection + **/ + nfTsInCollection: AugmentedQuery Observable, [PolymeshPrimitivesTicker]> & QueryableStorageEntry; /** * The total number of NFTs per identity. **/ numberOfNFTs: AugmentedQuery Observable, [PolymeshPrimitivesTicker, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; + /** + * Storage version. + **/ + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ @@ -1140,16 +1166,32 @@ declare module '@polkadot/api-base/types/storage' { [key: string]: QueryableStorageEntry; }; polymeshContracts: { + /** + * Stores the chain version and code hash for the next chain upgrade. + **/ + apiNextUpgrade: AugmentedQuery Observable>, [PolymeshContractsApi]> & QueryableStorageEntry; /** * Whitelist of extrinsics allowed to be called from contracts. **/ callRuntimeWhitelist: AugmentedQuery Observable, [PolymeshContractsChainExtensionExtrinsicId]> & QueryableStorageEntry; + /** + * Stores the code hash for the current api. + **/ + currentApiHash: AugmentedQuery Observable>, [PolymeshContractsApi]> & QueryableStorageEntry; + /** + * Storage version. + **/ + storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * Generic query **/ [key: string]: QueryableStorageEntry; }; portfolio: { + /** + * Custodians allowed to create and take custody of portfolios on an id's behalf. + **/ + allowedCustodians: AugmentedQuery Observable, [PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Inverse map of `Portfolios` used to ensure bijectivitiy, * and uniqueness of names in `Portfolios`. @@ -1224,7 +1266,7 @@ declare module '@polkadot/api-base/types/storage' { /** * The mapping of operation names to the base fees of those operations. **/ - baseFees: AugmentedQuery Observable, [PolymeshCommonUtilitiesProtocolFeeProtocolOp]> & QueryableStorageEntry; + baseFees: AugmentedQuery Observable, [PolymeshCommonUtilitiesProtocolFeeProtocolOp]> & QueryableStorageEntry; /** * The fee coefficient as a positive rational (numerator, denominator). **/ @@ -1261,16 +1303,6 @@ declare module '@polkadot/api-base/types/storage' { **/ [key: string]: QueryableStorageEntry; }; - rewards: { - /** - * Map of (Itn Address `AccountId`) -> (Reward `ItnRewardStatus`). - **/ - itnRewards: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; - /** - * Generic query - **/ - [key: string]: QueryableStorageEntry; - }; scheduler: { /** * Items to be executed, indexed by the block number that they should be executed on. @@ -1359,6 +1391,10 @@ declare module '@polkadot/api-base/types/storage' { * Status of a leg under an instruction. (instruction_id, leg_id) -> LegStatus **/ instructionLegStatus: AugmentedQuery Observable, [u64, u64]> & QueryableStorageEntry; + /** + * The status for the mediators affirmation. + **/ + instructionMediatorsAffirmations: AugmentedQuery Observable, [u64, PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; /** * Instruction memo **/ @@ -1367,6 +1403,10 @@ declare module '@polkadot/api-base/types/storage' { * Instruction statuses. instruction_id -> InstructionStatus **/ instructionStatuses: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; + /** + * Tracks the number of signers each venue has. + **/ + numberOfVenueSigners: AugmentedQuery Observable, [u64]> & QueryableStorageEntry; /** * Tracks the affirmation status for offchain legs in a instruction. [`(InstructionId, LegId)`] -> [`AffirmationStatus`] **/ @@ -1435,6 +1475,8 @@ declare module '@polkadot/api-base/types/storage' { activeEra: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** * Map from all locked "stash" accounts to the controller account. + * + * TWOX-NOTE: SAFE since `AccountId` is a secure hash. **/ bonded: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** @@ -1449,6 +1491,14 @@ declare module '@polkadot/api-base/types/storage' { * canceled by extraordinary circumstances (e.g. governance). **/ canceledSlashPayout: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * Counter for the related counted storage map + **/ + counterForNominators: AugmentedQuery Observable, []> & QueryableStorageEntry; + /** + * Counter for the related counted storage map + **/ + counterForValidators: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The current era index. * @@ -1461,8 +1511,8 @@ declare module '@polkadot/api-base/types/storage' { **/ earliestUnappliedSlash: AugmentedQuery Observable>, []> & QueryableStorageEntry; /** - * Flag to control the execution of the offchain election. When `Open(_)`, we accept - * solutions to be submitted. + * Flag to control the execution of the offchain election. When `Open(_)`, we accept solutions + * to be submitted. **/ eraElectionStatus: AugmentedQuery Observable, []> & QueryableStorageEntry; /** @@ -1557,7 +1607,24 @@ declare module '@polkadot/api-base/types/storage' { **/ minimumValidatorCount: AugmentedQuery Observable, []> & QueryableStorageEntry; /** - * The map from nominator stash key to the set of stash keys of all validators to nominate. + * The map from nominator stash key to their nomination preferences, namely the validators that + * they wish to support. + * + * Note that the keys of this storage map might become non-decodable in case the + * [`Config::MaxNominations`] configuration is decreased. In this rare case, these nominators + * are still existent in storage, their key is correct and retrievable (i.e. `contains_key` + * indicates that they exist), but their value cannot be decoded. Therefore, the non-decodable + * nominators will effectively not-exist, until they re-submit their preferences such that it + * is within the bounds of the newly set `Config::MaxNominations`. + * + * This implies that `::iter_keys().count()` and `::iter().count()` might return different + * values for this map. Moreover, the main `::count()` is aligned with the former, namely the + * number of keys that exist. + * + * Lastly, if any of the nominators become non-decodable, they can be chilled immediately via + * [`Call::chill_other`] dispatchable by anyone. + * + * TWOX-NOTE: SAFE since `AccountId` is a secure hash. **/ nominators: AugmentedQuery Observable>, [AccountId32]> & QueryableStorageEntry; /** @@ -1578,16 +1645,14 @@ declare module '@polkadot/api-base/types/storage' { offendingValidators: AugmentedQuery Observable>>, []> & QueryableStorageEntry; /** * Where the reward payment should be made. Keyed by stash. + * + * TWOX-NOTE: SAFE since `AccountId` is a secure hash. **/ payee: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** * Entities that are allowed to run operator/validator nodes. **/ permissionedIdentity: AugmentedQuery Observable>, [PolymeshPrimitivesIdentityId]> & QueryableStorageEntry; - /** - * Polymesh Storage version. - **/ - polymeshStorageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The next validator set. At the end of an era, if this is available (potentially from the * result of an offchain worker), it is immediately used. Otherwise, the on-chain election @@ -1624,27 +1689,23 @@ declare module '@polkadot/api-base/types/storage' { * as well as how much reward has been paid out. **/ spanSlash: AugmentedQuery | [AccountId32 | string | Uint8Array, u32 | AnyNumber | Uint8Array]) => Observable, [ITuple<[AccountId32, u32]>]> & QueryableStorageEntry]>; - /** - * True if network has been upgraded to this version. - * Storage version of the pallet. - * - * This is set to v6.0.1 for new networks. - **/ - storageVersion: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * All unapplied slashes that are queued for later. **/ unappliedSlashes: AugmentedQuery Observable>, [u32]> & QueryableStorageEntry; /** - * Every validator has commission that should be in the range [0, Cap]. + * Allows flexibility in commission. Every validator has commission that should be in the + * range [0, Cap]. **/ validatorCommissionCap: AugmentedQuery Observable, []> & QueryableStorageEntry; /** - * The ideal number of staking participants. + * The ideal number of active validators. **/ validatorCount: AugmentedQuery Observable, []> & QueryableStorageEntry; /** * The map from (wannabe) validator stash key to the preferences of that validator. + * + * TWOX-NOTE: SAFE since `AccountId` is a secure hash. **/ validators: AugmentedQuery Observable, [AccountId32]> & QueryableStorageEntry; /** diff --git a/scripts/cli/src/interfaces/augment-api-tx.ts b/scripts/cli/src/interfaces/augment-api-tx.ts index d59048214f..589a2e464a 100644 --- a/scripts/cli/src/interfaces/augment-api-tx.ts +++ b/scripts/cli/src/interfaces/augment-api-tx.ts @@ -5,7 +5,7 @@ import type { ApiTypes } from '@polkadot/api-base/types'; import type { BTreeSet, Bytes, Compact, Option, U8aFixed, Vec, bool, u128, u16, u32, u64, u8 } from '@polkadot/types-codec'; import type { AnyNumber, ITuple } from '@polkadot/types-codec/types'; import type { AccountId32, Call, H256, MultiAddress, Perbill, Percent, Permill } from '@polkadot/types/interfaces/runtime'; -import type { PalletBridgeBridgeTx, PalletContractsWasmDeterminism, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletRewardsItnRewardStatus, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshContractsChainExtensionExtrinsicId, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAssetNonFungibleType, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioKind, PolymeshPrimitivesMemo, PolymeshPrimitivesNftNftCollectionKeys, PolymeshPrimitivesNftNftMetadataAttribute, PolymeshPrimitivesPortfolioFund, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementReceiptDetails, PolymeshPrimitivesSettlementSettlementType, PolymeshPrimitivesSettlementVenueType, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeOriginCaller, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusGrandpaEquivocationProof, SpConsensusSlotsEquivocationProof, SpNposElectionsElectionScore, SpRuntimeMultiSignature, SpSessionMembershipProof, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; +import type { PalletBridgeBridgeTx, PalletContractsWasmDeterminism, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Signature, PalletPipsSnapshotResult, PalletStakingCompactAssignments, PalletStakingElectionSize, PalletStakingRewardDestination, PalletStakingSlashingSwitch, PalletStakingValidatorPrefs, PalletStoPriceTier, PalletUtilityUniqueCall, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshContractsApi, PolymeshContractsChainExtensionExtrinsicId, PolymeshContractsNextUpgrade, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAssetNonFungibleType, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioKind, PolymeshPrimitivesMemo, PolymeshPrimitivesNftNfTs, PolymeshPrimitivesNftNftCollectionKeys, PolymeshPrimitivesNftNftMetadataAttribute, PolymeshPrimitivesPortfolioFund, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementAffirmationCount, PolymeshPrimitivesSettlementAssetCount, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementReceiptDetails, PolymeshPrimitivesSettlementSettlementType, PolymeshPrimitivesSettlementVenueType, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntimeOriginCaller, PolymeshRuntimeDevelopRuntimeSessionKeys, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusGrandpaEquivocationProof, SpConsensusSlotsEquivocationProof, SpNposElectionsElectionScore, SpRuntimeMultiSignature, SpSessionMembershipProof, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; declare module '@polkadot/api-base/types/submittable' { export interface AugmentedSubmittables { @@ -46,6 +46,18 @@ declare module '@polkadot/api-base/types/submittable' { * * Asset **/ addDocuments: AugmentedSubmittable<(docs: Vec | (PolymeshPrimitivesDocument | { uri?: any; contentHash?: any; name?: any; docType?: any; filingDate?: any } | string | Uint8Array)[], ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [Vec, PolymeshPrimitivesTicker]>; + /** + * Sets all identities in the `mediators` set as mandatory mediators for any instruction transfering `ticker`. + * + * # Arguments + * * `origin`: The secondary key of the sender. + * * `ticker`: The [`Ticker`] of the asset that will require the mediators. + * * `mediators`: A set of [`IdentityId`] of all the mandatory mediators for the given ticker. + * + * # Permissions + * * Asset + **/ + addMandatoryMediators: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, mediators: BTreeSet) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, BTreeSet]>; /** * Forces a transfer of token from `from_portfolio` to the caller's default portfolio. * @@ -99,7 +111,7 @@ declare module '@polkadot/api-base/types/submittable' { **/ exemptTickerAffirmation: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker]>; /** - * Freezes transfers and minting of a given token. + * Freezes transfers of a given token. * * # Arguments * * `origin` - the secondary key of the sender. @@ -299,6 +311,18 @@ declare module '@polkadot/api-base/types/submittable' { * * Asset **/ removeLocalMetadataKey: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, localKey: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, u64]>; + /** + * Removes all identities in the `mediators` set from the mandatory mediators list for the given `ticker`. + * + * # Arguments + * * `origin`: The secondary key of the sender. + * * `ticker`: The [`Ticker`] of the asset that will have mediators removed. + * * `mediators`: A set of [`IdentityId`] of all the mediators that will be removed from the mandatory mediators list. + * + * # Permissions + * * Asset + **/ + removeMandatoryMediators: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, mediators: BTreeSet) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, BTreeSet]>; /** * Removes the asset metadata value of a metadata key. * @@ -410,7 +434,7 @@ declare module '@polkadot/api-base/types/submittable' { **/ setFundingRound: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, name: Bytes | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Bytes]>; /** - * Unfreezes transfers and minting of a given token. + * Unfreezes transfers of a given token. * * # Arguments * * `origin` - the secondary key of the sender. @@ -444,8 +468,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Arguments * * `origin` - a signer that has permissions to act as an agent of `ticker`. * * `ticker` - the ticker of the token. - * * `identifiers` - the asset identifiers to be updated in the form of a vector of pairs - * of `IdentifierType` and `AssetIdentifier` value. + * * `asset_identifiers` - the asset identifiers to be updated in the form of a vector of pairs of `IdentifierType` and `AssetIdentifier` value. * * ## Errors * - `InvalidAssetIdentifier` if `identifiers` contains any invalid identifier. @@ -453,7 +476,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Permissions * * Asset **/ - updateIdentifiers: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, identifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | { FIGI: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; + updateIdentifiers: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, assetIdentifiers: Vec | (PolymeshPrimitivesAssetIdentifier | { CUSIP: any } | { CINS: any } | { ISIN: any } | { LEI: any } | { FIGI: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, Vec]>; /** * Generic tx **/ @@ -2079,6 +2102,7 @@ declare module '@polkadot/api-base/types/submittable' { * * # Arguments * * `auth_id` - Auth id of the authorization. + * #[deprecated(since = "6.1.0", note = "Identity based signers not supported")] **/ acceptMultisigSignerAsIdentity: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; /** @@ -2158,6 +2182,7 @@ declare module '@polkadot/api-base/types/submittable' { * * `expiry` - Optional proposal expiry time. * * `auto_close` - Close proposal on receiving enough reject votes. * If this is 1 out of `m` multisig, the proposal will be immediately executed. + * #[deprecated(since = "6.0.0", note = "Please use the `create_proposal_as_identity` and `approve_as_identity` instead")] **/ createOrApproveProposalAsIdentity: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, Call, Option, bool]>; /** @@ -2169,6 +2194,7 @@ declare module '@polkadot/api-base/types/submittable' { * * `expiry` - Optional proposal expiry time. * * `auto_close` - Close proposal on receiving enough reject votes. * If this is 1 out of `m` multisig, the proposal will be immediately executed. + * #[deprecated(since = "6.0.0", note = "Please use the `create_proposal_as_key` and `approve_as_key` instead")] **/ createOrApproveProposalAsKey: AugmentedSubmittable<(multisig: AccountId32 | string | Uint8Array, proposal: Call | { callIndex?: any; args?: any } | string | Uint8Array, expiry: Option | null | object | string | Uint8Array, autoClose: bool | boolean | Uint8Array) => SubmittableExtrinsic, [AccountId32, Call, Option, bool]>; /** @@ -2261,6 +2287,21 @@ declare module '@polkadot/api-base/types/submittable' { [key: string]: SubmittableExtrinsicFunction; }; nft: { + /** + * Forces the transfer of NFTs from a given portfolio to the caller's portfolio. + * + * # Arguments + * * `origin` - is a signer that has permissions to act as an agent of `ticker`. + * * `ticker` - the [`Ticker`] of the NFT collection. + * * `nft_id` - the [`NFTId`] of the NFT to be transferred. + * * `source_portfolio` - the [`PortfolioId`] that currently holds the NFT. + * * `callers_portfolio_kind` - the [`PortfolioKind`] of the caller's portfolio. + * + * # Permissions + * * Asset + * * Portfolio + **/ + controllerTransfer: AugmentedSubmittable<(ticker: PolymeshPrimitivesTicker | string | Uint8Array, nfts: PolymeshPrimitivesNftNfTs | { ticker?: any; ids?: any } | string | Uint8Array, sourcePortfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, callersPortfolioKind: PolymeshPrimitivesIdentityIdPortfolioKind | { Default: any } | { User: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesTicker, PolymeshPrimitivesNftNfTs, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioKind]>; /** * Cretes a new `NFTCollection`. * @@ -2566,6 +2607,21 @@ declare module '@polkadot/api-base/types/submittable' { [key: string]: SubmittableExtrinsicFunction; }; polymeshContracts: { + /** + * Instantiates a smart contract defining it with the given `code` and `salt`. + * + * The contract will be attached as a primary key of a newly created child identity of the caller. + * + * # Arguments + * - `endowment`: Amount of POLYX to transfer to the contract. + * - `gas_limit`: For how much gas the `deploy` code in the contract may at most consume. + * - `storage_deposit_limit`: The maximum amount of balance that can be charged/reserved from the caller to pay for the storage consumed. + * - `code`: The WASM binary defining the smart contract. + * - `data`: The input data to pass to the contract constructor. + * - `salt`: Used for contract address derivation. By varying this, the same `code` can be used under the same identity. + * + **/ + instantiateWithCodeAsPrimaryKey: AugmentedSubmittable<(endowment: u128 | AnyNumber | Uint8Array, gasLimit: SpWeightsWeightV2Weight | { refTime?: any; proofSize?: any } | string | Uint8Array, storageDepositLimit: Option | null | object | string | Uint8Array, code: Bytes | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array) => SubmittableExtrinsic, [u128, SpWeightsWeightV2Weight, Option, Bytes, Bytes, Bytes]>; /** * Instantiates a smart contract defining it with the given `code` and `salt`. * @@ -2593,6 +2649,23 @@ declare module '@polkadot/api-base/types/submittable' { * - Errors that arise when adding a new secondary key can also occur here. **/ instantiateWithCodePerms: AugmentedSubmittable<(endowment: u128 | AnyNumber | Uint8Array, gasLimit: SpWeightsWeightV2Weight | { refTime?: any; proofSize?: any } | string | Uint8Array, storageDepositLimit: Option | null | object | string | Uint8Array, code: Bytes | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array, perms: PolymeshPrimitivesSecondaryKeyPermissions | { asset?: any; extrinsic?: any; portfolio?: any } | string | Uint8Array) => SubmittableExtrinsic, [u128, SpWeightsWeightV2Weight, Option, Bytes, Bytes, Bytes, PolymeshPrimitivesSecondaryKeyPermissions]>; + /** + * Instantiates a smart contract defining using the given `code_hash` and `salt`. + * + * Unlike `instantiate_with_code`, this assumes that at least one contract with the same WASM code has already been uploaded. + * + * The contract will be attached as a primary key of a newly created child identity of the caller. + * + * # Arguments + * - `endowment`: amount of POLYX to transfer to the contract. + * - `gas_limit`: for how much gas the `deploy` code in the contract may at most consume. + * - `storage_deposit_limit`: The maximum amount of balance that can be charged/reserved from the caller to pay for the storage consumed. + * - `code_hash`: of an already uploaded WASM binary. + * - `data`: The input data to pass to the contract constructor. + * - `salt`: used for contract address derivation. By varying this, the same `code` can be used under the same identity. + * + **/ + instantiateWithHashAsPrimaryKey: AugmentedSubmittable<(endowment: u128 | AnyNumber | Uint8Array, gasLimit: SpWeightsWeightV2Weight | { refTime?: any; proofSize?: any } | string | Uint8Array, storageDepositLimit: Option | null | object | string | Uint8Array, codeHash: H256 | string | Uint8Array, data: Bytes | string | Uint8Array, salt: Bytes | string | Uint8Array) => SubmittableExtrinsic, [u128, SpWeightsWeightV2Weight, Option, H256, Bytes, Bytes]>; /** * Instantiates a smart contract defining using the given `code_hash` and `salt`. * @@ -2631,6 +2704,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Errors **/ updateCallRuntimeWhitelist: AugmentedSubmittable<(updates: Vec> | ([PolymeshContractsChainExtensionExtrinsicId, bool | boolean | Uint8Array])[]) => SubmittableExtrinsic, [Vec>]>; + upgradeApi: AugmentedSubmittable<(api: PolymeshContractsApi | { desc?: any; major?: any } | string | Uint8Array, nextUpgrade: PolymeshContractsNextUpgrade | { chainVersion?: any; apiHash?: any } | string | Uint8Array) => SubmittableExtrinsic, [PolymeshContractsApi, PolymeshContractsNextUpgrade]>; /** * Generic tx **/ @@ -2638,6 +2712,23 @@ declare module '@polkadot/api-base/types/submittable' { }; portfolio: { acceptPortfolioCustody: AugmentedSubmittable<(authId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; + /** + * Adds an identity that will be allowed to create and take custody of a portfolio under the caller's identity. + * + * # Arguments + * * `trusted_identity` - the [`IdentityId`] that will be allowed to call `create_custody_portfolio`. + * + **/ + allowIdentityToCreatePortfolios: AugmentedSubmittable<(trustedIdentity: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; + /** + * Creates a portfolio under the `portfolio_owner_id` identity and transfers its custody to the caller's identity. + * + * # Arguments + * * `portfolio_owner_id` - the [`IdentityId`] that will own the new portfolio. + * * `portfolio_name` - the [`PortfolioName`] of the new portfolio. + * + **/ + createCustodyPortfolio: AugmentedSubmittable<(portfolioOwnerId: PolymeshPrimitivesIdentityId | string | Uint8Array, portfolioName: Bytes | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Bytes]>; /** * Creates a portfolio with the given `name`. **/ @@ -2719,6 +2810,14 @@ declare module '@polkadot/api-base/types/submittable' { * * Portfolio **/ renamePortfolio: AugmentedSubmittable<(num: u64 | AnyNumber | Uint8Array, toName: Bytes | string | Uint8Array) => SubmittableExtrinsic, [u64, Bytes]>; + /** + * Removes permission of an identity to create and take custody of a portfolio under the caller's identity. + * + * # Arguments + * * `identity` - the [`IdentityId`] that will have the permissions to call `create_custody_portfolio` revoked. + * + **/ + revokeCreatePortfoliosPermission: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** * Generic tx **/ @@ -2766,7 +2865,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Errors * * `BadOrigin` - Only root allowed. **/ - changeBaseFee: AugmentedSubmittable<(op: PolymeshCommonUtilitiesProtocolFeeProtocolOp | 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | 'NFTCreateCollection' | 'NFTMint' | number | Uint8Array, baseFee: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesProtocolFeeProtocolOp, u128]>; + changeBaseFee: AugmentedSubmittable<(op: PolymeshCommonUtilitiesProtocolFeeProtocolOp | 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | 'NFTCreateCollection' | 'NFTMint' | 'IdentityCreateChildIdentity' | number | Uint8Array, baseFee: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshCommonUtilitiesProtocolFeeProtocolOp, u128]>; /** * Changes the fee coefficient for the root origin. * @@ -2868,29 +2967,6 @@ declare module '@polkadot/api-base/types/submittable' { **/ [key: string]: SubmittableExtrinsicFunction; }; - rewards: { - /** - * Claim an ITN reward. - * - * ## Arguments - * * `itn_address` specifying the awarded address on ITN. - * * `signature` authenticating the claim to the reward. - * The signature should contain `reward_address` followed by the suffix `"claim_itn_reward"`, - * and must have been signed by `itn_address`. - * - * # Errors - * * `InsufficientBalance` - Itn rewards has insufficient funds to issue the reward. - * * `InvalidSignature` - `signature` had an invalid signer or invalid message. - * * `ItnRewardAlreadyClaimed` - Reward issued to the `itn_address` has already been claimed. - * * `UnknownItnAddress` - `itn_address` is not in the rewards table and has no reward to be claimed. - **/ - claimItnReward: AugmentedSubmittable<(rewardAddress: AccountId32 | string | Uint8Array, itnAddress: AccountId32 | string | Uint8Array, signature: SpRuntimeMultiSignature | { Ed25519: any } | { Sr25519: any } | { Ecdsa: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, AccountId32, SpRuntimeMultiSignature]>; - setItnRewardStatus: AugmentedSubmittable<(itnAddress: AccountId32 | string | Uint8Array, status: PalletRewardsItnRewardStatus | { Unclaimed: any } | { Claimed: any } | string | Uint8Array) => SubmittableExtrinsic, [AccountId32, PalletRewardsItnRewardStatus]>; - /** - * Generic tx - **/ - [key: string]: SubmittableExtrinsicFunction; - }; scheduler: { /** * Cancel an anonymously scheduled task. @@ -2959,61 +3035,121 @@ declare module '@polkadot/api-base/types/submittable' { * Adds and affirms a new instruction. * * # Arguments - * * `venue_id` - ID of the venue this instruction belongs to. - * * `settlement_type` - Defines if the instruction should be settled in the next block, after receiving all affirmations - * or waiting till a specific block. - * * `trade_date` - Optional date from which people can interact with this instruction. - * * `value_date` - Optional date after which the instruction should be settled (not enforced) - * * `legs` - Legs included in this instruction. - * * `portfolios` - Portfolios that the sender controls and wants to use in this affirmations. - * * `instruction_memo` - Memo field for this instruction. + * * `venue_id`: The [`VenueId`] of the venue this instruction belongs to. + * * `settlement_type`: The [`SettlementType`] specifying when the instruction should be settled. + * * `trade_date`: Optional date from which people can interact with this instruction. + * * `value_date`: Optional date after which the instruction should be settled (not enforced). + * * `legs`: A vector of all [`Leg`] included in this instruction. + * * `portfolios`: A vector of [`PortfolioId`] under the caller's control and intended for affirmation. + * * `memo`: An optional [`Memo`] field for this instruction. * * # Permissions * * Portfolio **/ addAndAffirmInstruction: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: PolymeshPrimitivesSettlementSettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | { SettleManual: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (PolymeshPrimitivesSettlementLeg | { Fungible: any } | { NonFungible: any } | { OffChain: any } | string | Uint8Array)[], portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], instructionMemo: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, PolymeshPrimitivesSettlementSettlementType, Option, Option, Vec, Vec, Option]>; /** - * Adds a new instruction. + * Adds and affirms a new instruction with mediators. * * # Arguments - * * `venue_id` - ID of the venue this instruction belongs to. - * * `settlement_type` - Defines if the instruction should be settled in the next block, after receiving all affirmations - * or waiting till a specific block. - * * `trade_date` - Optional date from which people can interact with this instruction. - * * `value_date` - Optional date after which the instruction should be settled (not enforced) - * * `legs` - Legs included in this instruction. - * * `memo` - Memo field for this instruction. + * * `venue_id`: The [`VenueId`] of the venue this instruction belongs to. + * * `settlement_type`: The [`SettlementType`] specifying when the instruction should be settled. + * * `trade_date`: Optional date from which people can interact with this instruction. + * * `value_date`: Optional date after which the instruction should be settled (not enforced). + * * `legs`: A vector of all [`Leg`] included in this instruction. + * * `portfolios`: A vector of [`PortfolioId`] under the caller's control and intended for affirmation. + * * `instruction_memo`: An optional [`Memo`] field for this instruction. + * * `mediators`: A set of [`IdentityId`] of all the mandatory mediators for the instruction. * - * # Weight - * `950_000_000 + 1_000_000 * legs.len()` + * # Permissions + * * Portfolio + **/ + addAndAffirmWithMediators: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: PolymeshPrimitivesSettlementSettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | { SettleManual: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (PolymeshPrimitivesSettlementLeg | { Fungible: any } | { NonFungible: any } | { OffChain: any } | string | Uint8Array)[], portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], instructionMemo: Option | null | object | string | Uint8Array, mediators: BTreeSet) => SubmittableExtrinsic, [u64, PolymeshPrimitivesSettlementSettlementType, Option, Option, Vec, Vec, Option, BTreeSet]>; + /** + * Adds a new instruction. + * + * # Arguments + * * `venue_id`: The [`VenueId`] of the venue this instruction belongs to. + * * `settlement_type`: The [`SettlementType`] specifying when the instruction should be settled. + * * `trade_date`: Optional date from which people can interact with this instruction. + * * `value_date`: Optional date after which the instruction should be settled (not enforced). + * * `legs`: A vector of all [`Leg`] included in this instruction. + * * `memo`: An optional [`Memo`] field for this instruction. **/ addInstruction: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: PolymeshPrimitivesSettlementSettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | { SettleManual: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (PolymeshPrimitivesSettlementLeg | { Fungible: any } | { NonFungible: any } | { OffChain: any } | string | Uint8Array)[], instructionMemo: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, PolymeshPrimitivesSettlementSettlementType, Option, Option, Vec, Option]>; + /** + * Adds a new instruction with mediators. + * + * # Arguments + * * `venue_id`: The [`VenueId`] of the venue this instruction belongs to. + * * `settlement_type`: The [`SettlementType`] specifying when the instruction should be settled. + * * `trade_date`: Optional date from which people can interact with this instruction. + * * `value_date`: Optional date after which the instruction should be settled (not enforced). + * * `legs`: A vector of all [`Leg`] included in this instruction. + * * `instruction_memo`: An optional [`Memo`] field for this instruction. + * * `mediators`: A set of [`IdentityId`] of all the mandatory mediators for the instruction. + **/ + addInstructionWithMediators: AugmentedSubmittable<(venueId: u64 | AnyNumber | Uint8Array, settlementType: PolymeshPrimitivesSettlementSettlementType | { SettleOnAffirmation: any } | { SettleOnBlock: any } | { SettleManual: any } | string | Uint8Array, tradeDate: Option | null | object | string | Uint8Array, valueDate: Option | null | object | string | Uint8Array, legs: Vec | (PolymeshPrimitivesSettlementLeg | { Fungible: any } | { NonFungible: any } | { OffChain: any } | string | Uint8Array)[], instructionMemo: Option | null | object | string | Uint8Array, mediators: BTreeSet) => SubmittableExtrinsic, [u64, PolymeshPrimitivesSettlementSettlementType, Option, Option, Vec, Option, BTreeSet]>; /** * Provide affirmation to an existing instruction. * * # Arguments - * * `id` - The `InstructionId` of the instruction to be affirmed. - * * `portfolios` - Portfolios that the sender controls and wants to affirm this instruction. + * * `id` - the [`InstructionId`] of the instruction being affirmed. + * * `portfolios` - a vector of [`PortfolioId`] under the caller's control and intended for affirmation. * * # Permissions * * Portfolio **/ affirmInstruction: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, Vec]>; /** - * Accepts an instruction and claims a signed receipt. + * Affirms the instruction as a mediator - should only be called by mediators, otherwise it will fail. + * + * # Arguments + * * `origin`: The secondary key of the sender. + * * `instruction_id`: The [`InstructionId`] that will be affirmed by the mediator. + * * `expiry`: An Optional value for defining when the affirmation will expire (None means it will always be valid). + **/ + affirmInstructionAsMediator: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, expiry: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Option]>; + /** + * Provide affirmation to an existing instruction. + * + * # Arguments + * * `id` - the [`InstructionId`] of the instruction being affirmed. + * * `portfolios` - a vector of [`PortfolioId`] under the caller's control and intended for affirmation. + * * `number_of_assets` - an optional [`AffirmationCount`] that will be used for a precise fee estimation before executing the extrinsic. + * + * Note: calling the rpc method `get_affirmation_count` returns an instance of [`AffirmationCount`]. + * + * # Permissions + * * Portfolio + **/ + affirmInstructionWithCount: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], numberOfAssets: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Vec, Option]>; + /** + * Affirms an instruction using receipts for offchain transfers. * * # Arguments - * * `id` - Target instruction id. - * * `leg_id` - Target leg id for the receipt - * * `receipt_uid` - Receipt ID generated by the signer. - * * `signer` - Signer of the receipt. - * * `signed_data` - Signed receipt. - * * `portfolios` - Portfolios that the sender controls and wants to accept this instruction with. + * * `id` - the [`InstructionId`] of the instruction being affirmed. + * * `receipt_details` - a vector of [`ReceiptDetails`], which contain the details about the offchain transfer. + * * `portfolios` - a vector of [`PortfolioId`] under the caller's control and intended for affirmation. * * # Permissions * * Portfolio **/ affirmWithReceipts: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, receiptDetails: Vec | (PolymeshPrimitivesSettlementReceiptDetails | { uid?: any; instructionId?: any; legId?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array)[], portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, Vec, Vec]>; + /** + * Affirms an instruction using receipts for offchain transfers. + * + * # Arguments + * * `id` - the [`InstructionId`] of the instruction being affirmed. + * * `receipt_details` - a vector of [`ReceiptDetails`], which contain the details about the offchain transfer. + * * `portfolios` - a vector of [`PortfolioId`] under the caller's control and intended for affirmation. + * * `number_of_assets` - an optional [`AffirmationCount`] that will be used for a precise fee estimation before executing the extrinsic. + * + * Note: calling the rpc method `get_affirmation_count` returns an instance of [`AffirmationCount`]. + * + * # Permissions + * * Portfolio + **/ + affirmWithReceiptsWithCount: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, receiptDetails: Vec | (PolymeshPrimitivesSettlementReceiptDetails | { uid?: any; instructionId?: any; legId?: any; signer?: any; signature?: any; metadata?: any } | string | Uint8Array)[], portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], numberOfAssets: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Vec, Vec, Option]>; /** * Allows additional venues to create instructions involving an asset. * @@ -3066,13 +3202,37 @@ declare module '@polkadot/api-base/types/submittable' { * Rejects an existing instruction. * * # Arguments - * * `id` - Instruction id to reject. - * * `portfolio` - Portfolio to reject the instruction. + * * `id` - the [`InstructionId`] of the instruction being rejected. + * * `portfolio` - the [`PortfolioId`] that belongs to the instruction and is rejecting it. * * # Permissions * * Portfolio **/ rejectInstruction: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array) => SubmittableExtrinsic, [u64, PolymeshPrimitivesIdentityIdPortfolioId]>; + /** + * Rejects an existing instruction - should only be called by mediators, otherwise it will fail. + * + * # Arguments + * * `instruction_id` - the [`InstructionId`] of the instruction being rejected. + * * `number_of_assets` - an optional [`AssetCount`] that will be used for a precise fee estimation before executing the extrinsic. + * + * Note: calling the rpc method `get_execute_instruction_info` returns an instance of [`ExecuteInstructionInfo`], which contain the asset count. + **/ + rejectInstructionAsMediator: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array, numberOfAssets: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Option]>; + /** + * Rejects an existing instruction. + * + * # Arguments + * * `id` - the [`InstructionId`] of the instruction being rejected. + * * `portfolio` - the [`PortfolioId`] that belongs to the instruction and is rejecting it. + * * `number_of_assets` - an optional [`AssetCount`] that will be used for a precise fee estimation before executing the extrinsic. + * + * Note: calling the rpc method `get_execute_instruction_info` returns an instance of [`ExecuteInstructionInfo`], which contain the asset count. + * + * # Permissions + * * Portfolio + **/ + rejectInstructionWithCount: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolio: PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array, numberOfAssets: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, PolymeshPrimitivesIdentityIdPortfolioId, Option]>; /** * Enables or disabled venue filtering for a token. * @@ -3109,13 +3269,35 @@ declare module '@polkadot/api-base/types/submittable' { * Withdraw an affirmation for a given instruction. * * # Arguments - * * `id` - Instruction id for that affirmation get withdrawn. - * * `portfolios` - Portfolios that the sender controls and wants to withdraw affirmation. + * * `id` - the [`InstructionId`] of the instruction getting an affirmation withdrawn. + * * `portfolios` - a vector of [`PortfolioId`] under the caller's control and intended for affirmation withdrawal. * * # Permissions * * Portfolio **/ withdrawAffirmation: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [u64, Vec]>; + /** + * Removes the mediator's affirmation for the instruction - should only be called by mediators, otherwise it will fail. + * + * # Arguments + * * `origin`: The secondary key of the sender. + * * `instruction_id`: The [`InstructionId`] that will have the affirmation removed. + **/ + withdrawAffirmationAsMediator: AugmentedSubmittable<(instructionId: u64 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u64]>; + /** + * Withdraw an affirmation for a given instruction. + * + * # Arguments + * * `id` - the [`InstructionId`] of the instruction getting an affirmation withdrawn. + * * `portfolios` - a vector of [`PortfolioId`] under the caller's control and intended for affirmation withdrawal. + * * `number_of_assets` - an optional [`AffirmationCount`] that will be used for a precise fee estimation before executing the extrinsic. + * + * Note: calling the rpc method `get_affirmation_count` returns an instance of [`AffirmationCount`]. + * + * # Permissions + * * Portfolio + **/ + withdrawAffirmationWithCount: AugmentedSubmittable<(id: u64 | AnyNumber | Uint8Array, portfolios: Vec | (PolymeshPrimitivesIdentityIdPortfolioId | { did?: any; kind?: any } | string | Uint8Array)[], numberOfAssets: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [u64, Vec, Option]>; /** * Generic tx **/ @@ -3123,14 +3305,13 @@ declare module '@polkadot/api-base/types/submittable' { }; staking: { /** - * Governance committee on 2/3 rds majority can introduce a new potential identity - * to the pool of permissioned entities who can run validators. Staking module uses `PermissionedIdentity` - * to ensure validators have completed KYB compliance and considers them for validation. + * Scale up the ideal number of validators by a factor upto maximum of + * `ElectionProviderBase::MaxWinners`. * - * # Arguments - * * origin Required origin for adding a potential validator. - * * identity Validator's IdentityId. - * * intended_count No. of validators given identity intends to run. + * The dispatch origin must be Root. + * + * ## Complexity + * Same as [`Self::set_validator_count`]. **/ addPermissionedValidator: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array, intendedCount: Option | null | object | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Option]>; /** @@ -3142,60 +3323,38 @@ declare module '@polkadot/api-base/types/submittable' { * The dispatch origin for this call must be _Signed_ by the stash account. * * Emits `Bonded`. - * - * # + * ## Complexity * - Independent of the arguments. Moderate complexity. * - O(1). * - Three extra DB entries. * * NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned * unless the `origin` falls below _existential deposit_ and gets removed as dust. - * ------------------ - * Weight: O(1) - * DB Weight: - * - Read: Bonded, Ledger, [Origin Account], Current Era, History Depth, Locks - * - Write: Bonded, Payee, [Origin Account], Locks, Ledger - * # **/ bond: AugmentedSubmittable<(controller: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array, value: Compact | AnyNumber | Uint8Array, payee: PalletStakingRewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress, Compact, PalletStakingRewardDestination]>; /** * Add some extra amount that have appeared in the stash `free_balance` into the balance up * for staking. * - * Use this if there are additional funds in your stash account that you wish to bond. - * Unlike [`bond`] or [`unbond`] this function does not impose any limitation on the amount - * that can be added. + * The dispatch origin for this call must be _Signed_ by the stash, not the controller. * - * The dispatch origin for this call must be _Signed_ by the stash, not the controller and - * it can be only called when [`EraElectionStatus`] is `Closed`. + * Use this if there are additional funds in your stash account that you wish to bond. + * Unlike [`bond`](Self::bond) or [`unbond`](Self::unbond) this function does not impose + * any limitation on the amount that can be added. * * Emits `Bonded`. * - * # + * ## Complexity * - Independent of the arguments. Insignificant complexity. * - O(1). - * - One DB entry. - * ------------ - * DB Weight: - * - Read: Era Election Status, Bonded, Ledger, [Origin Account], Locks - * - Write: [Origin Account], Locks, Ledger - * # **/ bondExtra: AugmentedSubmittable<(maxAdditional: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Cancel enactment of a deferred slash. * - * Can be called by the `T::SlashCancelOrigin`. + * Can be called by the `T::AdminOrigin`. * * Parameters: era and indices of the slashes for that era to kill. - * - * # - * Complexity: O(U + S) - * with U unapplied slashes weighted with U=1000 - * and S is the number of slash indices to be canceled. - * - Read: Unapplied Slashes - * - Write: Unapplied Slashes - * # **/ cancelDeferredSlash: AugmentedSubmittable<(era: u32 | AnyNumber | Uint8Array, slashIndices: Vec | (u32 | AnyNumber | Uint8Array)[]) => SubmittableExtrinsic, [u32, Vec]>; /** @@ -3203,7 +3362,7 @@ declare module '@polkadot/api-base/types/submittable' { * * # Arguments * * origin - AccountId of root. - * * slashing_switch - Switch used to set the targets for slashing. + * * slashing_switch - Switch used to set the targets for s **/ changeSlashingAllowedFor: AugmentedSubmittable<(slashingSwitch: PalletStakingSlashingSwitch | 'Validator' | 'ValidatorAndNominator' | 'None' | number | Uint8Array) => SubmittableExtrinsic, [PalletStakingSlashingSwitch]>; /** @@ -3212,18 +3371,11 @@ declare module '@polkadot/api-base/types/submittable' { * Effects will be felt at the beginning of the next era. * * The dispatch origin for this call must be _Signed_ by the controller, not the stash. - * And, it can be only called when [`EraElectionStatus`] is `Closed`. * - * # + * ## Complexity * - Independent of the arguments. Insignificant complexity. * - Contains one read. * - Writes are limited to the `origin` account key. - * -------- - * Weight: O(1) - * DB Weight: - * - Read: EraElectionStatus, Ledger - * - Write: Validators, Nominators - * # **/ chill: AugmentedSubmittable<() => SubmittableExtrinsic, []>; /** @@ -3240,7 +3392,7 @@ declare module '@polkadot/api-base/types/submittable' { * * `BadOrigin` The origin was not a GC member. * * `CallNotAllowed` The call is not allowed at the given time due to restrictions of election period. * * `NotExists` Permissioned validator doesn't exist. - * * `NotStash` Not a stash account for the permissioned identity. + * * `NotStash` Not a stash account for the permissioned i **/ chillFromGovernance: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array, stashKeys: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, Vec]>; /** @@ -3249,11 +3401,15 @@ declare module '@polkadot/api-base/types/submittable' { * * The dispatch origin must be Root. * - * # + * # Warning + * + * The election process starts multiple blocks before the end of the era. + * If this is called just before a new era is triggered, the election process may not + * have enough blocks to get a result. + * + * ## Complexity * - No arguments. * - Weight: O(1) - * - Write ForceEra - * # **/ forceNewEra: AugmentedSubmittable<() => SubmittableExtrinsic, []>; /** @@ -3261,10 +3417,11 @@ declare module '@polkadot/api-base/types/submittable' { * * The dispatch origin must be Root. * - * # - * - Weight: O(1) - * - Write: ForceEra - * # + * # Warning + * + * The election process starts multiple blocks before the end of the era. + * If this is called just before a new era is triggered, the election process may not + * have enough blocks to get a result. **/ forceNewEraAlways: AugmentedSubmittable<() => SubmittableExtrinsic, []>; /** @@ -3272,56 +3429,44 @@ declare module '@polkadot/api-base/types/submittable' { * * The dispatch origin must be Root. * - * # + * # Warning + * + * The election process starts multiple blocks before the end of the era. + * Thus the election process may be ongoing when this is called. In this case the + * election will continue until the next era is triggered. + * + * ## Complexity * - No arguments. * - Weight: O(1) - * - Write: ForceEra - * # **/ forceNoEras: AugmentedSubmittable<() => SubmittableExtrinsic, []>; /** * Force a current staker to become completely unstaked, immediately. * * The dispatch origin must be Root. - * - * # - * O(S) where S is the number of slashing spans to be removed - * Reads: Bonded, Slashing Spans, Account, Locks - * Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Account, Locks - * Writes Each: SpanSlash * S - * # **/ forceUnstake: AugmentedSubmittable<(stash: AccountId32 | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** - * Increments the ideal number of validators. + * Increments the ideal number of validators upto maximum of + * `ElectionProviderBase::MaxWinners`. * * The dispatch origin must be Root. * - * # - * Same as [`set_validator_count`]. - * # + * ## Complexity + * Same as [`Self::set_validator_count`]. **/ increaseValidatorCount: AugmentedSubmittable<(additional: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** * Declare the desire to nominate `targets` for the origin controller. * - * Effects will be felt at the beginning of the next era. This can only be called when - * [`EraElectionStatus`] is `Closed`. + * Effects will be felt at the beginning of the next era. * * The dispatch origin for this call must be _Signed_ by the controller, not the stash. - * And, it can be only called when [`EraElectionStatus`] is `Closed`. * - * # + * ## Complexity * - The transaction's complexity is proportional to the size of `targets` (N) - * which is capped at CompactAssignments::LIMIT (MAX_NOMINATIONS). + * which is capped at CompactAssignments::LIMIT (T::MaxNominations). * - Both the reads and writes follow a similar pattern. - * --------- - * Weight: O(N) - * where N is the number of targets - * DB Weight: - * - Reads: Era Election Status, Ledger, Current Era - * - Writes: Validators, Nominators - * # **/ nominate: AugmentedSubmittable<(targets: Vec | (MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** @@ -3334,61 +3479,34 @@ declare module '@polkadot/api-base/types/submittable' { * The origin of this call must be _Signed_. Any account can call this function, even if * it is not one of the stakers. * - * This can only be called when [`EraElectionStatus`] is `Closed`. - * - * # - * - Time complexity: at most O(MaxNominatorRewardedPerValidator). - * - Contains a limited number of reads and writes. - * ----------- - * N is the Number of payouts for the validator (including the validator) - * Weight: - * - Reward Destination Staked: O(N) - * - Reward Destination Controller (Creating): O(N) - * DB Weight: - * - Read: EraElectionStatus, CurrentEra, HistoryDepth, ErasValidatorReward, - * ErasStakersClipped, ErasRewardPoints, ErasValidatorPrefs (8 items) - * - Read Each: Bonded, Ledger, Payee, Locks, System Account (5 items) - * - Write Each: System Account, Locks, Ledger (3 items) - * # + * ## Complexity + * - At most O(MaxNominatorRewardedPerValidator). **/ payoutStakers: AugmentedSubmittable<(validatorStash: AccountId32 | string | Uint8Array, era: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; - /** - * System version of `payout_stakers()`. Only be called by the root origin. - **/ payoutStakersBySystem: AugmentedSubmittable<(validatorStash: AccountId32 | string | Uint8Array, era: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** - * Remove all data structure concerning a staker/stash once its balance is at the minimum. - * This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone - * and the target `stash` must have no funds left beyond the ED. + * Remove all data structures concerning a staker/stash once it is at a state where it can + * be considered `dust` in the staking system. The requirements are: * - * This can be called from any origin. + * 1. the `total_balance` of the stash is below existential deposit. + * 2. or, the `ledger.total` of the stash is below existential deposit. * - * - `stash`: The stash account to reap. Its balance must be zero. + * The former can happen in cases like a slash; the latter when a fully unbonded account + * is still receiving staking rewards in `RewardDestination::Staked`. * - * # - * Complexity: O(S) where S is the number of slashing spans on the account. - * DB Weight: - * - Reads: Stash Account, Bonded, Slashing Spans, Locks - * - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Stash Account, Locks - * - Writes Each: SpanSlash * S - * # + * It can be called by anyone, as long as `stash` meets the above requirements. + * + * Refunds the transaction fees upon successful execution. **/ reapStash: AugmentedSubmittable<(stash: AccountId32 | string | Uint8Array, numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [AccountId32, u32]>; /** * Rebond a portion of the stash scheduled to be unlocked. * - * The dispatch origin must be signed by the controller, and it can be only called when - * [`EraElectionStatus`] is `Closed`. + * The dispatch origin must be signed by the controller. * - * # + * ## Complexity * - Time complexity: O(L), where L is unlocking chunks - * - Bounded by `MAX_UNLOCKING_CHUNKS`. - * - Storage changes: Can't increase storage, only decrease it. - * --------------- - * - DB Weight: - * - Reads: EraElectionStatus, Ledger, Locks, [Origin Account] - * - Writes: [Origin Account], Locks, Ledger - * # + * - Bounded by `MaxUnlockingChunks`. **/ rebond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** @@ -3402,13 +3520,13 @@ declare module '@polkadot/api-base/types/submittable' { **/ removePermissionedValidator: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId]>; /** - * Scale up the ideal number of validators by a factor. + * Scale up the ideal number of validators by a factor upto maximum of + * `ElectionProviderBase::MaxWinners`. * * The dispatch origin must be Root. * - * # - * Same as [`set_validator_count`]. - * # + * ## Complexity + * Same as [`Self::set_validator_count`]. **/ scaleValidatorCount: AugmentedSubmittable<(factor: Percent | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Percent]>; /** @@ -3422,82 +3540,54 @@ declare module '@polkadot/api-base/types/submittable' { /** * (Re-)set the controller of a stash. * - * Effects will be felt at the beginning of the next era. + * Effects will be felt instantly (as soon as this function is completed successfully). * * The dispatch origin for this call must be _Signed_ by the stash, not the controller. * - * # + * ## Complexity + * O(1) * - Independent of the arguments. Insignificant complexity. * - Contains a limited number of reads. * - Writes are limited to the `origin` account key. - * ---------- - * Weight: O(1) - * DB Weight: - * - Read: Bonded, Ledger New Controller, Ledger Old Controller - * - Write: Bonded, Ledger New Controller, Ledger Old Controller - * # **/ setController: AugmentedSubmittable<(controller: MultiAddress | { Id: any } | { Index: any } | { Raw: any } | { Address32: any } | { Address20: any } | string | Uint8Array) => SubmittableExtrinsic, [MultiAddress]>; /** - * Set `HistoryDepth` value. This function will delete any history information - * when `HistoryDepth` is reduced. - * - * Parameters: - * - `new_history_depth`: The new history depth you would like to set. - * - `era_items_deleted`: The number of items that will be deleted by this dispatch. - * This should report all the storage items that will be deleted by clearing old - * era history. Needed to report an accurate weight for the dispatch. Trusted by - * `Root` to report an accurate number. + * Rebond a portion of the stash scheduled to be unlocked. * - * Origin must be root. + * The dispatch origin must be signed by the controller. * - * # - * - E: Number of history depths removed, i.e. 10 -> 7 = 3 - * - Weight: O(E) - * - DB Weight: - * - Reads: Current Era, History Depth - * - Writes: History Depth - * - Clear Prefix Each: Era Stakers, EraStakersClipped, ErasValidatorPrefs - * - Writes Each: ErasValidatorReward, ErasRewardPoints, ErasTotalStake, ErasStartSessionIndex - * # + * ## Complexity + * - Time complexity: O(L), where L is unlocking chunks + * - Bounded by `MaxUnlockingChunks`. **/ setHistoryDepth: AugmentedSubmittable<(newHistoryDepth: Compact | AnyNumber | Uint8Array, eraItemsDeleted: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact, Compact]>; /** * Set the validators who cannot be slashed (if any). * * The dispatch origin must be Root. - * - * # - * - O(V) - * - Write: Invulnerables - * # **/ setInvulnerables: AugmentedSubmittable<(invulnerables: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** - * Changes min bond value to be used in validate(). Only Governance + * Changes commission rate which applies to all validators. Only Governance * committee is allowed to change this value. * * # Arguments - * * `new_value` the new minimum + * * `new_cap` the new commission cap. **/ setMinBondThreshold: AugmentedSubmittable<(newValue: u128 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u128]>; /** * (Re-)set the payment target for a controller. * - * Effects will be felt at the beginning of the next era. + * Effects will be felt instantly (as soon as this function is completed successfully). * * The dispatch origin for this call must be _Signed_ by the controller, not the stash. * - * # + * ## Complexity + * - O(1) * - Independent of the arguments. Insignificant complexity. * - Contains a limited number of reads. * - Writes are limited to the `origin` account key. * --------- - * - Weight: O(1) - * - DB Weight: - * - Read: Ledger - * - Write: Payee - * # **/ setPayee: AugmentedSubmittable<(payee: PalletStakingRewardDestination | { Staked: any } | { Stash: any } | { Controller: any } | { Account: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletStakingRewardDestination]>; /** @@ -3505,10 +3595,8 @@ declare module '@polkadot/api-base/types/submittable' { * * The dispatch origin must be Root. * - * # - * Weight: O(1) - * Write: Validator Count - * # + * ## Complexity + * O(1) **/ setValidatorCount: AugmentedSubmittable<(updated: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** @@ -3580,34 +3668,21 @@ declare module '@polkadot/api-base/types/submittable' { * period ends. If this leaves an amount actively bonded less than * T::Currency::minimum_balance(), then it is increased to the full amount. * + * The dispatch origin for this call must be _Signed_ by the controller, not the stash. + * * Once the unlock period is done, you can call `withdraw_unbonded` to actually move * the funds out of management ready for transfer. * - * No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`) - * can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need - * to be called first to remove some of the chunks (if possible). + * No more than a limited number of unlocking chunks (see `MaxUnlockingChunks`) + * can co-exists at the same time. If there are no unlocking chunks slots available + * [`Call::withdraw_unbonded`] is called to remove some of the chunks (if possible). * - * The dispatch origin for this call must be _Signed_ by the controller, not the stash. - * And, it can be only called when [`EraElectionStatus`] is `Closed`. + * If a user encounters the `InsufficientBond` error when calling this extrinsic, + * they should call `chill` first in order to free up their bonded funds. * * Emits `Unbonded`. * * See also [`Call::withdraw_unbonded`]. - * - * # - * - Independent of the arguments. Limited but potentially exploitable complexity. - * - Contains a limited number of reads. - * - Each call (requires the remainder of the bonded balance to be above `minimum_balance`) - * will cause a new entry to be inserted into a vector (`Ledger.unlocking`) kept in storage. - * The only way to clean the aforementioned storage item is also user-controlled via - * `withdraw_unbonded`. - * - One DB entry. - * ---------- - * Weight: O(1) - * DB Weight: - * - Read: EraElectionStatus, Ledger, CurrentEra, Locks, \[Origin Account\] - * - Write: Locks, Ledger, \[Origin Account\] - * **/ unbond: AugmentedSubmittable<(value: Compact | AnyNumber | Uint8Array) => SubmittableExtrinsic, [Compact]>; /** @@ -3616,7 +3691,7 @@ declare module '@polkadot/api-base/types/submittable' { * # Arguments * * origin which must be the required origin for adding a potential validator. * * identity to add as a validator. - * * new_intended_count New value of intended count. + * * new_intended_count New value of intended co **/ updatePermissionedValidatorIntendedCount: AugmentedSubmittable<(identity: PolymeshPrimitivesIdentityId | string | Uint8Array, newIntendedCount: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [PolymeshPrimitivesIdentityId, u32]>; /** @@ -3625,31 +3700,14 @@ declare module '@polkadot/api-base/types/submittable' { * Effects will be felt at the beginning of the next era. * * The dispatch origin for this call must be _Signed_ by the controller, not the stash. - * And, it can be only called when [`EraElectionStatus`] is `Closed`. - * - * # - * - Independent of the arguments. Insignificant complexity. - * - Contains a limited number of reads. - * - Writes are limited to the `origin` account key. - * ----------- - * Weight: O(1) - * DB Weight: - * - Read: Era Election Status, Ledger - * - Write: Nominators, Validators - * # **/ validate: AugmentedSubmittable<(prefs: PalletStakingValidatorPrefs | { commission?: any; blocked?: any } | string | Uint8Array) => SubmittableExtrinsic, [PalletStakingValidatorPrefs]>; /** * Validate the nominators CDD expiry time. * - * If an account from a given set of address is nominating then - * check the CDD expiry time of it and if it is expired - * then the account should be unbonded and removed from the nominating process. - * - * # - * - Depends on passed list of AccountId. - * - Depends on the no. of claim issuers an accountId has for the CDD expiry. - * # + * If an account from a given set of address is nominating then check the CDD expiry time + * of it and if it is expired then the account should be unbonded and removed from the + * nominating process. **/ validateCddExpiryNominators: AugmentedSubmittable<(targets: Vec | (AccountId32 | string | Uint8Array)[]) => SubmittableExtrinsic, [Vec]>; /** @@ -3658,32 +3716,15 @@ declare module '@polkadot/api-base/types/submittable' { * This essentially frees up that balance to be used by the stash account to do * whatever it wants. * - * The dispatch origin for this call must be _Signed_ by the controller, not the stash. - * And, it can be only called when [`EraElectionStatus`] is `Closed`. + * The dispatch origin for this call must be _Signed_ by the controller. * * Emits `Withdrawn`. * * See also [`Call::unbond`]. * - * # - * - Could be dependent on the `origin` argument and how much `unlocking` chunks exist. - * It implies `consolidate_unlocked` which loops over `Ledger.unlocking`, which is - * indirectly user-controlled. See [`unbond`] for more detail. - * - Contains a limited number of reads, yet the size of which could be large based on `ledger`. - * - Writes are limited to the `origin` account key. - * --------------- - * Complexity O(S) where S is the number of slashing spans to remove - * Update: - * - Reads: EraElectionStatus, Ledger, Current Era, Locks, [Origin Account] - * - Writes: [Origin Account], Locks, Ledger - * Kill: - * - Reads: EraElectionStatus, Ledger, Current Era, Bonded, Slashing Spans, [Origin - * Account], Locks - * - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, - * [Origin Account], Locks - * - Writes Each: SpanSlash * S + * ## Complexity + * O(S) where S is the number of slashing spans to remove * NOTE: Weight annotation is the kill scenario, we refund otherwise. - * # **/ withdrawUnbonded: AugmentedSubmittable<(numSlashingSpans: u32 | AnyNumber | Uint8Array) => SubmittableExtrinsic, [u32]>; /** @@ -4344,6 +4385,15 @@ declare module '@polkadot/api-base/types/submittable' { [key: string]: SubmittableExtrinsicFunction; }; utility: { + /** + * Send a call through an indexed pseudonym of the sender. + * + * Filter from origin are passed along. The call will be dispatched with an origin which + * use the same filter as the origin of this call. + * + * The dispatch origin for this call must be _Signed_. + **/ + asDerivative: AugmentedSubmittable<(index: u16 | AnyNumber | Uint8Array, call: Call | { callIndex?: any; args?: any } | string | Uint8Array) => SubmittableExtrinsic, [u16, Call]>; /** * Send a batch of dispatch calls. * diff --git a/scripts/cli/src/interfaces/augment-types.ts b/scripts/cli/src/interfaces/augment-types.ts index aaf0955db1..2d4de92bfe 100644 --- a/scripts/cli/src/interfaces/augment-types.ts +++ b/scripts/cli/src/interfaces/augment-types.ts @@ -60,7 +60,7 @@ import type { ClassDetails, ClassId, ClassMetadata, DepositBalance, DepositBalan import type { Multisig, Timepoint } from '@polkadot/types/interfaces/utility'; import type { VestingInfo } from '@polkadot/types/interfaces/vesting'; import type { AssetInstance, AssetInstanceV0, AssetInstanceV1, AssetInstanceV2, BodyId, BodyPart, DoubleEncodedCall, Fungibility, FungibilityV0, FungibilityV1, FungibilityV2, InboundStatus, InstructionV2, InteriorMultiLocation, Junction, JunctionV0, JunctionV1, JunctionV2, Junctions, JunctionsV1, JunctionsV2, MultiAsset, MultiAssetFilter, MultiAssetFilterV1, MultiAssetFilterV2, MultiAssetV0, MultiAssetV1, MultiAssetV2, MultiAssets, MultiAssetsV1, MultiAssetsV2, MultiLocation, MultiLocationV0, MultiLocationV1, MultiLocationV2, NetworkId, OriginKindV0, OriginKindV1, OriginKindV2, OutboundStatus, Outcome, QueryId, QueryStatus, QueueConfigData, Response, ResponseV0, ResponseV1, ResponseV2, ResponseV2Error, ResponseV2Result, VersionMigrationStage, VersionedMultiAsset, VersionedMultiAssets, VersionedMultiLocation, VersionedResponse, VersionedXcm, WeightLimitV2, WildFungibility, WildFungibilityV0, WildFungibilityV1, WildFungibilityV2, WildMultiAsset, WildMultiAssetV1, WildMultiAssetV2, Xcm, XcmAssetId, XcmError, XcmErrorV0, XcmErrorV1, XcmErrorV2, XcmOrder, XcmOrderV0, XcmOrderV1, XcmOrderV2, XcmOrigin, XcmOriginKind, XcmV0, XcmV1, XcmV2, XcmVersion, XcmpMessageFormat } from '@polkadot/types/interfaces/xcm'; -import type { AGId, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetDidResult, AssetIdentifier, AssetMetadataDescription, AssetMetadataGlobalKey, AssetMetadataKey, AssetMetadataLocalKey, AssetMetadataLockStatus, AssetMetadataName, AssetMetadataSpec, AssetMetadataValue, AssetMetadataValueDetail, AssetName, AssetOwnershipRelation, AssetPermissions, AssetScope, AssetTransferCompliance, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, Committee, ComplianceRequirement, ComplianceRequirementResult, Condition, ConditionResult, ConditionType, CorporateAction, CountryCode, CustomAssetTypeId, CustomClaimTypeId, DepositInfo, DidRecord, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExtrinsicPermissions, Fund, FundDescription, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, FundraiserStatus, FundraiserTier, FungibleLeg, FungibleToken, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, InitiateCorporateActionArgs, Instruction, InstructionId, InstructionStatus, ItnRewardStatus, KeyIdentityData, KeyRecord, Leg, LegId, LegStatus, LocalCAId, MaybeBlock, Member, Memo, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, NFTId, NFTs, NonFungibleLeg, NonFungibleType, OffChainAsset, OffChainLeg, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RpcDidRecords, RpcDidRecordsSuccess, ScheduleId, ScheduleSpec, Scope, ScopeId, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, Stat1stKey, Stat2ndKey, StatClaim, StatOpType, StatType, StatUpdate, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, Ticker, TickerRegistration, TickerRegistrationConfig, TransferCondition, TransferConditionExemptKey, TransferConditionResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueId, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult, canTransferGranularReturn } from 'polymesh-typegen/interfaces/default'; +import type { AGId, AffirmationCount, AffirmationStatus, AgentGroup, AssetCompliance, AssetComplianceResult, AssetCount, AssetDidResult, AssetIdentifier, AssetMetadataDescription, AssetMetadataGlobalKey, AssetMetadataKey, AssetMetadataLocalKey, AssetMetadataLockStatus, AssetMetadataName, AssetMetadataSpec, AssetMetadataValue, AssetMetadataValueDetail, AssetName, AssetOwnershipRelation, AssetPermissions, AssetScope, AssetTransferCompliance, AssetType, Authorization, AuthorizationData, AuthorizationNonce, AuthorizationType, BallotMeta, BallotTimeRange, BallotTitle, BallotVote, Beneficiary, BridgeTx, BridgeTxDetail, BridgeTxStatus, CACheckpoint, CADetails, CAId, CAKind, CalendarPeriod, CalendarUnit, CanTransferGranularReturn, CanTransferResult, CappedFee, CddId, CddStatus, CheckpointId, CheckpointSchedule, ChoiceTitle, Claim, Claim1stKey, Claim2ndKey, ClaimType, Committee, ComplianceRequirement, ComplianceRequirementResult, Condition, ConditionResult, ConditionType, CorporateAction, CountryCode, CustomAssetTypeId, CustomClaimTypeId, DepositInfo, DidRecord, DidStatus, DispatchableName, DispatchableNames, Distribution, Document, DocumentHash, DocumentId, DocumentName, DocumentType, DocumentUri, ErrorAt, EventCounts, EventDid, ExecuteInstructionInfo, ExtrinsicPermissions, Fund, FundDescription, FundingRoundName, Fundraiser, FundraiserId, FundraiserName, FundraiserStatus, FundraiserTier, FungibleLeg, FungibleToken, GranularCanTransferResult, HandledTxStatus, IdentityClaim, IdentityId, IdentityRole, InactiveMember, InitiateCorporateActionArgs, Instruction, InstructionId, InstructionStatus, ItnRewardStatus, KeyIdentityData, KeyRecord, Leg, LegId, LegStatus, LocalCAId, MaybeBlock, Member, Memo, Motion, MotionInfoLink, MotionTitle, MovePortfolioItem, NFTId, NFTs, NonFungibleLeg, NonFungibleType, OffChainAsset, OffChainLeg, OffChainSignature, PalletName, PalletPermissions, Percentage, PermissionedIdentityPrefs, Permissions, Pip, PipDescription, PipId, PipsMetadata, PolymeshVotes, PortfolioId, PortfolioKind, PortfolioName, PortfolioNumber, PortfolioPermissions, PortfolioValidityResult, PosRatio, PreAuthorizedKeyInfo, PriceTier, ProposalData, ProposalDetails, ProposalState, ProposalStatus, Proposer, ProtocolOp, Receipt, ReceiptDetails, ReceiptMetadata, RecordDate, RecordDateSpec, RestrictionResult, RpcDidRecords, RpcDidRecordsSuccess, ScheduleId, ScheduleSpec, Scope, SecondaryKey, SecondaryKeyWithAuth, SecurityToken, SettlementType, Signatory, SkippedCount, SlashingSwitch, SnapshotId, SnapshotMetadata, SnapshotResult, SnapshottedPip, Stat1stKey, Stat2ndKey, StatClaim, StatOpType, StatType, StatUpdate, StoredSchedule, Subsidy, TargetIdAuthorization, TargetIdentities, TargetIdentity, TargetTreatment, Tax, Ticker, TickerRegistration, TickerRegistrationConfig, TransferCondition, TransferConditionExemptKey, TransferConditionResult, TrustedFor, TrustedIssuer, UniqueCall, Url, Venue, VenueDetails, VenueId, VenueType, Version, VoteByPip, VoteCount, VoteCountProposalFound, VotingResult } from 'polymesh-typegen/interfaces/default'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -90,6 +90,7 @@ declare module '@polkadot/types/types/registry' { ActiveIndex: ActiveIndex; ActiveRecovery: ActiveRecovery; Address: Address; + AffirmationCount: AffirmationCount; AffirmationStatus: AffirmationStatus; AgentGroup: AgentGroup; AGId: AGId; @@ -106,6 +107,7 @@ declare module '@polkadot/types/types/registry' { AssetBalance: AssetBalance; AssetCompliance: AssetCompliance; AssetComplianceResult: AssetComplianceResult; + AssetCount: AssetCount; AssetDestroyWitness: AssetDestroyWitness; AssetDetails: AssetDetails; AssetDidResult: AssetDidResult; @@ -230,7 +232,7 @@ declare module '@polkadot/types/types/registry' { CandidateInfo: CandidateInfo; CandidatePendingAvailability: CandidatePendingAvailability; CandidateReceipt: CandidateReceipt; - canTransferGranularReturn: canTransferGranularReturn; + CanTransferGranularReturn: CanTransferGranularReturn; CanTransferResult: CanTransferResult; CappedFee: CappedFee; CddId: CddId; @@ -478,6 +480,7 @@ declare module '@polkadot/types/types/registry' { EvmLog: EvmLog; EvmVicinity: EvmVicinity; ExecReturnValue: ExecReturnValue; + ExecuteInstructionInfo: ExecuteInstructionInfo; ExitError: ExitError; ExitFatal: ExitFatal; ExitReason: ExitReason; @@ -985,7 +988,6 @@ declare module '@polkadot/types/types/registry' { ScheduleTo264: ScheduleTo264; Scheduling: Scheduling; Scope: Scope; - ScopeId: ScopeId; Seal: Seal; SealV0: SealV0; SeatHolder: SeatHolder; diff --git a/scripts/cli/src/interfaces/default/types.ts b/scripts/cli/src/interfaces/default/types.ts index e2958917d4..d78ad1783d 100644 --- a/scripts/cli/src/interfaces/default/types.ts +++ b/scripts/cli/src/interfaces/default/types.ts @@ -13,6 +13,13 @@ export interface AccountInfo extends AccountInfoWithDualRefCount {} /** @name Address */ export interface Address extends MultiAddress {} +/** @name AffirmationCount */ +export interface AffirmationCount extends Struct { + readonly sender_asset_count: AssetCount; + readonly receiver_asset_count: AssetCount; + readonly offchain_count: u32; +} + /** @name AffirmationStatus */ export interface AffirmationStatus extends Enum { readonly isUnknown: boolean; @@ -48,6 +55,13 @@ export interface AssetComplianceResult extends Struct { readonly result: bool; } +/** @name AssetCount */ +export interface AssetCount extends Struct { + readonly fungible_tokens: u32; + readonly non_fungible_tokens: u32; + readonly off_chain_assets: u32; +} + /** @name AssetDidResult */ export interface AssetDidResult extends Enum { readonly isOk: boolean; @@ -321,8 +335,8 @@ export interface CalendarUnit extends Enum { readonly type: 'Second' | 'Minute' | 'Hour' | 'Day' | 'Week' | 'Month' | 'Year'; } -/** @name canTransferGranularReturn */ -export interface canTransferGranularReturn extends Enum { +/** @name CanTransferGranularReturn */ +export interface CanTransferGranularReturn extends Enum { readonly isOk: boolean; readonly asOk: GranularCanTransferResult; readonly isErr: boolean; @@ -841,6 +855,15 @@ export interface EventCounts extends Vec {} /** @name EventDid */ export interface EventDid extends IdentityId {} +/** @name ExecuteInstructionInfo */ +export interface ExecuteInstructionInfo extends Struct { + readonly fungible_tokens: u32; + readonly non_fungible_tokens: u32; + readonly off_chain_assets: u32; + readonly consumed_weight: Weight; + readonly error: Option; +} + /** @name ExtrinsicPermissions */ export interface ExtrinsicPermissions extends Enum { readonly isWhole: boolean; @@ -926,7 +949,6 @@ export interface GranularCanTransferResult extends Struct { readonly self_transfer: bool; readonly invalid_receiver_cdd: bool; readonly invalid_sender_cdd: bool; - readonly missing_scope_claim: bool; readonly receiver_custodian_error: bool; readonly sender_custodian_error: bool; readonly sender_insufficient_balance: bool; @@ -935,6 +957,7 @@ export interface GranularCanTransferResult extends Struct { readonly transfer_condition_result: Vec; readonly compliance_result: AssetComplianceResult; readonly result: bool; + readonly consumed_weight: Option; } /** @name HandledTxStatus */ @@ -1324,7 +1347,10 @@ export interface ProtocolOp extends Enum { readonly isContractsPutCode: boolean; readonly isCorporateBallotAttachBallot: boolean; readonly isCapitalDistributionDistribute: boolean; - readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute'; + readonly isNftCreateCollection: boolean; + readonly isNftMint: boolean; + readonly isIdentityCreateChildIdentity: boolean; + readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | 'NftCreateCollection' | 'NftMint' | 'IdentityCreateChildIdentity'; } /** @name Receipt */ @@ -1409,9 +1435,6 @@ export interface Scope extends Enum { readonly type: 'Identity' | 'Ticker' | 'Custom'; } -/** @name ScopeId */ -export interface ScopeId extends U8aFixed {} - /** @name SecondaryKey */ export interface SecondaryKey extends Struct { readonly key: AccountId; diff --git a/scripts/cli/src/interfaces/definitions.ts b/scripts/cli/src/interfaces/definitions.ts index 10b0ecc5e6..5234f01651 100644 --- a/scripts/cli/src/interfaces/definitions.ts +++ b/scripts/cli/src/interfaces/definitions.ts @@ -1,3 +1,3 @@ export default { -types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","Ticker":"[u8; 12]","CddId":"[u8; 32]","ScopeId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":"","NonFungible":"NonFungibleType"}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]","FIGI":"[u8; 12]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"AssetMetadataName":"Text","AssetMetadataValue":"Vec","AssetMetadataLocalKey":"u64","AssetMetadataGlobalKey":"u64","AssetMetadataKey":{"_enum":{"Global":"u64","Local":"u64"}},"AssetMetadataLockStatus":{"_enum":{"Unlocked":"","Locked":"","LockedUntil":"Moment"}},"AssetMetadataValueDetail":{"expire":"Option","lock_status":"AssetMetadataLockStatus"},"AssetMetadataDescription":"Text","AssetMetadataSpec":{"url":"Option","description":"Option","type_def":"Option>"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"key":"AccountId","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"H512"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"Option"},"KeyRecord":{"_enum":{"PrimaryKey":"IdentityId","SecondaryKey":"(IdentityId, Permissions)","MultiSigSignerKey":"AccountId"}},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"CustomClaimTypeId":"u32","Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","Custom":"(CustomClaimTypeId, Option)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","Custom":"CustomClaimTypeId"}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":"MultiSignature","Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"AuthorizationNonce":"u64","Percentage":"Permill","RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8; 32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetScope":{"_enum":{"Ticker":"Ticker"}},"StatOpType":{"_enum":["Count","Balance"]},"StatType":{"op":"StatOpType","claim_issuer":"Option<(ClaimType, IdentityId)>"},"StatClaim":{"_enum":{"Accredited":"bool","Affiliate":"bool","Jurisdiction":"Option"}},"Stat1stKey":{"asset":"AssetScope","stat_type":"StatType"},"Stat2ndKey":{"_enum":{"NoClaimStat":"","Claim":"StatClaim"}},"StatUpdate":{"key2":"Stat2ndKey","value":"Option"},"TransferCondition":{"_enum":{"MaxInvestorCount":"u64","MaxInvestorOwnership":"Percentage","ClaimCount":"(StatClaim, IdentityId, u64, Option)","ClaimOwnership":"(StatClaim, IdentityId, Percentage, Percentage)"}},"AssetTransferCompliance":{"paused":"bool","requirements":"Vec"},"TransferConditionExemptKey":{"asset":"AssetScope","op":"StatOpType","claim_type":"Option"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"RpcDidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"RpcDidRecords":{"_enum":{"Success":"RpcDidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber","SettleManual":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"WeightPerClass":{"baseExtrinsic":"Weight","maxExtrinsic":"Option","maxTotal":"Option","reserved":"Option"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"InitiateCorporateActionArgs":{"ticker":"Ticker","kind":"CAKind","decl_date":"Moment","record_date":"Option","details":"CADetails","targets":"Option","default_withholding_tax":"Option","withholding_tax":"Option>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"canTransferGranularReturn":{"_enum":{"Ok":"GranularCanTransferResult","Err":"DispatchError"}},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","missing_scope_claim":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","transfer_condition_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferConditionResult":{"condition":"TransferCondition","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"Member":{"id":"IdentityId","expiry_at":"Option","inactive_from":"Option"},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}},"NFTId":"u64","NFTs":{"ticker":"Ticker","ids":"Vec"},"FungibleToken":{"ticker":"Ticker","amount":"Balance"},"OffChainAsset":{"ticker":"Ticker","amount":"Balance"},"FungibleLeg":{"sender":"PortfolioId","receiver":"PortfolioId","ticker":"Ticker","amount":"Balance"},"NonFungibleLeg":{"sender":"PortfolioId","receiver":"PortfolioId","nfts":"NFTs"},"OffChainLeg":{"sender_identity":"IdentityId","receiver_identity":"IdentityId","ticker":"Ticker","amount":"Balance"},"Leg":{"_enum":{"Fungible":"FungibleLeg","NonFungible":"NonFungibleLeg","OffChain":"OffChainLeg"}},"FundDescription":{"_enum":{"Fungible":"FungibleToken","NonFungible":"NFTs"}},"Fund":{"description":"FundDescription","memo":"Option"},"NonFungibleType":{"_enum":{"Derivative":"","FixedIncome":"","Invoice":"","Custom":"CustomAssetTypeId"}}} +types: {"Address":"MultiAddress","LookupSource":"MultiAddress","AccountInfo":"AccountInfoWithDualRefCount","IdentityId":"[u8; 32]","EventDid":"IdentityId","EventCounts":"Vec","ErrorAt":"(u32, DispatchError)","Ticker":"[u8; 12]","CddId":"[u8; 32]","PosRatio":"(u32, u32)","DocumentId":"u32","DocumentName":"Text","DocumentUri":"Text","DocumentHash":{"_enum":{"None":"","H512":"[u8; 64]","H384":"[u8; 48]","H320":"[u8; 40]","H256":"[u8; 32]","H224":"[u8; 28]","H192":"[u8; 24]","H160":"[u8; 20]","H128":"[u8; 16]"}},"DocumentType":"Text","Document":{"uri":"DocumentUri","content_hash":"DocumentHash","name":"DocumentName","doc_type":"Option","filing_date":"Option"},"Version":"u8","CustomAssetTypeId":"u32","AssetType":{"_enum":{"EquityCommon":"","EquityPreferred":"","Commodity":"","FixedIncome":"","REIT":"","Fund":"","RevenueShareAgreement":"","StructuredProduct":"","Derivative":"","Custom":"CustomAssetTypeId","StableCoin":"","NonFungible":"NonFungibleType"}},"AssetIdentifier":{"_enum":{"CUSIP":"[u8; 9]","CINS":"[u8; 9]","ISIN":"[u8; 12]","LEI":"[u8; 20]","FIGI":"[u8; 12]"}},"AssetOwnershipRelation":{"_enum":{"NotOwned":"","TickerOwned":"","AssetOwned":""}},"AssetName":"Text","FundingRoundName":"Text","VenueDetails":"Text","SecurityToken":{"total_supply":"Balance","owner_did":"IdentityId","divisible":"bool","asset_type":"AssetType"},"AssetMetadataName":"Text","AssetMetadataValue":"Vec","AssetMetadataLocalKey":"u64","AssetMetadataGlobalKey":"u64","AssetMetadataKey":{"_enum":{"Global":"u64","Local":"u64"}},"AssetMetadataLockStatus":{"_enum":{"Unlocked":"","Locked":"","LockedUntil":"Moment"}},"AssetMetadataValueDetail":{"expire":"Option","lock_status":"AssetMetadataLockStatus"},"AssetMetadataDescription":"Text","AssetMetadataSpec":{"url":"Option","description":"Option","type_def":"Option>"},"PalletName":"Text","DispatchableName":"Text","AssetPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PortfolioPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"DispatchableNames":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"PalletPermissions":{"pallet_name":"PalletName","dispatchable_names":"DispatchableNames"},"ExtrinsicPermissions":{"_enum":{"Whole":"","These":"Vec","Except":"Vec"}},"Permissions":{"asset":"AssetPermissions","extrinsic":"ExtrinsicPermissions","portfolio":"PortfolioPermissions"},"Signatory":{"_enum":{"Identity":"IdentityId","Account":"AccountId"}},"SecondaryKey":{"key":"AccountId","permissions":"Permissions"},"SecondaryKeyWithAuth":{"secondary_key":"SecondaryKey","auth_signature":"H512"},"Subsidy":{"paying_key":"AccountId","remaining":"Balance"},"IdentityRole":{"_enum":["Issuer","SimpleTokenIssuer","Validator","ClaimIssuer","Investor","NodeRunner","PM","CDDAMLClaimIssuer","AccreditedInvestorClaimIssuer","VerifiedIdentityClaimIssuer"]},"PreAuthorizedKeyInfo":{"target_id":"IdentityId","secondary_key":"SecondaryKey"},"DidRecord":{"primary_key":"Option"},"KeyRecord":{"_enum":{"PrimaryKey":"IdentityId","SecondaryKey":"(IdentityId, Permissions)","MultiSigSignerKey":"AccountId"}},"KeyIdentityData":{"identity":"IdentityId","permissions":"Option"},"CountryCode":{"_enum":["AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","VG","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","HK","MO","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VE","VN","VI","WF","EH","YE","ZM","ZW","BQ","CW","SX"]},"Scope":{"_enum":{"Identity":"IdentityId","Ticker":"Ticker","Custom":"Vec"}},"CustomClaimTypeId":"u32","Claim":{"_enum":{"Accredited":"Scope","Affiliate":"Scope","BuyLockup":"Scope","SellLockup":"Scope","CustomerDueDiligence":"CddId","KnowYourCustomer":"Scope","Jurisdiction":"(CountryCode, Scope)","Exempted":"Scope","Blocked":"Scope","Custom":"(CustomClaimTypeId, Option)"}},"ClaimType":{"_enum":{"Accredited":"","Affiliate":"","BuyLockup":"","SellLockup":"","CustomerDueDiligence":"","KnowYourCustomer":"","Jurisdiction":"","Exempted":"","Blocked":"","Custom":"CustomClaimTypeId"}},"IdentityClaim":{"claim_issuer":"IdentityId","issuance_date":"Moment","last_update_date":"Moment","expiry":"Option","claim":"Claim"},"ComplianceRequirement":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32"},"ComplianceRequirementResult":{"sender_conditions":"Vec","receiver_conditions":"Vec","id":"u32","result":"bool"},"ConditionType":{"_enum":{"IsPresent":"Claim","IsAbsent":"Claim","IsAnyOf":"Vec","IsNoneOf":"Vec","IsIdentity":"TargetIdentity"}},"TrustedFor":{"_enum":{"Any":"","Specific":"Vec"}},"TrustedIssuer":{"issuer":"IdentityId","trusted_for":"TrustedFor"},"Condition":{"condition_type":"ConditionType","issuers":"Vec"},"ConditionResult":{"condition":"Condition","result":"bool"},"TargetIdAuthorization":{"target_id":"IdentityId","nonce":"u64","expires_at":"Moment"},"TickerRegistration":{"owner":"IdentityId","expiry":"Option"},"TickerRegistrationConfig":{"max_ticker_length":"u8","registration_length":"Option"},"EthereumAddress":"[u8; 20]","EcdsaSignature":"[u8; 65]","MotionTitle":"Text","MotionInfoLink":"Text","ChoiceTitle":"Text","Motion":{"title":"MotionTitle","info_link":"MotionInfoLink","choices":"Vec"},"BallotTitle":"Text","BallotMeta":{"title":"BallotTitle","motions":"Vec"},"BallotTimeRange":{"start":"Moment","end":"Moment"},"BallotVote":{"power":"Balance","fallback":"Option"},"MaybeBlock":{"_enum":{"Some":"BlockNumber","None":""}},"Url":"Text","PipDescription":"Text","PipsMetadata":{"id":"PipId","url":"Option","description":"Option","created_at":"BlockNumber","transaction_version":"u32","expiry":"MaybeBlock"},"Proposer":{"_enum":{"Community":"AccountId","Committee":"Committee"}},"Committee":{"_enum":{"Technical":"","Upgrade":""}},"SkippedCount":"u8","SnapshottedPip":{"id":"PipId","weight":"(bool, Balance)"},"SnapshotId":"u32","SnapshotMetadata":{"created_at":"BlockNumber","made_by":"AccountId","id":"SnapshotId"},"SnapshotResult":{"_enum":{"Approve":"","Reject":"","Skip":""}},"Beneficiary":{"id":"IdentityId","amount":"Balance"},"DepositInfo":{"owner":"AccountId","amount":"Balance"},"PolymeshVotes":{"index":"u32","ayes":"Vec","nays":"Vec","expiry":"MaybeBlock"},"PipId":"u32","ProposalState":{"_enum":["Pending","Rejected","Scheduled","Failed","Executed","Expired"]},"Pip":{"id":"PipId","proposal":"Call","proposer":"Proposer"},"ProposalData":{"_enum":{"Hash":"Hash","Proposal":"Vec"}},"OffChainSignature":"MultiSignature","Authorization":{"authorization_data":"AuthorizationData","authorized_by":"IdentityId","expiry":"Option","auth_id":"u64"},"AuthorizationData":{"_enum":{"AttestPrimaryKeyRotation":"IdentityId","RotatePrimaryKey":"","TransferTicker":"Ticker","AddMultiSigSigner":"AccountId","TransferAssetOwnership":"Ticker","JoinIdentity":"Permissions","PortfolioCustody":"PortfolioId","BecomeAgent":"(Ticker, AgentGroup)","AddRelayerPayingKey":"(AccountId, AccountId, Balance)","RotatePrimaryKeyToSecondary":"Permissions"}},"AuthorizationNonce":"u64","Percentage":"Permill","RestrictionResult":{"_enum":["Valid","Invalid","ForceValid"]},"Memo":"[u8; 32]","BridgeTx":{"nonce":"u32","recipient":"AccountId","amount":"Balance","tx_hash":"H256"},"AssetScope":{"_enum":{"Ticker":"Ticker"}},"StatOpType":{"_enum":["Count","Balance"]},"StatType":{"op":"StatOpType","claim_issuer":"Option<(ClaimType, IdentityId)>"},"StatClaim":{"_enum":{"Accredited":"bool","Affiliate":"bool","Jurisdiction":"Option"}},"Stat1stKey":{"asset":"AssetScope","stat_type":"StatType"},"Stat2ndKey":{"_enum":{"NoClaimStat":"","Claim":"StatClaim"}},"StatUpdate":{"key2":"Stat2ndKey","value":"Option"},"TransferCondition":{"_enum":{"MaxInvestorCount":"u64","MaxInvestorOwnership":"Percentage","ClaimCount":"(StatClaim, IdentityId, u64, Option)","ClaimOwnership":"(StatClaim, IdentityId, Percentage, Percentage)"}},"AssetTransferCompliance":{"paused":"bool","requirements":"Vec"},"TransferConditionExemptKey":{"asset":"AssetScope","op":"StatOpType","claim_type":"Option"},"AssetCompliance":{"paused":"bool","requirements":"Vec"},"AssetComplianceResult":{"paused":"bool","requirements":"Vec","result":"bool"},"Claim1stKey":{"target":"IdentityId","claim_type":"ClaimType"},"Claim2ndKey":{"issuer":"IdentityId","scope":"Option"},"InactiveMember":{"id":"IdentityId","deactivated_at":"Moment","expiry":"Option"},"VotingResult":{"ayes_count":"u32","ayes_stake":"Balance","nays_count":"u32","nays_stake":"Balance"},"ProtocolOp":{"_enum":["AssetRegisterTicker","AssetIssue","AssetAddDocuments","AssetCreateAsset","CheckpointCreateSchedule","ComplianceManagerAddComplianceRequirement","IdentityCddRegisterDid","IdentityAddClaim","IdentityAddSecondaryKeysWithAuthorization","PipsPropose","ContractsPutCode","CorporateBallotAttachBallot","CapitalDistributionDistribute","NFTCreateCollection","NFTMint","IdentityCreateChildIdentity"]},"CddStatus":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"AssetDidResult":{"_enum":{"Ok":"IdentityId","Err":"Vec"}},"RpcDidRecordsSuccess":{"primary_key":"AccountId","secondary_keys":"Vec"},"RpcDidRecords":{"_enum":{"Success":"RpcDidRecordsSuccess","IdNotFound":"Vec"}},"VoteCountProposalFound":{"ayes":"u64","nays":"u64"},"VoteCount":{"_enum":{"ProposalFound":"VoteCountProposalFound","ProposalNotFound":""}},"Vote":"(bool, Balance)","VoteByPip":{"pip":"PipId","vote":"Vote"},"BridgeTxDetail":{"amount":"Balance","status":"BridgeTxStatus","execution_block":"BlockNumber","tx_hash":"H256"},"BridgeTxStatus":{"_enum":{"Absent":"","Pending":"u8","Frozen":"","Timelocked":"","Handled":""}},"HandledTxStatus":{"_enum":{"Success":"","Error":"Text"}},"CappedFee":"u64","CanTransferResult":{"_enum":{"Ok":"u8","Err":"Vec"}},"AuthorizationType":{"_enum":{"AttestPrimaryKeyRotation":"","RotatePrimaryKey":"","TransferTicker":"","AddMultiSigSigner":"","TransferAssetOwnership":"","JoinIdentity":"","PortfolioCustody":"","BecomeAgent":"","AddRelayerPayingKey":"","RotatePrimaryKeyToSecondary":""}},"ProposalDetails":{"approvals":"u64","rejections":"u64","status":"ProposalStatus","expiry":"Option","auto_close":"bool"},"ProposalStatus":{"_enum":{"Invalid":"","ActiveOrExpired":"","ExecutionSuccessful":"","ExecutionFailed":"","Rejected":""}},"DidStatus":{"_enum":{"Unknown":"","Exists":"","CddVerified":""}},"PortfolioName":"Text","PortfolioNumber":"u64","PortfolioKind":{"_enum":{"Default":"","User":"PortfolioNumber"}},"PortfolioId":{"did":"IdentityId","kind":"PortfolioKind"},"Moment":"u64","CalendarUnit":{"_enum":["Second","Minute","Hour","Day","Week","Month","Year"]},"CalendarPeriod":{"unit":"CalendarUnit","amount":"u64"},"CheckpointSchedule":{"start":"Moment","period":"CalendarPeriod"},"CheckpointId":"u64","ScheduleId":"u64","StoredSchedule":{"schedule":"CheckpointSchedule","id":"ScheduleId","at":"Moment","remaining":"u32"},"ScheduleSpec":{"start":"Option","period":"CalendarPeriod","remaining":"u32"},"InstructionStatus":{"_enum":{"Unknown":"","Pending":"","Failed":""}},"LegStatus":{"_enum":{"PendingTokenLock":"","ExecutionPending":"","ExecutionToBeSkipped":"(AccountId, u64)"}},"AffirmationStatus":{"_enum":{"Unknown":"","Pending":"","Affirmed":""}},"SettlementType":{"_enum":{"SettleOnAffirmation":"","SettleOnBlock":"BlockNumber","SettleManual":"BlockNumber"}},"LegId":"u64","InstructionId":"u64","Instruction":{"instruction_id":"InstructionId","venue_id":"VenueId","status":"InstructionStatus","settlement_type":"SettlementType","created_at":"Option","trade_date":"Option","value_date":"Option"},"Venue":{"creator":"IdentityId","venue_type":"VenueType"},"Receipt":{"receipt_uid":"u64","from":"PortfolioId","to":"PortfolioId","asset":"Ticker","amount":"Balance"},"ReceiptMetadata":"Text","ReceiptDetails":{"receipt_uid":"u64","leg_id":"LegId","signer":"AccountId","signature":"OffChainSignature","metadata":"ReceiptMetadata"},"UniqueCall":{"nonce":"u64","call":"Call"},"MovePortfolioItem":{"ticker":"Ticker","amount":"Balance","memo":"Option"},"WeightToFeeCoefficient":{"coeffInteger":"Balance","coeffFrac":"Perbill","negative":"bool","degree":"u8"},"WeightPerClass":{"baseExtrinsic":"Weight","maxExtrinsic":"Option","maxTotal":"Option","reserved":"Option"},"TargetIdentity":{"_enum":{"ExternalAgent":"","Specific":"IdentityId"}},"FundraiserId":"u64","FundraiserName":"Text","FundraiserStatus":{"_enum":["Live","Frozen","Closed","ClosedEarly"]},"FundraiserTier":{"total":"Balance","price":"Balance","remaining":"Balance"},"Fundraiser":{"creator":"IdentityId","offering_portfolio":"PortfolioId","offering_asset":"Ticker","raising_portfolio":"PortfolioId","raising_asset":"Ticker","tiers":"Vec","venue_id":"VenueId","start":"Moment","end":"Option","status":"FundraiserStatus","minimum_investment":"Balance"},"VenueId":"u64","VenueType":{"_enum":["Other","Distribution","Sto","Exchange"]},"Tax":"Permill","TargetIdentities":{"identities":"Vec","treatment":"TargetTreatment"},"TargetTreatment":{"_enum":["Include","Exclude"]},"CAKind":{"_enum":["PredictableBenefit","UnpredictableBenefit","IssuerNotice","Reorganization","Other"]},"CADetails":"Text","CACheckpoint":{"_enum":{"Scheduled":"(ScheduleId, u64)","Existing":"CheckpointId"}},"RecordDate":{"date":"Moment","checkpoint":"CACheckpoint"},"RecordDateSpec":{"_enum":{"Scheduled":"Moment","ExistingSchedule":"ScheduleId","Existing":"CheckpointId"}},"CorporateAction":{"kind":"CAKind","decl_date":"Moment","record_date":"Option","targets":"TargetIdentities","default_withholding_tax":"Tax","withholding_tax":"Vec<(IdentityId, Tax)>"},"InitiateCorporateActionArgs":{"ticker":"Ticker","kind":"CAKind","decl_date":"Moment","record_date":"Option","details":"CADetails","targets":"Option","default_withholding_tax":"Option","withholding_tax":"Option>"},"LocalCAId":"u32","CAId":{"ticker":"Ticker","local_id":"LocalCAId"},"Distribution":{"from":"PortfolioId","currency":"Ticker","per_share":"Balance","amount":"Balance","remaining":"Balance","reclaimed":"bool","payment_at":"Moment","expires_at":"Option"},"SlashingSwitch":{"_enum":["Validator","ValidatorAndNominator","None"]},"PriceTier":{"total":"Balance","price":"Balance"},"PermissionedIdentityPrefs":{"intended_count":"u32","running_count":"u32"},"CanTransferGranularReturn":{"_enum":{"Ok":"GranularCanTransferResult","Err":"DispatchError"}},"GranularCanTransferResult":{"invalid_granularity":"bool","self_transfer":"bool","invalid_receiver_cdd":"bool","invalid_sender_cdd":"bool","receiver_custodian_error":"bool","sender_custodian_error":"bool","sender_insufficient_balance":"bool","portfolio_validity_result":"PortfolioValidityResult","asset_frozen":"bool","transfer_condition_result":"Vec","compliance_result":"AssetComplianceResult","result":"bool","consumed_weight":"Option"},"PortfolioValidityResult":{"receiver_is_same_portfolio":"bool","sender_portfolio_does_not_exist":"bool","receiver_portfolio_does_not_exist":"bool","sender_insufficient_balance":"bool","result":"bool"},"TransferConditionResult":{"condition":"TransferCondition","result":"bool"},"AGId":"u32","AgentGroup":{"_enum":{"Full":"","Custom":"AGId","ExceptMeta":"","PolymeshV1CAA":"","PolymeshV1PIA":""}},"Member":{"id":"IdentityId","expiry_at":"Option","inactive_from":"Option"},"ItnRewardStatus":{"_enum":{"Unclaimed":"Balance","Claimed":""}},"NFTId":"u64","NFTs":{"ticker":"Ticker","ids":"Vec"},"FungibleToken":{"ticker":"Ticker","amount":"Balance"},"OffChainAsset":{"ticker":"Ticker","amount":"Balance"},"FungibleLeg":{"sender":"PortfolioId","receiver":"PortfolioId","ticker":"Ticker","amount":"Balance"},"NonFungibleLeg":{"sender":"PortfolioId","receiver":"PortfolioId","nfts":"NFTs"},"OffChainLeg":{"sender_identity":"IdentityId","receiver_identity":"IdentityId","ticker":"Ticker","amount":"Balance"},"Leg":{"_enum":{"Fungible":"FungibleLeg","NonFungible":"NonFungibleLeg","OffChain":"OffChainLeg"}},"FundDescription":{"_enum":{"Fungible":"FungibleToken","NonFungible":"NFTs"}},"Fund":{"description":"FundDescription","memo":"Option"},"NonFungibleType":{"_enum":{"Derivative":"","FixedIncome":"","Invoice":"","Custom":"CustomAssetTypeId"}},"ExecuteInstructionInfo":{"fungible_tokens":"u32","non_fungible_tokens":"u32","off_chain_assets":"u32","consumed_weight":"Weight","error":"Option"},"AssetCount":{"fungible_tokens":"u32","non_fungible_tokens":"u32","off_chain_assets":"u32"},"AffirmationCount":{"sender_asset_count":"AssetCount","receiver_asset_count":"AssetCount","offchain_count":"u32"}} } \ No newline at end of file diff --git a/scripts/cli/src/interfaces/lookup.ts b/scripts/cli/src/interfaces/lookup.ts index de0b454d4e..3eb51070e6 100644 --- a/scripts/cli/src/interfaces/lookup.ts +++ b/scripts/cli/src/interfaces/lookup.ts @@ -620,9 +620,9 @@ export default { } }, /** - * Lookup101: pallet_staking::RawEvent + * Lookup101: pallet_staking::pallet::pallet::Event **/ - PalletStakingRawEvent: { + PalletStakingPalletEvent: { _enum: { EraPayout: '(u32,u128,u128)', Reward: '(PolymeshPrimitivesIdentityId,AccountId32,u128)', @@ -644,13 +644,13 @@ export default { } }, /** - * Lookup102: pallet_staking::ElectionCompute + * Lookup102: pallet_staking::types::ElectionCompute **/ PalletStakingElectionCompute: { _enum: ['OnChain', 'Signed', 'Unsigned'] }, /** - * Lookup104: pallet_staking::SlashingSwitch + * Lookup104: pallet_staking::types::SlashingSwitch **/ PalletStakingSlashingSwitch: { _enum: ['Validator', 'ValidatorAndNominator', 'None'] @@ -773,7 +773,13 @@ export default { AssetTypeChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesAssetAssetType)', LocalMetadataKeyDeleted: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u64)', MetadataValueDeleted: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,PolymeshPrimitivesAssetMetadataAssetMetadataKey)', - AssetBalanceUpdated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u128,Option,Option,PolymeshPrimitivesPortfolioPortfolioUpdateReason)' + AssetBalanceUpdated: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,u128,Option,Option,PolymeshPrimitivesPortfolioPortfolioUpdateReason)', + AssetAffirmationExemption: 'PolymeshPrimitivesTicker', + RemoveAssetAffirmationExemption: 'PolymeshPrimitivesTicker', + PreApprovedAsset: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + RemovePreApprovedAsset: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker)', + AssetMediatorsAdded: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,BTreeSet)', + AssetMediatorsRemoved: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesTicker,BTreeSet)' } }, /** @@ -889,12 +895,13 @@ export default { Redeemed: 'Null', Transferred: { instructionId: 'Option', - instructionMemo: 'Option' - } + instructionMemo: 'Option', + }, + ControllerTransfer: 'Null' } }, /** - * Lookup164: pallet_corporate_actions::distribution::Event + * Lookup165: pallet_corporate_actions::distribution::Event **/ PalletCorporateActionsDistributionEvent: { _enum: { @@ -905,18 +912,18 @@ export default { } }, /** - * Lookup165: polymesh_primitives::event_only::EventOnly + * Lookup166: polymesh_primitives::event_only::EventOnly **/ PolymeshPrimitivesEventOnly: 'PolymeshPrimitivesIdentityId', /** - * Lookup166: pallet_corporate_actions::CAId + * Lookup167: pallet_corporate_actions::CAId **/ PalletCorporateActionsCaId: { ticker: 'PolymeshPrimitivesTicker', localId: 'u32' }, /** - * Lookup168: pallet_corporate_actions::distribution::Distribution + * Lookup169: pallet_corporate_actions::distribution::Distribution **/ PalletCorporateActionsDistribution: { from: 'PolymeshPrimitivesIdentityIdPortfolioId', @@ -929,7 +936,7 @@ export default { expiresAt: 'Option' }, /** - * Lookup170: polymesh_common_utilities::traits::checkpoint::Event + * Lookup171: polymesh_common_utilities::traits::checkpoint::Event **/ PolymeshCommonUtilitiesCheckpointEvent: { _enum: { @@ -940,13 +947,13 @@ export default { } }, /** - * Lookup173: polymesh_common_utilities::traits::checkpoint::ScheduleCheckpoints + * Lookup174: polymesh_common_utilities::traits::checkpoint::ScheduleCheckpoints **/ PolymeshCommonUtilitiesCheckpointScheduleCheckpoints: { pending: 'BTreeSet' }, /** - * Lookup176: polymesh_common_utilities::traits::compliance_manager::Event + * Lookup177: polymesh_common_utilities::traits::compliance_manager::Event **/ PolymeshCommonUtilitiesComplianceManagerEvent: { _enum: { @@ -962,7 +969,7 @@ export default { } }, /** - * Lookup177: polymesh_primitives::compliance_manager::ComplianceRequirement + * Lookup178: polymesh_primitives::compliance_manager::ComplianceRequirement **/ PolymeshPrimitivesComplianceManagerComplianceRequirement: { senderConditions: 'Vec', @@ -970,14 +977,14 @@ export default { id: 'u32' }, /** - * Lookup179: polymesh_primitives::condition::Condition + * Lookup180: polymesh_primitives::condition::Condition **/ PolymeshPrimitivesCondition: { conditionType: 'PolymeshPrimitivesConditionConditionType', issuers: 'Vec' }, /** - * Lookup180: polymesh_primitives::condition::ConditionType + * Lookup181: polymesh_primitives::condition::ConditionType **/ PolymeshPrimitivesConditionConditionType: { _enum: { @@ -989,7 +996,7 @@ export default { } }, /** - * Lookup182: polymesh_primitives::condition::TargetIdentity + * Lookup183: polymesh_primitives::condition::TargetIdentity **/ PolymeshPrimitivesConditionTargetIdentity: { _enum: { @@ -998,14 +1005,14 @@ export default { } }, /** - * Lookup184: polymesh_primitives::condition::TrustedIssuer + * Lookup185: polymesh_primitives::condition::TrustedIssuer **/ PolymeshPrimitivesConditionTrustedIssuer: { issuer: 'PolymeshPrimitivesIdentityId', trustedFor: 'PolymeshPrimitivesConditionTrustedFor' }, /** - * Lookup185: polymesh_primitives::condition::TrustedFor + * Lookup186: polymesh_primitives::condition::TrustedFor **/ PolymeshPrimitivesConditionTrustedFor: { _enum: { @@ -1014,7 +1021,7 @@ export default { } }, /** - * Lookup187: polymesh_primitives::identity_claim::ClaimType + * Lookup188: polymesh_primitives::identity_claim::ClaimType **/ PolymeshPrimitivesIdentityClaimClaimType: { _enum: { @@ -1031,7 +1038,7 @@ export default { } }, /** - * Lookup189: pallet_corporate_actions::Event + * Lookup190: pallet_corporate_actions::Event **/ PalletCorporateActionsEvent: { _enum: { @@ -1046,20 +1053,20 @@ export default { } }, /** - * Lookup190: pallet_corporate_actions::TargetIdentities + * Lookup191: pallet_corporate_actions::TargetIdentities **/ PalletCorporateActionsTargetIdentities: { identities: 'Vec', treatment: 'PalletCorporateActionsTargetTreatment' }, /** - * Lookup191: pallet_corporate_actions::TargetTreatment + * Lookup192: pallet_corporate_actions::TargetTreatment **/ PalletCorporateActionsTargetTreatment: { _enum: ['Include', 'Exclude'] }, /** - * Lookup193: pallet_corporate_actions::CorporateAction + * Lookup194: pallet_corporate_actions::CorporateAction **/ PalletCorporateActionsCorporateAction: { kind: 'PalletCorporateActionsCaKind', @@ -1070,20 +1077,20 @@ export default { withholdingTax: 'Vec<(PolymeshPrimitivesIdentityId,Permill)>' }, /** - * Lookup194: pallet_corporate_actions::CAKind + * Lookup195: pallet_corporate_actions::CAKind **/ PalletCorporateActionsCaKind: { _enum: ['PredictableBenefit', 'UnpredictableBenefit', 'IssuerNotice', 'Reorganization', 'Other'] }, /** - * Lookup196: pallet_corporate_actions::RecordDate + * Lookup197: pallet_corporate_actions::RecordDate **/ PalletCorporateActionsRecordDate: { date: 'u64', checkpoint: 'PalletCorporateActionsCaCheckpoint' }, /** - * Lookup197: pallet_corporate_actions::CACheckpoint + * Lookup198: pallet_corporate_actions::CACheckpoint **/ PalletCorporateActionsCaCheckpoint: { _enum: { @@ -1092,7 +1099,7 @@ export default { } }, /** - * Lookup202: pallet_corporate_actions::ballot::Event + * Lookup203: pallet_corporate_actions::ballot::Event **/ PalletCorporateActionsBallotEvent: { _enum: { @@ -1105,21 +1112,21 @@ export default { } }, /** - * Lookup203: pallet_corporate_actions::ballot::BallotTimeRange + * Lookup204: pallet_corporate_actions::ballot::BallotTimeRange **/ PalletCorporateActionsBallotBallotTimeRange: { start: 'u64', end: 'u64' }, /** - * Lookup204: pallet_corporate_actions::ballot::BallotMeta + * Lookup205: pallet_corporate_actions::ballot::BallotMeta **/ PalletCorporateActionsBallotBallotMeta: { title: 'Bytes', motions: 'Vec' }, /** - * Lookup207: pallet_corporate_actions::ballot::Motion + * Lookup208: pallet_corporate_actions::ballot::Motion **/ PalletCorporateActionsBallotMotion: { title: 'Bytes', @@ -1127,14 +1134,14 @@ export default { choices: 'Vec' }, /** - * Lookup213: pallet_corporate_actions::ballot::BallotVote + * Lookup214: pallet_corporate_actions::ballot::BallotVote **/ PalletCorporateActionsBallotBallotVote: { power: 'u128', fallback: 'Option' }, /** - * Lookup216: pallet_pips::RawEvent + * Lookup217: pallet_pips::RawEvent **/ PalletPipsRawEvent: { _enum: { @@ -1161,7 +1168,7 @@ export default { } }, /** - * Lookup217: pallet_pips::Proposer + * Lookup218: pallet_pips::Proposer **/ PalletPipsProposer: { _enum: { @@ -1170,13 +1177,13 @@ export default { } }, /** - * Lookup218: pallet_pips::Committee + * Lookup219: pallet_pips::Committee **/ PalletPipsCommittee: { _enum: ['Technical', 'Upgrade'] }, /** - * Lookup222: pallet_pips::ProposalData + * Lookup223: pallet_pips::ProposalData **/ PalletPipsProposalData: { _enum: { @@ -1185,20 +1192,20 @@ export default { } }, /** - * Lookup223: pallet_pips::ProposalState + * Lookup224: pallet_pips::ProposalState **/ PalletPipsProposalState: { _enum: ['Pending', 'Rejected', 'Scheduled', 'Failed', 'Executed', 'Expired'] }, /** - * Lookup226: pallet_pips::SnapshottedPip + * Lookup227: pallet_pips::SnapshottedPip **/ PalletPipsSnapshottedPip: { id: 'u32', weight: '(bool,u128)' }, /** - * Lookup232: polymesh_common_utilities::traits::portfolio::Event + * Lookup233: polymesh_common_utilities::traits::portfolio::Event **/ PolymeshCommonUtilitiesPortfolioEvent: { _enum: { @@ -1207,11 +1214,13 @@ export default { PortfolioRenamed: '(PolymeshPrimitivesIdentityId,u64,Bytes)', UserPortfolios: '(PolymeshPrimitivesIdentityId,Vec<(u64,Bytes)>)', PortfolioCustodianChanged: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesIdentityId)', - FundsMovedBetweenPortfolios: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesPortfolioFundDescription,Option)' + FundsMovedBetweenPortfolios: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesPortfolioFundDescription,Option)', + PreApprovedPortfolio: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesTicker)', + RevokePreApprovedPortfolio: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,PolymeshPrimitivesTicker)' } }, /** - * Lookup236: polymesh_primitives::portfolio::FundDescription + * Lookup237: polymesh_primitives::portfolio::FundDescription **/ PolymeshPrimitivesPortfolioFundDescription: { _enum: { @@ -1223,14 +1232,14 @@ export default { } }, /** - * Lookup237: polymesh_primitives::nft::NFTs + * Lookup238: polymesh_primitives::nft::NFTs **/ PolymeshPrimitivesNftNfTs: { ticker: 'PolymeshPrimitivesTicker', ids: 'Vec' }, /** - * Lookup240: pallet_protocol_fee::RawEvent + * Lookup241: pallet_protocol_fee::RawEvent **/ PalletProtocolFeeRawEvent: { _enum: { @@ -1240,11 +1249,11 @@ export default { } }, /** - * Lookup241: polymesh_primitives::PosRatio + * Lookup242: polymesh_primitives::PosRatio **/ PolymeshPrimitivesPosRatio: '(u32,u32)', /** - * Lookup242: pallet_scheduler::pallet::Event + * Lookup243: pallet_scheduler::pallet::Event **/ PalletSchedulerEvent: { _enum: { @@ -1276,7 +1285,7 @@ export default { } }, /** - * Lookup245: polymesh_common_utilities::traits::settlement::RawEvent + * Lookup246: polymesh_common_utilities::traits::settlement::RawEvent **/ PolymeshCommonUtilitiesSettlementRawEvent: { _enum: { @@ -1299,21 +1308,25 @@ export default { VenueSignersUpdated: '(PolymeshPrimitivesIdentityId,u64,Vec,bool)', SettlementManuallyExecuted: '(PolymeshPrimitivesIdentityId,u64)', InstructionCreated: '(PolymeshPrimitivesIdentityId,u64,u64,PolymeshPrimitivesSettlementSettlementType,Option,Option,Vec,Option)', - FailedToExecuteInstruction: '(u64,SpRuntimeDispatchError)' + FailedToExecuteInstruction: '(u64,SpRuntimeDispatchError)', + InstructionAutomaticallyAffirmed: '(PolymeshPrimitivesIdentityId,PolymeshPrimitivesIdentityIdPortfolioId,u64)', + MediatorAffirmationReceived: '(PolymeshPrimitivesIdentityId,u64,Option)', + MediatorAffirmationWithdrawn: '(PolymeshPrimitivesIdentityId,u64)', + InstructionMediators: '(u64,BTreeSet)' } }, /** - * Lookup248: polymesh_primitives::settlement::VenueType + * Lookup249: polymesh_primitives::settlement::VenueType **/ PolymeshPrimitivesSettlementVenueType: { _enum: ['Other', 'Distribution', 'Sto', 'Exchange'] }, /** - * Lookup251: polymesh_primitives::settlement::ReceiptMetadata + * Lookup252: polymesh_primitives::settlement::ReceiptMetadata **/ PolymeshPrimitivesSettlementReceiptMetadata: '[u8;32]', /** - * Lookup253: polymesh_primitives::settlement::SettlementType + * Lookup254: polymesh_primitives::settlement::SettlementType **/ PolymeshPrimitivesSettlementSettlementType: { _enum: { @@ -1323,7 +1336,7 @@ export default { } }, /** - * Lookup255: polymesh_primitives::settlement::Leg + * Lookup256: polymesh_primitives::settlement::Leg **/ PolymeshPrimitivesSettlementLeg: { _enum: { @@ -1347,7 +1360,7 @@ export default { } }, /** - * Lookup256: polymesh_common_utilities::traits::statistics::Event + * Lookup257: polymesh_common_utilities::traits::statistics::Event **/ PolymeshCommonUtilitiesStatisticsEvent: { _enum: { @@ -1360,7 +1373,7 @@ export default { } }, /** - * Lookup257: polymesh_primitives::statistics::AssetScope + * Lookup258: polymesh_primitives::statistics::AssetScope **/ PolymeshPrimitivesStatisticsAssetScope: { _enum: { @@ -1368,27 +1381,27 @@ export default { } }, /** - * Lookup259: polymesh_primitives::statistics::StatType + * Lookup260: polymesh_primitives::statistics::StatType **/ PolymeshPrimitivesStatisticsStatType: { op: 'PolymeshPrimitivesStatisticsStatOpType', claimIssuer: 'Option<(PolymeshPrimitivesIdentityClaimClaimType,PolymeshPrimitivesIdentityId)>' }, /** - * Lookup260: polymesh_primitives::statistics::StatOpType + * Lookup261: polymesh_primitives::statistics::StatOpType **/ PolymeshPrimitivesStatisticsStatOpType: { _enum: ['Count', 'Balance'] }, /** - * Lookup264: polymesh_primitives::statistics::StatUpdate + * Lookup265: polymesh_primitives::statistics::StatUpdate **/ PolymeshPrimitivesStatisticsStatUpdate: { key2: 'PolymeshPrimitivesStatisticsStat2ndKey', value: 'Option' }, /** - * Lookup265: polymesh_primitives::statistics::Stat2ndKey + * Lookup266: polymesh_primitives::statistics::Stat2ndKey **/ PolymeshPrimitivesStatisticsStat2ndKey: { _enum: { @@ -1397,7 +1410,7 @@ export default { } }, /** - * Lookup266: polymesh_primitives::statistics::StatClaim + * Lookup267: polymesh_primitives::statistics::StatClaim **/ PolymeshPrimitivesStatisticsStatClaim: { _enum: { @@ -1407,7 +1420,7 @@ export default { } }, /** - * Lookup270: polymesh_primitives::transfer_compliance::TransferCondition + * Lookup271: polymesh_primitives::transfer_compliance::TransferCondition **/ PolymeshPrimitivesTransferComplianceTransferCondition: { _enum: { @@ -1418,7 +1431,7 @@ export default { } }, /** - * Lookup271: polymesh_primitives::transfer_compliance::TransferConditionExemptKey + * Lookup272: polymesh_primitives::transfer_compliance::TransferConditionExemptKey **/ PolymeshPrimitivesTransferComplianceTransferConditionExemptKey: { asset: 'PolymeshPrimitivesStatisticsAssetScope', @@ -1426,7 +1439,7 @@ export default { claimType: 'Option' }, /** - * Lookup273: pallet_sto::RawEvent + * Lookup274: pallet_sto::RawEvent **/ PalletStoRawEvent: { _enum: { @@ -1439,7 +1452,7 @@ export default { } }, /** - * Lookup276: pallet_sto::Fundraiser + * Lookup277: pallet_sto::Fundraiser **/ PalletStoFundraiser: { creator: 'PolymeshPrimitivesIdentityId', @@ -1455,7 +1468,7 @@ export default { minimumInvestment: 'u128' }, /** - * Lookup278: pallet_sto::FundraiserTier + * Lookup279: pallet_sto::FundraiserTier **/ PalletStoFundraiserTier: { total: 'u128', @@ -1463,13 +1476,13 @@ export default { remaining: 'u128' }, /** - * Lookup279: pallet_sto::FundraiserStatus + * Lookup280: pallet_sto::FundraiserStatus **/ PalletStoFundraiserStatus: { _enum: ['Live', 'Frozen', 'Closed', 'ClosedEarly'] }, /** - * Lookup280: pallet_treasury::RawEvent + * Lookup281: pallet_treasury::RawEvent **/ PalletTreasuryRawEvent: { _enum: { @@ -1479,7 +1492,7 @@ export default { } }, /** - * Lookup281: pallet_utility::pallet::Event + * Lookup282: pallet_utility::pallet::Event **/ PalletUtilityEvent: { _enum: { @@ -1507,7 +1520,7 @@ export default { } }, /** - * Lookup285: polymesh_common_utilities::traits::base::Event + * Lookup286: polymesh_common_utilities::traits::base::Event **/ PolymeshCommonUtilitiesBaseEvent: { _enum: { @@ -1515,7 +1528,7 @@ export default { } }, /** - * Lookup287: polymesh_common_utilities::traits::external_agents::Event + * Lookup288: polymesh_common_utilities::traits::external_agents::Event **/ PolymeshCommonUtilitiesExternalAgentsEvent: { _enum: { @@ -1527,7 +1540,7 @@ export default { } }, /** - * Lookup288: polymesh_common_utilities::traits::relayer::RawEvent + * Lookup289: polymesh_common_utilities::traits::relayer::RawEvent **/ PolymeshCommonUtilitiesRelayerRawEvent: { _enum: { @@ -1537,14 +1550,6 @@ export default { UpdatedPolyxLimit: '(PolymeshPrimitivesEventOnly,AccountId32,AccountId32,u128,u128)' } }, - /** - * Lookup289: pallet_rewards::RawEvent - **/ - PalletRewardsRawEvent: { - _enum: { - ItnRewardClaimed: '(AccountId32,u128)' - } - }, /** * Lookup290: pallet_contracts::pallet::Event **/ @@ -1584,11 +1589,34 @@ export default { } }, /** - * Lookup291: polymesh_contracts::Event + * Lookup291: polymesh_contracts::RawEvent + **/ + PolymeshContractsRawEvent: { + _enum: { + ApiHashUpdated: '(PolymeshContractsApi,PolymeshContractsChainVersion,H256)', + SCRuntimeCall: '(AccountId32,PolymeshContractsChainExtensionExtrinsicId)' + } + }, + /** + * Lookup292: polymesh_contracts::Api + **/ + PolymeshContractsApi: { + desc: '[u8;4]', + major: 'u32' + }, + /** + * Lookup293: polymesh_contracts::ChainVersion **/ - PolymeshContractsEvent: 'Null', + PolymeshContractsChainVersion: { + specVersion: 'u32', + txVersion: 'u32' + }, + /** + * Lookup294: polymesh_contracts::chain_extension::ExtrinsicId + **/ + PolymeshContractsChainExtensionExtrinsicId: '(u8,u8)', /** - * Lookup292: pallet_preimage::pallet::Event + * Lookup295: pallet_preimage::pallet::Event **/ PalletPreimageEvent: { _enum: { @@ -1613,7 +1641,7 @@ export default { } }, /** - * Lookup293: polymesh_common_utilities::traits::nft::Event + * Lookup296: polymesh_common_utilities::traits::nft::Event **/ PolymeshCommonUtilitiesNftEvent: { _enum: { @@ -1622,7 +1650,7 @@ export default { } }, /** - * Lookup295: pallet_test_utils::RawEvent + * Lookup298: pallet_test_utils::RawEvent **/ PalletTestUtilsRawEvent: { _enum: { @@ -1631,7 +1659,7 @@ export default { } }, /** - * Lookup296: frame_system::Phase + * Lookup299: frame_system::Phase **/ FrameSystemPhase: { _enum: { @@ -1641,14 +1669,14 @@ export default { } }, /** - * Lookup299: frame_system::LastRuntimeUpgradeInfo + * Lookup302: frame_system::LastRuntimeUpgradeInfo **/ FrameSystemLastRuntimeUpgradeInfo: { specVersion: 'Compact', specName: 'Text' }, /** - * Lookup302: frame_system::pallet::Call + * Lookup305: frame_system::pallet::Call **/ FrameSystemCall: { _enum: { @@ -1683,7 +1711,7 @@ export default { } }, /** - * Lookup306: frame_system::limits::BlockWeights + * Lookup309: frame_system::limits::BlockWeights **/ FrameSystemLimitsBlockWeights: { baseBlock: 'SpWeightsWeightV2Weight', @@ -1691,7 +1719,7 @@ export default { perClass: 'FrameSupportDispatchPerDispatchClassWeightsPerClass' }, /** - * Lookup307: frame_support::dispatch::PerDispatchClass + * Lookup310: frame_support::dispatch::PerDispatchClass **/ FrameSupportDispatchPerDispatchClassWeightsPerClass: { normal: 'FrameSystemLimitsWeightsPerClass', @@ -1699,7 +1727,7 @@ export default { mandatory: 'FrameSystemLimitsWeightsPerClass' }, /** - * Lookup308: frame_system::limits::WeightsPerClass + * Lookup311: frame_system::limits::WeightsPerClass **/ FrameSystemLimitsWeightsPerClass: { baseExtrinsic: 'SpWeightsWeightV2Weight', @@ -1708,13 +1736,13 @@ export default { reserved: 'Option' }, /** - * Lookup310: frame_system::limits::BlockLength + * Lookup313: frame_system::limits::BlockLength **/ FrameSystemLimitsBlockLength: { max: 'FrameSupportDispatchPerDispatchClassU32' }, /** - * Lookup311: frame_support::dispatch::PerDispatchClass + * Lookup314: frame_support::dispatch::PerDispatchClass **/ FrameSupportDispatchPerDispatchClassU32: { normal: 'u32', @@ -1722,14 +1750,14 @@ export default { mandatory: 'u32' }, /** - * Lookup312: sp_weights::RuntimeDbWeight + * Lookup315: sp_weights::RuntimeDbWeight **/ SpWeightsRuntimeDbWeight: { read: 'u64', write: 'u64' }, /** - * Lookup313: sp_version::RuntimeVersion + * Lookup316: sp_version::RuntimeVersion **/ SpVersionRuntimeVersion: { specName: 'Text', @@ -1742,17 +1770,17 @@ export default { stateVersion: 'u8' }, /** - * Lookup318: frame_system::pallet::Error + * Lookup321: frame_system::pallet::Error **/ FrameSystemError: { _enum: ['InvalidSpecName', 'SpecVersionNeedsToIncrease', 'FailedToExtractRuntimeVersion', 'NonDefaultComposite', 'NonZeroRefCount', 'CallFiltered'] }, /** - * Lookup321: sp_consensus_babe::app::Public + * Lookup324: sp_consensus_babe::app::Public **/ SpConsensusBabeAppPublic: 'SpCoreSr25519Public', /** - * Lookup324: sp_consensus_babe::digests::NextConfigDescriptor + * Lookup327: sp_consensus_babe::digests::NextConfigDescriptor **/ SpConsensusBabeDigestsNextConfigDescriptor: { _enum: { @@ -1764,13 +1792,13 @@ export default { } }, /** - * Lookup326: sp_consensus_babe::AllowedSlots + * Lookup329: sp_consensus_babe::AllowedSlots **/ SpConsensusBabeAllowedSlots: { _enum: ['PrimarySlots', 'PrimaryAndSecondaryPlainSlots', 'PrimaryAndSecondaryVRFSlots'] }, /** - * Lookup330: sp_consensus_babe::digests::PreDigest + * Lookup333: sp_consensus_babe::digests::PreDigest **/ SpConsensusBabeDigestsPreDigest: { _enum: { @@ -1781,7 +1809,7 @@ export default { } }, /** - * Lookup331: sp_consensus_babe::digests::PrimaryPreDigest + * Lookup334: sp_consensus_babe::digests::PrimaryPreDigest **/ SpConsensusBabeDigestsPrimaryPreDigest: { authorityIndex: 'u32', @@ -1790,14 +1818,14 @@ export default { vrfProof: '[u8;64]' }, /** - * Lookup332: sp_consensus_babe::digests::SecondaryPlainPreDigest + * Lookup335: sp_consensus_babe::digests::SecondaryPlainPreDigest **/ SpConsensusBabeDigestsSecondaryPlainPreDigest: { authorityIndex: 'u32', slot: 'u64' }, /** - * Lookup333: sp_consensus_babe::digests::SecondaryVRFPreDigest + * Lookup336: sp_consensus_babe::digests::SecondaryVRFPreDigest **/ SpConsensusBabeDigestsSecondaryVRFPreDigest: { authorityIndex: 'u32', @@ -1806,14 +1834,14 @@ export default { vrfProof: '[u8;64]' }, /** - * Lookup334: sp_consensus_babe::BabeEpochConfiguration + * Lookup337: sp_consensus_babe::BabeEpochConfiguration **/ SpConsensusBabeBabeEpochConfiguration: { c: '(u64,u64)', allowedSlots: 'SpConsensusBabeAllowedSlots' }, /** - * Lookup338: pallet_babe::pallet::Call + * Lookup341: pallet_babe::pallet::Call **/ PalletBabeCall: { _enum: { @@ -1831,7 +1859,7 @@ export default { } }, /** - * Lookup339: sp_consensus_slots::EquivocationProof, sp_consensus_babe::app::Public> + * Lookup342: sp_consensus_slots::EquivocationProof, sp_consensus_babe::app::Public> **/ SpConsensusSlotsEquivocationProof: { offender: 'SpConsensusBabeAppPublic', @@ -1840,7 +1868,7 @@ export default { secondHeader: 'SpRuntimeHeader' }, /** - * Lookup340: sp_runtime::generic::header::Header + * Lookup343: sp_runtime::generic::header::Header **/ SpRuntimeHeader: { parentHash: 'H256', @@ -1850,11 +1878,11 @@ export default { digest: 'SpRuntimeDigest' }, /** - * Lookup341: sp_runtime::traits::BlakeTwo256 + * Lookup344: sp_runtime::traits::BlakeTwo256 **/ SpRuntimeBlakeTwo256: 'Null', /** - * Lookup342: sp_session::MembershipProof + * Lookup345: sp_session::MembershipProof **/ SpSessionMembershipProof: { session: 'u32', @@ -1862,13 +1890,13 @@ export default { validatorCount: 'u32' }, /** - * Lookup343: pallet_babe::pallet::Error + * Lookup346: pallet_babe::pallet::Error **/ PalletBabeError: { _enum: ['InvalidEquivocationProof', 'InvalidKeyOwnershipProof', 'DuplicateOffenceReport', 'InvalidConfiguration'] }, /** - * Lookup344: pallet_timestamp::pallet::Call + * Lookup347: pallet_timestamp::pallet::Call **/ PalletTimestampCall: { _enum: { @@ -1878,7 +1906,7 @@ export default { } }, /** - * Lookup346: pallet_indices::pallet::Call + * Lookup349: pallet_indices::pallet::Call **/ PalletIndicesCall: { _enum: { @@ -1909,13 +1937,13 @@ export default { } }, /** - * Lookup348: pallet_indices::pallet::Error + * Lookup351: pallet_indices::pallet::Error **/ PalletIndicesError: { _enum: ['NotAssigned', 'NotOwner', 'InUse', 'NotTransfer', 'Permanent'] }, /** - * Lookup350: pallet_balances::BalanceLock + * Lookup353: pallet_balances::BalanceLock **/ PalletBalancesBalanceLock: { id: '[u8;8]', @@ -1923,13 +1951,13 @@ export default { reasons: 'PolymeshCommonUtilitiesBalancesReasons' }, /** - * Lookup351: polymesh_common_utilities::traits::balances::Reasons + * Lookup354: polymesh_common_utilities::traits::balances::Reasons **/ PolymeshCommonUtilitiesBalancesReasons: { _enum: ['Fee', 'Misc', 'All'] }, /** - * Lookup352: pallet_balances::Call + * Lookup355: pallet_balances::Call **/ PalletBalancesCall: { _enum: { @@ -1961,19 +1989,19 @@ export default { } }, /** - * Lookup353: pallet_balances::Error + * Lookup356: pallet_balances::Error **/ PalletBalancesError: { _enum: ['LiquidityRestrictions', 'Overflow', 'InsufficientBalance', 'ExistentialDeposit', 'ReceiverCddMissing'] }, /** - * Lookup355: pallet_transaction_payment::Releases + * Lookup358: pallet_transaction_payment::Releases **/ PalletTransactionPaymentReleases: { _enum: ['V1Ancient', 'V2'] }, /** - * Lookup357: sp_weights::WeightToFeeCoefficient + * Lookup360: sp_weights::WeightToFeeCoefficient **/ SpWeightsWeightToFeeCoefficient: { coeffInteger: 'u128', @@ -1982,27 +2010,27 @@ export default { degree: 'u8' }, /** - * Lookup358: polymesh_primitives::identity::DidRecord + * Lookup361: polymesh_primitives::identity::DidRecord **/ PolymeshPrimitivesIdentityDidRecord: { primaryKey: 'Option' }, /** - * Lookup360: pallet_identity::types::Claim1stKey + * Lookup363: pallet_identity::types::Claim1stKey **/ PalletIdentityClaim1stKey: { target: 'PolymeshPrimitivesIdentityId', claimType: 'PolymeshPrimitivesIdentityClaimClaimType' }, /** - * Lookup361: pallet_identity::types::Claim2ndKey + * Lookup364: pallet_identity::types::Claim2ndKey **/ PalletIdentityClaim2ndKey: { issuer: 'PolymeshPrimitivesIdentityId', scope: 'Option' }, /** - * Lookup362: polymesh_primitives::secondary_key::KeyRecord + * Lookup365: polymesh_primitives::secondary_key::KeyRecord **/ PolymeshPrimitivesSecondaryKeyKeyRecord: { _enum: { @@ -2012,7 +2040,7 @@ export default { } }, /** - * Lookup365: polymesh_primitives::authorization::Authorization + * Lookup368: polymesh_primitives::authorization::Authorization **/ PolymeshPrimitivesAuthorization: { authorizationData: 'PolymeshPrimitivesAuthorizationAuthorizationData', @@ -2022,7 +2050,7 @@ export default { count: 'u32' }, /** - * Lookup368: pallet_identity::Call + * Lookup372: pallet_identity::Call **/ PalletIdentityCall: { _enum: { @@ -2114,27 +2142,27 @@ export default { } }, /** - * Lookup370: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth + * Lookup374: polymesh_common_utilities::traits::identity::SecondaryKeyWithAuth **/ PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth: { secondaryKey: 'PolymeshPrimitivesSecondaryKey', authSignature: 'H512' }, /** - * Lookup373: polymesh_common_utilities::traits::identity::CreateChildIdentityWithAuth + * Lookup377: polymesh_common_utilities::traits::identity::CreateChildIdentityWithAuth **/ PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth: { key: 'AccountId32', authSignature: 'H512' }, /** - * Lookup374: pallet_identity::Error + * Lookup378: pallet_identity::Error **/ PalletIdentityError: { - _enum: ['AlreadyLinked', 'MissingCurrentIdentity', 'Unauthorized', 'InvalidAccountKey', 'UnAuthorizedCddProvider', 'InvalidAuthorizationFromOwner', 'InvalidAuthorizationFromCddProvider', 'NotCddProviderAttestation', 'AuthorizationsNotForSameDids', 'DidMustAlreadyExist', 'CurrentIdentityCannotBeForwarded', 'AuthorizationExpired', 'TargetHasNoCdd', 'AuthorizationHasBeenRevoked', 'InvalidAuthorizationSignature', 'KeyNotAllowed', 'NotPrimaryKey', 'DidDoesNotExist', 'DidAlreadyExists', 'SecondaryKeysContainPrimaryKey', 'FailedToChargeFee', 'NotASigner', 'CannotDecodeSignerAccountId', 'MultiSigHasBalance', 'ClaimVariantNotAllowed', 'TargetHasNonZeroBalanceAtScopeId', 'CDDIdNotUniqueForIdentity', 'InvalidCDDId', 'ClaimAndProofVersionsDoNotMatch', 'AccountKeyIsBeingUsed', 'CustomScopeTooLong', 'CustomClaimTypeAlreadyExists', 'CustomClaimTypeDoesNotExist', 'ClaimDoesNotExist', 'IsChildIdentity', 'NoParentIdentity', 'NotParentOrChildIdentity', 'DuplicateKey', 'ExceptNotAllowedForExtrinsics'] + _enum: ['AlreadyLinked', 'MissingCurrentIdentity', 'Unauthorized', 'InvalidAccountKey', 'UnAuthorizedCddProvider', 'InvalidAuthorizationFromOwner', 'InvalidAuthorizationFromCddProvider', 'NotCddProviderAttestation', 'AuthorizationsNotForSameDids', 'DidMustAlreadyExist', 'AuthorizationExpired', 'TargetHasNoCdd', 'AuthorizationHasBeenRevoked', 'InvalidAuthorizationSignature', 'KeyNotAllowed', 'NotPrimaryKey', 'DidDoesNotExist', 'DidAlreadyExists', 'SecondaryKeysContainPrimaryKey', 'FailedToChargeFee', 'NotASigner', 'CannotDecodeSignerAccountId', 'MultiSigHasBalance', 'AccountKeyIsBeingUsed', 'CustomScopeTooLong', 'CustomClaimTypeAlreadyExists', 'CustomClaimTypeDoesNotExist', 'ClaimDoesNotExist', 'IsChildIdentity', 'NoParentIdentity', 'NotParentOrChildIdentity', 'DuplicateKey', 'ExceptNotAllowedForExtrinsics'] }, /** - * Lookup376: polymesh_common_utilities::traits::group::InactiveMember + * Lookup380: polymesh_common_utilities::traits::group::InactiveMember **/ PolymeshCommonUtilitiesGroupInactiveMember: { id: 'PolymeshPrimitivesIdentityId', @@ -2142,7 +2170,7 @@ export default { expiry: 'Option' }, /** - * Lookup377: pallet_group::Call + * Lookup381: pallet_group::Call **/ PalletGroupCall: { _enum: { @@ -2171,13 +2199,13 @@ export default { } }, /** - * Lookup378: pallet_group::Error + * Lookup382: pallet_group::Error **/ PalletGroupError: { _enum: ['OnlyPrimaryKeyAllowed', 'DuplicateMember', 'NoSuchMember', 'LastMemberCannotQuit', 'MissingCurrentIdentity', 'ActiveMembersLimitExceeded', 'ActiveMembersLimitOverflow'] }, /** - * Lookup380: pallet_committee::Call + * Lookup384: pallet_committee::Call **/ PalletCommitteeCall: { _enum: { @@ -2203,7 +2231,7 @@ export default { } }, /** - * Lookup386: pallet_multisig::Call + * Lookup390: pallet_multisig::Call **/ PalletMultisigCall: { _enum: { @@ -2297,7 +2325,7 @@ export default { } }, /** - * Lookup387: pallet_bridge::Call + * Lookup391: pallet_bridge::Call **/ PalletBridgeCall: { _enum: { @@ -2352,9 +2380,9 @@ export default { } }, /** - * Lookup391: pallet_staking::Call + * Lookup395: pallet_staking::pallet::pallet::Call **/ - PalletStakingCall: { + PalletStakingPalletCall: { _enum: { bond: { controller: 'MultiAddress', @@ -2478,7 +2506,7 @@ export default { } }, /** - * Lookup392: pallet_staking::RewardDestination + * Lookup396: pallet_staking::RewardDestination **/ PalletStakingRewardDestination: { _enum: { @@ -2489,14 +2517,14 @@ export default { } }, /** - * Lookup393: pallet_staking::ValidatorPrefs + * Lookup397: pallet_staking::ValidatorPrefs **/ PalletStakingValidatorPrefs: { commission: 'Compact', blocked: 'bool' }, /** - * Lookup399: pallet_staking::CompactAssignments + * Lookup403: pallet_staking::CompactAssignments **/ PalletStakingCompactAssignments: { votes1: 'Vec<(Compact,Compact)>', @@ -2517,7 +2545,7 @@ export default { votes16: 'Vec<(Compact,[(Compact,Compact);15],Compact)>' }, /** - * Lookup450: sp_npos_elections::ElectionScore + * Lookup454: sp_npos_elections::ElectionScore **/ SpNposElectionsElectionScore: { minimalStake: 'u128', @@ -2525,14 +2553,14 @@ export default { sumStakeSquared: 'u128' }, /** - * Lookup451: pallet_staking::ElectionSize + * Lookup455: pallet_staking::types::ElectionSize **/ PalletStakingElectionSize: { validators: 'Compact', nominators: 'Compact' }, /** - * Lookup452: pallet_session::pallet::Call + * Lookup456: pallet_session::pallet::Call **/ PalletSessionCall: { _enum: { @@ -2547,7 +2575,7 @@ export default { } }, /** - * Lookup453: polymesh_runtime_develop::runtime::SessionKeys + * Lookup457: polymesh_runtime_develop::runtime::SessionKeys **/ PolymeshRuntimeDevelopRuntimeSessionKeys: { grandpa: 'SpConsensusGrandpaAppPublic', @@ -2556,11 +2584,11 @@ export default { authorityDiscovery: 'SpAuthorityDiscoveryAppPublic' }, /** - * Lookup454: sp_authority_discovery::app::Public + * Lookup458: sp_authority_discovery::app::Public **/ SpAuthorityDiscoveryAppPublic: 'SpCoreSr25519Public', /** - * Lookup455: pallet_grandpa::pallet::Call + * Lookup459: pallet_grandpa::pallet::Call **/ PalletGrandpaCall: { _enum: { @@ -2579,14 +2607,14 @@ export default { } }, /** - * Lookup456: sp_consensus_grandpa::EquivocationProof + * Lookup460: sp_consensus_grandpa::EquivocationProof **/ SpConsensusGrandpaEquivocationProof: { setId: 'u64', equivocation: 'SpConsensusGrandpaEquivocation' }, /** - * Lookup457: sp_consensus_grandpa::Equivocation + * Lookup461: sp_consensus_grandpa::Equivocation **/ SpConsensusGrandpaEquivocation: { _enum: { @@ -2595,7 +2623,7 @@ export default { } }, /** - * Lookup458: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> + * Lookup462: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrevote: { roundNumber: 'u64', @@ -2604,22 +2632,22 @@ export default { second: '(FinalityGrandpaPrevote,SpConsensusGrandpaAppSignature)' }, /** - * Lookup459: finality_grandpa::Prevote + * Lookup463: finality_grandpa::Prevote **/ FinalityGrandpaPrevote: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup460: sp_consensus_grandpa::app::Signature + * Lookup464: sp_consensus_grandpa::app::Signature **/ SpConsensusGrandpaAppSignature: 'SpCoreEd25519Signature', /** - * Lookup461: sp_core::ed25519::Signature + * Lookup465: sp_core::ed25519::Signature **/ SpCoreEd25519Signature: '[u8;64]', /** - * Lookup463: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> + * Lookup467: finality_grandpa::Equivocation, sp_consensus_grandpa::app::Signature> **/ FinalityGrandpaEquivocationPrecommit: { roundNumber: 'u64', @@ -2628,14 +2656,14 @@ export default { second: '(FinalityGrandpaPrecommit,SpConsensusGrandpaAppSignature)' }, /** - * Lookup464: finality_grandpa::Precommit + * Lookup468: finality_grandpa::Precommit **/ FinalityGrandpaPrecommit: { targetHash: 'H256', targetNumber: 'u32' }, /** - * Lookup466: pallet_im_online::pallet::Call + * Lookup470: pallet_im_online::pallet::Call **/ PalletImOnlineCall: { _enum: { @@ -2646,7 +2674,7 @@ export default { } }, /** - * Lookup467: pallet_im_online::Heartbeat + * Lookup471: pallet_im_online::Heartbeat **/ PalletImOnlineHeartbeat: { blockNumber: 'u32', @@ -2656,22 +2684,22 @@ export default { validatorsLen: 'u32' }, /** - * Lookup468: sp_core::offchain::OpaqueNetworkState + * Lookup472: sp_core::offchain::OpaqueNetworkState **/ SpCoreOffchainOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup472: pallet_im_online::sr25519::app_sr25519::Signature + * Lookup476: pallet_im_online::sr25519::app_sr25519::Signature **/ PalletImOnlineSr25519AppSr25519Signature: 'SpCoreSr25519Signature', /** - * Lookup473: sp_core::sr25519::Signature + * Lookup477: sp_core::sr25519::Signature **/ SpCoreSr25519Signature: '[u8;64]', /** - * Lookup474: pallet_sudo::Call + * Lookup478: pallet_sudo::Call **/ PalletSudoCall: { _enum: { @@ -2695,7 +2723,7 @@ export default { } }, /** - * Lookup475: pallet_asset::Call + * Lookup479: pallet_asset::Call **/ PalletAssetCall: { _enum: { @@ -2752,7 +2780,7 @@ export default { }, update_identifiers: { ticker: 'PolymeshPrimitivesTicker', - identifiers: 'Vec', + assetIdentifiers: 'Vec', }, controller_transfer: { ticker: 'PolymeshPrimitivesTicker', @@ -2824,12 +2852,20 @@ export default { ticker: 'PolymeshPrimitivesTicker', }, remove_ticker_pre_approval: { - ticker: 'PolymeshPrimitivesTicker' + ticker: 'PolymeshPrimitivesTicker', + }, + add_mandatory_mediators: { + ticker: 'PolymeshPrimitivesTicker', + mediators: 'BTreeSet', + }, + remove_mandatory_mediators: { + ticker: 'PolymeshPrimitivesTicker', + mediators: 'BTreeSet' } } }, /** - * Lookup477: pallet_corporate_actions::distribution::Call + * Lookup482: pallet_corporate_actions::distribution::Call **/ PalletCorporateActionsDistributionCall: { _enum: { @@ -2858,7 +2894,7 @@ export default { } }, /** - * Lookup479: pallet_asset::checkpoint::Call + * Lookup484: pallet_asset::checkpoint::Call **/ PalletAssetCheckpointCall: { _enum: { @@ -2879,7 +2915,7 @@ export default { } }, /** - * Lookup480: pallet_compliance_manager::Call + * Lookup485: pallet_compliance_manager::Call **/ PalletComplianceManagerCall: { _enum: { @@ -2920,7 +2956,7 @@ export default { } }, /** - * Lookup481: pallet_corporate_actions::Call + * Lookup486: pallet_corporate_actions::Call **/ PalletCorporateActionsCall: { _enum: { @@ -2973,7 +3009,7 @@ export default { } }, /** - * Lookup483: pallet_corporate_actions::RecordDateSpec + * Lookup488: pallet_corporate_actions::RecordDateSpec **/ PalletCorporateActionsRecordDateSpec: { _enum: { @@ -2983,7 +3019,7 @@ export default { } }, /** - * Lookup486: pallet_corporate_actions::InitiateCorporateActionArgs + * Lookup491: pallet_corporate_actions::InitiateCorporateActionArgs **/ PalletCorporateActionsInitiateCorporateActionArgs: { ticker: 'PolymeshPrimitivesTicker', @@ -2996,7 +3032,7 @@ export default { withholdingTax: 'Option>' }, /** - * Lookup487: pallet_corporate_actions::ballot::Call + * Lookup492: pallet_corporate_actions::ballot::Call **/ PalletCorporateActionsBallotCall: { _enum: { @@ -3028,7 +3064,7 @@ export default { } }, /** - * Lookup488: pallet_pips::Call + * Lookup493: pallet_pips::Call **/ PalletPipsCall: { _enum: { @@ -3089,13 +3125,13 @@ export default { } }, /** - * Lookup491: pallet_pips::SnapshotResult + * Lookup496: pallet_pips::SnapshotResult **/ PalletPipsSnapshotResult: { _enum: ['Approve', 'Reject', 'Skip'] }, /** - * Lookup492: pallet_portfolio::Call + * Lookup497: pallet_portfolio::Call **/ PalletPortfolioCall: { _enum: { @@ -3126,19 +3162,29 @@ export default { }, remove_portfolio_pre_approval: { ticker: 'PolymeshPrimitivesTicker', - portfolioId: 'PolymeshPrimitivesIdentityIdPortfolioId' + portfolioId: 'PolymeshPrimitivesIdentityIdPortfolioId', + }, + allow_identity_to_create_portfolios: { + trustedIdentity: 'PolymeshPrimitivesIdentityId', + }, + revoke_create_portfolios_permission: { + identity: 'PolymeshPrimitivesIdentityId', + }, + create_custody_portfolio: { + portfolioOwnerId: 'PolymeshPrimitivesIdentityId', + portfolioName: 'Bytes' } } }, /** - * Lookup494: polymesh_primitives::portfolio::Fund + * Lookup499: polymesh_primitives::portfolio::Fund **/ PolymeshPrimitivesPortfolioFund: { description: 'PolymeshPrimitivesPortfolioFundDescription', memo: 'Option' }, /** - * Lookup495: pallet_protocol_fee::Call + * Lookup500: pallet_protocol_fee::Call **/ PalletProtocolFeeCall: { _enum: { @@ -3152,13 +3198,13 @@ export default { } }, /** - * Lookup496: polymesh_common_utilities::protocol_fee::ProtocolOp + * Lookup501: polymesh_common_utilities::protocol_fee::ProtocolOp **/ PolymeshCommonUtilitiesProtocolFeeProtocolOp: { - _enum: ['AssetRegisterTicker', 'AssetIssue', 'AssetAddDocuments', 'AssetCreateAsset', 'CheckpointCreateSchedule', 'ComplianceManagerAddComplianceRequirement', 'IdentityCddRegisterDid', 'IdentityAddClaim', 'IdentityAddSecondaryKeysWithAuthorization', 'PipsPropose', 'ContractsPutCode', 'CorporateBallotAttachBallot', 'CapitalDistributionDistribute', 'NFTCreateCollection', 'NFTMint'] + _enum: ['AssetRegisterTicker', 'AssetIssue', 'AssetAddDocuments', 'AssetCreateAsset', 'CheckpointCreateSchedule', 'ComplianceManagerAddComplianceRequirement', 'IdentityCddRegisterDid', 'IdentityAddClaim', 'IdentityAddSecondaryKeysWithAuthorization', 'PipsPropose', 'ContractsPutCode', 'CorporateBallotAttachBallot', 'CapitalDistributionDistribute', 'NFTCreateCollection', 'NFTMint', 'IdentityCreateChildIdentity'] }, /** - * Lookup497: pallet_scheduler::pallet::Call + * Lookup502: pallet_scheduler::pallet::Call **/ PalletSchedulerCall: { _enum: { @@ -3198,7 +3244,7 @@ export default { } }, /** - * Lookup499: pallet_settlement::Call + * Lookup504: pallet_settlement::Call **/ PalletSettlementCall: { _enum: { @@ -3276,12 +3322,63 @@ export default { }, execute_scheduled_instruction: { id: 'u64', - weightLimit: 'SpWeightsWeightV2Weight' + weightLimit: 'SpWeightsWeightV2Weight', + }, + affirm_with_receipts_with_count: { + id: 'u64', + receiptDetails: 'Vec', + portfolios: 'Vec', + numberOfAssets: 'Option', + }, + affirm_instruction_with_count: { + id: 'u64', + portfolios: 'Vec', + numberOfAssets: 'Option', + }, + reject_instruction_with_count: { + id: 'u64', + portfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + numberOfAssets: 'Option', + }, + withdraw_affirmation_with_count: { + id: 'u64', + portfolios: 'Vec', + numberOfAssets: 'Option', + }, + add_instruction_with_mediators: { + venueId: 'u64', + settlementType: 'PolymeshPrimitivesSettlementSettlementType', + tradeDate: 'Option', + valueDate: 'Option', + legs: 'Vec', + instructionMemo: 'Option', + mediators: 'BTreeSet', + }, + add_and_affirm_with_mediators: { + venueId: 'u64', + settlementType: 'PolymeshPrimitivesSettlementSettlementType', + tradeDate: 'Option', + valueDate: 'Option', + legs: 'Vec', + portfolios: 'Vec', + instructionMemo: 'Option', + mediators: 'BTreeSet', + }, + affirm_instruction_as_mediator: { + instructionId: 'u64', + expiry: 'Option', + }, + withdraw_affirmation_as_mediator: { + instructionId: 'u64', + }, + reject_instruction_as_mediator: { + instructionId: 'u64', + numberOfAssets: 'Option' } } }, /** - * Lookup501: polymesh_primitives::settlement::ReceiptDetails + * Lookup506: polymesh_primitives::settlement::ReceiptDetails **/ PolymeshPrimitivesSettlementReceiptDetails: { uid: 'u64', @@ -3292,7 +3389,7 @@ export default { metadata: 'Option' }, /** - * Lookup502: sp_runtime::MultiSignature + * Lookup507: sp_runtime::MultiSignature **/ SpRuntimeMultiSignature: { _enum: { @@ -3302,11 +3399,27 @@ export default { } }, /** - * Lookup503: sp_core::ecdsa::Signature + * Lookup508: sp_core::ecdsa::Signature **/ SpCoreEcdsaSignature: '[u8;65]', /** - * Lookup505: pallet_statistics::Call + * Lookup511: polymesh_primitives::settlement::AffirmationCount + **/ + PolymeshPrimitivesSettlementAffirmationCount: { + senderAssetCount: 'PolymeshPrimitivesSettlementAssetCount', + receiverAssetCount: 'PolymeshPrimitivesSettlementAssetCount', + offchainCount: 'u32' + }, + /** + * Lookup512: polymesh_primitives::settlement::AssetCount + **/ + PolymeshPrimitivesSettlementAssetCount: { + fungible: 'u32', + nonFungible: 'u32', + offChain: 'u32' + }, + /** + * Lookup515: pallet_statistics::Call **/ PalletStatisticsCall: { _enum: { @@ -3331,7 +3444,7 @@ export default { } }, /** - * Lookup510: pallet_sto::Call + * Lookup519: pallet_sto::Call **/ PalletStoCall: { _enum: { @@ -3377,14 +3490,14 @@ export default { } }, /** - * Lookup512: pallet_sto::PriceTier + * Lookup521: pallet_sto::PriceTier **/ PalletStoPriceTier: { total: 'u128', price: 'u128' }, /** - * Lookup514: pallet_treasury::Call + * Lookup523: pallet_treasury::Call **/ PalletTreasuryCall: { _enum: { @@ -3397,14 +3510,14 @@ export default { } }, /** - * Lookup516: polymesh_primitives::Beneficiary + * Lookup525: polymesh_primitives::Beneficiary **/ PolymeshPrimitivesBeneficiary: { id: 'PolymeshPrimitivesIdentityId', amount: 'u128' }, /** - * Lookup517: pallet_utility::pallet::Call + * Lookup526: pallet_utility::pallet::Call **/ PalletUtilityCall: { _enum: { @@ -3437,19 +3550,23 @@ export default { calls: 'Vec', }, batch_optimistic: { - calls: 'Vec' + calls: 'Vec', + }, + as_derivative: { + index: 'u16', + call: 'Call' } } }, /** - * Lookup519: pallet_utility::UniqueCall + * Lookup528: pallet_utility::UniqueCall **/ PalletUtilityUniqueCall: { nonce: 'u64', call: 'Call' }, /** - * Lookup520: polymesh_runtime_develop::runtime::OriginCaller + * Lookup529: polymesh_runtime_develop::runtime::OriginCaller **/ PolymeshRuntimeDevelopRuntimeOriginCaller: { _enum: { @@ -3470,7 +3587,7 @@ export default { } }, /** - * Lookup521: frame_support::dispatch::RawOrigin + * Lookup530: frame_support::dispatch::RawOrigin **/ FrameSupportDispatchRawOrigin: { _enum: { @@ -3480,33 +3597,33 @@ export default { } }, /** - * Lookup522: pallet_committee::RawOrigin + * Lookup531: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance1: { _enum: ['Endorsed'] }, /** - * Lookup523: pallet_committee::RawOrigin + * Lookup532: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance3: { _enum: ['Endorsed'] }, /** - * Lookup524: pallet_committee::RawOrigin + * Lookup533: pallet_committee::RawOrigin **/ PalletCommitteeRawOriginInstance4: { _enum: ['Endorsed'] }, /** - * Lookup525: sp_core::Void + * Lookup534: sp_core::Void **/ SpCoreVoid: 'Null', /** - * Lookup526: pallet_base::Call + * Lookup535: pallet_base::Call **/ PalletBaseCall: 'Null', /** - * Lookup527: pallet_external_agents::Call + * Lookup536: pallet_external_agents::Call **/ PalletExternalAgentsCall: { _enum: { @@ -3548,7 +3665,7 @@ export default { } }, /** - * Lookup528: pallet_relayer::Call + * Lookup537: pallet_relayer::Call **/ PalletRelayerCall: { _enum: { @@ -3578,32 +3695,7 @@ export default { } }, /** - * Lookup529: pallet_rewards::Call - **/ - PalletRewardsCall: { - _enum: { - claim_itn_reward: { - rewardAddress: 'AccountId32', - itnAddress: 'AccountId32', - signature: 'SpRuntimeMultiSignature', - }, - set_itn_reward_status: { - itnAddress: 'AccountId32', - status: 'PalletRewardsItnRewardStatus' - } - } - }, - /** - * Lookup530: pallet_rewards::ItnRewardStatus - **/ - PalletRewardsItnRewardStatus: { - _enum: { - Unclaimed: 'u128', - Claimed: 'Null' - } - }, - /** - * Lookup531: pallet_contracts::pallet::Call + * Lookup538: pallet_contracts::pallet::Call **/ PalletContractsCall: { _enum: { @@ -3668,13 +3760,13 @@ export default { } }, /** - * Lookup535: pallet_contracts::wasm::Determinism + * Lookup542: pallet_contracts::wasm::Determinism **/ PalletContractsWasmDeterminism: { _enum: ['Deterministic', 'AllowIndeterminism'] }, /** - * Lookup536: polymesh_contracts::Call + * Lookup543: polymesh_contracts::Call **/ PolymeshContractsCall: { _enum: { @@ -3697,16 +3789,48 @@ export default { perms: 'PolymeshPrimitivesSecondaryKeyPermissions', }, update_call_runtime_whitelist: { - updates: 'Vec<(PolymeshContractsChainExtensionExtrinsicId,bool)>' + updates: 'Vec<(PolymeshContractsChainExtensionExtrinsicId,bool)>', + }, + instantiate_with_code_as_primary_key: { + endowment: 'u128', + gasLimit: 'SpWeightsWeightV2Weight', + storageDepositLimit: 'Option', + code: 'Bytes', + data: 'Bytes', + salt: 'Bytes', + }, + instantiate_with_hash_as_primary_key: { + endowment: 'u128', + gasLimit: 'SpWeightsWeightV2Weight', + storageDepositLimit: 'Option', + codeHash: 'H256', + data: 'Bytes', + salt: 'Bytes', + }, + upgrade_api: { + api: 'PolymeshContractsApi', + nextUpgrade: 'PolymeshContractsNextUpgrade' } } }, /** - * Lookup539: polymesh_contracts::chain_extension::ExtrinsicId + * Lookup546: polymesh_contracts::NextUpgrade **/ - PolymeshContractsChainExtensionExtrinsicId: '(u8,u8)', + PolymeshContractsNextUpgrade: { + chainVersion: 'PolymeshContractsChainVersion', + apiHash: 'PolymeshContractsApiCodeHash' + }, + /** + * Lookup547: polymesh_contracts::ApiCodeHash + **/ + PolymeshContractsApiCodeHash: { + _alias: { + hash_: 'hash' + }, + hash_: 'H256' + }, /** - * Lookup540: pallet_preimage::pallet::Call + * Lookup548: pallet_preimage::pallet::Call **/ PalletPreimageCall: { _enum: { @@ -3734,7 +3858,7 @@ export default { } }, /** - * Lookup541: pallet_nft::Call + * Lookup549: pallet_nft::Call **/ PalletNftCall: { _enum: { @@ -3751,23 +3875,29 @@ export default { redeem_nft: { ticker: 'PolymeshPrimitivesTicker', nftId: 'u64', - portfolioKind: 'PolymeshPrimitivesIdentityIdPortfolioKind' + portfolioKind: 'PolymeshPrimitivesIdentityIdPortfolioKind', + }, + controller_transfer: { + ticker: 'PolymeshPrimitivesTicker', + nfts: 'PolymeshPrimitivesNftNfTs', + sourcePortfolio: 'PolymeshPrimitivesIdentityIdPortfolioId', + callersPortfolioKind: 'PolymeshPrimitivesIdentityIdPortfolioKind' } } }, /** - * Lookup543: polymesh_primitives::nft::NFTCollectionKeys + * Lookup551: polymesh_primitives::nft::NFTCollectionKeys **/ PolymeshPrimitivesNftNftCollectionKeys: 'Vec', /** - * Lookup546: polymesh_primitives::nft::NFTMetadataAttribute + * Lookup554: polymesh_primitives::nft::NFTMetadataAttribute **/ PolymeshPrimitivesNftNftMetadataAttribute: { key: 'PolymeshPrimitivesAssetMetadataAssetMetadataKey', value: 'Bytes' }, /** - * Lookup547: pallet_test_utils::Call + * Lookup555: pallet_test_utils::Call **/ PalletTestUtilsCall: { _enum: { @@ -3784,7 +3914,7 @@ export default { } }, /** - * Lookup548: pallet_committee::PolymeshVotes + * Lookup556: pallet_committee::PolymeshVotes **/ PalletCommitteePolymeshVotes: { index: 'u32', @@ -3793,13 +3923,13 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup550: pallet_committee::Error + * Lookup558: pallet_committee::Error **/ PalletCommitteeError: { _enum: ['DuplicateVote', 'NotAMember', 'NoSuchProposal', 'ProposalExpired', 'DuplicateProposal', 'MismatchedVotingIndex', 'InvalidProportion', 'FirstVoteReject', 'ProposalsLimitReached'] }, /** - * Lookup560: polymesh_primitives::multisig::ProposalDetails + * Lookup568: polymesh_primitives::multisig::ProposalDetails **/ PolymeshPrimitivesMultisigProposalDetails: { approvals: 'u64', @@ -3809,19 +3939,19 @@ export default { autoClose: 'bool' }, /** - * Lookup561: polymesh_primitives::multisig::ProposalStatus + * Lookup569: polymesh_primitives::multisig::ProposalStatus **/ PolymeshPrimitivesMultisigProposalStatus: { _enum: ['Invalid', 'ActiveOrExpired', 'ExecutionSuccessful', 'ExecutionFailed', 'Rejected'] }, /** - * Lookup563: pallet_multisig::Error + * Lookup571: pallet_multisig::Error **/ PalletMultisigError: { _enum: ['CddMissing', 'ProposalMissing', 'DecodingError', 'NoSigners', 'RequiredSignaturesOutOfBounds', 'NotASigner', 'NoSuchMultisig', 'NotEnoughSigners', 'NonceOverflow', 'AlreadyVoted', 'AlreadyASigner', 'FailedToChargeFee', 'IdentityNotCreator', 'ChangeNotAllowed', 'SignerAlreadyLinkedToMultisig', 'SignerAlreadyLinkedToIdentity', 'MultisigNotAllowedToLinkToItself', 'MissingCurrentIdentity', 'NotPrimaryKey', 'ProposalAlreadyRejected', 'ProposalExpired', 'ProposalAlreadyExecuted', 'MultisigMissingIdentity', 'FailedToSchedule', 'TooManySigners', 'CreatorControlsHaveBeenRemoved'] }, /** - * Lookup565: pallet_bridge::BridgeTxDetail + * Lookup573: pallet_bridge::BridgeTxDetail **/ PalletBridgeBridgeTxDetail: { amount: 'u128', @@ -3830,7 +3960,7 @@ export default { txHash: 'H256' }, /** - * Lookup566: pallet_bridge::BridgeTxStatus + * Lookup574: pallet_bridge::BridgeTxStatus **/ PalletBridgeBridgeTxStatus: { _enum: { @@ -3842,13 +3972,13 @@ export default { } }, /** - * Lookup569: pallet_bridge::Error + * Lookup577: pallet_bridge::Error **/ PalletBridgeError: { _enum: ['ControllerNotSet', 'BadCaller', 'BadAdmin', 'NoValidCdd', 'ProposalAlreadyHandled', 'Unauthorized', 'Frozen', 'NotFrozen', 'FrozenTx', 'BridgeLimitReached', 'Overflow', 'DivisionByZero', 'TimelockedTx'] }, /** - * Lookup570: pallet_staking::StakingLedger + * Lookup578: pallet_staking::StakingLedger **/ PalletStakingStakingLedger: { stash: 'AccountId32', @@ -3858,14 +3988,14 @@ export default { claimedRewards: 'Vec' }, /** - * Lookup572: pallet_staking::UnlockChunk + * Lookup580: pallet_staking::UnlockChunk **/ PalletStakingUnlockChunk: { value: 'Compact', era: 'Compact' }, /** - * Lookup573: pallet_staking::Nominations + * Lookup581: pallet_staking::Nominations **/ PalletStakingNominations: { targets: 'Vec', @@ -3873,27 +4003,27 @@ export default { suppressed: 'bool' }, /** - * Lookup574: pallet_staking::ActiveEraInfo + * Lookup583: pallet_staking::ActiveEraInfo **/ PalletStakingActiveEraInfo: { index: 'u32', start: 'Option' }, /** - * Lookup576: pallet_staking::EraRewardPoints + * Lookup585: pallet_staking::EraRewardPoints **/ PalletStakingEraRewardPoints: { total: 'u32', individual: 'BTreeMap' }, /** - * Lookup579: pallet_staking::Forcing + * Lookup588: pallet_staking::Forcing **/ PalletStakingForcing: { _enum: ['NotForcing', 'ForceNew', 'ForceNone', 'ForceAlways'] }, /** - * Lookup581: pallet_staking::UnappliedSlash + * Lookup590: pallet_staking::UnappliedSlash **/ PalletStakingUnappliedSlash: { validator: 'AccountId32', @@ -3903,7 +4033,7 @@ export default { payout: 'u128' }, /** - * Lookup585: pallet_staking::slashing::SlashingSpans + * Lookup594: pallet_staking::slashing::SlashingSpans **/ PalletStakingSlashingSlashingSpans: { spanIndex: 'u32', @@ -3912,14 +4042,14 @@ export default { prior: 'Vec' }, /** - * Lookup586: pallet_staking::slashing::SpanRecord + * Lookup595: pallet_staking::slashing::SpanRecord **/ PalletStakingSlashingSpanRecord: { slashed: 'u128', paidOut: 'u128' }, /** - * Lookup589: pallet_staking::ElectionResult + * Lookup598: pallet_staking::types::ElectionResult **/ PalletStakingElectionResult: { electedStashes: 'Vec', @@ -3927,7 +4057,7 @@ export default { compute: 'PalletStakingElectionCompute' }, /** - * Lookup590: pallet_staking::ElectionStatus + * Lookup599: pallet_staking::types::ElectionStatus **/ PalletStakingElectionStatus: { _enum: { @@ -3936,43 +4066,37 @@ export default { } }, /** - * Lookup591: pallet_staking::PermissionedIdentityPrefs + * Lookup600: pallet_staking::types::PermissionedIdentityPrefs **/ PalletStakingPermissionedIdentityPrefs: { intendedCount: 'u32', runningCount: 'u32' }, /** - * Lookup592: pallet_staking::Releases - **/ - PalletStakingReleases: { - _enum: ['V1_0_0Ancient', 'V2_0_0', 'V3_0_0', 'V4_0_0', 'V5_0_0', 'V6_0_0', 'V6_0_1', 'V7_0_0'] - }, - /** - * Lookup594: pallet_staking::Error + * Lookup601: pallet_staking::pallet::pallet::Error **/ - PalletStakingError: { - _enum: ['NotController', 'NotStash', 'AlreadyBonded', 'AlreadyPaired', 'EmptyTargets', 'InvalidSlashIndex', 'InsufficientValue', 'NoMoreChunks', 'NoUnlockChunk', 'FundedTarget', 'InvalidEraToReward', 'NotSortedAndUnique', 'AlreadyClaimed', 'OffchainElectionEarlySubmission', 'OffchainElectionWeakSubmission', 'SnapshotUnavailable', 'OffchainElectionBogusWinnerCount', 'OffchainElectionBogusWinner', 'OffchainElectionBogusCompact', 'OffchainElectionBogusNominator', 'OffchainElectionBogusNomination', 'OffchainElectionSlashedNomination', 'OffchainElectionBogusSelfVote', 'OffchainElectionBogusEdge', 'OffchainElectionBogusScore', 'OffchainElectionBogusElectionSize', 'CallNotAllowed', 'IncorrectSlashingSpans', 'AlreadyExists', 'NotExists', 'NoChange', 'InvalidValidatorIdentity', 'InvalidValidatorCommission', 'StashIdentityDoesNotExist', 'StashIdentityNotPermissioned', 'StashIdentityNotCDDed', 'HitIntendedValidatorCount', 'IntendedCountIsExceedingConsensusLimit', 'BondTooSmall', 'BadState', 'TooManyTargets', 'BadTarget', 'InvalidValidatorUnbondAmount'] + PalletStakingPalletError: { + _enum: ['NotController', 'NotStash', 'AlreadyBonded', 'AlreadyPaired', 'EmptyTargets', 'InvalidSlashIndex', 'InsufficientValue', 'NoMoreChunks', 'NoUnlockChunk', 'FundedTarget', 'InvalidEraToReward', 'NotSortedAndUnique', 'AlreadyClaimed', 'OffchainElectionEarlySubmission', 'OffchainElectionWeakSubmission', 'SnapshotUnavailable', 'OffchainElectionBogusWinnerCount', 'OffchainElectionBogusWinner', 'OffchainElectionBogusCompact', 'OffchainElectionBogusNominator', 'OffchainElectionBogusNomination', 'OffchainElectionSlashedNomination', 'OffchainElectionBogusSelfVote', 'OffchainElectionBogusEdge', 'OffchainElectionBogusScore', 'OffchainElectionBogusElectionSize', 'CallNotAllowed', 'IncorrectSlashingSpans', 'AlreadyExists', 'NotExists', 'NoChange', 'InvalidValidatorIdentity', 'InvalidValidatorCommission', 'StashIdentityDoesNotExist', 'StashIdentityNotPermissioned', 'StashIdentityNotCDDed', 'HitIntendedValidatorCount', 'IntendedCountIsExceedingConsensusLimit', 'BondTooSmall', 'BadState', 'TooManyTargets', 'BadTarget', 'InvalidValidatorUnbondAmount', 'BoundNotMet', 'TooManyNominators'] }, /** - * Lookup595: sp_staking::offence::OffenceDetails + * Lookup602: sp_staking::offence::OffenceDetails **/ SpStakingOffenceOffenceDetails: { offender: '(AccountId32,PalletStakingExposure)', reporters: 'Vec' }, /** - * Lookup600: sp_core::crypto::KeyTypeId + * Lookup607: sp_core::crypto::KeyTypeId **/ SpCoreCryptoKeyTypeId: '[u8;4]', /** - * Lookup601: pallet_session::pallet::Error + * Lookup608: pallet_session::pallet::Error **/ PalletSessionError: { _enum: ['InvalidProof', 'NoAssociatedValidatorId', 'DuplicatedKey', 'NoKeys', 'NoAccount'] }, /** - * Lookup602: pallet_grandpa::StoredState + * Lookup609: pallet_grandpa::StoredState **/ PalletGrandpaStoredState: { _enum: { @@ -3989,7 +4113,7 @@ export default { } }, /** - * Lookup603: pallet_grandpa::StoredPendingChange + * Lookup610: pallet_grandpa::StoredPendingChange **/ PalletGrandpaStoredPendingChange: { scheduledAt: 'u32', @@ -3998,46 +4122,46 @@ export default { forced: 'Option' }, /** - * Lookup605: pallet_grandpa::pallet::Error + * Lookup612: pallet_grandpa::pallet::Error **/ PalletGrandpaError: { _enum: ['PauseFailed', 'ResumeFailed', 'ChangePending', 'TooSoon', 'InvalidKeyOwnershipProof', 'InvalidEquivocationProof', 'DuplicateOffenceReport'] }, /** - * Lookup609: pallet_im_online::BoundedOpaqueNetworkState + * Lookup616: pallet_im_online::BoundedOpaqueNetworkState **/ PalletImOnlineBoundedOpaqueNetworkState: { peerId: 'Bytes', externalAddresses: 'Vec' }, /** - * Lookup613: pallet_im_online::pallet::Error + * Lookup620: pallet_im_online::pallet::Error **/ PalletImOnlineError: { _enum: ['InvalidKey', 'DuplicatedHeartbeat'] }, /** - * Lookup615: pallet_sudo::Error + * Lookup622: pallet_sudo::Error **/ PalletSudoError: { _enum: ['RequireSudo'] }, /** - * Lookup616: pallet_asset::TickerRegistration + * Lookup623: pallet_asset::types::TickerRegistration **/ PalletAssetTickerRegistration: { owner: 'PolymeshPrimitivesIdentityId', expiry: 'Option' }, /** - * Lookup617: pallet_asset::TickerRegistrationConfig + * Lookup624: pallet_asset::types::TickerRegistrationConfig **/ PalletAssetTickerRegistrationConfig: { maxTickerLength: 'u8', registrationLength: 'Option' }, /** - * Lookup618: pallet_asset::SecurityToken + * Lookup625: pallet_asset::types::SecurityToken **/ PalletAssetSecurityToken: { totalSupply: 'u128', @@ -4046,25 +4170,25 @@ export default { assetType: 'PolymeshPrimitivesAssetAssetType' }, /** - * Lookup622: pallet_asset::AssetOwnershipRelation + * Lookup629: pallet_asset::types::AssetOwnershipRelation **/ PalletAssetAssetOwnershipRelation: { _enum: ['NotOwned', 'TickerOwned', 'AssetOwned'] }, /** - * Lookup628: pallet_asset::Error + * Lookup635: pallet_asset::error::Error **/ PalletAssetError: { - _enum: ['Unauthorized', 'AssetAlreadyCreated', 'TickerTooLong', 'TickerNotAlphanumeric', 'TickerAlreadyRegistered', 'TotalSupplyAboveLimit', 'NoSuchAsset', 'AlreadyFrozen', 'NotAnOwner', 'BalanceOverflow', 'TotalSupplyOverflow', 'InvalidGranularity', 'NotFrozen', 'InvalidTransfer', 'InsufficientBalance', 'AssetAlreadyDivisible', 'InvalidEthereumSignature', 'TickerRegistrationExpired', 'SenderSameAsReceiver', 'NoSuchDoc', 'MaxLengthOfAssetNameExceeded', 'FundingRoundNameMaxLengthExceeded', 'InvalidAssetIdentifier', 'InvestorUniquenessClaimNotAllowed', 'InvalidCustomAssetTypeId', 'AssetMetadataNameMaxLengthExceeded', 'AssetMetadataValueMaxLengthExceeded', 'AssetMetadataTypeDefMaxLengthExceeded', 'AssetMetadataKeyIsMissing', 'AssetMetadataValueIsLocked', 'AssetMetadataLocalKeyAlreadyExists', 'AssetMetadataGlobalKeyAlreadyExists', 'TickerFirstByteNotValid', 'UnexpectedNonFungibleToken', 'IncompatibleAssetTypeUpdate', 'AssetMetadataKeyBelongsToNFTCollection', 'AssetMetadataValueIsEmpty'] + _enum: ['Unauthorized', 'AssetAlreadyCreated', 'TickerTooLong', 'TickerNotAlphanumeric', 'TickerAlreadyRegistered', 'TotalSupplyAboveLimit', 'NoSuchAsset', 'AlreadyFrozen', 'NotAnOwner', 'BalanceOverflow', 'TotalSupplyOverflow', 'InvalidGranularity', 'NotFrozen', 'InvalidTransfer', 'InsufficientBalance', 'AssetAlreadyDivisible', 'InvalidEthereumSignature', 'TickerRegistrationExpired', 'SenderSameAsReceiver', 'NoSuchDoc', 'MaxLengthOfAssetNameExceeded', 'FundingRoundNameMaxLengthExceeded', 'InvalidAssetIdentifier', 'InvestorUniquenessClaimNotAllowed', 'InvalidCustomAssetTypeId', 'AssetMetadataNameMaxLengthExceeded', 'AssetMetadataValueMaxLengthExceeded', 'AssetMetadataTypeDefMaxLengthExceeded', 'AssetMetadataKeyIsMissing', 'AssetMetadataValueIsLocked', 'AssetMetadataLocalKeyAlreadyExists', 'AssetMetadataGlobalKeyAlreadyExists', 'TickerFirstByteNotValid', 'UnexpectedNonFungibleToken', 'IncompatibleAssetTypeUpdate', 'AssetMetadataKeyBelongsToNFTCollection', 'AssetMetadataValueIsEmpty', 'NumberOfAssetMediatorsExceeded', 'InvalidTickerCharacter', 'InvalidTransferFrozenAsset', 'InvalidTransferComplianceFailure'] }, /** - * Lookup631: pallet_corporate_actions::distribution::Error + * Lookup638: pallet_corporate_actions::distribution::Error **/ PalletCorporateActionsDistributionError: { _enum: ['CANotBenefit', 'AlreadyExists', 'ExpiryBeforePayment', 'HolderAlreadyPaid', 'NoSuchDistribution', 'CannotClaimBeforeStart', 'CannotClaimAfterExpiry', 'BalancePerShareProductOverflowed', 'NotDistributionCreator', 'AlreadyReclaimed', 'NotExpired', 'DistributionStarted', 'InsufficientRemainingAmount', 'DistributionAmountIsZero', 'DistributionPerShareIsZero'] }, /** - * Lookup635: polymesh_common_utilities::traits::checkpoint::NextCheckpoints + * Lookup642: polymesh_common_utilities::traits::checkpoint::NextCheckpoints **/ PolymeshCommonUtilitiesCheckpointNextCheckpoints: { nextAt: 'u64', @@ -4072,44 +4196,44 @@ export default { schedules: 'BTreeMap' }, /** - * Lookup641: pallet_asset::checkpoint::Error + * Lookup648: pallet_asset::checkpoint::Error **/ PalletAssetCheckpointError: { _enum: ['NoSuchSchedule', 'ScheduleNotRemovable', 'SchedulesOverMaxComplexity', 'ScheduleIsEmpty', 'ScheduleFinished', 'ScheduleHasExpiredCheckpoints'] }, /** - * Lookup642: polymesh_primitives::compliance_manager::AssetCompliance + * Lookup649: polymesh_primitives::compliance_manager::AssetCompliance **/ PolymeshPrimitivesComplianceManagerAssetCompliance: { paused: 'bool', requirements: 'Vec' }, /** - * Lookup644: pallet_compliance_manager::Error + * Lookup651: pallet_compliance_manager::Error **/ PalletComplianceManagerError: { _enum: ['Unauthorized', 'DidNotExist', 'InvalidComplianceRequirementId', 'IncorrectOperationOnTrustedIssuer', 'DuplicateComplianceRequirements', 'ComplianceRequirementTooComplex', 'WeightLimitExceeded'] }, /** - * Lookup647: pallet_corporate_actions::Error + * Lookup654: pallet_corporate_actions::Error **/ PalletCorporateActionsError: { _enum: ['DetailsTooLong', 'DuplicateDidTax', 'TooManyDidTaxes', 'TooManyTargetIds', 'NoSuchCheckpointId', 'NoSuchCA', 'NoRecordDate', 'RecordDateAfterStart', 'DeclDateAfterRecordDate', 'DeclDateInFuture', 'NotTargetedByCA'] }, /** - * Lookup649: pallet_corporate_actions::ballot::Error + * Lookup656: pallet_corporate_actions::ballot::Error **/ PalletCorporateActionsBallotError: { _enum: ['CANotNotice', 'AlreadyExists', 'NoSuchBallot', 'StartAfterEnd', 'NowAfterEnd', 'NumberOfChoicesOverflow', 'VotingAlreadyStarted', 'VotingNotStarted', 'VotingAlreadyEnded', 'WrongVoteCount', 'InsufficientVotes', 'NoSuchRCVFallback', 'RCVSelfCycle', 'RCVNotAllowed'] }, /** - * Lookup650: pallet_permissions::Error + * Lookup657: pallet_permissions::Error **/ PalletPermissionsError: { _enum: ['UnauthorizedCaller'] }, /** - * Lookup651: pallet_pips::PipsMetadata + * Lookup658: pallet_pips::PipsMetadata **/ PalletPipsPipsMetadata: { id: 'u32', @@ -4120,14 +4244,14 @@ export default { expiry: 'PolymeshCommonUtilitiesMaybeBlock' }, /** - * Lookup653: pallet_pips::DepositInfo + * Lookup660: pallet_pips::DepositInfo **/ PalletPipsDepositInfo: { owner: 'AccountId32', amount: 'u128' }, /** - * Lookup654: pallet_pips::Pip + * Lookup661: pallet_pips::Pip **/ PalletPipsPip: { id: 'u32', @@ -4135,7 +4259,7 @@ export default { proposer: 'PalletPipsProposer' }, /** - * Lookup655: pallet_pips::VotingResult + * Lookup662: pallet_pips::VotingResult **/ PalletPipsVotingResult: { ayesCount: 'u32', @@ -4144,11 +4268,11 @@ export default { naysStake: 'u128' }, /** - * Lookup656: pallet_pips::Vote + * Lookup663: pallet_pips::Vote **/ PalletPipsVote: '(bool,u128)', /** - * Lookup657: pallet_pips::SnapshotMetadata + * Lookup664: pallet_pips::SnapshotMetadata **/ PalletPipsSnapshotMetadata: { createdAt: 'u32', @@ -4156,25 +4280,25 @@ export default { id: 'u32' }, /** - * Lookup659: pallet_pips::Error + * Lookup666: pallet_pips::Error **/ PalletPipsError: { _enum: ['RescheduleNotByReleaseCoordinator', 'NotFromCommunity', 'NotByCommittee', 'TooManyActivePips', 'IncorrectDeposit', 'InsufficientDeposit', 'NoSuchProposal', 'NotACommitteeMember', 'InvalidFutureBlockNumber', 'NumberOfVotesExceeded', 'StakeAmountOfVotesExceeded', 'MissingCurrentIdentity', 'IncorrectProposalState', 'CannotSkipPip', 'SnapshotResultTooLarge', 'SnapshotIdMismatch', 'ScheduledProposalDoesntExist', 'ProposalNotInScheduledState'] }, /** - * Lookup667: pallet_portfolio::Error + * Lookup674: pallet_portfolio::Error **/ PalletPortfolioError: { - _enum: ['PortfolioDoesNotExist', 'InsufficientPortfolioBalance', 'DestinationIsSamePortfolio', 'PortfolioNameAlreadyInUse', 'SecondaryKeyNotAuthorizedForPortfolio', 'UnauthorizedCustodian', 'InsufficientTokensLocked', 'PortfolioNotEmpty', 'DifferentIdentityPortfolios', 'NoDuplicateAssetsAllowed', 'NFTNotFoundInPortfolio', 'NFTAlreadyLocked', 'NFTNotLocked', 'InvalidTransferNFTNotOwned', 'InvalidTransferNFTIsLocked', 'EmptyTransfer'] + _enum: ['PortfolioDoesNotExist', 'InsufficientPortfolioBalance', 'DestinationIsSamePortfolio', 'PortfolioNameAlreadyInUse', 'SecondaryKeyNotAuthorizedForPortfolio', 'UnauthorizedCustodian', 'InsufficientTokensLocked', 'PortfolioNotEmpty', 'DifferentIdentityPortfolios', 'NoDuplicateAssetsAllowed', 'NFTNotFoundInPortfolio', 'NFTAlreadyLocked', 'NFTNotLocked', 'InvalidTransferNFTNotOwned', 'InvalidTransferNFTIsLocked', 'EmptyTransfer', 'MissingOwnersPermission'] }, /** - * Lookup668: pallet_protocol_fee::Error + * Lookup675: pallet_protocol_fee::Error **/ PalletProtocolFeeError: { _enum: ['InsufficientAccountBalance', 'UnHandledImbalances', 'InsufficientSubsidyBalance'] }, /** - * Lookup671: pallet_scheduler::Scheduled, BlockNumber, polymesh_runtime_develop::runtime::OriginCaller, sp_core::crypto::AccountId32> + * Lookup678: pallet_scheduler::Scheduled, BlockNumber, polymesh_runtime_develop::runtime::OriginCaller, sp_core::crypto::AccountId32> **/ PalletSchedulerScheduled: { maybeId: 'Option<[u8;32]>', @@ -4184,7 +4308,7 @@ export default { origin: 'PolymeshRuntimeDevelopRuntimeOriginCaller' }, /** - * Lookup672: frame_support::traits::preimages::Bounded + * Lookup679: frame_support::traits::preimages::Bounded **/ FrameSupportPreimagesBounded: { _enum: { @@ -4205,20 +4329,20 @@ export default { } }, /** - * Lookup675: pallet_scheduler::pallet::Error + * Lookup682: pallet_scheduler::pallet::Error **/ PalletSchedulerError: { _enum: ['FailedToSchedule', 'NotFound', 'TargetBlockNumberInPast', 'RescheduleNoChange', 'Named'] }, /** - * Lookup676: polymesh_primitives::settlement::Venue + * Lookup683: polymesh_primitives::settlement::Venue **/ PolymeshPrimitivesSettlementVenue: { creator: 'PolymeshPrimitivesIdentityId', venueType: 'PolymeshPrimitivesSettlementVenueType' }, /** - * Lookup680: polymesh_primitives::settlement::Instruction + * Lookup687: polymesh_primitives::settlement::Instruction **/ PolymeshPrimitivesSettlementInstruction: { instructionId: 'u64', @@ -4229,7 +4353,7 @@ export default { valueDate: 'Option' }, /** - * Lookup682: polymesh_primitives::settlement::LegStatus + * Lookup689: polymesh_primitives::settlement::LegStatus **/ PolymeshPrimitivesSettlementLegStatus: { _enum: { @@ -4239,13 +4363,13 @@ export default { } }, /** - * Lookup684: polymesh_primitives::settlement::AffirmationStatus + * Lookup691: polymesh_primitives::settlement::AffirmationStatus **/ PolymeshPrimitivesSettlementAffirmationStatus: { _enum: ['Unknown', 'Pending', 'Affirmed'] }, /** - * Lookup688: polymesh_primitives::settlement::InstructionStatus + * Lookup695: polymesh_primitives::settlement::InstructionStatus **/ PolymeshPrimitivesSettlementInstructionStatus: { _enum: { @@ -4257,82 +4381,88 @@ export default { } }, /** - * Lookup689: pallet_settlement::Error + * Lookup697: polymesh_primitives::settlement::MediatorAffirmationStatus + **/ + PolymeshPrimitivesSettlementMediatorAffirmationStatus: { + _enum: { + Unknown: 'Null', + Pending: 'Null', + Affirmed: { + expiry: 'Option' + } + } + }, + /** + * Lookup698: pallet_settlement::Error **/ PalletSettlementError: { - _enum: ['InvalidVenue', 'Unauthorized', 'InstructionNotAffirmed', 'UnauthorizedSigner', 'ReceiptAlreadyClaimed', 'UnauthorizedVenue', 'InstructionDatesInvalid', 'InstructionSettleBlockPassed', 'InvalidSignature', 'SameSenderReceiver', 'SettleOnPastBlock', 'UnexpectedAffirmationStatus', 'FailedToSchedule', 'UnknownInstruction', 'SignerAlreadyExists', 'SignerDoesNotExist', 'ZeroAmount', 'InstructionSettleBlockNotReached', 'CallerIsNotAParty', 'MaxNumberOfNFTsExceeded', 'NumberOfTransferredNFTsUnderestimated', 'ReceiptForInvalidLegType', 'WeightLimitExceeded', 'MaxNumberOfFungibleAssetsExceeded', 'MaxNumberOfOffChainAssetsExceeded', 'NumberOfFungibleTransfersUnderestimated', 'UnexpectedOFFChainAsset', 'OffChainAssetCantBeLocked', 'NumberOfOffChainTransfersUnderestimated', 'LegNotFound', 'InputWeightIsLessThanMinimum', 'MaxNumberOfReceiptsExceeded', 'NotAllAffirmationsHaveBeenReceived', 'InvalidInstructionStatusForExecution', 'FailedToReleaseLockOrTransferAssets', 'DuplicateReceiptUid', 'ReceiptInstructionIdMissmatch', 'MultipleReceiptsForOneLeg', 'UnexpectedLegStatus'] + _enum: ['InvalidVenue', 'Unauthorized', 'InstructionNotAffirmed', 'UnauthorizedSigner', 'ReceiptAlreadyClaimed', 'UnauthorizedVenue', 'InstructionDatesInvalid', 'InstructionSettleBlockPassed', 'InvalidSignature', 'SameSenderReceiver', 'SettleOnPastBlock', 'UnexpectedAffirmationStatus', 'FailedToSchedule', 'UnknownInstruction', 'SignerAlreadyExists', 'SignerDoesNotExist', 'ZeroAmount', 'InstructionSettleBlockNotReached', 'CallerIsNotAParty', 'MaxNumberOfNFTsExceeded', 'NumberOfTransferredNFTsUnderestimated', 'ReceiptForInvalidLegType', 'WeightLimitExceeded', 'MaxNumberOfFungibleAssetsExceeded', 'MaxNumberOfOffChainAssetsExceeded', 'NumberOfFungibleTransfersUnderestimated', 'UnexpectedOFFChainAsset', 'OffChainAssetCantBeLocked', 'NumberOfOffChainTransfersUnderestimated', 'LegNotFound', 'InputWeightIsLessThanMinimum', 'MaxNumberOfReceiptsExceeded', 'NotAllAffirmationsHaveBeenReceived', 'InvalidInstructionStatusForExecution', 'FailedToReleaseLockOrTransferAssets', 'DuplicateReceiptUid', 'ReceiptInstructionIdMissmatch', 'MultipleReceiptsForOneLeg', 'UnexpectedLegStatus', 'NumberOfVenueSignersExceeded', 'CallerIsNotAMediator', 'InvalidExpiryDate', 'MediatorAffirmationExpired'] }, /** - * Lookup692: polymesh_primitives::statistics::Stat1stKey + * Lookup701: polymesh_primitives::statistics::Stat1stKey **/ PolymeshPrimitivesStatisticsStat1stKey: { asset: 'PolymeshPrimitivesStatisticsAssetScope', statType: 'PolymeshPrimitivesStatisticsStatType' }, /** - * Lookup693: polymesh_primitives::transfer_compliance::AssetTransferCompliance + * Lookup702: polymesh_primitives::transfer_compliance::AssetTransferCompliance **/ PolymeshPrimitivesTransferComplianceAssetTransferCompliance: { paused: 'bool', requirements: 'BTreeSet' }, /** - * Lookup697: pallet_statistics::Error + * Lookup706: pallet_statistics::Error **/ PalletStatisticsError: { _enum: ['InvalidTransfer', 'StatTypeMissing', 'StatTypeNeededByTransferCondition', 'CannotRemoveStatTypeInUse', 'StatTypeLimitReached', 'TransferConditionLimitReached', 'WeightLimitExceeded'] }, /** - * Lookup699: pallet_sto::Error + * Lookup708: pallet_sto::Error **/ PalletStoError: { _enum: ['Unauthorized', 'Overflow', 'InsufficientTokensRemaining', 'FundraiserNotFound', 'FundraiserNotLive', 'FundraiserClosed', 'FundraiserExpired', 'InvalidVenue', 'InvalidPriceTiers', 'InvalidOfferingWindow', 'MaxPriceExceeded', 'InvestmentAmountTooLow'] }, /** - * Lookup700: pallet_treasury::Error + * Lookup709: pallet_treasury::Error **/ PalletTreasuryError: { _enum: ['InsufficientBalance', 'InvalidIdentity'] }, /** - * Lookup701: pallet_utility::pallet::Error + * Lookup710: pallet_utility::pallet::Error **/ PalletUtilityError: { - _enum: ['TooManyCalls', 'InvalidSignature', 'TargetCddMissing', 'InvalidNonce'] + _enum: ['TooManyCalls', 'InvalidSignature', 'TargetCddMissing', 'InvalidNonce', 'UnableToDeriveAccountId'] }, /** - * Lookup702: pallet_base::Error + * Lookup711: pallet_base::Error **/ PalletBaseError: { _enum: ['TooLong', 'CounterOverflow'] }, /** - * Lookup704: pallet_external_agents::Error + * Lookup713: pallet_external_agents::Error **/ PalletExternalAgentsError: { _enum: ['NoSuchAG', 'UnauthorizedAgent', 'AlreadyAnAgent', 'NotAnAgent', 'RemovingLastFullAgent', 'SecondaryKeyNotAuthorizedForAsset'] }, /** - * Lookup705: pallet_relayer::Subsidy + * Lookup714: pallet_relayer::Subsidy **/ PalletRelayerSubsidy: { payingKey: 'AccountId32', remaining: 'u128' }, /** - * Lookup706: pallet_relayer::Error + * Lookup715: pallet_relayer::Error **/ PalletRelayerError: { _enum: ['UserKeyCddMissing', 'PayingKeyCddMissing', 'NoPayingKey', 'NotPayingKey', 'NotAuthorizedForPayingKey', 'NotAuthorizedForUserKey', 'Overflow'] }, /** - * Lookup707: pallet_rewards::Error - **/ - PalletRewardsError: { - _enum: ['UnknownItnAddress', 'ItnRewardAlreadyClaimed', 'InvalidSignature', 'UnableToCovertBalance'] - }, - /** - * Lookup709: pallet_contracts::wasm::PrefabWasmModule + * Lookup717: pallet_contracts::wasm::PrefabWasmModule **/ PalletContractsWasmPrefabWasmModule: { instructionWeightsVersion: 'Compact', @@ -4342,7 +4472,7 @@ export default { determinism: 'PalletContractsWasmDeterminism' }, /** - * Lookup711: pallet_contracts::wasm::OwnerInfo + * Lookup719: pallet_contracts::wasm::OwnerInfo **/ PalletContractsWasmOwnerInfo: { owner: 'AccountId32', @@ -4350,7 +4480,7 @@ export default { refcount: 'Compact' }, /** - * Lookup712: pallet_contracts::storage::ContractInfo + * Lookup720: pallet_contracts::storage::ContractInfo **/ PalletContractsStorageContractInfo: { trieId: 'Bytes', @@ -4363,13 +4493,13 @@ export default { storageBaseDeposit: 'u128' }, /** - * Lookup715: pallet_contracts::storage::DeletedContract + * Lookup723: pallet_contracts::storage::DeletedContract **/ PalletContractsStorageDeletedContract: { trieId: 'Bytes' }, /** - * Lookup717: pallet_contracts::schedule::Schedule + * Lookup725: pallet_contracts::schedule::Schedule **/ PalletContractsSchedule: { limits: 'PalletContractsScheduleLimits', @@ -4377,7 +4507,7 @@ export default { hostFnWeights: 'PalletContractsScheduleHostFnWeights' }, /** - * Lookup718: pallet_contracts::schedule::Limits + * Lookup726: pallet_contracts::schedule::Limits **/ PalletContractsScheduleLimits: { eventTopics: 'u32', @@ -4391,7 +4521,7 @@ export default { payloadLen: 'u32' }, /** - * Lookup719: pallet_contracts::schedule::InstructionWeights + * Lookup727: pallet_contracts::schedule::InstructionWeights **/ PalletContractsScheduleInstructionWeights: { _alias: { @@ -4453,7 +4583,7 @@ export default { i64rotr: 'u32' }, /** - * Lookup720: pallet_contracts::schedule::HostFnWeights + * Lookup728: pallet_contracts::schedule::HostFnWeights **/ PalletContractsScheduleHostFnWeights: { _alias: { @@ -4520,19 +4650,19 @@ export default { instantiationNonce: 'SpWeightsWeightV2Weight' }, /** - * Lookup721: pallet_contracts::pallet::Error + * Lookup729: pallet_contracts::pallet::Error **/ PalletContractsError: { _enum: ['InvalidScheduleVersion', 'InvalidCallFlags', 'OutOfGas', 'OutputBufferTooSmall', 'TransferFailed', 'MaxCallDepthReached', 'ContractNotFound', 'CodeTooLarge', 'CodeNotFound', 'OutOfBounds', 'DecodingFailed', 'ContractTrapped', 'ValueTooLarge', 'TerminatedWhileReentrant', 'InputForwarded', 'RandomSubjectTooLong', 'TooManyTopics', 'NoChainExtension', 'DeletionQueueFull', 'DuplicateContract', 'TerminatedInConstructor', 'ReentranceDenied', 'StorageDepositNotEnoughFunds', 'StorageDepositLimitExhausted', 'CodeInUse', 'ContractReverted', 'CodeRejected', 'Indeterministic'] }, /** - * Lookup722: polymesh_contracts::Error + * Lookup731: polymesh_contracts::Error **/ PolymeshContractsError: { - _enum: ['InvalidFuncId', 'InvalidRuntimeCall', 'ReadStorageFailed', 'DataLeftAfterDecoding', 'InLenTooLarge', 'OutLenTooLarge', 'InstantiatorWithNoIdentity', 'RuntimeCallDenied'] + _enum: ['InvalidFuncId', 'InvalidRuntimeCall', 'ReadStorageFailed', 'DataLeftAfterDecoding', 'InLenTooLarge', 'OutLenTooLarge', 'InstantiatorWithNoIdentity', 'RuntimeCallDenied', 'CallerNotAPrimaryKey', 'MissingKeyPermissions', 'InvalidChainVersion', 'NoUpgradesSupported'] }, /** - * Lookup723: pallet_preimage::RequestStatus + * Lookup732: pallet_preimage::RequestStatus **/ PalletPreimageRequestStatus: { _enum: { @@ -4548,62 +4678,62 @@ export default { } }, /** - * Lookup727: pallet_preimage::pallet::Error + * Lookup736: pallet_preimage::pallet::Error **/ PalletPreimageError: { _enum: ['TooBig', 'AlreadyNoted', 'NotAuthorized', 'NotNoted', 'Requested', 'NotRequested'] }, /** - * Lookup728: polymesh_primitives::nft::NFTCollection + * Lookup737: polymesh_primitives::nft::NFTCollection **/ PolymeshPrimitivesNftNftCollection: { id: 'u64', ticker: 'PolymeshPrimitivesTicker' }, /** - * Lookup732: pallet_nft::Error + * Lookup742: pallet_nft::Error **/ PalletNftError: { - _enum: ['BalanceOverflow', 'BalanceUnderflow', 'CollectionAlredyRegistered', 'CollectionNotFound', 'DuplicateMetadataKey', 'DuplicatedNFTId', 'InvalidAssetType', 'InvalidMetadataAttribute', 'InvalidNFTTransferCollectionNotFound', 'InvalidNFTTransferSamePortfolio', 'InvalidNFTTransferNFTNotOwned', 'InvalidNFTTransferCountOverflow', 'InvalidNFTTransferComplianceFailure', 'InvalidNFTTransferFrozenAsset', 'InvalidNFTTransferInsufficientCount', 'MaxNumberOfKeysExceeded', 'MaxNumberOfNFTsPerLegExceeded', 'NFTNotFound', 'UnregisteredMetadataKey', 'ZeroCount'] + _enum: ['BalanceOverflow', 'BalanceUnderflow', 'CollectionAlredyRegistered', 'CollectionNotFound', 'DuplicateMetadataKey', 'DuplicatedNFTId', 'InvalidAssetType', 'InvalidMetadataAttribute', 'InvalidNFTTransferCollectionNotFound', 'InvalidNFTTransferSamePortfolio', 'InvalidNFTTransferNFTNotOwned', 'InvalidNFTTransferCountOverflow', 'InvalidNFTTransferComplianceFailure', 'InvalidNFTTransferFrozenAsset', 'InvalidNFTTransferInsufficientCount', 'MaxNumberOfKeysExceeded', 'MaxNumberOfNFTsPerLegExceeded', 'NFTNotFound', 'UnregisteredMetadataKey', 'ZeroCount', 'SupplyOverflow', 'SupplyUnderflow', 'InvalidNFTTransferNFTIsLocked'] }, /** - * Lookup733: pallet_test_utils::Error + * Lookup743: pallet_test_utils::Error **/ PalletTestUtilsError: 'Null', /** - * Lookup736: frame_system::extensions::check_spec_version::CheckSpecVersion + * Lookup746: frame_system::extensions::check_spec_version::CheckSpecVersion **/ FrameSystemExtensionsCheckSpecVersion: 'Null', /** - * Lookup737: frame_system::extensions::check_tx_version::CheckTxVersion + * Lookup747: frame_system::extensions::check_tx_version::CheckTxVersion **/ FrameSystemExtensionsCheckTxVersion: 'Null', /** - * Lookup738: frame_system::extensions::check_genesis::CheckGenesis + * Lookup748: frame_system::extensions::check_genesis::CheckGenesis **/ FrameSystemExtensionsCheckGenesis: 'Null', /** - * Lookup741: frame_system::extensions::check_nonce::CheckNonce + * Lookup751: frame_system::extensions::check_nonce::CheckNonce **/ FrameSystemExtensionsCheckNonce: 'Compact', /** - * Lookup742: polymesh_extensions::check_weight::CheckWeight + * Lookup752: polymesh_extensions::check_weight::CheckWeight **/ PolymeshExtensionsCheckWeight: 'FrameSystemExtensionsCheckWeight', /** - * Lookup743: frame_system::extensions::check_weight::CheckWeight + * Lookup753: frame_system::extensions::check_weight::CheckWeight **/ FrameSystemExtensionsCheckWeight: 'Null', /** - * Lookup744: pallet_transaction_payment::ChargeTransactionPayment + * Lookup754: pallet_transaction_payment::ChargeTransactionPayment **/ PalletTransactionPaymentChargeTransactionPayment: 'Compact', /** - * Lookup745: pallet_permissions::StoreCallMetadata + * Lookup755: pallet_permissions::StoreCallMetadata **/ PalletPermissionsStoreCallMetadata: 'Null', /** - * Lookup746: polymesh_runtime_develop::runtime::Runtime + * Lookup756: polymesh_runtime_develop::runtime::Runtime **/ PolymeshRuntimeDevelopRuntime: 'Null' }; diff --git a/scripts/cli/src/interfaces/registry.ts b/scripts/cli/src/interfaces/registry.ts index 0465c5c37c..64c6ebeaa0 100644 --- a/scripts/cli/src/interfaces/registry.ts +++ b/scripts/cli/src/interfaces/registry.ts @@ -1,7 +1,7 @@ // Auto-generated via `yarn polkadot-types-from-defs`, do not edit /* eslint-disable */ -import type { FinalityGrandpaEquivocationPrecommit, FinalityGrandpaEquivocationPrevote, FinalityGrandpaPrecommit, FinalityGrandpaPrevote, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportDispatchRawOrigin, FrameSupportPreimagesBounded, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetCall, PalletAssetCheckpointCall, PalletAssetCheckpointError, PalletAssetError, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletBabeCall, PalletBabeError, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBaseCall, PalletBaseError, PalletBridgeBridgeTx, PalletBridgeBridgeTxDetail, PalletBridgeBridgeTxStatus, PalletBridgeCall, PalletBridgeError, PalletBridgeHandledTxStatus, PalletBridgeRawEvent, PalletCommitteeCall, PalletCommitteeError, PalletCommitteeInstance1, PalletCommitteeInstance3, PalletCommitteeInstance4, PalletCommitteePolymeshVotes, PalletCommitteeRawEventInstance1, PalletCommitteeRawEventInstance3, PalletCommitteeRawEventInstance4, PalletCommitteeRawOriginInstance1, PalletCommitteeRawOriginInstance3, PalletCommitteeRawOriginInstance4, PalletComplianceManagerCall, PalletComplianceManagerError, PalletContractsCall, PalletContractsError, PalletContractsEvent, PalletContractsSchedule, PalletContractsScheduleHostFnWeights, PalletContractsScheduleInstructionWeights, PalletContractsScheduleLimits, PalletContractsStorageContractInfo, PalletContractsStorageDeletedContract, PalletContractsWasmDeterminism, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsBallotCall, PalletCorporateActionsBallotError, PalletCorporateActionsBallotEvent, PalletCorporateActionsBallotMotion, PalletCorporateActionsCaCheckpoint, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsCall, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsDistributionCall, PalletCorporateActionsDistributionError, PalletCorporateActionsDistributionEvent, PalletCorporateActionsError, PalletCorporateActionsEvent, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDate, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletCorporateActionsTargetTreatment, PalletExternalAgentsCall, PalletExternalAgentsError, PalletGrandpaCall, PalletGrandpaError, PalletGrandpaEvent, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletGroupCall, PalletGroupError, PalletGroupInstance1, PalletGroupInstance2, PalletGroupInstance3, PalletGroupInstance4, PalletIdentityCall, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletIdentityError, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineCall, PalletImOnlineError, PalletImOnlineEvent, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Public, PalletImOnlineSr25519AppSr25519Signature, PalletIndicesCall, PalletIndicesError, PalletIndicesEvent, PalletMultisigCall, PalletMultisigError, PalletNftCall, PalletNftError, PalletOffencesEvent, PalletPermissionsError, PalletPermissionsStoreCallMetadata, PalletPipsCall, PalletPipsCommittee, PalletPipsDepositInfo, PalletPipsError, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsRawEvent, PalletPipsSnapshotMetadata, PalletPipsSnapshotResult, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletPortfolioCall, PalletPortfolioError, PalletPreimageCall, PalletPreimageError, PalletPreimageEvent, PalletPreimageRequestStatus, PalletProtocolFeeCall, PalletProtocolFeeError, PalletProtocolFeeRawEvent, PalletRelayerCall, PalletRelayerError, PalletRelayerSubsidy, PalletRewardsCall, PalletRewardsError, PalletRewardsItnRewardStatus, PalletRewardsRawEvent, PalletSchedulerCall, PalletSchedulerError, PalletSchedulerEvent, PalletSchedulerScheduled, PalletSessionCall, PalletSessionError, PalletSessionEvent, PalletSettlementCall, PalletSettlementError, PalletStakingActiveEraInfo, PalletStakingCall, PalletStakingCompactAssignments, PalletStakingElectionCompute, PalletStakingElectionResult, PalletStakingElectionSize, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingError, PalletStakingExposure, PalletStakingForcing, PalletStakingIndividualExposure, PalletStakingNominations, PalletStakingPermissionedIdentityPrefs, PalletStakingRawEvent, PalletStakingReleases, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingUnlockChunk, PalletStakingValidatorPrefs, PalletStatisticsCall, PalletStatisticsError, PalletStoCall, PalletStoError, PalletStoFundraiser, PalletStoFundraiserStatus, PalletStoFundraiserTier, PalletStoPriceTier, PalletStoRawEvent, PalletSudoCall, PalletSudoError, PalletSudoRawEvent, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsRawEvent, PalletTimestampCall, PalletTransactionPaymentChargeTransactionPayment, PalletTransactionPaymentRawEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryRawEvent, PalletUtilityCall, PalletUtilityError, PalletUtilityEvent, PalletUtilityUniqueCall, PolymeshCommonUtilitiesAssetRawEvent, PolymeshCommonUtilitiesBalancesAccountData, PolymeshCommonUtilitiesBalancesRawEvent, PolymeshCommonUtilitiesBalancesReasons, PolymeshCommonUtilitiesBaseEvent, PolymeshCommonUtilitiesCheckpointEvent, PolymeshCommonUtilitiesCheckpointNextCheckpoints, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesComplianceManagerEvent, PolymeshCommonUtilitiesExternalAgentsEvent, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesGroupRawEventInstance1, PolymeshCommonUtilitiesGroupRawEventInstance2, PolymeshCommonUtilitiesGroupRawEventInstance3, PolymeshCommonUtilitiesGroupRawEventInstance4, PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth, PolymeshCommonUtilitiesIdentityRawEvent, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesMultisigRawEvent, PolymeshCommonUtilitiesNftEvent, PolymeshCommonUtilitiesPortfolioEvent, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshCommonUtilitiesRelayerRawEvent, PolymeshCommonUtilitiesSettlementRawEvent, PolymeshCommonUtilitiesStatisticsEvent, PolymeshContractsCall, PolymeshContractsChainExtensionExtrinsicId, PolymeshContractsError, PolymeshContractsEvent, PolymeshExtensionsCheckWeight, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAssetNonFungibleType, PolymeshPrimitivesAuthorization, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddId, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionConditionType, PolymeshPrimitivesConditionTargetIdentity, PolymeshPrimitivesConditionTrustedFor, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesDocumentHash, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioKind, PolymeshPrimitivesJurisdictionCountryCode, PolymeshPrimitivesMemo, PolymeshPrimitivesMultisigProposalDetails, PolymeshPrimitivesMultisigProposalStatus, PolymeshPrimitivesNftNfTs, PolymeshPrimitivesNftNftCollection, PolymeshPrimitivesNftNftCollectionKeys, PolymeshPrimitivesNftNftMetadataAttribute, PolymeshPrimitivesPortfolioFund, PolymeshPrimitivesPortfolioFundDescription, PolymeshPrimitivesPortfolioPortfolioUpdateReason, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeyPalletPermissions, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementAffirmationStatus, PolymeshPrimitivesSettlementInstruction, PolymeshPrimitivesSettlementInstructionStatus, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementLegStatus, PolymeshPrimitivesSettlementReceiptDetails, PolymeshPrimitivesSettlementReceiptMetadata, PolymeshPrimitivesSettlementSettlementType, PolymeshPrimitivesSettlementVenue, PolymeshPrimitivesSettlementVenueType, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatClaim, PolymeshPrimitivesStatisticsStatOpType, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId, PolymeshPrimitivesSubsetSubsetRestrictionTicker, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntime, PolymeshRuntimeDevelopRuntimeOriginCaller, PolymeshRuntimeDevelopRuntimeSessionKeys, SpArithmeticArithmeticError, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAllowedSlots, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusBabeDigestsPreDigest, SpConsensusBabeDigestsPrimaryPreDigest, SpConsensusBabeDigestsSecondaryPlainPreDigest, SpConsensusBabeDigestsSecondaryVRFPreDigest, SpConsensusGrandpaAppPublic, SpConsensusGrandpaAppSignature, SpConsensusGrandpaEquivocation, SpConsensusGrandpaEquivocationProof, SpConsensusSlotsEquivocationProof, SpCoreCryptoKeyTypeId, SpCoreEcdsaSignature, SpCoreEd25519Public, SpCoreEd25519Signature, SpCoreOffchainOpaqueNetworkState, SpCoreSr25519Public, SpCoreSr25519Signature, SpCoreVoid, SpNposElectionsElectionScore, SpRuntimeBlakeTwo256, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeHeader, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpSessionMembershipProof, SpStakingOffenceOffenceDetails, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightToFeeCoefficient, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; +import type { FinalityGrandpaEquivocationPrecommit, FinalityGrandpaEquivocationPrevote, FinalityGrandpaPrecommit, FinalityGrandpaPrevote, FrameSupportDispatchDispatchClass, FrameSupportDispatchDispatchInfo, FrameSupportDispatchPays, FrameSupportDispatchPerDispatchClassU32, FrameSupportDispatchPerDispatchClassWeight, FrameSupportDispatchPerDispatchClassWeightsPerClass, FrameSupportDispatchRawOrigin, FrameSupportPreimagesBounded, FrameSupportTokensMiscBalanceStatus, FrameSystemAccountInfo, FrameSystemCall, FrameSystemError, FrameSystemEvent, FrameSystemEventRecord, FrameSystemExtensionsCheckGenesis, FrameSystemExtensionsCheckNonce, FrameSystemExtensionsCheckSpecVersion, FrameSystemExtensionsCheckTxVersion, FrameSystemExtensionsCheckWeight, FrameSystemLastRuntimeUpgradeInfo, FrameSystemLimitsBlockLength, FrameSystemLimitsBlockWeights, FrameSystemLimitsWeightsPerClass, FrameSystemPhase, PalletAssetAssetOwnershipRelation, PalletAssetCall, PalletAssetCheckpointCall, PalletAssetCheckpointError, PalletAssetError, PalletAssetSecurityToken, PalletAssetTickerRegistration, PalletAssetTickerRegistrationConfig, PalletBabeCall, PalletBabeError, PalletBalancesBalanceLock, PalletBalancesCall, PalletBalancesError, PalletBaseCall, PalletBaseError, PalletBridgeBridgeTx, PalletBridgeBridgeTxDetail, PalletBridgeBridgeTxStatus, PalletBridgeCall, PalletBridgeError, PalletBridgeHandledTxStatus, PalletBridgeRawEvent, PalletCommitteeCall, PalletCommitteeError, PalletCommitteeInstance1, PalletCommitteeInstance3, PalletCommitteeInstance4, PalletCommitteePolymeshVotes, PalletCommitteeRawEventInstance1, PalletCommitteeRawEventInstance3, PalletCommitteeRawEventInstance4, PalletCommitteeRawOriginInstance1, PalletCommitteeRawOriginInstance3, PalletCommitteeRawOriginInstance4, PalletComplianceManagerCall, PalletComplianceManagerError, PalletContractsCall, PalletContractsError, PalletContractsEvent, PalletContractsSchedule, PalletContractsScheduleHostFnWeights, PalletContractsScheduleInstructionWeights, PalletContractsScheduleLimits, PalletContractsStorageContractInfo, PalletContractsStorageDeletedContract, PalletContractsWasmDeterminism, PalletContractsWasmOwnerInfo, PalletContractsWasmPrefabWasmModule, PalletCorporateActionsBallotBallotMeta, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotVote, PalletCorporateActionsBallotCall, PalletCorporateActionsBallotError, PalletCorporateActionsBallotEvent, PalletCorporateActionsBallotMotion, PalletCorporateActionsCaCheckpoint, PalletCorporateActionsCaId, PalletCorporateActionsCaKind, PalletCorporateActionsCall, PalletCorporateActionsCorporateAction, PalletCorporateActionsDistribution, PalletCorporateActionsDistributionCall, PalletCorporateActionsDistributionError, PalletCorporateActionsDistributionEvent, PalletCorporateActionsError, PalletCorporateActionsEvent, PalletCorporateActionsInitiateCorporateActionArgs, PalletCorporateActionsRecordDate, PalletCorporateActionsRecordDateSpec, PalletCorporateActionsTargetIdentities, PalletCorporateActionsTargetTreatment, PalletExternalAgentsCall, PalletExternalAgentsError, PalletGrandpaCall, PalletGrandpaError, PalletGrandpaEvent, PalletGrandpaStoredPendingChange, PalletGrandpaStoredState, PalletGroupCall, PalletGroupError, PalletGroupInstance1, PalletGroupInstance2, PalletGroupInstance3, PalletGroupInstance4, PalletIdentityCall, PalletIdentityClaim1stKey, PalletIdentityClaim2ndKey, PalletIdentityError, PalletImOnlineBoundedOpaqueNetworkState, PalletImOnlineCall, PalletImOnlineError, PalletImOnlineEvent, PalletImOnlineHeartbeat, PalletImOnlineSr25519AppSr25519Public, PalletImOnlineSr25519AppSr25519Signature, PalletIndicesCall, PalletIndicesError, PalletIndicesEvent, PalletMultisigCall, PalletMultisigError, PalletNftCall, PalletNftError, PalletOffencesEvent, PalletPermissionsError, PalletPermissionsStoreCallMetadata, PalletPipsCall, PalletPipsCommittee, PalletPipsDepositInfo, PalletPipsError, PalletPipsPip, PalletPipsPipsMetadata, PalletPipsProposalData, PalletPipsProposalState, PalletPipsProposer, PalletPipsRawEvent, PalletPipsSnapshotMetadata, PalletPipsSnapshotResult, PalletPipsSnapshottedPip, PalletPipsVote, PalletPipsVotingResult, PalletPortfolioCall, PalletPortfolioError, PalletPreimageCall, PalletPreimageError, PalletPreimageEvent, PalletPreimageRequestStatus, PalletProtocolFeeCall, PalletProtocolFeeError, PalletProtocolFeeRawEvent, PalletRelayerCall, PalletRelayerError, PalletRelayerSubsidy, PalletSchedulerCall, PalletSchedulerError, PalletSchedulerEvent, PalletSchedulerScheduled, PalletSessionCall, PalletSessionError, PalletSessionEvent, PalletSettlementCall, PalletSettlementError, PalletStakingActiveEraInfo, PalletStakingCompactAssignments, PalletStakingElectionCompute, PalletStakingElectionResult, PalletStakingElectionSize, PalletStakingElectionStatus, PalletStakingEraRewardPoints, PalletStakingExposure, PalletStakingForcing, PalletStakingIndividualExposure, PalletStakingNominations, PalletStakingPalletCall, PalletStakingPalletError, PalletStakingPalletEvent, PalletStakingPermissionedIdentityPrefs, PalletStakingRewardDestination, PalletStakingSlashingSlashingSpans, PalletStakingSlashingSpanRecord, PalletStakingSlashingSwitch, PalletStakingStakingLedger, PalletStakingUnappliedSlash, PalletStakingUnlockChunk, PalletStakingValidatorPrefs, PalletStatisticsCall, PalletStatisticsError, PalletStoCall, PalletStoError, PalletStoFundraiser, PalletStoFundraiserStatus, PalletStoFundraiserTier, PalletStoPriceTier, PalletStoRawEvent, PalletSudoCall, PalletSudoError, PalletSudoRawEvent, PalletTestUtilsCall, PalletTestUtilsError, PalletTestUtilsRawEvent, PalletTimestampCall, PalletTransactionPaymentChargeTransactionPayment, PalletTransactionPaymentRawEvent, PalletTransactionPaymentReleases, PalletTreasuryCall, PalletTreasuryError, PalletTreasuryRawEvent, PalletUtilityCall, PalletUtilityError, PalletUtilityEvent, PalletUtilityUniqueCall, PolymeshCommonUtilitiesAssetRawEvent, PolymeshCommonUtilitiesBalancesAccountData, PolymeshCommonUtilitiesBalancesRawEvent, PolymeshCommonUtilitiesBalancesReasons, PolymeshCommonUtilitiesBaseEvent, PolymeshCommonUtilitiesCheckpointEvent, PolymeshCommonUtilitiesCheckpointNextCheckpoints, PolymeshCommonUtilitiesCheckpointScheduleCheckpoints, PolymeshCommonUtilitiesComplianceManagerEvent, PolymeshCommonUtilitiesExternalAgentsEvent, PolymeshCommonUtilitiesGroupInactiveMember, PolymeshCommonUtilitiesGroupRawEventInstance1, PolymeshCommonUtilitiesGroupRawEventInstance2, PolymeshCommonUtilitiesGroupRawEventInstance3, PolymeshCommonUtilitiesGroupRawEventInstance4, PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth, PolymeshCommonUtilitiesIdentityRawEvent, PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth, PolymeshCommonUtilitiesMaybeBlock, PolymeshCommonUtilitiesMultisigRawEvent, PolymeshCommonUtilitiesNftEvent, PolymeshCommonUtilitiesPortfolioEvent, PolymeshCommonUtilitiesProtocolFeeProtocolOp, PolymeshCommonUtilitiesRelayerRawEvent, PolymeshCommonUtilitiesSettlementRawEvent, PolymeshCommonUtilitiesStatisticsEvent, PolymeshContractsApi, PolymeshContractsApiCodeHash, PolymeshContractsCall, PolymeshContractsChainExtensionExtrinsicId, PolymeshContractsChainVersion, PolymeshContractsError, PolymeshContractsNextUpgrade, PolymeshContractsRawEvent, PolymeshExtensionsCheckWeight, PolymeshPrimitivesAgentAgentGroup, PolymeshPrimitivesAssetAssetType, PolymeshPrimitivesAssetIdentifier, PolymeshPrimitivesAssetMetadataAssetMetadataKey, PolymeshPrimitivesAssetMetadataAssetMetadataLockStatus, PolymeshPrimitivesAssetMetadataAssetMetadataSpec, PolymeshPrimitivesAssetMetadataAssetMetadataValueDetail, PolymeshPrimitivesAssetNonFungibleType, PolymeshPrimitivesAuthorization, PolymeshPrimitivesAuthorizationAuthorizationData, PolymeshPrimitivesBeneficiary, PolymeshPrimitivesCddId, PolymeshPrimitivesComplianceManagerAssetCompliance, PolymeshPrimitivesComplianceManagerComplianceRequirement, PolymeshPrimitivesCondition, PolymeshPrimitivesConditionConditionType, PolymeshPrimitivesConditionTargetIdentity, PolymeshPrimitivesConditionTrustedFor, PolymeshPrimitivesConditionTrustedIssuer, PolymeshPrimitivesDocument, PolymeshPrimitivesDocumentHash, PolymeshPrimitivesEventOnly, PolymeshPrimitivesIdentityClaim, PolymeshPrimitivesIdentityClaimClaim, PolymeshPrimitivesIdentityClaimClaimType, PolymeshPrimitivesIdentityClaimScope, PolymeshPrimitivesIdentityDidRecord, PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioKind, PolymeshPrimitivesJurisdictionCountryCode, PolymeshPrimitivesMemo, PolymeshPrimitivesMultisigProposalDetails, PolymeshPrimitivesMultisigProposalStatus, PolymeshPrimitivesNftNfTs, PolymeshPrimitivesNftNftCollection, PolymeshPrimitivesNftNftCollectionKeys, PolymeshPrimitivesNftNftMetadataAttribute, PolymeshPrimitivesPortfolioFund, PolymeshPrimitivesPortfolioFundDescription, PolymeshPrimitivesPortfolioPortfolioUpdateReason, PolymeshPrimitivesPosRatio, PolymeshPrimitivesSecondaryKey, PolymeshPrimitivesSecondaryKeyKeyRecord, PolymeshPrimitivesSecondaryKeyPalletPermissions, PolymeshPrimitivesSecondaryKeyPermissions, PolymeshPrimitivesSecondaryKeySignatory, PolymeshPrimitivesSettlementAffirmationCount, PolymeshPrimitivesSettlementAffirmationStatus, PolymeshPrimitivesSettlementAssetCount, PolymeshPrimitivesSettlementInstruction, PolymeshPrimitivesSettlementInstructionStatus, PolymeshPrimitivesSettlementLeg, PolymeshPrimitivesSettlementLegStatus, PolymeshPrimitivesSettlementMediatorAffirmationStatus, PolymeshPrimitivesSettlementReceiptDetails, PolymeshPrimitivesSettlementReceiptMetadata, PolymeshPrimitivesSettlementSettlementType, PolymeshPrimitivesSettlementVenue, PolymeshPrimitivesSettlementVenueType, PolymeshPrimitivesStatisticsAssetScope, PolymeshPrimitivesStatisticsStat1stKey, PolymeshPrimitivesStatisticsStat2ndKey, PolymeshPrimitivesStatisticsStatClaim, PolymeshPrimitivesStatisticsStatOpType, PolymeshPrimitivesStatisticsStatType, PolymeshPrimitivesStatisticsStatUpdate, PolymeshPrimitivesSubsetSubsetRestrictionDispatchableName, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions, PolymeshPrimitivesSubsetSubsetRestrictionPortfolioId, PolymeshPrimitivesSubsetSubsetRestrictionTicker, PolymeshPrimitivesTicker, PolymeshPrimitivesTransferComplianceAssetTransferCompliance, PolymeshPrimitivesTransferComplianceTransferCondition, PolymeshPrimitivesTransferComplianceTransferConditionExemptKey, PolymeshRuntimeDevelopRuntime, PolymeshRuntimeDevelopRuntimeOriginCaller, PolymeshRuntimeDevelopRuntimeSessionKeys, SpArithmeticArithmeticError, SpAuthorityDiscoveryAppPublic, SpConsensusBabeAllowedSlots, SpConsensusBabeAppPublic, SpConsensusBabeBabeEpochConfiguration, SpConsensusBabeDigestsNextConfigDescriptor, SpConsensusBabeDigestsPreDigest, SpConsensusBabeDigestsPrimaryPreDigest, SpConsensusBabeDigestsSecondaryPlainPreDigest, SpConsensusBabeDigestsSecondaryVRFPreDigest, SpConsensusGrandpaAppPublic, SpConsensusGrandpaAppSignature, SpConsensusGrandpaEquivocation, SpConsensusGrandpaEquivocationProof, SpConsensusSlotsEquivocationProof, SpCoreCryptoKeyTypeId, SpCoreEcdsaSignature, SpCoreEd25519Public, SpCoreEd25519Signature, SpCoreOffchainOpaqueNetworkState, SpCoreSr25519Public, SpCoreSr25519Signature, SpCoreVoid, SpNposElectionsElectionScore, SpRuntimeBlakeTwo256, SpRuntimeDigest, SpRuntimeDigestDigestItem, SpRuntimeDispatchError, SpRuntimeHeader, SpRuntimeModuleError, SpRuntimeMultiSignature, SpRuntimeTokenError, SpRuntimeTransactionalError, SpSessionMembershipProof, SpStakingOffenceOffenceDetails, SpVersionRuntimeVersion, SpWeightsRuntimeDbWeight, SpWeightsWeightToFeeCoefficient, SpWeightsWeightV2Weight } from '@polkadot/types/lookup'; declare module '@polkadot/types/types/registry' { export interface InterfaceTypes { @@ -165,10 +165,6 @@ declare module '@polkadot/types/types/registry' { PalletRelayerCall: PalletRelayerCall; PalletRelayerError: PalletRelayerError; PalletRelayerSubsidy: PalletRelayerSubsidy; - PalletRewardsCall: PalletRewardsCall; - PalletRewardsError: PalletRewardsError; - PalletRewardsItnRewardStatus: PalletRewardsItnRewardStatus; - PalletRewardsRawEvent: PalletRewardsRawEvent; PalletSchedulerCall: PalletSchedulerCall; PalletSchedulerError: PalletSchedulerError; PalletSchedulerEvent: PalletSchedulerEvent; @@ -179,21 +175,20 @@ declare module '@polkadot/types/types/registry' { PalletSettlementCall: PalletSettlementCall; PalletSettlementError: PalletSettlementError; PalletStakingActiveEraInfo: PalletStakingActiveEraInfo; - PalletStakingCall: PalletStakingCall; PalletStakingCompactAssignments: PalletStakingCompactAssignments; PalletStakingElectionCompute: PalletStakingElectionCompute; PalletStakingElectionResult: PalletStakingElectionResult; PalletStakingElectionSize: PalletStakingElectionSize; PalletStakingElectionStatus: PalletStakingElectionStatus; PalletStakingEraRewardPoints: PalletStakingEraRewardPoints; - PalletStakingError: PalletStakingError; PalletStakingExposure: PalletStakingExposure; PalletStakingForcing: PalletStakingForcing; PalletStakingIndividualExposure: PalletStakingIndividualExposure; PalletStakingNominations: PalletStakingNominations; + PalletStakingPalletCall: PalletStakingPalletCall; + PalletStakingPalletError: PalletStakingPalletError; + PalletStakingPalletEvent: PalletStakingPalletEvent; PalletStakingPermissionedIdentityPrefs: PalletStakingPermissionedIdentityPrefs; - PalletStakingRawEvent: PalletStakingRawEvent; - PalletStakingReleases: PalletStakingReleases; PalletStakingRewardDestination: PalletStakingRewardDestination; PalletStakingSlashingSlashingSpans: PalletStakingSlashingSlashingSpans; PalletStakingSlashingSpanRecord: PalletStakingSlashingSpanRecord; @@ -254,10 +249,14 @@ declare module '@polkadot/types/types/registry' { PolymeshCommonUtilitiesRelayerRawEvent: PolymeshCommonUtilitiesRelayerRawEvent; PolymeshCommonUtilitiesSettlementRawEvent: PolymeshCommonUtilitiesSettlementRawEvent; PolymeshCommonUtilitiesStatisticsEvent: PolymeshCommonUtilitiesStatisticsEvent; + PolymeshContractsApi: PolymeshContractsApi; + PolymeshContractsApiCodeHash: PolymeshContractsApiCodeHash; PolymeshContractsCall: PolymeshContractsCall; PolymeshContractsChainExtensionExtrinsicId: PolymeshContractsChainExtensionExtrinsicId; + PolymeshContractsChainVersion: PolymeshContractsChainVersion; PolymeshContractsError: PolymeshContractsError; - PolymeshContractsEvent: PolymeshContractsEvent; + PolymeshContractsNextUpgrade: PolymeshContractsNextUpgrade; + PolymeshContractsRawEvent: PolymeshContractsRawEvent; PolymeshExtensionsCheckWeight: PolymeshExtensionsCheckWeight; PolymeshPrimitivesAgentAgentGroup: PolymeshPrimitivesAgentAgentGroup; PolymeshPrimitivesAssetAssetType: PolymeshPrimitivesAssetAssetType; @@ -306,11 +305,14 @@ declare module '@polkadot/types/types/registry' { PolymeshPrimitivesSecondaryKeyPalletPermissions: PolymeshPrimitivesSecondaryKeyPalletPermissions; PolymeshPrimitivesSecondaryKeyPermissions: PolymeshPrimitivesSecondaryKeyPermissions; PolymeshPrimitivesSecondaryKeySignatory: PolymeshPrimitivesSecondaryKeySignatory; + PolymeshPrimitivesSettlementAffirmationCount: PolymeshPrimitivesSettlementAffirmationCount; PolymeshPrimitivesSettlementAffirmationStatus: PolymeshPrimitivesSettlementAffirmationStatus; + PolymeshPrimitivesSettlementAssetCount: PolymeshPrimitivesSettlementAssetCount; PolymeshPrimitivesSettlementInstruction: PolymeshPrimitivesSettlementInstruction; PolymeshPrimitivesSettlementInstructionStatus: PolymeshPrimitivesSettlementInstructionStatus; PolymeshPrimitivesSettlementLeg: PolymeshPrimitivesSettlementLeg; PolymeshPrimitivesSettlementLegStatus: PolymeshPrimitivesSettlementLegStatus; + PolymeshPrimitivesSettlementMediatorAffirmationStatus: PolymeshPrimitivesSettlementMediatorAffirmationStatus; PolymeshPrimitivesSettlementReceiptDetails: PolymeshPrimitivesSettlementReceiptDetails; PolymeshPrimitivesSettlementReceiptMetadata: PolymeshPrimitivesSettlementReceiptMetadata; PolymeshPrimitivesSettlementSettlementType: PolymeshPrimitivesSettlementSettlementType; diff --git a/scripts/cli/src/interfaces/types-lookup.ts b/scripts/cli/src/interfaces/types-lookup.ts index beb7d28004..0112360793 100644 --- a/scripts/cli/src/interfaces/types-lookup.ts +++ b/scripts/cli/src/interfaces/types-lookup.ts @@ -960,8 +960,8 @@ declare module '@polkadot/types/lookup' { readonly type: 'Success' | 'Error'; } - /** @name PalletStakingRawEvent (101) */ - export interface PalletStakingRawEvent extends Enum { + /** @name PalletStakingPalletEvent (101) */ + export interface PalletStakingPalletEvent extends Enum { readonly isEraPayout: boolean; readonly asEraPayout: ITuple<[u32, u128, u128]>; readonly isReward: boolean; @@ -1149,7 +1149,19 @@ declare module '@polkadot/types/lookup' { readonly asMetadataValueDeleted: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesAssetMetadataAssetMetadataKey]>; readonly isAssetBalanceUpdated: boolean; readonly asAssetBalanceUpdated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, u128, Option, Option, PolymeshPrimitivesPortfolioPortfolioUpdateReason]>; - readonly type: 'AssetCreated' | 'IdentifiersUpdated' | 'DivisibilityChanged' | 'TransferWithData' | 'IsIssuable' | 'TickerRegistered' | 'TickerTransferred' | 'AssetOwnershipTransferred' | 'AssetFrozen' | 'AssetUnfrozen' | 'AssetRenamed' | 'FundingRoundSet' | 'DocumentAdded' | 'DocumentRemoved' | 'ExtensionRemoved' | 'ControllerTransfer' | 'CustomAssetTypeExists' | 'CustomAssetTypeRegistered' | 'SetAssetMetadataValue' | 'SetAssetMetadataValueDetails' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType' | 'AssetTypeChanged' | 'LocalMetadataKeyDeleted' | 'MetadataValueDeleted' | 'AssetBalanceUpdated'; + readonly isAssetAffirmationExemption: boolean; + readonly asAssetAffirmationExemption: PolymeshPrimitivesTicker; + readonly isRemoveAssetAffirmationExemption: boolean; + readonly asRemoveAssetAffirmationExemption: PolymeshPrimitivesTicker; + readonly isPreApprovedAsset: boolean; + readonly asPreApprovedAsset: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isRemovePreApprovedAsset: boolean; + readonly asRemovePreApprovedAsset: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker]>; + readonly isAssetMediatorsAdded: boolean; + readonly asAssetMediatorsAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, BTreeSet]>; + readonly isAssetMediatorsRemoved: boolean; + readonly asAssetMediatorsRemoved: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, BTreeSet]>; + readonly type: 'AssetCreated' | 'IdentifiersUpdated' | 'DivisibilityChanged' | 'TransferWithData' | 'IsIssuable' | 'TickerRegistered' | 'TickerTransferred' | 'AssetOwnershipTransferred' | 'AssetFrozen' | 'AssetUnfrozen' | 'AssetRenamed' | 'FundingRoundSet' | 'DocumentAdded' | 'DocumentRemoved' | 'ExtensionRemoved' | 'ControllerTransfer' | 'CustomAssetTypeExists' | 'CustomAssetTypeRegistered' | 'SetAssetMetadataValue' | 'SetAssetMetadataValueDetails' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType' | 'AssetTypeChanged' | 'LocalMetadataKeyDeleted' | 'MetadataValueDeleted' | 'AssetBalanceUpdated' | 'AssetAffirmationExemption' | 'RemoveAssetAffirmationExemption' | 'PreApprovedAsset' | 'RemovePreApprovedAsset' | 'AssetMediatorsAdded' | 'AssetMediatorsRemoved'; } /** @name PolymeshPrimitivesAssetAssetType (124) */ @@ -1270,10 +1282,11 @@ declare module '@polkadot/types/lookup' { readonly instructionId: Option; readonly instructionMemo: Option; } & Struct; - readonly type: 'Issued' | 'Redeemed' | 'Transferred'; + readonly isControllerTransfer: boolean; + readonly type: 'Issued' | 'Redeemed' | 'Transferred' | 'ControllerTransfer'; } - /** @name PalletCorporateActionsDistributionEvent (164) */ + /** @name PalletCorporateActionsDistributionEvent (165) */ export interface PalletCorporateActionsDistributionEvent extends Enum { readonly isCreated: boolean; readonly asCreated: ITuple<[PolymeshPrimitivesEventOnly, PalletCorporateActionsCaId, PalletCorporateActionsDistribution]>; @@ -1286,16 +1299,16 @@ declare module '@polkadot/types/lookup' { readonly type: 'Created' | 'BenefitClaimed' | 'Reclaimed' | 'Removed'; } - /** @name PolymeshPrimitivesEventOnly (165) */ + /** @name PolymeshPrimitivesEventOnly (166) */ export interface PolymeshPrimitivesEventOnly extends PolymeshPrimitivesIdentityId {} - /** @name PalletCorporateActionsCaId (166) */ + /** @name PalletCorporateActionsCaId (167) */ export interface PalletCorporateActionsCaId extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly localId: u32; } - /** @name PalletCorporateActionsDistribution (168) */ + /** @name PalletCorporateActionsDistribution (169) */ export interface PalletCorporateActionsDistribution extends Struct { readonly from: PolymeshPrimitivesIdentityIdPortfolioId; readonly currency: PolymeshPrimitivesTicker; @@ -1307,7 +1320,7 @@ declare module '@polkadot/types/lookup' { readonly expiresAt: Option; } - /** @name PolymeshCommonUtilitiesCheckpointEvent (170) */ + /** @name PolymeshCommonUtilitiesCheckpointEvent (171) */ export interface PolymeshCommonUtilitiesCheckpointEvent extends Enum { readonly isCheckpointCreated: boolean; readonly asCheckpointCreated: ITuple<[Option, PolymeshPrimitivesTicker, u64, u128, u64]>; @@ -1320,12 +1333,12 @@ declare module '@polkadot/types/lookup' { readonly type: 'CheckpointCreated' | 'MaximumSchedulesComplexityChanged' | 'ScheduleCreated' | 'ScheduleRemoved'; } - /** @name PolymeshCommonUtilitiesCheckpointScheduleCheckpoints (173) */ + /** @name PolymeshCommonUtilitiesCheckpointScheduleCheckpoints (174) */ export interface PolymeshCommonUtilitiesCheckpointScheduleCheckpoints extends Struct { readonly pending: BTreeSet; } - /** @name PolymeshCommonUtilitiesComplianceManagerEvent (176) */ + /** @name PolymeshCommonUtilitiesComplianceManagerEvent (177) */ export interface PolymeshCommonUtilitiesComplianceManagerEvent extends Enum { readonly isComplianceRequirementCreated: boolean; readonly asComplianceRequirementCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, PolymeshPrimitivesComplianceManagerComplianceRequirement]>; @@ -1348,20 +1361,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'ComplianceRequirementCreated' | 'ComplianceRequirementRemoved' | 'AssetComplianceReplaced' | 'AssetComplianceReset' | 'AssetComplianceResumed' | 'AssetCompliancePaused' | 'ComplianceRequirementChanged' | 'TrustedDefaultClaimIssuerAdded' | 'TrustedDefaultClaimIssuerRemoved'; } - /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (177) */ + /** @name PolymeshPrimitivesComplianceManagerComplianceRequirement (178) */ export interface PolymeshPrimitivesComplianceManagerComplianceRequirement extends Struct { readonly senderConditions: Vec; readonly receiverConditions: Vec; readonly id: u32; } - /** @name PolymeshPrimitivesCondition (179) */ + /** @name PolymeshPrimitivesCondition (180) */ export interface PolymeshPrimitivesCondition extends Struct { readonly conditionType: PolymeshPrimitivesConditionConditionType; readonly issuers: Vec; } - /** @name PolymeshPrimitivesConditionConditionType (180) */ + /** @name PolymeshPrimitivesConditionConditionType (181) */ export interface PolymeshPrimitivesConditionConditionType extends Enum { readonly isIsPresent: boolean; readonly asIsPresent: PolymeshPrimitivesIdentityClaimClaim; @@ -1376,7 +1389,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'IsPresent' | 'IsAbsent' | 'IsAnyOf' | 'IsNoneOf' | 'IsIdentity'; } - /** @name PolymeshPrimitivesConditionTargetIdentity (182) */ + /** @name PolymeshPrimitivesConditionTargetIdentity (183) */ export interface PolymeshPrimitivesConditionTargetIdentity extends Enum { readonly isExternalAgent: boolean; readonly isSpecific: boolean; @@ -1384,13 +1397,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ExternalAgent' | 'Specific'; } - /** @name PolymeshPrimitivesConditionTrustedIssuer (184) */ + /** @name PolymeshPrimitivesConditionTrustedIssuer (185) */ export interface PolymeshPrimitivesConditionTrustedIssuer extends Struct { readonly issuer: PolymeshPrimitivesIdentityId; readonly trustedFor: PolymeshPrimitivesConditionTrustedFor; } - /** @name PolymeshPrimitivesConditionTrustedFor (185) */ + /** @name PolymeshPrimitivesConditionTrustedFor (186) */ export interface PolymeshPrimitivesConditionTrustedFor extends Enum { readonly isAny: boolean; readonly isSpecific: boolean; @@ -1398,7 +1411,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Any' | 'Specific'; } - /** @name PolymeshPrimitivesIdentityClaimClaimType (187) */ + /** @name PolymeshPrimitivesIdentityClaimClaimType (188) */ export interface PolymeshPrimitivesIdentityClaimClaimType extends Enum { readonly isAccredited: boolean; readonly isAffiliate: boolean; @@ -1414,7 +1427,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'BuyLockup' | 'SellLockup' | 'CustomerDueDiligence' | 'KnowYourCustomer' | 'Jurisdiction' | 'Exempted' | 'Blocked' | 'Custom'; } - /** @name PalletCorporateActionsEvent (189) */ + /** @name PalletCorporateActionsEvent (190) */ export interface PalletCorporateActionsEvent extends Enum { readonly isMaxDetailsLengthChanged: boolean; readonly asMaxDetailsLengthChanged: ITuple<[PolymeshPrimitivesIdentityId, u32]>; @@ -1435,20 +1448,20 @@ declare module '@polkadot/types/lookup' { readonly type: 'MaxDetailsLengthChanged' | 'DefaultTargetIdentitiesChanged' | 'DefaultWithholdingTaxChanged' | 'DidWithholdingTaxChanged' | 'CaInitiated' | 'CaLinkedToDoc' | 'CaRemoved' | 'RecordDateChanged'; } - /** @name PalletCorporateActionsTargetIdentities (190) */ + /** @name PalletCorporateActionsTargetIdentities (191) */ export interface PalletCorporateActionsTargetIdentities extends Struct { readonly identities: Vec; readonly treatment: PalletCorporateActionsTargetTreatment; } - /** @name PalletCorporateActionsTargetTreatment (191) */ + /** @name PalletCorporateActionsTargetTreatment (192) */ export interface PalletCorporateActionsTargetTreatment extends Enum { readonly isInclude: boolean; readonly isExclude: boolean; readonly type: 'Include' | 'Exclude'; } - /** @name PalletCorporateActionsCorporateAction (193) */ + /** @name PalletCorporateActionsCorporateAction (194) */ export interface PalletCorporateActionsCorporateAction extends Struct { readonly kind: PalletCorporateActionsCaKind; readonly declDate: u64; @@ -1458,7 +1471,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Vec>; } - /** @name PalletCorporateActionsCaKind (194) */ + /** @name PalletCorporateActionsCaKind (195) */ export interface PalletCorporateActionsCaKind extends Enum { readonly isPredictableBenefit: boolean; readonly isUnpredictableBenefit: boolean; @@ -1468,13 +1481,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'PredictableBenefit' | 'UnpredictableBenefit' | 'IssuerNotice' | 'Reorganization' | 'Other'; } - /** @name PalletCorporateActionsRecordDate (196) */ + /** @name PalletCorporateActionsRecordDate (197) */ export interface PalletCorporateActionsRecordDate extends Struct { readonly date: u64; readonly checkpoint: PalletCorporateActionsCaCheckpoint; } - /** @name PalletCorporateActionsCaCheckpoint (197) */ + /** @name PalletCorporateActionsCaCheckpoint (198) */ export interface PalletCorporateActionsCaCheckpoint extends Enum { readonly isScheduled: boolean; readonly asScheduled: ITuple<[u64, u64]>; @@ -1483,7 +1496,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'Existing'; } - /** @name PalletCorporateActionsBallotEvent (202) */ + /** @name PalletCorporateActionsBallotEvent (203) */ export interface PalletCorporateActionsBallotEvent extends Enum { readonly isCreated: boolean; readonly asCreated: ITuple<[PolymeshPrimitivesIdentityId, PalletCorporateActionsCaId, PalletCorporateActionsBallotBallotTimeRange, PalletCorporateActionsBallotBallotMeta, bool]>; @@ -1500,32 +1513,32 @@ declare module '@polkadot/types/lookup' { readonly type: 'Created' | 'VoteCast' | 'RangeChanged' | 'MetaChanged' | 'RcvChanged' | 'Removed'; } - /** @name PalletCorporateActionsBallotBallotTimeRange (203) */ + /** @name PalletCorporateActionsBallotBallotTimeRange (204) */ export interface PalletCorporateActionsBallotBallotTimeRange extends Struct { readonly start: u64; readonly end: u64; } - /** @name PalletCorporateActionsBallotBallotMeta (204) */ + /** @name PalletCorporateActionsBallotBallotMeta (205) */ export interface PalletCorporateActionsBallotBallotMeta extends Struct { readonly title: Bytes; readonly motions: Vec; } - /** @name PalletCorporateActionsBallotMotion (207) */ + /** @name PalletCorporateActionsBallotMotion (208) */ export interface PalletCorporateActionsBallotMotion extends Struct { readonly title: Bytes; readonly infoLink: Bytes; readonly choices: Vec; } - /** @name PalletCorporateActionsBallotBallotVote (213) */ + /** @name PalletCorporateActionsBallotBallotVote (214) */ export interface PalletCorporateActionsBallotBallotVote extends Struct { readonly power: u128; readonly fallback: Option; } - /** @name PalletPipsRawEvent (216) */ + /** @name PalletPipsRawEvent (217) */ export interface PalletPipsRawEvent extends Enum { readonly isHistoricalPipsPruned: boolean; readonly asHistoricalPipsPruned: ITuple<[PolymeshPrimitivesIdentityId, bool, bool]>; @@ -1570,7 +1583,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'HistoricalPipsPruned' | 'ProposalCreated' | 'ProposalStateUpdated' | 'Voted' | 'PipClosed' | 'ExecutionScheduled' | 'DefaultEnactmentPeriodChanged' | 'MinimumProposalDepositChanged' | 'PendingPipExpiryChanged' | 'MaxPipSkipCountChanged' | 'ActivePipLimitChanged' | 'ProposalRefund' | 'SnapshotCleared' | 'SnapshotTaken' | 'PipSkipped' | 'SnapshotResultsEnacted' | 'ExecutionSchedulingFailed' | 'ExpiryScheduled' | 'ExpirySchedulingFailed' | 'ExecutionCancellingFailed'; } - /** @name PalletPipsProposer (217) */ + /** @name PalletPipsProposer (218) */ export interface PalletPipsProposer extends Enum { readonly isCommunity: boolean; readonly asCommunity: AccountId32; @@ -1579,14 +1592,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Community' | 'Committee'; } - /** @name PalletPipsCommittee (218) */ + /** @name PalletPipsCommittee (219) */ export interface PalletPipsCommittee extends Enum { readonly isTechnical: boolean; readonly isUpgrade: boolean; readonly type: 'Technical' | 'Upgrade'; } - /** @name PalletPipsProposalData (222) */ + /** @name PalletPipsProposalData (223) */ export interface PalletPipsProposalData extends Enum { readonly isHash: boolean; readonly asHash: H256; @@ -1595,7 +1608,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Hash' | 'Proposal'; } - /** @name PalletPipsProposalState (223) */ + /** @name PalletPipsProposalState (224) */ export interface PalletPipsProposalState extends Enum { readonly isPending: boolean; readonly isRejected: boolean; @@ -1606,13 +1619,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Pending' | 'Rejected' | 'Scheduled' | 'Failed' | 'Executed' | 'Expired'; } - /** @name PalletPipsSnapshottedPip (226) */ + /** @name PalletPipsSnapshottedPip (227) */ export interface PalletPipsSnapshottedPip extends Struct { readonly id: u32; readonly weight: ITuple<[bool, u128]>; } - /** @name PolymeshCommonUtilitiesPortfolioEvent (232) */ + /** @name PolymeshCommonUtilitiesPortfolioEvent (233) */ export interface PolymeshCommonUtilitiesPortfolioEvent extends Enum { readonly isPortfolioCreated: boolean; readonly asPortfolioCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes]>; @@ -1626,10 +1639,14 @@ declare module '@polkadot/types/lookup' { readonly asPortfolioCustodianChanged: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityId]>; readonly isFundsMovedBetweenPortfolios: boolean; readonly asFundsMovedBetweenPortfolios: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesPortfolioFundDescription, Option]>; - readonly type: 'PortfolioCreated' | 'PortfolioDeleted' | 'PortfolioRenamed' | 'UserPortfolios' | 'PortfolioCustodianChanged' | 'FundsMovedBetweenPortfolios'; + readonly isPreApprovedPortfolio: boolean; + readonly asPreApprovedPortfolio: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker]>; + readonly isRevokePreApprovedPortfolio: boolean; + readonly asRevokePreApprovedPortfolio: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, PolymeshPrimitivesTicker]>; + readonly type: 'PortfolioCreated' | 'PortfolioDeleted' | 'PortfolioRenamed' | 'UserPortfolios' | 'PortfolioCustodianChanged' | 'FundsMovedBetweenPortfolios' | 'PreApprovedPortfolio' | 'RevokePreApprovedPortfolio'; } - /** @name PolymeshPrimitivesPortfolioFundDescription (236) */ + /** @name PolymeshPrimitivesPortfolioFundDescription (237) */ export interface PolymeshPrimitivesPortfolioFundDescription extends Enum { readonly isFungible: boolean; readonly asFungible: { @@ -1641,13 +1658,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Fungible' | 'NonFungible'; } - /** @name PolymeshPrimitivesNftNfTs (237) */ + /** @name PolymeshPrimitivesNftNfTs (238) */ export interface PolymeshPrimitivesNftNfTs extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly ids: Vec; } - /** @name PalletProtocolFeeRawEvent (240) */ + /** @name PalletProtocolFeeRawEvent (241) */ export interface PalletProtocolFeeRawEvent extends Enum { readonly isFeeSet: boolean; readonly asFeeSet: ITuple<[PolymeshPrimitivesIdentityId, u128]>; @@ -1658,10 +1675,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'FeeSet' | 'CoefficientSet' | 'FeeCharged'; } - /** @name PolymeshPrimitivesPosRatio (241) */ + /** @name PolymeshPrimitivesPosRatio (242) */ export interface PolymeshPrimitivesPosRatio extends ITuple<[u32, u32]> {} - /** @name PalletSchedulerEvent (242) */ + /** @name PalletSchedulerEvent (243) */ export interface PalletSchedulerEvent extends Enum { readonly isScheduled: boolean; readonly asScheduled: { @@ -1697,7 +1714,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'Canceled' | 'Dispatched' | 'CallUnavailable' | 'PeriodicFailed' | 'PermanentlyOverweight'; } - /** @name PolymeshCommonUtilitiesSettlementRawEvent (245) */ + /** @name PolymeshCommonUtilitiesSettlementRawEvent (246) */ export interface PolymeshCommonUtilitiesSettlementRawEvent extends Enum { readonly isVenueCreated: boolean; readonly asVenueCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes, PolymeshPrimitivesSettlementVenueType]>; @@ -1739,10 +1756,18 @@ declare module '@polkadot/types/lookup' { readonly asInstructionCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, u64, PolymeshPrimitivesSettlementSettlementType, Option, Option, Vec, Option]>; readonly isFailedToExecuteInstruction: boolean; readonly asFailedToExecuteInstruction: ITuple<[u64, SpRuntimeDispatchError]>; - readonly type: 'VenueCreated' | 'VenueDetailsUpdated' | 'VenueTypeUpdated' | 'InstructionAffirmed' | 'AffirmationWithdrawn' | 'InstructionRejected' | 'ReceiptClaimed' | 'VenueFiltering' | 'VenuesAllowed' | 'VenuesBlocked' | 'LegFailedExecution' | 'InstructionFailed' | 'InstructionExecuted' | 'VenueUnauthorized' | 'SchedulingFailed' | 'InstructionRescheduled' | 'VenueSignersUpdated' | 'SettlementManuallyExecuted' | 'InstructionCreated' | 'FailedToExecuteInstruction'; - } - - /** @name PolymeshPrimitivesSettlementVenueType (248) */ + readonly isInstructionAutomaticallyAffirmed: boolean; + readonly asInstructionAutomaticallyAffirmed: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityIdPortfolioId, u64]>; + readonly isMediatorAffirmationReceived: boolean; + readonly asMediatorAffirmationReceived: ITuple<[PolymeshPrimitivesIdentityId, u64, Option]>; + readonly isMediatorAffirmationWithdrawn: boolean; + readonly asMediatorAffirmationWithdrawn: ITuple<[PolymeshPrimitivesIdentityId, u64]>; + readonly isInstructionMediators: boolean; + readonly asInstructionMediators: ITuple<[u64, BTreeSet]>; + readonly type: 'VenueCreated' | 'VenueDetailsUpdated' | 'VenueTypeUpdated' | 'InstructionAffirmed' | 'AffirmationWithdrawn' | 'InstructionRejected' | 'ReceiptClaimed' | 'VenueFiltering' | 'VenuesAllowed' | 'VenuesBlocked' | 'LegFailedExecution' | 'InstructionFailed' | 'InstructionExecuted' | 'VenueUnauthorized' | 'SchedulingFailed' | 'InstructionRescheduled' | 'VenueSignersUpdated' | 'SettlementManuallyExecuted' | 'InstructionCreated' | 'FailedToExecuteInstruction' | 'InstructionAutomaticallyAffirmed' | 'MediatorAffirmationReceived' | 'MediatorAffirmationWithdrawn' | 'InstructionMediators'; + } + + /** @name PolymeshPrimitivesSettlementVenueType (249) */ export interface PolymeshPrimitivesSettlementVenueType extends Enum { readonly isOther: boolean; readonly isDistribution: boolean; @@ -1751,10 +1776,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'Other' | 'Distribution' | 'Sto' | 'Exchange'; } - /** @name PolymeshPrimitivesSettlementReceiptMetadata (251) */ + /** @name PolymeshPrimitivesSettlementReceiptMetadata (252) */ export interface PolymeshPrimitivesSettlementReceiptMetadata extends U8aFixed {} - /** @name PolymeshPrimitivesSettlementSettlementType (253) */ + /** @name PolymeshPrimitivesSettlementSettlementType (254) */ export interface PolymeshPrimitivesSettlementSettlementType extends Enum { readonly isSettleOnAffirmation: boolean; readonly isSettleOnBlock: boolean; @@ -1764,7 +1789,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SettleOnAffirmation' | 'SettleOnBlock' | 'SettleManual'; } - /** @name PolymeshPrimitivesSettlementLeg (255) */ + /** @name PolymeshPrimitivesSettlementLeg (256) */ export interface PolymeshPrimitivesSettlementLeg extends Enum { readonly isFungible: boolean; readonly asFungible: { @@ -1789,7 +1814,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Fungible' | 'NonFungible' | 'OffChain'; } - /** @name PolymeshCommonUtilitiesStatisticsEvent (256) */ + /** @name PolymeshCommonUtilitiesStatisticsEvent (257) */ export interface PolymeshCommonUtilitiesStatisticsEvent extends Enum { readonly isStatTypesAdded: boolean; readonly asStatTypesAdded: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesStatisticsAssetScope, Vec]>; @@ -1806,33 +1831,33 @@ declare module '@polkadot/types/lookup' { readonly type: 'StatTypesAdded' | 'StatTypesRemoved' | 'AssetStatsUpdated' | 'SetAssetTransferCompliance' | 'TransferConditionExemptionsAdded' | 'TransferConditionExemptionsRemoved'; } - /** @name PolymeshPrimitivesStatisticsAssetScope (257) */ + /** @name PolymeshPrimitivesStatisticsAssetScope (258) */ export interface PolymeshPrimitivesStatisticsAssetScope extends Enum { readonly isTicker: boolean; readonly asTicker: PolymeshPrimitivesTicker; readonly type: 'Ticker'; } - /** @name PolymeshPrimitivesStatisticsStatType (259) */ + /** @name PolymeshPrimitivesStatisticsStatType (260) */ export interface PolymeshPrimitivesStatisticsStatType extends Struct { readonly op: PolymeshPrimitivesStatisticsStatOpType; readonly claimIssuer: Option>; } - /** @name PolymeshPrimitivesStatisticsStatOpType (260) */ + /** @name PolymeshPrimitivesStatisticsStatOpType (261) */ export interface PolymeshPrimitivesStatisticsStatOpType extends Enum { readonly isCount: boolean; readonly isBalance: boolean; readonly type: 'Count' | 'Balance'; } - /** @name PolymeshPrimitivesStatisticsStatUpdate (264) */ + /** @name PolymeshPrimitivesStatisticsStatUpdate (265) */ export interface PolymeshPrimitivesStatisticsStatUpdate extends Struct { readonly key2: PolymeshPrimitivesStatisticsStat2ndKey; readonly value: Option; } - /** @name PolymeshPrimitivesStatisticsStat2ndKey (265) */ + /** @name PolymeshPrimitivesStatisticsStat2ndKey (266) */ export interface PolymeshPrimitivesStatisticsStat2ndKey extends Enum { readonly isNoClaimStat: boolean; readonly isClaim: boolean; @@ -1840,7 +1865,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoClaimStat' | 'Claim'; } - /** @name PolymeshPrimitivesStatisticsStatClaim (266) */ + /** @name PolymeshPrimitivesStatisticsStatClaim (267) */ export interface PolymeshPrimitivesStatisticsStatClaim extends Enum { readonly isAccredited: boolean; readonly asAccredited: bool; @@ -1851,7 +1876,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Accredited' | 'Affiliate' | 'Jurisdiction'; } - /** @name PolymeshPrimitivesTransferComplianceTransferCondition (270) */ + /** @name PolymeshPrimitivesTransferComplianceTransferCondition (271) */ export interface PolymeshPrimitivesTransferComplianceTransferCondition extends Enum { readonly isMaxInvestorCount: boolean; readonly asMaxInvestorCount: u64; @@ -1864,14 +1889,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'MaxInvestorCount' | 'MaxInvestorOwnership' | 'ClaimCount' | 'ClaimOwnership'; } - /** @name PolymeshPrimitivesTransferComplianceTransferConditionExemptKey (271) */ + /** @name PolymeshPrimitivesTransferComplianceTransferConditionExemptKey (272) */ export interface PolymeshPrimitivesTransferComplianceTransferConditionExemptKey extends Struct { readonly asset: PolymeshPrimitivesStatisticsAssetScope; readonly op: PolymeshPrimitivesStatisticsStatOpType; readonly claimType: Option; } - /** @name PalletStoRawEvent (273) */ + /** @name PalletStoRawEvent (274) */ export interface PalletStoRawEvent extends Enum { readonly isFundraiserCreated: boolean; readonly asFundraiserCreated: ITuple<[PolymeshPrimitivesIdentityId, u64, Bytes, PalletStoFundraiser]>; @@ -1888,7 +1913,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'FundraiserCreated' | 'Invested' | 'FundraiserFrozen' | 'FundraiserUnfrozen' | 'FundraiserWindowModified' | 'FundraiserClosed'; } - /** @name PalletStoFundraiser (276) */ + /** @name PalletStoFundraiser (277) */ export interface PalletStoFundraiser extends Struct { readonly creator: PolymeshPrimitivesIdentityId; readonly offeringPortfolio: PolymeshPrimitivesIdentityIdPortfolioId; @@ -1903,14 +1928,14 @@ declare module '@polkadot/types/lookup' { readonly minimumInvestment: u128; } - /** @name PalletStoFundraiserTier (278) */ + /** @name PalletStoFundraiserTier (279) */ export interface PalletStoFundraiserTier extends Struct { readonly total: u128; readonly price: u128; readonly remaining: u128; } - /** @name PalletStoFundraiserStatus (279) */ + /** @name PalletStoFundraiserStatus (280) */ export interface PalletStoFundraiserStatus extends Enum { readonly isLive: boolean; readonly isFrozen: boolean; @@ -1919,7 +1944,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'Frozen' | 'Closed' | 'ClosedEarly'; } - /** @name PalletTreasuryRawEvent (280) */ + /** @name PalletTreasuryRawEvent (281) */ export interface PalletTreasuryRawEvent extends Enum { readonly isTreasuryDisbursement: boolean; readonly asTreasuryDisbursement: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesIdentityId, AccountId32, u128]>; @@ -1930,7 +1955,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'TreasuryDisbursement' | 'TreasuryDisbursementFailed' | 'TreasuryReimbursement'; } - /** @name PalletUtilityEvent (281) */ + /** @name PalletUtilityEvent (282) */ export interface PalletUtilityEvent extends Enum { readonly isBatchInterrupted: boolean; readonly asBatchInterrupted: { @@ -1963,14 +1988,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'BatchInterrupted' | 'BatchCompleted' | 'BatchCompletedWithErrors' | 'ItemCompleted' | 'ItemFailed' | 'DispatchedAs' | 'RelayedTx' | 'BatchInterruptedOld' | 'BatchOptimisticFailed' | 'BatchCompletedOld'; } - /** @name PolymeshCommonUtilitiesBaseEvent (285) */ + /** @name PolymeshCommonUtilitiesBaseEvent (286) */ export interface PolymeshCommonUtilitiesBaseEvent extends Enum { readonly isUnexpectedError: boolean; readonly asUnexpectedError: Option; readonly type: 'UnexpectedError'; } - /** @name PolymeshCommonUtilitiesExternalAgentsEvent (287) */ + /** @name PolymeshCommonUtilitiesExternalAgentsEvent (288) */ export interface PolymeshCommonUtilitiesExternalAgentsEvent extends Enum { readonly isGroupCreated: boolean; readonly asGroupCreated: ITuple<[PolymeshPrimitivesEventOnly, PolymeshPrimitivesTicker, u32, PolymeshPrimitivesSubsetSubsetRestrictionPalletPermissions]>; @@ -1985,7 +2010,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'GroupCreated' | 'GroupPermissionsUpdated' | 'AgentAdded' | 'AgentRemoved' | 'GroupChanged'; } - /** @name PolymeshCommonUtilitiesRelayerRawEvent (288) */ + /** @name PolymeshCommonUtilitiesRelayerRawEvent (289) */ export interface PolymeshCommonUtilitiesRelayerRawEvent extends Enum { readonly isAuthorizedPayingKey: boolean; readonly asAuthorizedPayingKey: ITuple<[PolymeshPrimitivesEventOnly, AccountId32, AccountId32, u128, u64]>; @@ -1998,13 +2023,6 @@ declare module '@polkadot/types/lookup' { readonly type: 'AuthorizedPayingKey' | 'AcceptedPayingKey' | 'RemovedPayingKey' | 'UpdatedPolyxLimit'; } - /** @name PalletRewardsRawEvent (289) */ - export interface PalletRewardsRawEvent extends Enum { - readonly isItnRewardClaimed: boolean; - readonly asItnRewardClaimed: ITuple<[AccountId32, u128]>; - readonly type: 'ItnRewardClaimed'; - } - /** @name PalletContractsEvent (290) */ export interface PalletContractsEvent extends Enum { readonly isInstantiated: boolean; @@ -2049,10 +2067,31 @@ declare module '@polkadot/types/lookup' { readonly type: 'Instantiated' | 'Terminated' | 'CodeStored' | 'ContractEmitted' | 'CodeRemoved' | 'ContractCodeUpdated' | 'Called' | 'DelegateCalled'; } - /** @name PolymeshContractsEvent (291) */ - export type PolymeshContractsEvent = Null; + /** @name PolymeshContractsRawEvent (291) */ + export interface PolymeshContractsRawEvent extends Enum { + readonly isApiHashUpdated: boolean; + readonly asApiHashUpdated: ITuple<[PolymeshContractsApi, PolymeshContractsChainVersion, H256]>; + readonly isScRuntimeCall: boolean; + readonly asScRuntimeCall: ITuple<[AccountId32, PolymeshContractsChainExtensionExtrinsicId]>; + readonly type: 'ApiHashUpdated' | 'ScRuntimeCall'; + } + + /** @name PolymeshContractsApi (292) */ + export interface PolymeshContractsApi extends Struct { + readonly desc: U8aFixed; + readonly major: u32; + } + + /** @name PolymeshContractsChainVersion (293) */ + export interface PolymeshContractsChainVersion extends Struct { + readonly specVersion: u32; + readonly txVersion: u32; + } + + /** @name PolymeshContractsChainExtensionExtrinsicId (294) */ + export interface PolymeshContractsChainExtensionExtrinsicId extends ITuple<[u8, u8]> {} - /** @name PalletPreimageEvent (292) */ + /** @name PalletPreimageEvent (295) */ export interface PalletPreimageEvent extends Enum { readonly isNoted: boolean; readonly asNoted: { @@ -2069,7 +2108,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Noted' | 'Requested' | 'Cleared'; } - /** @name PolymeshCommonUtilitiesNftEvent (293) */ + /** @name PolymeshCommonUtilitiesNftEvent (296) */ export interface PolymeshCommonUtilitiesNftEvent extends Enum { readonly isNftCollectionCreated: boolean; readonly asNftCollectionCreated: ITuple<[PolymeshPrimitivesIdentityId, PolymeshPrimitivesTicker, u64]>; @@ -2078,7 +2117,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NftCollectionCreated' | 'NftPortfolioUpdated'; } - /** @name PalletTestUtilsRawEvent (295) */ + /** @name PalletTestUtilsRawEvent (298) */ export interface PalletTestUtilsRawEvent extends Enum { readonly isDidStatus: boolean; readonly asDidStatus: ITuple<[PolymeshPrimitivesIdentityId, AccountId32]>; @@ -2087,7 +2126,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DidStatus' | 'CddStatus'; } - /** @name FrameSystemPhase (296) */ + /** @name FrameSystemPhase (299) */ export interface FrameSystemPhase extends Enum { readonly isApplyExtrinsic: boolean; readonly asApplyExtrinsic: u32; @@ -2096,13 +2135,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ApplyExtrinsic' | 'Finalization' | 'Initialization'; } - /** @name FrameSystemLastRuntimeUpgradeInfo (299) */ + /** @name FrameSystemLastRuntimeUpgradeInfo (302) */ export interface FrameSystemLastRuntimeUpgradeInfo extends Struct { readonly specVersion: Compact; readonly specName: Text; } - /** @name FrameSystemCall (302) */ + /** @name FrameSystemCall (305) */ export interface FrameSystemCall extends Enum { readonly isRemark: boolean; readonly asRemark: { @@ -2140,21 +2179,21 @@ declare module '@polkadot/types/lookup' { readonly type: 'Remark' | 'SetHeapPages' | 'SetCode' | 'SetCodeWithoutChecks' | 'SetStorage' | 'KillStorage' | 'KillPrefix' | 'RemarkWithEvent'; } - /** @name FrameSystemLimitsBlockWeights (306) */ + /** @name FrameSystemLimitsBlockWeights (309) */ export interface FrameSystemLimitsBlockWeights extends Struct { readonly baseBlock: SpWeightsWeightV2Weight; readonly maxBlock: SpWeightsWeightV2Weight; readonly perClass: FrameSupportDispatchPerDispatchClassWeightsPerClass; } - /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (307) */ + /** @name FrameSupportDispatchPerDispatchClassWeightsPerClass (310) */ export interface FrameSupportDispatchPerDispatchClassWeightsPerClass extends Struct { readonly normal: FrameSystemLimitsWeightsPerClass; readonly operational: FrameSystemLimitsWeightsPerClass; readonly mandatory: FrameSystemLimitsWeightsPerClass; } - /** @name FrameSystemLimitsWeightsPerClass (308) */ + /** @name FrameSystemLimitsWeightsPerClass (311) */ export interface FrameSystemLimitsWeightsPerClass extends Struct { readonly baseExtrinsic: SpWeightsWeightV2Weight; readonly maxExtrinsic: Option; @@ -2162,25 +2201,25 @@ declare module '@polkadot/types/lookup' { readonly reserved: Option; } - /** @name FrameSystemLimitsBlockLength (310) */ + /** @name FrameSystemLimitsBlockLength (313) */ export interface FrameSystemLimitsBlockLength extends Struct { readonly max: FrameSupportDispatchPerDispatchClassU32; } - /** @name FrameSupportDispatchPerDispatchClassU32 (311) */ + /** @name FrameSupportDispatchPerDispatchClassU32 (314) */ export interface FrameSupportDispatchPerDispatchClassU32 extends Struct { readonly normal: u32; readonly operational: u32; readonly mandatory: u32; } - /** @name SpWeightsRuntimeDbWeight (312) */ + /** @name SpWeightsRuntimeDbWeight (315) */ export interface SpWeightsRuntimeDbWeight extends Struct { readonly read: u64; readonly write: u64; } - /** @name SpVersionRuntimeVersion (313) */ + /** @name SpVersionRuntimeVersion (316) */ export interface SpVersionRuntimeVersion extends Struct { readonly specName: Text; readonly implName: Text; @@ -2192,7 +2231,7 @@ declare module '@polkadot/types/lookup' { readonly stateVersion: u8; } - /** @name FrameSystemError (318) */ + /** @name FrameSystemError (321) */ export interface FrameSystemError extends Enum { readonly isInvalidSpecName: boolean; readonly isSpecVersionNeedsToIncrease: boolean; @@ -2203,10 +2242,10 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidSpecName' | 'SpecVersionNeedsToIncrease' | 'FailedToExtractRuntimeVersion' | 'NonDefaultComposite' | 'NonZeroRefCount' | 'CallFiltered'; } - /** @name SpConsensusBabeAppPublic (321) */ + /** @name SpConsensusBabeAppPublic (324) */ export interface SpConsensusBabeAppPublic extends SpCoreSr25519Public {} - /** @name SpConsensusBabeDigestsNextConfigDescriptor (324) */ + /** @name SpConsensusBabeDigestsNextConfigDescriptor (327) */ export interface SpConsensusBabeDigestsNextConfigDescriptor extends Enum { readonly isV1: boolean; readonly asV1: { @@ -2216,7 +2255,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'V1'; } - /** @name SpConsensusBabeAllowedSlots (326) */ + /** @name SpConsensusBabeAllowedSlots (329) */ export interface SpConsensusBabeAllowedSlots extends Enum { readonly isPrimarySlots: boolean; readonly isPrimaryAndSecondaryPlainSlots: boolean; @@ -2224,7 +2263,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PrimarySlots' | 'PrimaryAndSecondaryPlainSlots' | 'PrimaryAndSecondaryVRFSlots'; } - /** @name SpConsensusBabeDigestsPreDigest (330) */ + /** @name SpConsensusBabeDigestsPreDigest (333) */ export interface SpConsensusBabeDigestsPreDigest extends Enum { readonly isPrimary: boolean; readonly asPrimary: SpConsensusBabeDigestsPrimaryPreDigest; @@ -2235,7 +2274,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Primary' | 'SecondaryPlain' | 'SecondaryVRF'; } - /** @name SpConsensusBabeDigestsPrimaryPreDigest (331) */ + /** @name SpConsensusBabeDigestsPrimaryPreDigest (334) */ export interface SpConsensusBabeDigestsPrimaryPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; @@ -2243,13 +2282,13 @@ declare module '@polkadot/types/lookup' { readonly vrfProof: U8aFixed; } - /** @name SpConsensusBabeDigestsSecondaryPlainPreDigest (332) */ + /** @name SpConsensusBabeDigestsSecondaryPlainPreDigest (335) */ export interface SpConsensusBabeDigestsSecondaryPlainPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; } - /** @name SpConsensusBabeDigestsSecondaryVRFPreDigest (333) */ + /** @name SpConsensusBabeDigestsSecondaryVRFPreDigest (336) */ export interface SpConsensusBabeDigestsSecondaryVRFPreDigest extends Struct { readonly authorityIndex: u32; readonly slot: u64; @@ -2257,13 +2296,13 @@ declare module '@polkadot/types/lookup' { readonly vrfProof: U8aFixed; } - /** @name SpConsensusBabeBabeEpochConfiguration (334) */ + /** @name SpConsensusBabeBabeEpochConfiguration (337) */ export interface SpConsensusBabeBabeEpochConfiguration extends Struct { readonly c: ITuple<[u64, u64]>; readonly allowedSlots: SpConsensusBabeAllowedSlots; } - /** @name PalletBabeCall (338) */ + /** @name PalletBabeCall (341) */ export interface PalletBabeCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -2282,7 +2321,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'PlanConfigChange'; } - /** @name SpConsensusSlotsEquivocationProof (339) */ + /** @name SpConsensusSlotsEquivocationProof (342) */ export interface SpConsensusSlotsEquivocationProof extends Struct { readonly offender: SpConsensusBabeAppPublic; readonly slot: u64; @@ -2290,7 +2329,7 @@ declare module '@polkadot/types/lookup' { readonly secondHeader: SpRuntimeHeader; } - /** @name SpRuntimeHeader (340) */ + /** @name SpRuntimeHeader (343) */ export interface SpRuntimeHeader extends Struct { readonly parentHash: H256; readonly number: Compact; @@ -2299,17 +2338,17 @@ declare module '@polkadot/types/lookup' { readonly digest: SpRuntimeDigest; } - /** @name SpRuntimeBlakeTwo256 (341) */ + /** @name SpRuntimeBlakeTwo256 (344) */ export type SpRuntimeBlakeTwo256 = Null; - /** @name SpSessionMembershipProof (342) */ + /** @name SpSessionMembershipProof (345) */ export interface SpSessionMembershipProof extends Struct { readonly session: u32; readonly trieNodes: Vec; readonly validatorCount: u32; } - /** @name PalletBabeError (343) */ + /** @name PalletBabeError (346) */ export interface PalletBabeError extends Enum { readonly isInvalidEquivocationProof: boolean; readonly isInvalidKeyOwnershipProof: boolean; @@ -2318,7 +2357,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidEquivocationProof' | 'InvalidKeyOwnershipProof' | 'DuplicateOffenceReport' | 'InvalidConfiguration'; } - /** @name PalletTimestampCall (344) */ + /** @name PalletTimestampCall (347) */ export interface PalletTimestampCall extends Enum { readonly isSet: boolean; readonly asSet: { @@ -2327,7 +2366,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Set'; } - /** @name PalletIndicesCall (346) */ + /** @name PalletIndicesCall (349) */ export interface PalletIndicesCall extends Enum { readonly isClaim: boolean; readonly asClaim: { @@ -2355,7 +2394,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Claim' | 'Transfer' | 'Free' | 'ForceTransfer' | 'Freeze'; } - /** @name PalletIndicesError (348) */ + /** @name PalletIndicesError (351) */ export interface PalletIndicesError extends Enum { readonly isNotAssigned: boolean; readonly isNotOwner: boolean; @@ -2365,14 +2404,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotAssigned' | 'NotOwner' | 'InUse' | 'NotTransfer' | 'Permanent'; } - /** @name PalletBalancesBalanceLock (350) */ + /** @name PalletBalancesBalanceLock (353) */ export interface PalletBalancesBalanceLock extends Struct { readonly id: U8aFixed; readonly amount: u128; readonly reasons: PolymeshCommonUtilitiesBalancesReasons; } - /** @name PolymeshCommonUtilitiesBalancesReasons (351) */ + /** @name PolymeshCommonUtilitiesBalancesReasons (354) */ export interface PolymeshCommonUtilitiesBalancesReasons extends Enum { readonly isFee: boolean; readonly isMisc: boolean; @@ -2380,7 +2419,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Fee' | 'Misc' | 'All'; } - /** @name PalletBalancesCall (352) */ + /** @name PalletBalancesCall (355) */ export interface PalletBalancesCall extends Enum { readonly isTransfer: boolean; readonly asTransfer: { @@ -2416,7 +2455,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Transfer' | 'TransferWithMemo' | 'DepositBlockRewardReserveBalance' | 'SetBalance' | 'ForceTransfer' | 'BurnAccountBalance'; } - /** @name PalletBalancesError (353) */ + /** @name PalletBalancesError (356) */ export interface PalletBalancesError extends Enum { readonly isLiquidityRestrictions: boolean; readonly isOverflow: boolean; @@ -2426,14 +2465,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'LiquidityRestrictions' | 'Overflow' | 'InsufficientBalance' | 'ExistentialDeposit' | 'ReceiverCddMissing'; } - /** @name PalletTransactionPaymentReleases (355) */ + /** @name PalletTransactionPaymentReleases (358) */ export interface PalletTransactionPaymentReleases extends Enum { readonly isV1Ancient: boolean; readonly isV2: boolean; readonly type: 'V1Ancient' | 'V2'; } - /** @name SpWeightsWeightToFeeCoefficient (357) */ + /** @name SpWeightsWeightToFeeCoefficient (360) */ export interface SpWeightsWeightToFeeCoefficient extends Struct { readonly coeffInteger: u128; readonly coeffFrac: Perbill; @@ -2441,24 +2480,24 @@ declare module '@polkadot/types/lookup' { readonly degree: u8; } - /** @name PolymeshPrimitivesIdentityDidRecord (358) */ + /** @name PolymeshPrimitivesIdentityDidRecord (361) */ export interface PolymeshPrimitivesIdentityDidRecord extends Struct { readonly primaryKey: Option; } - /** @name PalletIdentityClaim1stKey (360) */ + /** @name PalletIdentityClaim1stKey (363) */ export interface PalletIdentityClaim1stKey extends Struct { readonly target: PolymeshPrimitivesIdentityId; readonly claimType: PolymeshPrimitivesIdentityClaimClaimType; } - /** @name PalletIdentityClaim2ndKey (361) */ + /** @name PalletIdentityClaim2ndKey (364) */ export interface PalletIdentityClaim2ndKey extends Struct { readonly issuer: PolymeshPrimitivesIdentityId; readonly scope: Option; } - /** @name PolymeshPrimitivesSecondaryKeyKeyRecord (362) */ + /** @name PolymeshPrimitivesSecondaryKeyKeyRecord (365) */ export interface PolymeshPrimitivesSecondaryKeyKeyRecord extends Enum { readonly isPrimaryKey: boolean; readonly asPrimaryKey: PolymeshPrimitivesIdentityId; @@ -2469,7 +2508,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PrimaryKey' | 'SecondaryKey' | 'MultiSigSignerKey'; } - /** @name PolymeshPrimitivesAuthorization (365) */ + /** @name PolymeshPrimitivesAuthorization (368) */ export interface PolymeshPrimitivesAuthorization extends Struct { readonly authorizationData: PolymeshPrimitivesAuthorizationAuthorizationData; readonly authorizedBy: PolymeshPrimitivesIdentityId; @@ -2478,7 +2517,7 @@ declare module '@polkadot/types/lookup' { readonly count: u32; } - /** @name PalletIdentityCall (368) */ + /** @name PalletIdentityCall (372) */ export interface PalletIdentityCall extends Enum { readonly isCddRegisterDid: boolean; readonly asCddRegisterDid: { @@ -2589,19 +2628,19 @@ declare module '@polkadot/types/lookup' { readonly type: 'CddRegisterDid' | 'InvalidateCddClaims' | 'AcceptPrimaryKey' | 'ChangeCddRequirementForMkRotation' | 'JoinIdentityAsKey' | 'LeaveIdentityAsKey' | 'AddClaim' | 'RevokeClaim' | 'FreezeSecondaryKeys' | 'UnfreezeSecondaryKeys' | 'AddAuthorization' | 'RemoveAuthorization' | 'GcAddCddClaim' | 'GcRevokeCddClaim' | 'RevokeClaimByIndex' | 'RotatePrimaryKeyToSecondary' | 'AddSecondaryKeysWithAuthorization' | 'SetSecondaryKeyPermissions' | 'RemoveSecondaryKeys' | 'RegisterCustomClaimType' | 'CddRegisterDidWithCdd' | 'CreateChildIdentity' | 'CreateChildIdentities' | 'UnlinkChildIdentity'; } - /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (370) */ + /** @name PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth (374) */ export interface PolymeshCommonUtilitiesIdentitySecondaryKeyWithAuth extends Struct { readonly secondaryKey: PolymeshPrimitivesSecondaryKey; readonly authSignature: H512; } - /** @name PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth (373) */ + /** @name PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth (377) */ export interface PolymeshCommonUtilitiesIdentityCreateChildIdentityWithAuth extends Struct { readonly key: AccountId32; readonly authSignature: H512; } - /** @name PalletIdentityError (374) */ + /** @name PalletIdentityError (378) */ export interface PalletIdentityError extends Enum { readonly isAlreadyLinked: boolean; readonly isMissingCurrentIdentity: boolean; @@ -2613,7 +2652,6 @@ declare module '@polkadot/types/lookup' { readonly isNotCddProviderAttestation: boolean; readonly isAuthorizationsNotForSameDids: boolean; readonly isDidMustAlreadyExist: boolean; - readonly isCurrentIdentityCannotBeForwarded: boolean; readonly isAuthorizationExpired: boolean; readonly isTargetHasNoCdd: boolean; readonly isAuthorizationHasBeenRevoked: boolean; @@ -2627,11 +2665,6 @@ declare module '@polkadot/types/lookup' { readonly isNotASigner: boolean; readonly isCannotDecodeSignerAccountId: boolean; readonly isMultiSigHasBalance: boolean; - readonly isClaimVariantNotAllowed: boolean; - readonly isTargetHasNonZeroBalanceAtScopeId: boolean; - readonly isCddIdNotUniqueForIdentity: boolean; - readonly isInvalidCDDId: boolean; - readonly isClaimAndProofVersionsDoNotMatch: boolean; readonly isAccountKeyIsBeingUsed: boolean; readonly isCustomScopeTooLong: boolean; readonly isCustomClaimTypeAlreadyExists: boolean; @@ -2642,17 +2675,17 @@ declare module '@polkadot/types/lookup' { readonly isNotParentOrChildIdentity: boolean; readonly isDuplicateKey: boolean; readonly isExceptNotAllowedForExtrinsics: boolean; - readonly type: 'AlreadyLinked' | 'MissingCurrentIdentity' | 'Unauthorized' | 'InvalidAccountKey' | 'UnAuthorizedCddProvider' | 'InvalidAuthorizationFromOwner' | 'InvalidAuthorizationFromCddProvider' | 'NotCddProviderAttestation' | 'AuthorizationsNotForSameDids' | 'DidMustAlreadyExist' | 'CurrentIdentityCannotBeForwarded' | 'AuthorizationExpired' | 'TargetHasNoCdd' | 'AuthorizationHasBeenRevoked' | 'InvalidAuthorizationSignature' | 'KeyNotAllowed' | 'NotPrimaryKey' | 'DidDoesNotExist' | 'DidAlreadyExists' | 'SecondaryKeysContainPrimaryKey' | 'FailedToChargeFee' | 'NotASigner' | 'CannotDecodeSignerAccountId' | 'MultiSigHasBalance' | 'ClaimVariantNotAllowed' | 'TargetHasNonZeroBalanceAtScopeId' | 'CddIdNotUniqueForIdentity' | 'InvalidCDDId' | 'ClaimAndProofVersionsDoNotMatch' | 'AccountKeyIsBeingUsed' | 'CustomScopeTooLong' | 'CustomClaimTypeAlreadyExists' | 'CustomClaimTypeDoesNotExist' | 'ClaimDoesNotExist' | 'IsChildIdentity' | 'NoParentIdentity' | 'NotParentOrChildIdentity' | 'DuplicateKey' | 'ExceptNotAllowedForExtrinsics'; + readonly type: 'AlreadyLinked' | 'MissingCurrentIdentity' | 'Unauthorized' | 'InvalidAccountKey' | 'UnAuthorizedCddProvider' | 'InvalidAuthorizationFromOwner' | 'InvalidAuthorizationFromCddProvider' | 'NotCddProviderAttestation' | 'AuthorizationsNotForSameDids' | 'DidMustAlreadyExist' | 'AuthorizationExpired' | 'TargetHasNoCdd' | 'AuthorizationHasBeenRevoked' | 'InvalidAuthorizationSignature' | 'KeyNotAllowed' | 'NotPrimaryKey' | 'DidDoesNotExist' | 'DidAlreadyExists' | 'SecondaryKeysContainPrimaryKey' | 'FailedToChargeFee' | 'NotASigner' | 'CannotDecodeSignerAccountId' | 'MultiSigHasBalance' | 'AccountKeyIsBeingUsed' | 'CustomScopeTooLong' | 'CustomClaimTypeAlreadyExists' | 'CustomClaimTypeDoesNotExist' | 'ClaimDoesNotExist' | 'IsChildIdentity' | 'NoParentIdentity' | 'NotParentOrChildIdentity' | 'DuplicateKey' | 'ExceptNotAllowedForExtrinsics'; } - /** @name PolymeshCommonUtilitiesGroupInactiveMember (376) */ + /** @name PolymeshCommonUtilitiesGroupInactiveMember (380) */ export interface PolymeshCommonUtilitiesGroupInactiveMember extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly deactivatedAt: u64; readonly expiry: Option; } - /** @name PalletGroupCall (377) */ + /** @name PalletGroupCall (381) */ export interface PalletGroupCall extends Enum { readonly isSetActiveMembersLimit: boolean; readonly asSetActiveMembersLimit: { @@ -2685,7 +2718,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveMembersLimit' | 'DisableMember' | 'AddMember' | 'RemoveMember' | 'SwapMember' | 'ResetMembers' | 'AbdicateMembership'; } - /** @name PalletGroupError (378) */ + /** @name PalletGroupError (382) */ export interface PalletGroupError extends Enum { readonly isOnlyPrimaryKeyAllowed: boolean; readonly isDuplicateMember: boolean; @@ -2697,7 +2730,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'OnlyPrimaryKeyAllowed' | 'DuplicateMember' | 'NoSuchMember' | 'LastMemberCannotQuit' | 'MissingCurrentIdentity' | 'ActiveMembersLimitExceeded' | 'ActiveMembersLimitOverflow'; } - /** @name PalletCommitteeCall (380) */ + /** @name PalletCommitteeCall (384) */ export interface PalletCommitteeCall extends Enum { readonly isSetVoteThreshold: boolean; readonly asSetVoteThreshold: { @@ -2726,7 +2759,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetVoteThreshold' | 'SetReleaseCoordinator' | 'SetExpiresAfter' | 'VoteOrPropose' | 'Vote'; } - /** @name PalletMultisigCall (386) */ + /** @name PalletMultisigCall (390) */ export interface PalletMultisigCall extends Enum { readonly isCreateMultisig: boolean; readonly asCreateMultisig: { @@ -2839,7 +2872,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateMultisig' | 'CreateOrApproveProposalAsIdentity' | 'CreateOrApproveProposalAsKey' | 'CreateProposalAsIdentity' | 'CreateProposalAsKey' | 'ApproveAsIdentity' | 'ApproveAsKey' | 'RejectAsIdentity' | 'RejectAsKey' | 'AcceptMultisigSignerAsIdentity' | 'AcceptMultisigSignerAsKey' | 'AddMultisigSigner' | 'RemoveMultisigSigner' | 'AddMultisigSignersViaCreator' | 'RemoveMultisigSignersViaCreator' | 'ChangeSigsRequired' | 'MakeMultisigSecondary' | 'MakeMultisigPrimary' | 'ExecuteScheduledProposal' | 'ChangeSigsRequiredViaCreator' | 'RemoveCreatorControls'; } - /** @name PalletBridgeCall (387) */ + /** @name PalletBridgeCall (391) */ export interface PalletBridgeCall extends Enum { readonly isChangeController: boolean; readonly asChangeController: { @@ -2907,8 +2940,8 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeController' | 'ChangeAdmin' | 'ChangeTimelock' | 'Freeze' | 'Unfreeze' | 'ChangeBridgeLimit' | 'ChangeBridgeExempted' | 'ForceHandleBridgeTx' | 'BatchProposeBridgeTx' | 'ProposeBridgeTx' | 'HandleBridgeTx' | 'FreezeTxs' | 'UnfreezeTxs' | 'HandleScheduledBridgeTx' | 'AddFreezeAdmin' | 'RemoveFreezeAdmin' | 'RemoveTxs'; } - /** @name PalletStakingCall (391) */ - export interface PalletStakingCall extends Enum { + /** @name PalletStakingPalletCall (395) */ + export interface PalletStakingPalletCall extends Enum { readonly isBond: boolean; readonly asBond: { readonly controller: MultiAddress; @@ -3051,7 +3084,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Bond' | 'BondExtra' | 'Unbond' | 'WithdrawUnbonded' | 'Validate' | 'Nominate' | 'Chill' | 'SetPayee' | 'SetController' | 'SetValidatorCount' | 'IncreaseValidatorCount' | 'ScaleValidatorCount' | 'AddPermissionedValidator' | 'RemovePermissionedValidator' | 'ValidateCddExpiryNominators' | 'SetCommissionCap' | 'SetMinBondThreshold' | 'ForceNoEras' | 'ForceNewEra' | 'SetInvulnerables' | 'ForceUnstake' | 'ForceNewEraAlways' | 'CancelDeferredSlash' | 'PayoutStakers' | 'Rebond' | 'SetHistoryDepth' | 'ReapStash' | 'SubmitElectionSolution' | 'SubmitElectionSolutionUnsigned' | 'PayoutStakersBySystem' | 'ChangeSlashingAllowedFor' | 'UpdatePermissionedValidatorIntendedCount' | 'ChillFromGovernance'; } - /** @name PalletStakingRewardDestination (392) */ + /** @name PalletStakingRewardDestination (396) */ export interface PalletStakingRewardDestination extends Enum { readonly isStaked: boolean; readonly isStash: boolean; @@ -3061,13 +3094,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Staked' | 'Stash' | 'Controller' | 'Account'; } - /** @name PalletStakingValidatorPrefs (393) */ + /** @name PalletStakingValidatorPrefs (397) */ export interface PalletStakingValidatorPrefs extends Struct { readonly commission: Compact; readonly blocked: bool; } - /** @name PalletStakingCompactAssignments (399) */ + /** @name PalletStakingCompactAssignments (403) */ export interface PalletStakingCompactAssignments extends Struct { readonly votes1: Vec, Compact]>>; readonly votes2: Vec, ITuple<[Compact, Compact]>, Compact]>>; @@ -3087,20 +3120,20 @@ declare module '@polkadot/types/lookup' { readonly votes16: Vec, Vec, Compact]>>, Compact]>>; } - /** @name SpNposElectionsElectionScore (450) */ + /** @name SpNposElectionsElectionScore (454) */ export interface SpNposElectionsElectionScore extends Struct { readonly minimalStake: u128; readonly sumStake: u128; readonly sumStakeSquared: u128; } - /** @name PalletStakingElectionSize (451) */ + /** @name PalletStakingElectionSize (455) */ export interface PalletStakingElectionSize extends Struct { readonly validators: Compact; readonly nominators: Compact; } - /** @name PalletSessionCall (452) */ + /** @name PalletSessionCall (456) */ export interface PalletSessionCall extends Enum { readonly isSetKeys: boolean; readonly asSetKeys: { @@ -3111,7 +3144,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetKeys' | 'PurgeKeys'; } - /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (453) */ + /** @name PolymeshRuntimeDevelopRuntimeSessionKeys (457) */ export interface PolymeshRuntimeDevelopRuntimeSessionKeys extends Struct { readonly grandpa: SpConsensusGrandpaAppPublic; readonly babe: SpConsensusBabeAppPublic; @@ -3119,10 +3152,10 @@ declare module '@polkadot/types/lookup' { readonly authorityDiscovery: SpAuthorityDiscoveryAppPublic; } - /** @name SpAuthorityDiscoveryAppPublic (454) */ + /** @name SpAuthorityDiscoveryAppPublic (458) */ export interface SpAuthorityDiscoveryAppPublic extends SpCoreSr25519Public {} - /** @name PalletGrandpaCall (455) */ + /** @name PalletGrandpaCall (459) */ export interface PalletGrandpaCall extends Enum { readonly isReportEquivocation: boolean; readonly asReportEquivocation: { @@ -3142,13 +3175,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'ReportEquivocation' | 'ReportEquivocationUnsigned' | 'NoteStalled'; } - /** @name SpConsensusGrandpaEquivocationProof (456) */ + /** @name SpConsensusGrandpaEquivocationProof (460) */ export interface SpConsensusGrandpaEquivocationProof extends Struct { readonly setId: u64; readonly equivocation: SpConsensusGrandpaEquivocation; } - /** @name SpConsensusGrandpaEquivocation (457) */ + /** @name SpConsensusGrandpaEquivocation (461) */ export interface SpConsensusGrandpaEquivocation extends Enum { readonly isPrevote: boolean; readonly asPrevote: FinalityGrandpaEquivocationPrevote; @@ -3157,7 +3190,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Prevote' | 'Precommit'; } - /** @name FinalityGrandpaEquivocationPrevote (458) */ + /** @name FinalityGrandpaEquivocationPrevote (462) */ export interface FinalityGrandpaEquivocationPrevote extends Struct { readonly roundNumber: u64; readonly identity: SpConsensusGrandpaAppPublic; @@ -3165,19 +3198,19 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrevote, SpConsensusGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrevote (459) */ + /** @name FinalityGrandpaPrevote (463) */ export interface FinalityGrandpaPrevote extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name SpConsensusGrandpaAppSignature (460) */ + /** @name SpConsensusGrandpaAppSignature (464) */ export interface SpConsensusGrandpaAppSignature extends SpCoreEd25519Signature {} - /** @name SpCoreEd25519Signature (461) */ + /** @name SpCoreEd25519Signature (465) */ export interface SpCoreEd25519Signature extends U8aFixed {} - /** @name FinalityGrandpaEquivocationPrecommit (463) */ + /** @name FinalityGrandpaEquivocationPrecommit (467) */ export interface FinalityGrandpaEquivocationPrecommit extends Struct { readonly roundNumber: u64; readonly identity: SpConsensusGrandpaAppPublic; @@ -3185,13 +3218,13 @@ declare module '@polkadot/types/lookup' { readonly second: ITuple<[FinalityGrandpaPrecommit, SpConsensusGrandpaAppSignature]>; } - /** @name FinalityGrandpaPrecommit (464) */ + /** @name FinalityGrandpaPrecommit (468) */ export interface FinalityGrandpaPrecommit extends Struct { readonly targetHash: H256; readonly targetNumber: u32; } - /** @name PalletImOnlineCall (466) */ + /** @name PalletImOnlineCall (470) */ export interface PalletImOnlineCall extends Enum { readonly isHeartbeat: boolean; readonly asHeartbeat: { @@ -3201,7 +3234,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Heartbeat'; } - /** @name PalletImOnlineHeartbeat (467) */ + /** @name PalletImOnlineHeartbeat (471) */ export interface PalletImOnlineHeartbeat extends Struct { readonly blockNumber: u32; readonly networkState: SpCoreOffchainOpaqueNetworkState; @@ -3210,19 +3243,19 @@ declare module '@polkadot/types/lookup' { readonly validatorsLen: u32; } - /** @name SpCoreOffchainOpaqueNetworkState (468) */ + /** @name SpCoreOffchainOpaqueNetworkState (472) */ export interface SpCoreOffchainOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineSr25519AppSr25519Signature (472) */ + /** @name PalletImOnlineSr25519AppSr25519Signature (476) */ export interface PalletImOnlineSr25519AppSr25519Signature extends SpCoreSr25519Signature {} - /** @name SpCoreSr25519Signature (473) */ + /** @name SpCoreSr25519Signature (477) */ export interface SpCoreSr25519Signature extends U8aFixed {} - /** @name PalletSudoCall (474) */ + /** @name PalletSudoCall (478) */ export interface PalletSudoCall extends Enum { readonly isSudo: boolean; readonly asSudo: { @@ -3245,7 +3278,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Sudo' | 'SudoUncheckedWeight' | 'SetKey' | 'SudoAs'; } - /** @name PalletAssetCall (475) */ + /** @name PalletAssetCall (479) */ export interface PalletAssetCall extends Enum { readonly isRegisterTicker: boolean; readonly asRegisterTicker: { @@ -3314,7 +3347,7 @@ declare module '@polkadot/types/lookup' { readonly isUpdateIdentifiers: boolean; readonly asUpdateIdentifiers: { readonly ticker: PolymeshPrimitivesTicker; - readonly identifiers: Vec; + readonly assetIdentifiers: Vec; } & Struct; readonly isControllerTransfer: boolean; readonly asControllerTransfer: { @@ -3404,10 +3437,20 @@ declare module '@polkadot/types/lookup' { readonly asRemoveTickerPreApproval: { readonly ticker: PolymeshPrimitivesTicker; } & Struct; - readonly type: 'RegisterTicker' | 'AcceptTickerTransfer' | 'AcceptAssetOwnershipTransfer' | 'CreateAsset' | 'Freeze' | 'Unfreeze' | 'RenameAsset' | 'Issue' | 'Redeem' | 'MakeDivisible' | 'AddDocuments' | 'RemoveDocuments' | 'SetFundingRound' | 'UpdateIdentifiers' | 'ControllerTransfer' | 'RegisterCustomAssetType' | 'CreateAssetWithCustomType' | 'SetAssetMetadata' | 'SetAssetMetadataDetails' | 'RegisterAndSetLocalAssetMetadata' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType' | 'RedeemFromPortfolio' | 'UpdateAssetType' | 'RemoveLocalMetadataKey' | 'RemoveMetadataValue' | 'ExemptTickerAffirmation' | 'RemoveTickerAffirmationExemption' | 'PreApproveTicker' | 'RemoveTickerPreApproval'; + readonly isAddMandatoryMediators: boolean; + readonly asAddMandatoryMediators: { + readonly ticker: PolymeshPrimitivesTicker; + readonly mediators: BTreeSet; + } & Struct; + readonly isRemoveMandatoryMediators: boolean; + readonly asRemoveMandatoryMediators: { + readonly ticker: PolymeshPrimitivesTicker; + readonly mediators: BTreeSet; + } & Struct; + readonly type: 'RegisterTicker' | 'AcceptTickerTransfer' | 'AcceptAssetOwnershipTransfer' | 'CreateAsset' | 'Freeze' | 'Unfreeze' | 'RenameAsset' | 'Issue' | 'Redeem' | 'MakeDivisible' | 'AddDocuments' | 'RemoveDocuments' | 'SetFundingRound' | 'UpdateIdentifiers' | 'ControllerTransfer' | 'RegisterCustomAssetType' | 'CreateAssetWithCustomType' | 'SetAssetMetadata' | 'SetAssetMetadataDetails' | 'RegisterAndSetLocalAssetMetadata' | 'RegisterAssetMetadataLocalType' | 'RegisterAssetMetadataGlobalType' | 'RedeemFromPortfolio' | 'UpdateAssetType' | 'RemoveLocalMetadataKey' | 'RemoveMetadataValue' | 'ExemptTickerAffirmation' | 'RemoveTickerAffirmationExemption' | 'PreApproveTicker' | 'RemoveTickerPreApproval' | 'AddMandatoryMediators' | 'RemoveMandatoryMediators'; } - /** @name PalletCorporateActionsDistributionCall (477) */ + /** @name PalletCorporateActionsDistributionCall (482) */ export interface PalletCorporateActionsDistributionCall extends Enum { readonly isDistribute: boolean; readonly asDistribute: { @@ -3439,7 +3482,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Distribute' | 'Claim' | 'PushBenefit' | 'Reclaim' | 'RemoveDistribution'; } - /** @name PalletAssetCheckpointCall (479) */ + /** @name PalletAssetCheckpointCall (484) */ export interface PalletAssetCheckpointCall extends Enum { readonly isCreateCheckpoint: boolean; readonly asCreateCheckpoint: { @@ -3462,7 +3505,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateCheckpoint' | 'SetSchedulesMaxComplexity' | 'CreateSchedule' | 'RemoveSchedule'; } - /** @name PalletComplianceManagerCall (480) */ + /** @name PalletComplianceManagerCall (485) */ export interface PalletComplianceManagerCall extends Enum { readonly isAddComplianceRequirement: boolean; readonly asAddComplianceRequirement: { @@ -3510,7 +3553,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AddComplianceRequirement' | 'RemoveComplianceRequirement' | 'ReplaceAssetCompliance' | 'ResetAssetCompliance' | 'PauseAssetCompliance' | 'ResumeAssetCompliance' | 'AddDefaultTrustedClaimIssuer' | 'RemoveDefaultTrustedClaimIssuer' | 'ChangeComplianceRequirement'; } - /** @name PalletCorporateActionsCall (481) */ + /** @name PalletCorporateActionsCall (486) */ export interface PalletCorporateActionsCall extends Enum { readonly isSetMaxDetailsLength: boolean; readonly asSetMaxDetailsLength: { @@ -3570,7 +3613,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetMaxDetailsLength' | 'SetDefaultTargets' | 'SetDefaultWithholdingTax' | 'SetDidWithholdingTax' | 'InitiateCorporateAction' | 'LinkCaDoc' | 'RemoveCa' | 'ChangeRecordDate' | 'InitiateCorporateActionAndDistribute'; } - /** @name PalletCorporateActionsRecordDateSpec (483) */ + /** @name PalletCorporateActionsRecordDateSpec (488) */ export interface PalletCorporateActionsRecordDateSpec extends Enum { readonly isScheduled: boolean; readonly asScheduled: u64; @@ -3581,7 +3624,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Scheduled' | 'ExistingSchedule' | 'Existing'; } - /** @name PalletCorporateActionsInitiateCorporateActionArgs (486) */ + /** @name PalletCorporateActionsInitiateCorporateActionArgs (491) */ export interface PalletCorporateActionsInitiateCorporateActionArgs extends Struct { readonly ticker: PolymeshPrimitivesTicker; readonly kind: PalletCorporateActionsCaKind; @@ -3593,7 +3636,7 @@ declare module '@polkadot/types/lookup' { readonly withholdingTax: Option>>; } - /** @name PalletCorporateActionsBallotCall (487) */ + /** @name PalletCorporateActionsBallotCall (492) */ export interface PalletCorporateActionsBallotCall extends Enum { readonly isAttachBallot: boolean; readonly asAttachBallot: { @@ -3629,7 +3672,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'AttachBallot' | 'Vote' | 'ChangeEnd' | 'ChangeMeta' | 'ChangeRcv' | 'RemoveBallot'; } - /** @name PalletPipsCall (488) */ + /** @name PalletPipsCall (493) */ export interface PalletPipsCall extends Enum { readonly isSetPruneHistoricalPips: boolean; readonly asSetPruneHistoricalPips: { @@ -3703,7 +3746,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPruneHistoricalPips' | 'SetMinProposalDeposit' | 'SetDefaultEnactmentPeriod' | 'SetPendingPipExpiry' | 'SetMaxPipSkipCount' | 'SetActivePipLimit' | 'Propose' | 'Vote' | 'ApproveCommitteeProposal' | 'RejectProposal' | 'PruneProposal' | 'RescheduleExecution' | 'ClearSnapshot' | 'Snapshot' | 'EnactSnapshotResults' | 'ExecuteScheduledPip' | 'ExpireScheduledPip'; } - /** @name PalletPipsSnapshotResult (491) */ + /** @name PalletPipsSnapshotResult (496) */ export interface PalletPipsSnapshotResult extends Enum { readonly isApprove: boolean; readonly isReject: boolean; @@ -3711,7 +3754,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Approve' | 'Reject' | 'Skip'; } - /** @name PalletPortfolioCall (492) */ + /** @name PalletPortfolioCall (497) */ export interface PalletPortfolioCall extends Enum { readonly isCreatePortfolio: boolean; readonly asCreatePortfolio: { @@ -3750,16 +3793,29 @@ declare module '@polkadot/types/lookup' { readonly ticker: PolymeshPrimitivesTicker; readonly portfolioId: PolymeshPrimitivesIdentityIdPortfolioId; } & Struct; - readonly type: 'CreatePortfolio' | 'DeletePortfolio' | 'RenamePortfolio' | 'QuitPortfolioCustody' | 'AcceptPortfolioCustody' | 'MovePortfolioFunds' | 'PreApprovePortfolio' | 'RemovePortfolioPreApproval'; + readonly isAllowIdentityToCreatePortfolios: boolean; + readonly asAllowIdentityToCreatePortfolios: { + readonly trustedIdentity: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isRevokeCreatePortfoliosPermission: boolean; + readonly asRevokeCreatePortfoliosPermission: { + readonly identity: PolymeshPrimitivesIdentityId; + } & Struct; + readonly isCreateCustodyPortfolio: boolean; + readonly asCreateCustodyPortfolio: { + readonly portfolioOwnerId: PolymeshPrimitivesIdentityId; + readonly portfolioName: Bytes; + } & Struct; + readonly type: 'CreatePortfolio' | 'DeletePortfolio' | 'RenamePortfolio' | 'QuitPortfolioCustody' | 'AcceptPortfolioCustody' | 'MovePortfolioFunds' | 'PreApprovePortfolio' | 'RemovePortfolioPreApproval' | 'AllowIdentityToCreatePortfolios' | 'RevokeCreatePortfoliosPermission' | 'CreateCustodyPortfolio'; } - /** @name PolymeshPrimitivesPortfolioFund (494) */ + /** @name PolymeshPrimitivesPortfolioFund (499) */ export interface PolymeshPrimitivesPortfolioFund extends Struct { readonly description: PolymeshPrimitivesPortfolioFundDescription; readonly memo: Option; } - /** @name PalletProtocolFeeCall (495) */ + /** @name PalletProtocolFeeCall (500) */ export interface PalletProtocolFeeCall extends Enum { readonly isChangeCoefficient: boolean; readonly asChangeCoefficient: { @@ -3773,7 +3829,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ChangeCoefficient' | 'ChangeBaseFee'; } - /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (496) */ + /** @name PolymeshCommonUtilitiesProtocolFeeProtocolOp (501) */ export interface PolymeshCommonUtilitiesProtocolFeeProtocolOp extends Enum { readonly isAssetRegisterTicker: boolean; readonly isAssetIssue: boolean; @@ -3790,10 +3846,11 @@ declare module '@polkadot/types/lookup' { readonly isCapitalDistributionDistribute: boolean; readonly isNftCreateCollection: boolean; readonly isNftMint: boolean; - readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | 'NftCreateCollection' | 'NftMint'; + readonly isIdentityCreateChildIdentity: boolean; + readonly type: 'AssetRegisterTicker' | 'AssetIssue' | 'AssetAddDocuments' | 'AssetCreateAsset' | 'CheckpointCreateSchedule' | 'ComplianceManagerAddComplianceRequirement' | 'IdentityCddRegisterDid' | 'IdentityAddClaim' | 'IdentityAddSecondaryKeysWithAuthorization' | 'PipsPropose' | 'ContractsPutCode' | 'CorporateBallotAttachBallot' | 'CapitalDistributionDistribute' | 'NftCreateCollection' | 'NftMint' | 'IdentityCreateChildIdentity'; } - /** @name PalletSchedulerCall (497) */ + /** @name PalletSchedulerCall (502) */ export interface PalletSchedulerCall extends Enum { readonly isSchedule: boolean; readonly asSchedule: { @@ -3837,7 +3894,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Schedule' | 'Cancel' | 'ScheduleNamed' | 'CancelNamed' | 'ScheduleAfter' | 'ScheduleNamedAfter'; } - /** @name PalletSettlementCall (499) */ + /** @name PalletSettlementCall (504) */ export interface PalletSettlementCall extends Enum { readonly isCreateVenue: boolean; readonly asCreateVenue: { @@ -3930,10 +3987,70 @@ declare module '@polkadot/types/lookup' { readonly id: u64; readonly weightLimit: SpWeightsWeightV2Weight; } & Struct; - readonly type: 'CreateVenue' | 'UpdateVenueDetails' | 'UpdateVenueType' | 'AffirmWithReceipts' | 'SetVenueFiltering' | 'AllowVenues' | 'DisallowVenues' | 'UpdateVenueSigners' | 'ExecuteManualInstruction' | 'AddInstruction' | 'AddAndAffirmInstruction' | 'AffirmInstruction' | 'WithdrawAffirmation' | 'RejectInstruction' | 'ExecuteScheduledInstruction'; + readonly isAffirmWithReceiptsWithCount: boolean; + readonly asAffirmWithReceiptsWithCount: { + readonly id: u64; + readonly receiptDetails: Vec; + readonly portfolios: Vec; + readonly numberOfAssets: Option; + } & Struct; + readonly isAffirmInstructionWithCount: boolean; + readonly asAffirmInstructionWithCount: { + readonly id: u64; + readonly portfolios: Vec; + readonly numberOfAssets: Option; + } & Struct; + readonly isRejectInstructionWithCount: boolean; + readonly asRejectInstructionWithCount: { + readonly id: u64; + readonly portfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly numberOfAssets: Option; + } & Struct; + readonly isWithdrawAffirmationWithCount: boolean; + readonly asWithdrawAffirmationWithCount: { + readonly id: u64; + readonly portfolios: Vec; + readonly numberOfAssets: Option; + } & Struct; + readonly isAddInstructionWithMediators: boolean; + readonly asAddInstructionWithMediators: { + readonly venueId: u64; + readonly settlementType: PolymeshPrimitivesSettlementSettlementType; + readonly tradeDate: Option; + readonly valueDate: Option; + readonly legs: Vec; + readonly instructionMemo: Option; + readonly mediators: BTreeSet; + } & Struct; + readonly isAddAndAffirmWithMediators: boolean; + readonly asAddAndAffirmWithMediators: { + readonly venueId: u64; + readonly settlementType: PolymeshPrimitivesSettlementSettlementType; + readonly tradeDate: Option; + readonly valueDate: Option; + readonly legs: Vec; + readonly portfolios: Vec; + readonly instructionMemo: Option; + readonly mediators: BTreeSet; + } & Struct; + readonly isAffirmInstructionAsMediator: boolean; + readonly asAffirmInstructionAsMediator: { + readonly instructionId: u64; + readonly expiry: Option; + } & Struct; + readonly isWithdrawAffirmationAsMediator: boolean; + readonly asWithdrawAffirmationAsMediator: { + readonly instructionId: u64; + } & Struct; + readonly isRejectInstructionAsMediator: boolean; + readonly asRejectInstructionAsMediator: { + readonly instructionId: u64; + readonly numberOfAssets: Option; + } & Struct; + readonly type: 'CreateVenue' | 'UpdateVenueDetails' | 'UpdateVenueType' | 'AffirmWithReceipts' | 'SetVenueFiltering' | 'AllowVenues' | 'DisallowVenues' | 'UpdateVenueSigners' | 'ExecuteManualInstruction' | 'AddInstruction' | 'AddAndAffirmInstruction' | 'AffirmInstruction' | 'WithdrawAffirmation' | 'RejectInstruction' | 'ExecuteScheduledInstruction' | 'AffirmWithReceiptsWithCount' | 'AffirmInstructionWithCount' | 'RejectInstructionWithCount' | 'WithdrawAffirmationWithCount' | 'AddInstructionWithMediators' | 'AddAndAffirmWithMediators' | 'AffirmInstructionAsMediator' | 'WithdrawAffirmationAsMediator' | 'RejectInstructionAsMediator'; } - /** @name PolymeshPrimitivesSettlementReceiptDetails (501) */ + /** @name PolymeshPrimitivesSettlementReceiptDetails (506) */ export interface PolymeshPrimitivesSettlementReceiptDetails extends Struct { readonly uid: u64; readonly instructionId: u64; @@ -3943,7 +4060,7 @@ declare module '@polkadot/types/lookup' { readonly metadata: Option; } - /** @name SpRuntimeMultiSignature (502) */ + /** @name SpRuntimeMultiSignature (507) */ export interface SpRuntimeMultiSignature extends Enum { readonly isEd25519: boolean; readonly asEd25519: SpCoreEd25519Signature; @@ -3954,10 +4071,24 @@ declare module '@polkadot/types/lookup' { readonly type: 'Ed25519' | 'Sr25519' | 'Ecdsa'; } - /** @name SpCoreEcdsaSignature (503) */ + /** @name SpCoreEcdsaSignature (508) */ export interface SpCoreEcdsaSignature extends U8aFixed {} - /** @name PalletStatisticsCall (505) */ + /** @name PolymeshPrimitivesSettlementAffirmationCount (511) */ + export interface PolymeshPrimitivesSettlementAffirmationCount extends Struct { + readonly senderAssetCount: PolymeshPrimitivesSettlementAssetCount; + readonly receiverAssetCount: PolymeshPrimitivesSettlementAssetCount; + readonly offchainCount: u32; + } + + /** @name PolymeshPrimitivesSettlementAssetCount (512) */ + export interface PolymeshPrimitivesSettlementAssetCount extends Struct { + readonly fungible: u32; + readonly nonFungible: u32; + readonly offChain: u32; + } + + /** @name PalletStatisticsCall (515) */ export interface PalletStatisticsCall extends Enum { readonly isSetActiveAssetStats: boolean; readonly asSetActiveAssetStats: { @@ -3984,7 +4115,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetActiveAssetStats' | 'BatchUpdateAssetStats' | 'SetAssetTransferCompliance' | 'SetEntitiesExempt'; } - /** @name PalletStoCall (510) */ + /** @name PalletStoCall (519) */ export interface PalletStoCall extends Enum { readonly isCreateFundraiser: boolean; readonly asCreateFundraiser: { @@ -4034,13 +4165,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateFundraiser' | 'Invest' | 'FreezeFundraiser' | 'UnfreezeFundraiser' | 'ModifyFundraiserWindow' | 'Stop'; } - /** @name PalletStoPriceTier (512) */ + /** @name PalletStoPriceTier (521) */ export interface PalletStoPriceTier extends Struct { readonly total: u128; readonly price: u128; } - /** @name PalletTreasuryCall (514) */ + /** @name PalletTreasuryCall (523) */ export interface PalletTreasuryCall extends Enum { readonly isDisbursement: boolean; readonly asDisbursement: { @@ -4053,13 +4184,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'Disbursement' | 'Reimbursement'; } - /** @name PolymeshPrimitivesBeneficiary (516) */ + /** @name PolymeshPrimitivesBeneficiary (525) */ export interface PolymeshPrimitivesBeneficiary extends Struct { readonly id: PolymeshPrimitivesIdentityId; readonly amount: u128; } - /** @name PalletUtilityCall (517) */ + /** @name PalletUtilityCall (526) */ export interface PalletUtilityCall extends Enum { readonly isBatch: boolean; readonly asBatch: { @@ -4101,16 +4232,21 @@ declare module '@polkadot/types/lookup' { readonly asBatchOptimistic: { readonly calls: Vec; } & Struct; - readonly type: 'Batch' | 'RelayTx' | 'BatchAll' | 'DispatchAs' | 'ForceBatch' | 'WithWeight' | 'BatchOld' | 'BatchAtomic' | 'BatchOptimistic'; + readonly isAsDerivative: boolean; + readonly asAsDerivative: { + readonly index: u16; + readonly call: Call; + } & Struct; + readonly type: 'Batch' | 'RelayTx' | 'BatchAll' | 'DispatchAs' | 'ForceBatch' | 'WithWeight' | 'BatchOld' | 'BatchAtomic' | 'BatchOptimistic' | 'AsDerivative'; } - /** @name PalletUtilityUniqueCall (519) */ + /** @name PalletUtilityUniqueCall (528) */ export interface PalletUtilityUniqueCall extends Struct { readonly nonce: u64; readonly call: Call; } - /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (520) */ + /** @name PolymeshRuntimeDevelopRuntimeOriginCaller (529) */ export interface PolymeshRuntimeDevelopRuntimeOriginCaller extends Enum { readonly isSystem: boolean; readonly asSystem: FrameSupportDispatchRawOrigin; @@ -4124,7 +4260,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'System' | 'Void' | 'PolymeshCommittee' | 'TechnicalCommittee' | 'UpgradeCommittee'; } - /** @name FrameSupportDispatchRawOrigin (521) */ + /** @name FrameSupportDispatchRawOrigin (530) */ export interface FrameSupportDispatchRawOrigin extends Enum { readonly isRoot: boolean; readonly isSigned: boolean; @@ -4133,31 +4269,31 @@ declare module '@polkadot/types/lookup' { readonly type: 'Root' | 'Signed' | 'None'; } - /** @name PalletCommitteeRawOriginInstance1 (522) */ + /** @name PalletCommitteeRawOriginInstance1 (531) */ export interface PalletCommitteeRawOriginInstance1 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance3 (523) */ + /** @name PalletCommitteeRawOriginInstance3 (532) */ export interface PalletCommitteeRawOriginInstance3 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name PalletCommitteeRawOriginInstance4 (524) */ + /** @name PalletCommitteeRawOriginInstance4 (533) */ export interface PalletCommitteeRawOriginInstance4 extends Enum { readonly isEndorsed: boolean; readonly type: 'Endorsed'; } - /** @name SpCoreVoid (525) */ + /** @name SpCoreVoid (534) */ export type SpCoreVoid = Null; - /** @name PalletBaseCall (526) */ + /** @name PalletBaseCall (535) */ export type PalletBaseCall = Null; - /** @name PalletExternalAgentsCall (527) */ + /** @name PalletExternalAgentsCall (536) */ export interface PalletExternalAgentsCall extends Enum { readonly isCreateGroup: boolean; readonly asCreateGroup: { @@ -4205,7 +4341,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CreateGroup' | 'SetGroupPermissions' | 'RemoveAgent' | 'Abdicate' | 'ChangeGroup' | 'AcceptBecomeAgent' | 'CreateGroupAndAddAuth' | 'CreateAndChangeCustomGroup'; } - /** @name PalletRelayerCall (528) */ + /** @name PalletRelayerCall (537) */ export interface PalletRelayerCall extends Enum { readonly isSetPayingKey: boolean; readonly asSetPayingKey: { @@ -4239,31 +4375,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'SetPayingKey' | 'AcceptPayingKey' | 'RemovePayingKey' | 'UpdatePolyxLimit' | 'IncreasePolyxLimit' | 'DecreasePolyxLimit'; } - /** @name PalletRewardsCall (529) */ - export interface PalletRewardsCall extends Enum { - readonly isClaimItnReward: boolean; - readonly asClaimItnReward: { - readonly rewardAddress: AccountId32; - readonly itnAddress: AccountId32; - readonly signature: SpRuntimeMultiSignature; - } & Struct; - readonly isSetItnRewardStatus: boolean; - readonly asSetItnRewardStatus: { - readonly itnAddress: AccountId32; - readonly status: PalletRewardsItnRewardStatus; - } & Struct; - readonly type: 'ClaimItnReward' | 'SetItnRewardStatus'; - } - - /** @name PalletRewardsItnRewardStatus (530) */ - export interface PalletRewardsItnRewardStatus extends Enum { - readonly isUnclaimed: boolean; - readonly asUnclaimed: u128; - readonly isClaimed: boolean; - readonly type: 'Unclaimed' | 'Claimed'; - } - - /** @name PalletContractsCall (531) */ + /** @name PalletContractsCall (538) */ export interface PalletContractsCall extends Enum { readonly isCallOldWeight: boolean; readonly asCallOldWeight: { @@ -4335,14 +4447,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CallOldWeight' | 'InstantiateWithCodeOldWeight' | 'InstantiateOldWeight' | 'UploadCode' | 'RemoveCode' | 'SetCode' | 'Call' | 'InstantiateWithCode' | 'Instantiate'; } - /** @name PalletContractsWasmDeterminism (535) */ + /** @name PalletContractsWasmDeterminism (542) */ export interface PalletContractsWasmDeterminism extends Enum { readonly isDeterministic: boolean; readonly isAllowIndeterminism: boolean; readonly type: 'Deterministic' | 'AllowIndeterminism'; } - /** @name PolymeshContractsCall (536) */ + /** @name PolymeshContractsCall (543) */ export interface PolymeshContractsCall extends Enum { readonly isInstantiateWithCodePerms: boolean; readonly asInstantiateWithCodePerms: { @@ -4368,13 +4480,44 @@ declare module '@polkadot/types/lookup' { readonly asUpdateCallRuntimeWhitelist: { readonly updates: Vec>; } & Struct; - readonly type: 'InstantiateWithCodePerms' | 'InstantiateWithHashPerms' | 'UpdateCallRuntimeWhitelist'; + readonly isInstantiateWithCodeAsPrimaryKey: boolean; + readonly asInstantiateWithCodeAsPrimaryKey: { + readonly endowment: u128; + readonly gasLimit: SpWeightsWeightV2Weight; + readonly storageDepositLimit: Option; + readonly code: Bytes; + readonly data: Bytes; + readonly salt: Bytes; + } & Struct; + readonly isInstantiateWithHashAsPrimaryKey: boolean; + readonly asInstantiateWithHashAsPrimaryKey: { + readonly endowment: u128; + readonly gasLimit: SpWeightsWeightV2Weight; + readonly storageDepositLimit: Option; + readonly codeHash: H256; + readonly data: Bytes; + readonly salt: Bytes; + } & Struct; + readonly isUpgradeApi: boolean; + readonly asUpgradeApi: { + readonly api: PolymeshContractsApi; + readonly nextUpgrade: PolymeshContractsNextUpgrade; + } & Struct; + readonly type: 'InstantiateWithCodePerms' | 'InstantiateWithHashPerms' | 'UpdateCallRuntimeWhitelist' | 'InstantiateWithCodeAsPrimaryKey' | 'InstantiateWithHashAsPrimaryKey' | 'UpgradeApi'; } - /** @name PolymeshContractsChainExtensionExtrinsicId (539) */ - export interface PolymeshContractsChainExtensionExtrinsicId extends ITuple<[u8, u8]> {} + /** @name PolymeshContractsNextUpgrade (546) */ + export interface PolymeshContractsNextUpgrade extends Struct { + readonly chainVersion: PolymeshContractsChainVersion; + readonly apiHash: PolymeshContractsApiCodeHash; + } - /** @name PalletPreimageCall (540) */ + /** @name PolymeshContractsApiCodeHash (547) */ + export interface PolymeshContractsApiCodeHash extends Struct { + readonly hash_: H256; + } + + /** @name PalletPreimageCall (548) */ export interface PalletPreimageCall extends Enum { readonly isNotePreimage: boolean; readonly asNotePreimage: { @@ -4395,7 +4538,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotePreimage' | 'UnnotePreimage' | 'RequestPreimage' | 'UnrequestPreimage'; } - /** @name PalletNftCall (541) */ + /** @name PalletNftCall (549) */ export interface PalletNftCall extends Enum { readonly isCreateNftCollection: boolean; readonly asCreateNftCollection: { @@ -4415,19 +4558,26 @@ declare module '@polkadot/types/lookup' { readonly nftId: u64; readonly portfolioKind: PolymeshPrimitivesIdentityIdPortfolioKind; } & Struct; - readonly type: 'CreateNftCollection' | 'IssueNft' | 'RedeemNft'; + readonly isControllerTransfer: boolean; + readonly asControllerTransfer: { + readonly ticker: PolymeshPrimitivesTicker; + readonly nfts: PolymeshPrimitivesNftNfTs; + readonly sourcePortfolio: PolymeshPrimitivesIdentityIdPortfolioId; + readonly callersPortfolioKind: PolymeshPrimitivesIdentityIdPortfolioKind; + } & Struct; + readonly type: 'CreateNftCollection' | 'IssueNft' | 'RedeemNft' | 'ControllerTransfer'; } - /** @name PolymeshPrimitivesNftNftCollectionKeys (543) */ + /** @name PolymeshPrimitivesNftNftCollectionKeys (551) */ export interface PolymeshPrimitivesNftNftCollectionKeys extends Vec {} - /** @name PolymeshPrimitivesNftNftMetadataAttribute (546) */ + /** @name PolymeshPrimitivesNftNftMetadataAttribute (554) */ export interface PolymeshPrimitivesNftNftMetadataAttribute extends Struct { readonly key: PolymeshPrimitivesAssetMetadataAssetMetadataKey; readonly value: Bytes; } - /** @name PalletTestUtilsCall (547) */ + /** @name PalletTestUtilsCall (555) */ export interface PalletTestUtilsCall extends Enum { readonly isRegisterDid: boolean; readonly asRegisterDid: { @@ -4445,7 +4595,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RegisterDid' | 'MockCddRegisterDid' | 'GetMyDid' | 'GetCddOf'; } - /** @name PalletCommitteePolymeshVotes (548) */ + /** @name PalletCommitteePolymeshVotes (556) */ export interface PalletCommitteePolymeshVotes extends Struct { readonly index: u32; readonly ayes: Vec; @@ -4453,7 +4603,7 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletCommitteeError (550) */ + /** @name PalletCommitteeError (558) */ export interface PalletCommitteeError extends Enum { readonly isDuplicateVote: boolean; readonly isNotAMember: boolean; @@ -4467,7 +4617,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DuplicateVote' | 'NotAMember' | 'NoSuchProposal' | 'ProposalExpired' | 'DuplicateProposal' | 'MismatchedVotingIndex' | 'InvalidProportion' | 'FirstVoteReject' | 'ProposalsLimitReached'; } - /** @name PolymeshPrimitivesMultisigProposalDetails (560) */ + /** @name PolymeshPrimitivesMultisigProposalDetails (568) */ export interface PolymeshPrimitivesMultisigProposalDetails extends Struct { readonly approvals: u64; readonly rejections: u64; @@ -4476,7 +4626,7 @@ declare module '@polkadot/types/lookup' { readonly autoClose: bool; } - /** @name PolymeshPrimitivesMultisigProposalStatus (561) */ + /** @name PolymeshPrimitivesMultisigProposalStatus (569) */ export interface PolymeshPrimitivesMultisigProposalStatus extends Enum { readonly isInvalid: boolean; readonly isActiveOrExpired: boolean; @@ -4486,7 +4636,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Invalid' | 'ActiveOrExpired' | 'ExecutionSuccessful' | 'ExecutionFailed' | 'Rejected'; } - /** @name PalletMultisigError (563) */ + /** @name PalletMultisigError (571) */ export interface PalletMultisigError extends Enum { readonly isCddMissing: boolean; readonly isProposalMissing: boolean; @@ -4517,7 +4667,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'CddMissing' | 'ProposalMissing' | 'DecodingError' | 'NoSigners' | 'RequiredSignaturesOutOfBounds' | 'NotASigner' | 'NoSuchMultisig' | 'NotEnoughSigners' | 'NonceOverflow' | 'AlreadyVoted' | 'AlreadyASigner' | 'FailedToChargeFee' | 'IdentityNotCreator' | 'ChangeNotAllowed' | 'SignerAlreadyLinkedToMultisig' | 'SignerAlreadyLinkedToIdentity' | 'MultisigNotAllowedToLinkToItself' | 'MissingCurrentIdentity' | 'NotPrimaryKey' | 'ProposalAlreadyRejected' | 'ProposalExpired' | 'ProposalAlreadyExecuted' | 'MultisigMissingIdentity' | 'FailedToSchedule' | 'TooManySigners' | 'CreatorControlsHaveBeenRemoved'; } - /** @name PalletBridgeBridgeTxDetail (565) */ + /** @name PalletBridgeBridgeTxDetail (573) */ export interface PalletBridgeBridgeTxDetail extends Struct { readonly amount: u128; readonly status: PalletBridgeBridgeTxStatus; @@ -4525,7 +4675,7 @@ declare module '@polkadot/types/lookup' { readonly txHash: H256; } - /** @name PalletBridgeBridgeTxStatus (566) */ + /** @name PalletBridgeBridgeTxStatus (574) */ export interface PalletBridgeBridgeTxStatus extends Enum { readonly isAbsent: boolean; readonly isPending: boolean; @@ -4536,7 +4686,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Absent' | 'Pending' | 'Frozen' | 'Timelocked' | 'Handled'; } - /** @name PalletBridgeError (569) */ + /** @name PalletBridgeError (577) */ export interface PalletBridgeError extends Enum { readonly isControllerNotSet: boolean; readonly isBadCaller: boolean; @@ -4554,7 +4704,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'ControllerNotSet' | 'BadCaller' | 'BadAdmin' | 'NoValidCdd' | 'ProposalAlreadyHandled' | 'Unauthorized' | 'Frozen' | 'NotFrozen' | 'FrozenTx' | 'BridgeLimitReached' | 'Overflow' | 'DivisionByZero' | 'TimelockedTx'; } - /** @name PalletStakingStakingLedger (570) */ + /** @name PalletStakingStakingLedger (578) */ export interface PalletStakingStakingLedger extends Struct { readonly stash: AccountId32; readonly total: Compact; @@ -4563,32 +4713,32 @@ declare module '@polkadot/types/lookup' { readonly claimedRewards: Vec; } - /** @name PalletStakingUnlockChunk (572) */ + /** @name PalletStakingUnlockChunk (580) */ export interface PalletStakingUnlockChunk extends Struct { readonly value: Compact; readonly era: Compact; } - /** @name PalletStakingNominations (573) */ + /** @name PalletStakingNominations (581) */ export interface PalletStakingNominations extends Struct { readonly targets: Vec; readonly submittedIn: u32; readonly suppressed: bool; } - /** @name PalletStakingActiveEraInfo (574) */ + /** @name PalletStakingActiveEraInfo (583) */ export interface PalletStakingActiveEraInfo extends Struct { readonly index: u32; readonly start: Option; } - /** @name PalletStakingEraRewardPoints (576) */ + /** @name PalletStakingEraRewardPoints (585) */ export interface PalletStakingEraRewardPoints extends Struct { readonly total: u32; readonly individual: BTreeMap; } - /** @name PalletStakingForcing (579) */ + /** @name PalletStakingForcing (588) */ export interface PalletStakingForcing extends Enum { readonly isNotForcing: boolean; readonly isForceNew: boolean; @@ -4597,7 +4747,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotForcing' | 'ForceNew' | 'ForceNone' | 'ForceAlways'; } - /** @name PalletStakingUnappliedSlash (581) */ + /** @name PalletStakingUnappliedSlash (590) */ export interface PalletStakingUnappliedSlash extends Struct { readonly validator: AccountId32; readonly own: u128; @@ -4606,7 +4756,7 @@ declare module '@polkadot/types/lookup' { readonly payout: u128; } - /** @name PalletStakingSlashingSlashingSpans (585) */ + /** @name PalletStakingSlashingSlashingSpans (594) */ export interface PalletStakingSlashingSlashingSpans extends Struct { readonly spanIndex: u32; readonly lastStart: u32; @@ -4614,20 +4764,20 @@ declare module '@polkadot/types/lookup' { readonly prior: Vec; } - /** @name PalletStakingSlashingSpanRecord (586) */ + /** @name PalletStakingSlashingSpanRecord (595) */ export interface PalletStakingSlashingSpanRecord extends Struct { readonly slashed: u128; readonly paidOut: u128; } - /** @name PalletStakingElectionResult (589) */ + /** @name PalletStakingElectionResult (598) */ export interface PalletStakingElectionResult extends Struct { readonly electedStashes: Vec; readonly exposures: Vec>; readonly compute: PalletStakingElectionCompute; } - /** @name PalletStakingElectionStatus (590) */ + /** @name PalletStakingElectionStatus (599) */ export interface PalletStakingElectionStatus extends Enum { readonly isClosed: boolean; readonly isOpen: boolean; @@ -4635,27 +4785,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'Closed' | 'Open'; } - /** @name PalletStakingPermissionedIdentityPrefs (591) */ + /** @name PalletStakingPermissionedIdentityPrefs (600) */ export interface PalletStakingPermissionedIdentityPrefs extends Struct { readonly intendedCount: u32; readonly runningCount: u32; } - /** @name PalletStakingReleases (592) */ - export interface PalletStakingReleases extends Enum { - readonly isV100Ancient: boolean; - readonly isV200: boolean; - readonly isV300: boolean; - readonly isV400: boolean; - readonly isV500: boolean; - readonly isV600: boolean; - readonly isV601: boolean; - readonly isV700: boolean; - readonly type: 'V100Ancient' | 'V200' | 'V300' | 'V400' | 'V500' | 'V600' | 'V601' | 'V700'; - } - - /** @name PalletStakingError (594) */ - export interface PalletStakingError extends Enum { + /** @name PalletStakingPalletError (601) */ + export interface PalletStakingPalletError extends Enum { readonly isNotController: boolean; readonly isNotStash: boolean; readonly isAlreadyBonded: boolean; @@ -4699,19 +4836,21 @@ declare module '@polkadot/types/lookup' { readonly isTooManyTargets: boolean; readonly isBadTarget: boolean; readonly isInvalidValidatorUnbondAmount: boolean; - readonly type: 'NotController' | 'NotStash' | 'AlreadyBonded' | 'AlreadyPaired' | 'EmptyTargets' | 'InvalidSlashIndex' | 'InsufficientValue' | 'NoMoreChunks' | 'NoUnlockChunk' | 'FundedTarget' | 'InvalidEraToReward' | 'NotSortedAndUnique' | 'AlreadyClaimed' | 'OffchainElectionEarlySubmission' | 'OffchainElectionWeakSubmission' | 'SnapshotUnavailable' | 'OffchainElectionBogusWinnerCount' | 'OffchainElectionBogusWinner' | 'OffchainElectionBogusCompact' | 'OffchainElectionBogusNominator' | 'OffchainElectionBogusNomination' | 'OffchainElectionSlashedNomination' | 'OffchainElectionBogusSelfVote' | 'OffchainElectionBogusEdge' | 'OffchainElectionBogusScore' | 'OffchainElectionBogusElectionSize' | 'CallNotAllowed' | 'IncorrectSlashingSpans' | 'AlreadyExists' | 'NotExists' | 'NoChange' | 'InvalidValidatorIdentity' | 'InvalidValidatorCommission' | 'StashIdentityDoesNotExist' | 'StashIdentityNotPermissioned' | 'StashIdentityNotCDDed' | 'HitIntendedValidatorCount' | 'IntendedCountIsExceedingConsensusLimit' | 'BondTooSmall' | 'BadState' | 'TooManyTargets' | 'BadTarget' | 'InvalidValidatorUnbondAmount'; + readonly isBoundNotMet: boolean; + readonly isTooManyNominators: boolean; + readonly type: 'NotController' | 'NotStash' | 'AlreadyBonded' | 'AlreadyPaired' | 'EmptyTargets' | 'InvalidSlashIndex' | 'InsufficientValue' | 'NoMoreChunks' | 'NoUnlockChunk' | 'FundedTarget' | 'InvalidEraToReward' | 'NotSortedAndUnique' | 'AlreadyClaimed' | 'OffchainElectionEarlySubmission' | 'OffchainElectionWeakSubmission' | 'SnapshotUnavailable' | 'OffchainElectionBogusWinnerCount' | 'OffchainElectionBogusWinner' | 'OffchainElectionBogusCompact' | 'OffchainElectionBogusNominator' | 'OffchainElectionBogusNomination' | 'OffchainElectionSlashedNomination' | 'OffchainElectionBogusSelfVote' | 'OffchainElectionBogusEdge' | 'OffchainElectionBogusScore' | 'OffchainElectionBogusElectionSize' | 'CallNotAllowed' | 'IncorrectSlashingSpans' | 'AlreadyExists' | 'NotExists' | 'NoChange' | 'InvalidValidatorIdentity' | 'InvalidValidatorCommission' | 'StashIdentityDoesNotExist' | 'StashIdentityNotPermissioned' | 'StashIdentityNotCDDed' | 'HitIntendedValidatorCount' | 'IntendedCountIsExceedingConsensusLimit' | 'BondTooSmall' | 'BadState' | 'TooManyTargets' | 'BadTarget' | 'InvalidValidatorUnbondAmount' | 'BoundNotMet' | 'TooManyNominators'; } - /** @name SpStakingOffenceOffenceDetails (595) */ + /** @name SpStakingOffenceOffenceDetails (602) */ export interface SpStakingOffenceOffenceDetails extends Struct { readonly offender: ITuple<[AccountId32, PalletStakingExposure]>; readonly reporters: Vec; } - /** @name SpCoreCryptoKeyTypeId (600) */ + /** @name SpCoreCryptoKeyTypeId (607) */ export interface SpCoreCryptoKeyTypeId extends U8aFixed {} - /** @name PalletSessionError (601) */ + /** @name PalletSessionError (608) */ export interface PalletSessionError extends Enum { readonly isInvalidProof: boolean; readonly isNoAssociatedValidatorId: boolean; @@ -4721,7 +4860,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidProof' | 'NoAssociatedValidatorId' | 'DuplicatedKey' | 'NoKeys' | 'NoAccount'; } - /** @name PalletGrandpaStoredState (602) */ + /** @name PalletGrandpaStoredState (609) */ export interface PalletGrandpaStoredState extends Enum { readonly isLive: boolean; readonly isPendingPause: boolean; @@ -4738,7 +4877,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Live' | 'PendingPause' | 'Paused' | 'PendingResume'; } - /** @name PalletGrandpaStoredPendingChange (603) */ + /** @name PalletGrandpaStoredPendingChange (610) */ export interface PalletGrandpaStoredPendingChange extends Struct { readonly scheduledAt: u32; readonly delay: u32; @@ -4746,7 +4885,7 @@ declare module '@polkadot/types/lookup' { readonly forced: Option; } - /** @name PalletGrandpaError (605) */ + /** @name PalletGrandpaError (612) */ export interface PalletGrandpaError extends Enum { readonly isPauseFailed: boolean; readonly isResumeFailed: boolean; @@ -4758,38 +4897,38 @@ declare module '@polkadot/types/lookup' { readonly type: 'PauseFailed' | 'ResumeFailed' | 'ChangePending' | 'TooSoon' | 'InvalidKeyOwnershipProof' | 'InvalidEquivocationProof' | 'DuplicateOffenceReport'; } - /** @name PalletImOnlineBoundedOpaqueNetworkState (609) */ + /** @name PalletImOnlineBoundedOpaqueNetworkState (616) */ export interface PalletImOnlineBoundedOpaqueNetworkState extends Struct { readonly peerId: Bytes; readonly externalAddresses: Vec; } - /** @name PalletImOnlineError (613) */ + /** @name PalletImOnlineError (620) */ export interface PalletImOnlineError extends Enum { readonly isInvalidKey: boolean; readonly isDuplicatedHeartbeat: boolean; readonly type: 'InvalidKey' | 'DuplicatedHeartbeat'; } - /** @name PalletSudoError (615) */ + /** @name PalletSudoError (622) */ export interface PalletSudoError extends Enum { readonly isRequireSudo: boolean; readonly type: 'RequireSudo'; } - /** @name PalletAssetTickerRegistration (616) */ + /** @name PalletAssetTickerRegistration (623) */ export interface PalletAssetTickerRegistration extends Struct { readonly owner: PolymeshPrimitivesIdentityId; readonly expiry: Option; } - /** @name PalletAssetTickerRegistrationConfig (617) */ + /** @name PalletAssetTickerRegistrationConfig (624) */ export interface PalletAssetTickerRegistrationConfig extends Struct { readonly maxTickerLength: u8; readonly registrationLength: Option; } - /** @name PalletAssetSecurityToken (618) */ + /** @name PalletAssetSecurityToken (625) */ export interface PalletAssetSecurityToken extends Struct { readonly totalSupply: u128; readonly ownerDid: PolymeshPrimitivesIdentityId; @@ -4797,7 +4936,7 @@ declare module '@polkadot/types/lookup' { readonly assetType: PolymeshPrimitivesAssetAssetType; } - /** @name PalletAssetAssetOwnershipRelation (622) */ + /** @name PalletAssetAssetOwnershipRelation (629) */ export interface PalletAssetAssetOwnershipRelation extends Enum { readonly isNotOwned: boolean; readonly isTickerOwned: boolean; @@ -4805,7 +4944,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'NotOwned' | 'TickerOwned' | 'AssetOwned'; } - /** @name PalletAssetError (628) */ + /** @name PalletAssetError (635) */ export interface PalletAssetError extends Enum { readonly isUnauthorized: boolean; readonly isAssetAlreadyCreated: boolean; @@ -4844,10 +4983,14 @@ declare module '@polkadot/types/lookup' { readonly isIncompatibleAssetTypeUpdate: boolean; readonly isAssetMetadataKeyBelongsToNFTCollection: boolean; readonly isAssetMetadataValueIsEmpty: boolean; - readonly type: 'Unauthorized' | 'AssetAlreadyCreated' | 'TickerTooLong' | 'TickerNotAlphanumeric' | 'TickerAlreadyRegistered' | 'TotalSupplyAboveLimit' | 'NoSuchAsset' | 'AlreadyFrozen' | 'NotAnOwner' | 'BalanceOverflow' | 'TotalSupplyOverflow' | 'InvalidGranularity' | 'NotFrozen' | 'InvalidTransfer' | 'InsufficientBalance' | 'AssetAlreadyDivisible' | 'InvalidEthereumSignature' | 'TickerRegistrationExpired' | 'SenderSameAsReceiver' | 'NoSuchDoc' | 'MaxLengthOfAssetNameExceeded' | 'FundingRoundNameMaxLengthExceeded' | 'InvalidAssetIdentifier' | 'InvestorUniquenessClaimNotAllowed' | 'InvalidCustomAssetTypeId' | 'AssetMetadataNameMaxLengthExceeded' | 'AssetMetadataValueMaxLengthExceeded' | 'AssetMetadataTypeDefMaxLengthExceeded' | 'AssetMetadataKeyIsMissing' | 'AssetMetadataValueIsLocked' | 'AssetMetadataLocalKeyAlreadyExists' | 'AssetMetadataGlobalKeyAlreadyExists' | 'TickerFirstByteNotValid' | 'UnexpectedNonFungibleToken' | 'IncompatibleAssetTypeUpdate' | 'AssetMetadataKeyBelongsToNFTCollection' | 'AssetMetadataValueIsEmpty'; + readonly isNumberOfAssetMediatorsExceeded: boolean; + readonly isInvalidTickerCharacter: boolean; + readonly isInvalidTransferFrozenAsset: boolean; + readonly isInvalidTransferComplianceFailure: boolean; + readonly type: 'Unauthorized' | 'AssetAlreadyCreated' | 'TickerTooLong' | 'TickerNotAlphanumeric' | 'TickerAlreadyRegistered' | 'TotalSupplyAboveLimit' | 'NoSuchAsset' | 'AlreadyFrozen' | 'NotAnOwner' | 'BalanceOverflow' | 'TotalSupplyOverflow' | 'InvalidGranularity' | 'NotFrozen' | 'InvalidTransfer' | 'InsufficientBalance' | 'AssetAlreadyDivisible' | 'InvalidEthereumSignature' | 'TickerRegistrationExpired' | 'SenderSameAsReceiver' | 'NoSuchDoc' | 'MaxLengthOfAssetNameExceeded' | 'FundingRoundNameMaxLengthExceeded' | 'InvalidAssetIdentifier' | 'InvestorUniquenessClaimNotAllowed' | 'InvalidCustomAssetTypeId' | 'AssetMetadataNameMaxLengthExceeded' | 'AssetMetadataValueMaxLengthExceeded' | 'AssetMetadataTypeDefMaxLengthExceeded' | 'AssetMetadataKeyIsMissing' | 'AssetMetadataValueIsLocked' | 'AssetMetadataLocalKeyAlreadyExists' | 'AssetMetadataGlobalKeyAlreadyExists' | 'TickerFirstByteNotValid' | 'UnexpectedNonFungibleToken' | 'IncompatibleAssetTypeUpdate' | 'AssetMetadataKeyBelongsToNFTCollection' | 'AssetMetadataValueIsEmpty' | 'NumberOfAssetMediatorsExceeded' | 'InvalidTickerCharacter' | 'InvalidTransferFrozenAsset' | 'InvalidTransferComplianceFailure'; } - /** @name PalletCorporateActionsDistributionError (631) */ + /** @name PalletCorporateActionsDistributionError (638) */ export interface PalletCorporateActionsDistributionError extends Enum { readonly isCaNotBenefit: boolean; readonly isAlreadyExists: boolean; @@ -4867,14 +5010,14 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotBenefit' | 'AlreadyExists' | 'ExpiryBeforePayment' | 'HolderAlreadyPaid' | 'NoSuchDistribution' | 'CannotClaimBeforeStart' | 'CannotClaimAfterExpiry' | 'BalancePerShareProductOverflowed' | 'NotDistributionCreator' | 'AlreadyReclaimed' | 'NotExpired' | 'DistributionStarted' | 'InsufficientRemainingAmount' | 'DistributionAmountIsZero' | 'DistributionPerShareIsZero'; } - /** @name PolymeshCommonUtilitiesCheckpointNextCheckpoints (635) */ + /** @name PolymeshCommonUtilitiesCheckpointNextCheckpoints (642) */ export interface PolymeshCommonUtilitiesCheckpointNextCheckpoints extends Struct { readonly nextAt: u64; readonly totalPending: u64; readonly schedules: BTreeMap; } - /** @name PalletAssetCheckpointError (641) */ + /** @name PalletAssetCheckpointError (648) */ export interface PalletAssetCheckpointError extends Enum { readonly isNoSuchSchedule: boolean; readonly isScheduleNotRemovable: boolean; @@ -4885,13 +5028,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchSchedule' | 'ScheduleNotRemovable' | 'SchedulesOverMaxComplexity' | 'ScheduleIsEmpty' | 'ScheduleFinished' | 'ScheduleHasExpiredCheckpoints'; } - /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (642) */ + /** @name PolymeshPrimitivesComplianceManagerAssetCompliance (649) */ export interface PolymeshPrimitivesComplianceManagerAssetCompliance extends Struct { readonly paused: bool; readonly requirements: Vec; } - /** @name PalletComplianceManagerError (644) */ + /** @name PalletComplianceManagerError (651) */ export interface PalletComplianceManagerError extends Enum { readonly isUnauthorized: boolean; readonly isDidNotExist: boolean; @@ -4903,7 +5046,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'DidNotExist' | 'InvalidComplianceRequirementId' | 'IncorrectOperationOnTrustedIssuer' | 'DuplicateComplianceRequirements' | 'ComplianceRequirementTooComplex' | 'WeightLimitExceeded'; } - /** @name PalletCorporateActionsError (647) */ + /** @name PalletCorporateActionsError (654) */ export interface PalletCorporateActionsError extends Enum { readonly isDetailsTooLong: boolean; readonly isDuplicateDidTax: boolean; @@ -4919,7 +5062,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'DetailsTooLong' | 'DuplicateDidTax' | 'TooManyDidTaxes' | 'TooManyTargetIds' | 'NoSuchCheckpointId' | 'NoSuchCA' | 'NoRecordDate' | 'RecordDateAfterStart' | 'DeclDateAfterRecordDate' | 'DeclDateInFuture' | 'NotTargetedByCA'; } - /** @name PalletCorporateActionsBallotError (649) */ + /** @name PalletCorporateActionsBallotError (656) */ export interface PalletCorporateActionsBallotError extends Enum { readonly isCaNotNotice: boolean; readonly isAlreadyExists: boolean; @@ -4938,13 +5081,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'CaNotNotice' | 'AlreadyExists' | 'NoSuchBallot' | 'StartAfterEnd' | 'NowAfterEnd' | 'NumberOfChoicesOverflow' | 'VotingAlreadyStarted' | 'VotingNotStarted' | 'VotingAlreadyEnded' | 'WrongVoteCount' | 'InsufficientVotes' | 'NoSuchRCVFallback' | 'RcvSelfCycle' | 'RcvNotAllowed'; } - /** @name PalletPermissionsError (650) */ + /** @name PalletPermissionsError (657) */ export interface PalletPermissionsError extends Enum { readonly isUnauthorizedCaller: boolean; readonly type: 'UnauthorizedCaller'; } - /** @name PalletPipsPipsMetadata (651) */ + /** @name PalletPipsPipsMetadata (658) */ export interface PalletPipsPipsMetadata extends Struct { readonly id: u32; readonly url: Option; @@ -4954,20 +5097,20 @@ declare module '@polkadot/types/lookup' { readonly expiry: PolymeshCommonUtilitiesMaybeBlock; } - /** @name PalletPipsDepositInfo (653) */ + /** @name PalletPipsDepositInfo (660) */ export interface PalletPipsDepositInfo extends Struct { readonly owner: AccountId32; readonly amount: u128; } - /** @name PalletPipsPip (654) */ + /** @name PalletPipsPip (661) */ export interface PalletPipsPip extends Struct { readonly id: u32; readonly proposal: Call; readonly proposer: PalletPipsProposer; } - /** @name PalletPipsVotingResult (655) */ + /** @name PalletPipsVotingResult (662) */ export interface PalletPipsVotingResult extends Struct { readonly ayesCount: u32; readonly ayesStake: u128; @@ -4975,17 +5118,17 @@ declare module '@polkadot/types/lookup' { readonly naysStake: u128; } - /** @name PalletPipsVote (656) */ + /** @name PalletPipsVote (663) */ export interface PalletPipsVote extends ITuple<[bool, u128]> {} - /** @name PalletPipsSnapshotMetadata (657) */ + /** @name PalletPipsSnapshotMetadata (664) */ export interface PalletPipsSnapshotMetadata extends Struct { readonly createdAt: u32; readonly madeBy: AccountId32; readonly id: u32; } - /** @name PalletPipsError (659) */ + /** @name PalletPipsError (666) */ export interface PalletPipsError extends Enum { readonly isRescheduleNotByReleaseCoordinator: boolean; readonly isNotFromCommunity: boolean; @@ -5008,7 +5151,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'RescheduleNotByReleaseCoordinator' | 'NotFromCommunity' | 'NotByCommittee' | 'TooManyActivePips' | 'IncorrectDeposit' | 'InsufficientDeposit' | 'NoSuchProposal' | 'NotACommitteeMember' | 'InvalidFutureBlockNumber' | 'NumberOfVotesExceeded' | 'StakeAmountOfVotesExceeded' | 'MissingCurrentIdentity' | 'IncorrectProposalState' | 'CannotSkipPip' | 'SnapshotResultTooLarge' | 'SnapshotIdMismatch' | 'ScheduledProposalDoesntExist' | 'ProposalNotInScheduledState'; } - /** @name PalletPortfolioError (667) */ + /** @name PalletPortfolioError (674) */ export interface PalletPortfolioError extends Enum { readonly isPortfolioDoesNotExist: boolean; readonly isInsufficientPortfolioBalance: boolean; @@ -5026,10 +5169,11 @@ declare module '@polkadot/types/lookup' { readonly isInvalidTransferNFTNotOwned: boolean; readonly isInvalidTransferNFTIsLocked: boolean; readonly isEmptyTransfer: boolean; - readonly type: 'PortfolioDoesNotExist' | 'InsufficientPortfolioBalance' | 'DestinationIsSamePortfolio' | 'PortfolioNameAlreadyInUse' | 'SecondaryKeyNotAuthorizedForPortfolio' | 'UnauthorizedCustodian' | 'InsufficientTokensLocked' | 'PortfolioNotEmpty' | 'DifferentIdentityPortfolios' | 'NoDuplicateAssetsAllowed' | 'NftNotFoundInPortfolio' | 'NftAlreadyLocked' | 'NftNotLocked' | 'InvalidTransferNFTNotOwned' | 'InvalidTransferNFTIsLocked' | 'EmptyTransfer'; + readonly isMissingOwnersPermission: boolean; + readonly type: 'PortfolioDoesNotExist' | 'InsufficientPortfolioBalance' | 'DestinationIsSamePortfolio' | 'PortfolioNameAlreadyInUse' | 'SecondaryKeyNotAuthorizedForPortfolio' | 'UnauthorizedCustodian' | 'InsufficientTokensLocked' | 'PortfolioNotEmpty' | 'DifferentIdentityPortfolios' | 'NoDuplicateAssetsAllowed' | 'NftNotFoundInPortfolio' | 'NftAlreadyLocked' | 'NftNotLocked' | 'InvalidTransferNFTNotOwned' | 'InvalidTransferNFTIsLocked' | 'EmptyTransfer' | 'MissingOwnersPermission'; } - /** @name PalletProtocolFeeError (668) */ + /** @name PalletProtocolFeeError (675) */ export interface PalletProtocolFeeError extends Enum { readonly isInsufficientAccountBalance: boolean; readonly isUnHandledImbalances: boolean; @@ -5037,7 +5181,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InsufficientAccountBalance' | 'UnHandledImbalances' | 'InsufficientSubsidyBalance'; } - /** @name PalletSchedulerScheduled (671) */ + /** @name PalletSchedulerScheduled (678) */ export interface PalletSchedulerScheduled extends Struct { readonly maybeId: Option; readonly priority: u8; @@ -5046,7 +5190,7 @@ declare module '@polkadot/types/lookup' { readonly origin: PolymeshRuntimeDevelopRuntimeOriginCaller; } - /** @name FrameSupportPreimagesBounded (672) */ + /** @name FrameSupportPreimagesBounded (679) */ export interface FrameSupportPreimagesBounded extends Enum { readonly isLegacy: boolean; readonly asLegacy: { @@ -5062,7 +5206,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Legacy' | 'Inline' | 'Lookup'; } - /** @name PalletSchedulerError (675) */ + /** @name PalletSchedulerError (682) */ export interface PalletSchedulerError extends Enum { readonly isFailedToSchedule: boolean; readonly isNotFound: boolean; @@ -5072,13 +5216,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'FailedToSchedule' | 'NotFound' | 'TargetBlockNumberInPast' | 'RescheduleNoChange' | 'Named'; } - /** @name PolymeshPrimitivesSettlementVenue (676) */ + /** @name PolymeshPrimitivesSettlementVenue (683) */ export interface PolymeshPrimitivesSettlementVenue extends Struct { readonly creator: PolymeshPrimitivesIdentityId; readonly venueType: PolymeshPrimitivesSettlementVenueType; } - /** @name PolymeshPrimitivesSettlementInstruction (680) */ + /** @name PolymeshPrimitivesSettlementInstruction (687) */ export interface PolymeshPrimitivesSettlementInstruction extends Struct { readonly instructionId: u64; readonly venueId: u64; @@ -5088,7 +5232,7 @@ declare module '@polkadot/types/lookup' { readonly valueDate: Option; } - /** @name PolymeshPrimitivesSettlementLegStatus (682) */ + /** @name PolymeshPrimitivesSettlementLegStatus (689) */ export interface PolymeshPrimitivesSettlementLegStatus extends Enum { readonly isPendingTokenLock: boolean; readonly isExecutionPending: boolean; @@ -5097,7 +5241,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'PendingTokenLock' | 'ExecutionPending' | 'ExecutionToBeSkipped'; } - /** @name PolymeshPrimitivesSettlementAffirmationStatus (684) */ + /** @name PolymeshPrimitivesSettlementAffirmationStatus (691) */ export interface PolymeshPrimitivesSettlementAffirmationStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -5105,7 +5249,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Affirmed'; } - /** @name PolymeshPrimitivesSettlementInstructionStatus (688) */ + /** @name PolymeshPrimitivesSettlementInstructionStatus (695) */ export interface PolymeshPrimitivesSettlementInstructionStatus extends Enum { readonly isUnknown: boolean; readonly isPending: boolean; @@ -5117,7 +5261,18 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unknown' | 'Pending' | 'Failed' | 'Success' | 'Rejected'; } - /** @name PalletSettlementError (689) */ + /** @name PolymeshPrimitivesSettlementMediatorAffirmationStatus (697) */ + export interface PolymeshPrimitivesSettlementMediatorAffirmationStatus extends Enum { + readonly isUnknown: boolean; + readonly isPending: boolean; + readonly isAffirmed: boolean; + readonly asAffirmed: { + readonly expiry: Option; + } & Struct; + readonly type: 'Unknown' | 'Pending' | 'Affirmed'; + } + + /** @name PalletSettlementError (698) */ export interface PalletSettlementError extends Enum { readonly isInvalidVenue: boolean; readonly isUnauthorized: boolean; @@ -5158,22 +5313,26 @@ declare module '@polkadot/types/lookup' { readonly isReceiptInstructionIdMissmatch: boolean; readonly isMultipleReceiptsForOneLeg: boolean; readonly isUnexpectedLegStatus: boolean; - readonly type: 'InvalidVenue' | 'Unauthorized' | 'InstructionNotAffirmed' | 'UnauthorizedSigner' | 'ReceiptAlreadyClaimed' | 'UnauthorizedVenue' | 'InstructionDatesInvalid' | 'InstructionSettleBlockPassed' | 'InvalidSignature' | 'SameSenderReceiver' | 'SettleOnPastBlock' | 'UnexpectedAffirmationStatus' | 'FailedToSchedule' | 'UnknownInstruction' | 'SignerAlreadyExists' | 'SignerDoesNotExist' | 'ZeroAmount' | 'InstructionSettleBlockNotReached' | 'CallerIsNotAParty' | 'MaxNumberOfNFTsExceeded' | 'NumberOfTransferredNFTsUnderestimated' | 'ReceiptForInvalidLegType' | 'WeightLimitExceeded' | 'MaxNumberOfFungibleAssetsExceeded' | 'MaxNumberOfOffChainAssetsExceeded' | 'NumberOfFungibleTransfersUnderestimated' | 'UnexpectedOFFChainAsset' | 'OffChainAssetCantBeLocked' | 'NumberOfOffChainTransfersUnderestimated' | 'LegNotFound' | 'InputWeightIsLessThanMinimum' | 'MaxNumberOfReceiptsExceeded' | 'NotAllAffirmationsHaveBeenReceived' | 'InvalidInstructionStatusForExecution' | 'FailedToReleaseLockOrTransferAssets' | 'DuplicateReceiptUid' | 'ReceiptInstructionIdMissmatch' | 'MultipleReceiptsForOneLeg' | 'UnexpectedLegStatus'; + readonly isNumberOfVenueSignersExceeded: boolean; + readonly isCallerIsNotAMediator: boolean; + readonly isInvalidExpiryDate: boolean; + readonly isMediatorAffirmationExpired: boolean; + readonly type: 'InvalidVenue' | 'Unauthorized' | 'InstructionNotAffirmed' | 'UnauthorizedSigner' | 'ReceiptAlreadyClaimed' | 'UnauthorizedVenue' | 'InstructionDatesInvalid' | 'InstructionSettleBlockPassed' | 'InvalidSignature' | 'SameSenderReceiver' | 'SettleOnPastBlock' | 'UnexpectedAffirmationStatus' | 'FailedToSchedule' | 'UnknownInstruction' | 'SignerAlreadyExists' | 'SignerDoesNotExist' | 'ZeroAmount' | 'InstructionSettleBlockNotReached' | 'CallerIsNotAParty' | 'MaxNumberOfNFTsExceeded' | 'NumberOfTransferredNFTsUnderestimated' | 'ReceiptForInvalidLegType' | 'WeightLimitExceeded' | 'MaxNumberOfFungibleAssetsExceeded' | 'MaxNumberOfOffChainAssetsExceeded' | 'NumberOfFungibleTransfersUnderestimated' | 'UnexpectedOFFChainAsset' | 'OffChainAssetCantBeLocked' | 'NumberOfOffChainTransfersUnderestimated' | 'LegNotFound' | 'InputWeightIsLessThanMinimum' | 'MaxNumberOfReceiptsExceeded' | 'NotAllAffirmationsHaveBeenReceived' | 'InvalidInstructionStatusForExecution' | 'FailedToReleaseLockOrTransferAssets' | 'DuplicateReceiptUid' | 'ReceiptInstructionIdMissmatch' | 'MultipleReceiptsForOneLeg' | 'UnexpectedLegStatus' | 'NumberOfVenueSignersExceeded' | 'CallerIsNotAMediator' | 'InvalidExpiryDate' | 'MediatorAffirmationExpired'; } - /** @name PolymeshPrimitivesStatisticsStat1stKey (692) */ + /** @name PolymeshPrimitivesStatisticsStat1stKey (701) */ export interface PolymeshPrimitivesStatisticsStat1stKey extends Struct { readonly asset: PolymeshPrimitivesStatisticsAssetScope; readonly statType: PolymeshPrimitivesStatisticsStatType; } - /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (693) */ + /** @name PolymeshPrimitivesTransferComplianceAssetTransferCompliance (702) */ export interface PolymeshPrimitivesTransferComplianceAssetTransferCompliance extends Struct { readonly paused: bool; readonly requirements: BTreeSet; } - /** @name PalletStatisticsError (697) */ + /** @name PalletStatisticsError (706) */ export interface PalletStatisticsError extends Enum { readonly isInvalidTransfer: boolean; readonly isStatTypeMissing: boolean; @@ -5185,7 +5344,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidTransfer' | 'StatTypeMissing' | 'StatTypeNeededByTransferCondition' | 'CannotRemoveStatTypeInUse' | 'StatTypeLimitReached' | 'TransferConditionLimitReached' | 'WeightLimitExceeded'; } - /** @name PalletStoError (699) */ + /** @name PalletStoError (708) */ export interface PalletStoError extends Enum { readonly isUnauthorized: boolean; readonly isOverflow: boolean; @@ -5202,30 +5361,31 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unauthorized' | 'Overflow' | 'InsufficientTokensRemaining' | 'FundraiserNotFound' | 'FundraiserNotLive' | 'FundraiserClosed' | 'FundraiserExpired' | 'InvalidVenue' | 'InvalidPriceTiers' | 'InvalidOfferingWindow' | 'MaxPriceExceeded' | 'InvestmentAmountTooLow'; } - /** @name PalletTreasuryError (700) */ + /** @name PalletTreasuryError (709) */ export interface PalletTreasuryError extends Enum { readonly isInsufficientBalance: boolean; readonly isInvalidIdentity: boolean; readonly type: 'InsufficientBalance' | 'InvalidIdentity'; } - /** @name PalletUtilityError (701) */ + /** @name PalletUtilityError (710) */ export interface PalletUtilityError extends Enum { readonly isTooManyCalls: boolean; readonly isInvalidSignature: boolean; readonly isTargetCddMissing: boolean; readonly isInvalidNonce: boolean; - readonly type: 'TooManyCalls' | 'InvalidSignature' | 'TargetCddMissing' | 'InvalidNonce'; + readonly isUnableToDeriveAccountId: boolean; + readonly type: 'TooManyCalls' | 'InvalidSignature' | 'TargetCddMissing' | 'InvalidNonce' | 'UnableToDeriveAccountId'; } - /** @name PalletBaseError (702) */ + /** @name PalletBaseError (711) */ export interface PalletBaseError extends Enum { readonly isTooLong: boolean; readonly isCounterOverflow: boolean; readonly type: 'TooLong' | 'CounterOverflow'; } - /** @name PalletExternalAgentsError (704) */ + /** @name PalletExternalAgentsError (713) */ export interface PalletExternalAgentsError extends Enum { readonly isNoSuchAG: boolean; readonly isUnauthorizedAgent: boolean; @@ -5236,13 +5396,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'NoSuchAG' | 'UnauthorizedAgent' | 'AlreadyAnAgent' | 'NotAnAgent' | 'RemovingLastFullAgent' | 'SecondaryKeyNotAuthorizedForAsset'; } - /** @name PalletRelayerSubsidy (705) */ + /** @name PalletRelayerSubsidy (714) */ export interface PalletRelayerSubsidy extends Struct { readonly payingKey: AccountId32; readonly remaining: u128; } - /** @name PalletRelayerError (706) */ + /** @name PalletRelayerError (715) */ export interface PalletRelayerError extends Enum { readonly isUserKeyCddMissing: boolean; readonly isPayingKeyCddMissing: boolean; @@ -5254,16 +5414,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'UserKeyCddMissing' | 'PayingKeyCddMissing' | 'NoPayingKey' | 'NotPayingKey' | 'NotAuthorizedForPayingKey' | 'NotAuthorizedForUserKey' | 'Overflow'; } - /** @name PalletRewardsError (707) */ - export interface PalletRewardsError extends Enum { - readonly isUnknownItnAddress: boolean; - readonly isItnRewardAlreadyClaimed: boolean; - readonly isInvalidSignature: boolean; - readonly isUnableToCovertBalance: boolean; - readonly type: 'UnknownItnAddress' | 'ItnRewardAlreadyClaimed' | 'InvalidSignature' | 'UnableToCovertBalance'; - } - - /** @name PalletContractsWasmPrefabWasmModule (709) */ + /** @name PalletContractsWasmPrefabWasmModule (717) */ export interface PalletContractsWasmPrefabWasmModule extends Struct { readonly instructionWeightsVersion: Compact; readonly initial: Compact; @@ -5272,14 +5423,14 @@ declare module '@polkadot/types/lookup' { readonly determinism: PalletContractsWasmDeterminism; } - /** @name PalletContractsWasmOwnerInfo (711) */ + /** @name PalletContractsWasmOwnerInfo (719) */ export interface PalletContractsWasmOwnerInfo extends Struct { readonly owner: AccountId32; readonly deposit: Compact; readonly refcount: Compact; } - /** @name PalletContractsStorageContractInfo (712) */ + /** @name PalletContractsStorageContractInfo (720) */ export interface PalletContractsStorageContractInfo extends Struct { readonly trieId: Bytes; readonly depositAccount: AccountId32; @@ -5291,19 +5442,19 @@ declare module '@polkadot/types/lookup' { readonly storageBaseDeposit: u128; } - /** @name PalletContractsStorageDeletedContract (715) */ + /** @name PalletContractsStorageDeletedContract (723) */ export interface PalletContractsStorageDeletedContract extends Struct { readonly trieId: Bytes; } - /** @name PalletContractsSchedule (717) */ + /** @name PalletContractsSchedule (725) */ export interface PalletContractsSchedule extends Struct { readonly limits: PalletContractsScheduleLimits; readonly instructionWeights: PalletContractsScheduleInstructionWeights; readonly hostFnWeights: PalletContractsScheduleHostFnWeights; } - /** @name PalletContractsScheduleLimits (718) */ + /** @name PalletContractsScheduleLimits (726) */ export interface PalletContractsScheduleLimits extends Struct { readonly eventTopics: u32; readonly globals: u32; @@ -5316,7 +5467,7 @@ declare module '@polkadot/types/lookup' { readonly payloadLen: u32; } - /** @name PalletContractsScheduleInstructionWeights (719) */ + /** @name PalletContractsScheduleInstructionWeights (727) */ export interface PalletContractsScheduleInstructionWeights extends Struct { readonly version: u32; readonly fallback: u32; @@ -5374,7 +5525,7 @@ declare module '@polkadot/types/lookup' { readonly i64rotr: u32; } - /** @name PalletContractsScheduleHostFnWeights (720) */ + /** @name PalletContractsScheduleHostFnWeights (728) */ export interface PalletContractsScheduleHostFnWeights extends Struct { readonly caller: SpWeightsWeightV2Weight; readonly isContract: SpWeightsWeightV2Weight; @@ -5437,7 +5588,7 @@ declare module '@polkadot/types/lookup' { readonly instantiationNonce: SpWeightsWeightV2Weight; } - /** @name PalletContractsError (721) */ + /** @name PalletContractsError (729) */ export interface PalletContractsError extends Enum { readonly isInvalidScheduleVersion: boolean; readonly isInvalidCallFlags: boolean; @@ -5470,7 +5621,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'InvalidScheduleVersion' | 'InvalidCallFlags' | 'OutOfGas' | 'OutputBufferTooSmall' | 'TransferFailed' | 'MaxCallDepthReached' | 'ContractNotFound' | 'CodeTooLarge' | 'CodeNotFound' | 'OutOfBounds' | 'DecodingFailed' | 'ContractTrapped' | 'ValueTooLarge' | 'TerminatedWhileReentrant' | 'InputForwarded' | 'RandomSubjectTooLong' | 'TooManyTopics' | 'NoChainExtension' | 'DeletionQueueFull' | 'DuplicateContract' | 'TerminatedInConstructor' | 'ReentranceDenied' | 'StorageDepositNotEnoughFunds' | 'StorageDepositLimitExhausted' | 'CodeInUse' | 'ContractReverted' | 'CodeRejected' | 'Indeterministic'; } - /** @name PolymeshContractsError (722) */ + /** @name PolymeshContractsError (731) */ export interface PolymeshContractsError extends Enum { readonly isInvalidFuncId: boolean; readonly isInvalidRuntimeCall: boolean; @@ -5480,10 +5631,14 @@ declare module '@polkadot/types/lookup' { readonly isOutLenTooLarge: boolean; readonly isInstantiatorWithNoIdentity: boolean; readonly isRuntimeCallDenied: boolean; - readonly type: 'InvalidFuncId' | 'InvalidRuntimeCall' | 'ReadStorageFailed' | 'DataLeftAfterDecoding' | 'InLenTooLarge' | 'OutLenTooLarge' | 'InstantiatorWithNoIdentity' | 'RuntimeCallDenied'; + readonly isCallerNotAPrimaryKey: boolean; + readonly isMissingKeyPermissions: boolean; + readonly isInvalidChainVersion: boolean; + readonly isNoUpgradesSupported: boolean; + readonly type: 'InvalidFuncId' | 'InvalidRuntimeCall' | 'ReadStorageFailed' | 'DataLeftAfterDecoding' | 'InLenTooLarge' | 'OutLenTooLarge' | 'InstantiatorWithNoIdentity' | 'RuntimeCallDenied' | 'CallerNotAPrimaryKey' | 'MissingKeyPermissions' | 'InvalidChainVersion' | 'NoUpgradesSupported'; } - /** @name PalletPreimageRequestStatus (723) */ + /** @name PalletPreimageRequestStatus (732) */ export interface PalletPreimageRequestStatus extends Enum { readonly isUnrequested: boolean; readonly asUnrequested: { @@ -5499,7 +5654,7 @@ declare module '@polkadot/types/lookup' { readonly type: 'Unrequested' | 'Requested'; } - /** @name PalletPreimageError (727) */ + /** @name PalletPreimageError (736) */ export interface PalletPreimageError extends Enum { readonly isTooBig: boolean; readonly isAlreadyNoted: boolean; @@ -5510,13 +5665,13 @@ declare module '@polkadot/types/lookup' { readonly type: 'TooBig' | 'AlreadyNoted' | 'NotAuthorized' | 'NotNoted' | 'Requested' | 'NotRequested'; } - /** @name PolymeshPrimitivesNftNftCollection (728) */ + /** @name PolymeshPrimitivesNftNftCollection (737) */ export interface PolymeshPrimitivesNftNftCollection extends Struct { readonly id: u64; readonly ticker: PolymeshPrimitivesTicker; } - /** @name PalletNftError (732) */ + /** @name PalletNftError (742) */ export interface PalletNftError extends Enum { readonly isBalanceOverflow: boolean; readonly isBalanceUnderflow: boolean; @@ -5538,37 +5693,40 @@ declare module '@polkadot/types/lookup' { readonly isNftNotFound: boolean; readonly isUnregisteredMetadataKey: boolean; readonly isZeroCount: boolean; - readonly type: 'BalanceOverflow' | 'BalanceUnderflow' | 'CollectionAlredyRegistered' | 'CollectionNotFound' | 'DuplicateMetadataKey' | 'DuplicatedNFTId' | 'InvalidAssetType' | 'InvalidMetadataAttribute' | 'InvalidNFTTransferCollectionNotFound' | 'InvalidNFTTransferSamePortfolio' | 'InvalidNFTTransferNFTNotOwned' | 'InvalidNFTTransferCountOverflow' | 'InvalidNFTTransferComplianceFailure' | 'InvalidNFTTransferFrozenAsset' | 'InvalidNFTTransferInsufficientCount' | 'MaxNumberOfKeysExceeded' | 'MaxNumberOfNFTsPerLegExceeded' | 'NftNotFound' | 'UnregisteredMetadataKey' | 'ZeroCount'; + readonly isSupplyOverflow: boolean; + readonly isSupplyUnderflow: boolean; + readonly isInvalidNFTTransferNFTIsLocked: boolean; + readonly type: 'BalanceOverflow' | 'BalanceUnderflow' | 'CollectionAlredyRegistered' | 'CollectionNotFound' | 'DuplicateMetadataKey' | 'DuplicatedNFTId' | 'InvalidAssetType' | 'InvalidMetadataAttribute' | 'InvalidNFTTransferCollectionNotFound' | 'InvalidNFTTransferSamePortfolio' | 'InvalidNFTTransferNFTNotOwned' | 'InvalidNFTTransferCountOverflow' | 'InvalidNFTTransferComplianceFailure' | 'InvalidNFTTransferFrozenAsset' | 'InvalidNFTTransferInsufficientCount' | 'MaxNumberOfKeysExceeded' | 'MaxNumberOfNFTsPerLegExceeded' | 'NftNotFound' | 'UnregisteredMetadataKey' | 'ZeroCount' | 'SupplyOverflow' | 'SupplyUnderflow' | 'InvalidNFTTransferNFTIsLocked'; } - /** @name PalletTestUtilsError (733) */ + /** @name PalletTestUtilsError (743) */ export type PalletTestUtilsError = Null; - /** @name FrameSystemExtensionsCheckSpecVersion (736) */ + /** @name FrameSystemExtensionsCheckSpecVersion (746) */ export type FrameSystemExtensionsCheckSpecVersion = Null; - /** @name FrameSystemExtensionsCheckTxVersion (737) */ + /** @name FrameSystemExtensionsCheckTxVersion (747) */ export type FrameSystemExtensionsCheckTxVersion = Null; - /** @name FrameSystemExtensionsCheckGenesis (738) */ + /** @name FrameSystemExtensionsCheckGenesis (748) */ export type FrameSystemExtensionsCheckGenesis = Null; - /** @name FrameSystemExtensionsCheckNonce (741) */ + /** @name FrameSystemExtensionsCheckNonce (751) */ export interface FrameSystemExtensionsCheckNonce extends Compact {} - /** @name PolymeshExtensionsCheckWeight (742) */ + /** @name PolymeshExtensionsCheckWeight (752) */ export interface PolymeshExtensionsCheckWeight extends FrameSystemExtensionsCheckWeight {} - /** @name FrameSystemExtensionsCheckWeight (743) */ + /** @name FrameSystemExtensionsCheckWeight (753) */ export type FrameSystemExtensionsCheckWeight = Null; - /** @name PalletTransactionPaymentChargeTransactionPayment (744) */ + /** @name PalletTransactionPaymentChargeTransactionPayment (754) */ export interface PalletTransactionPaymentChargeTransactionPayment extends Compact {} - /** @name PalletPermissionsStoreCallMetadata (745) */ + /** @name PalletPermissionsStoreCallMetadata (755) */ export type PalletPermissionsStoreCallMetadata = Null; - /** @name PolymeshRuntimeDevelopRuntime (746) */ + /** @name PolymeshRuntimeDevelopRuntime (756) */ export type PolymeshRuntimeDevelopRuntime = Null; } // declare module