diff --git a/soroban/contracts/factory/src/lib.rs b/soroban/contracts/factory/src/lib.rs index 77c79cc..096717e 100644 --- a/soroban/contracts/factory/src/lib.rs +++ b/soroban/contracts/factory/src/lib.rs @@ -3,7 +3,8 @@ mod types; use soroban_sdk::{ - contract, contractimpl, symbol_short, vec, Address, BytesN, Env, IntoVal, Symbol, Val, Vec, + contract, contractimpl, symbol_short, vec, Address, BytesN, Env, IntoVal, String, Symbol, Val, + Vec, }; use types::{DataKey, FactoryError, ListPoolsResponse, PoolRecord, PoolSort}; diff --git a/soroban/contracts/factory/src/test.rs b/soroban/contracts/factory/src/test.rs index e0d9c02..666b934 100644 --- a/soroban/contracts/factory/src/test.rs +++ b/soroban/contracts/factory/src/test.rs @@ -154,6 +154,23 @@ fn test_double_initialize_returns_error() { ); } +#[test] +fn test_initialize_rejects_zero_address_admin() { + let env = Env::default(); + env.mock_all_auths(); + let wasm_hash = upload_farming_pool_wasm(&env); + let factory_addr = env.register(Factory, ()); + let client = FactoryClient::new(&env, &factory_addr); + let zero_admin = Address::from_string(&soroban_sdk::String::from_str( + &env, + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF", + )); + assert_eq!( + client.try_initialize(&zero_admin, &wasm_hash), + Err(Ok(FactoryError::InvalidAdmin)) + ); +} + // ── NotInitialized guard ────────────────────────────────────────────────────── #[test] diff --git a/soroban/contracts/factory/test_snapshots/test/test_initialize_rejects_zero_address_admin.1.json b/soroban/contracts/factory/test_snapshots/test/test_initialize_rejects_zero_address_admin.1.json new file mode 100644 index 0000000..bf4b7e7 --- /dev/null +++ b/soroban/contracts/factory/test_snapshots/test/test_initialize_rejects_zero_address_admin.1.json @@ -0,0 +1,92 @@ +{ + "generators": { + "address": 1, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": { + "v1": { + "ext": "v0", + "cost_inputs": { + "ext": "v0", + "n_instructions": 16197, + "n_functions": 356, + "n_globals": 4, + "n_table_entries": 5, + "n_types": 42, + "n_data_segments": 1, + "n_elem_segments": 1, + "n_imports": 24, + "n_exports": 52, + "n_data_segment_bytes": 2584 + } + } + }, + "hash": "d6c045aaf5ebfb76f3549b5d8eb66b6443b89d599edceaac80f0180c71d666b5", + "code": "0061736d01000000019e022a60027f7f017f60037f7f7f017f60017e017e60027e7e017e60037e7e7e017e6000017e60047e7e7e7e017e60027f7f0060047f7f7f7f0060017f006000017f60087e7e7f7e7e7f7e7e017f60000060027f7e0060037e7e7e017f60017f017f60027e7e0060017e017f60057f7e7e7e7e0060027e7e017f60037f7e7e0060027e7f017f60087f7e7e7f7f7e7e7f0060067e7e7e7e7e7e017e60037f7f7f0060047f7f7e7f0060057f7f7e7f7f0060047f7f7f7e0060027f7f017e60037e7e7f017e60037f7f7f017e60017f017e60037f7e7e017e60047f7e7e7e017e60057f7e7e7e7e017e60027f7e017e60057f7f7f7f7f017e60067f7e7f7f7f7f017e60037f7e7e017f60057f7f7f7f7f0060067f7e7e7e7e7f0060047f7e7e7f00029101180169015f0002016101300002017801310003016901380002016901370002016c01320003016c01310003016c01300003016c015f0004017801330005016901360003016c01370006016d01390004017601670003016d01610006017801370005016c013600020162016a0003016c013800030164015f000401780130000301760131000301760133000201620138000203e602e4020708090a0b000c090a0d0d07070e0a0a0f09090a0710090a090d090a110e0a120910110a0a1109130a11090a0d070d0a0d0a0d0a090d0f0a13110f11140911090a0e07090a0d110d09151605050305050202020503170502030502050502030205020502050205020205020502020205050202020205020200050205020202050502050202020205050502020217050203050505050202050302020202030502030505050202180d0819180d081a18181818001818181b181b181b181b181b1b1b1818001800181818181c1c1d1c1e1c07181818181818181818181818181818181f1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1818180d18181807181c1c1818071b1f1c1c1c0c202021222320231e242500181c090f2026181818181809271f0918181c0000181f182323202323202020211f20221f232021202023231e24251e110d111f0d14180507000100180001182709090912120101282912290405017001050505030100110621047f01418080c0000b7f0041ba93c0000b7f00419894c0000b7f0041a094c0000b07a90734066d656d6f727902000c6163636570745f61646d696e009101106164645f746f5f77686974656c6973740092010561646d696e0093011662617463685f6164645f746f5f77686974656c6973740094011b62617463685f72656d6f76655f66726f6d5f77686974656c6973740095011163616c63756c6174655f637265646974730096010b6372656469745f726174650097011164697361626c655f77686974656c69737400980112656d657267656e63795f776974686472617700990110656e61626c655f77686974656c697374009a01126765745f62616e6b65645f63726564697473009b01186765745f62616e6b65645f637265646974735f73706c6974009c01106765745f626f6f73745f636f6e666967009d010b6765745f63726564697473009e01136765745f6d696e5f6c6f636b5f706572696f64009f011b6765745f6d696e5f6c6f636b5f706572696f645f7365636f6e647300a001146765745f6d696e5f7374616b655f616d6f756e7400a101096765745f7374616b6500a201116765745f757365725f706f736974696f6e00a3010c6861735f706f736974696f6e00a4010a696e697469616c697a6500a5010969735f70617573656400a6010e69735f77686974656c697374656400a7010b6c6f636b5f61737365747300a801076d69677261746500a90105706175736500aa010d70617573655f7374616b696e6700ab011170617573655f7769746864726177616c7300ac010d70726f706f73655f61646d696e00ad011572656d6f76655f66726f6d5f77686974656c69737400ae010e736368656d615f76657273696f6e00af01097365745f626f6f737400b0010f7365745f6372656469745f7261746500b101157365745f676c6f62616c5f6d756c7469706c69657200b201137365745f6d696e5f6c6f636b5f706572696f6400b301147365745f6d696e5f7374616b655f616d6f756e7400b401057374616b6500b5010c746f74616c5f7374616b656400b6010e7472616e736665725f61646d696e00b7010d756e6c6f636b5f61737365747300b80107756e706175736500b9010f756e70617573655f7374616b696e6700ba0113756e70617573655f7769746864726177616c7300bb0107756e7374616b6500bc01077570677261646500bd010f6d696e5f6c6f636b5f706572696f64009f010f6765745f6372656469745f72617465009701176d696e5f6c6f636b5f706572696f645f7365636f6e647300a001015f03010a5f5f646174615f656e6403020b5f5f686561705f626173650303090e010041010b049001b002eb02e9020a9ab802e402c20102027f037e23808080800041206b22022480808080002002200020012002411f6a10b48280800022031099808080000240200129031822042002290308220585427f852004200420057c2001290310220520022903007c2206200554ad7c220585834200530d002001200637031020012003360230200120053703182002109a808080002002290300210420012002290308370328200120043703202001109b80808000360234200241206a2480808080000f0b418482c0800010f182808000000ba50302067f067e23808080800041206b2204248080808000200441086a200110c580808000200428020c210520042802082106109b808080002107200441106a10b3828080002004200441106a419887c0800010da8180800041002003200228023022086b2201200120034b1b21012005410020064101711b210502400240200720022802342206460d002004280204410020042802004101711b220920084d0d00200441106a2002290300220a2002290308220b200520062002290320220c2002290328220d2001200920086b220220012002491b220210e2808080002004290310210e2004290318210f200441106a200a200b20052007200c200d4100200120026b2202200220014b1b22024100200320096b2201200120034b1b220320022003491b10e2808080000240200f2004290318220a85427f85200f200f200a7c200e20042903107c220a200e54ad7c220e85834200530d002000200a3703002000200e3703080c020b41948ac0800010f182808000000b2000200229030020022903082005200620022903202002290328200110e2808080000b200441206a2480808080000b6c03017f017e017f23808080800041306b22012480808080002001412f6a10b38280800020012001412f6a41d882c0800010dc8180800020012903102102200020012903184200200128020041017122031b37030820002002420120031b370300200141306a2480808080000b5601037f23808080800041106b22002480808080002000410f6a10b38280800020002000410f6a41c882c0800010da818080002000280200210120002802042102200041106a2480808080002002410120014101711b0bb10401027f23808080800041e0006b2208248080808000200820043703282008200337032020082001370310200820003703082008200236021c2008200536023c200841df006a10b38280800002400240200841df006a419882c0800010dd81808000450d00410121020c010b024041a882c080002008411c6a109d808080000d00410421020c010b0240200342ffbda8507c22014280bea8505420042001200354ad7c427f7c2203427f522003427f511b450d00410321020c010b20082007420020064201562007420055220520075022091b22021b37034820082006420120021b37034041072102200642808090bbbad6adf00d56200520091b0d00200841df006a10b382808000200841df006a419882c08000200841086a10df81808000200841df006a10b382808000200841df006a41b882c08000200841106a10df81808000200841df006a10b382808000200841df006a41c882c080002008411c6a10e081808000200841df006a10b382808000200841df006a41d882c08000200841206a10de81808000200841df006a10b382808000200841df006a41e882c080002008413c6a10e081808000200841df006a10b382808000200841df006a41f882c08000200841c0006a10de81808000200841df006a10b382808000200841df006a418883c0800041a083c0800010de81808000200841df006a10b382808000200841df006a41b083c0800041c083c0800010e081808000109e80808000410021020b200841e0006a24808080800020020b3a01017f4100210202402000280200200128020022014b0d0020002802042102024020002d00080d00200120024d0f0b200120024921020b20020b3e01017f23808080800041106b22002480808080002000410f6a10b3828080002000410f6a4180d21f4180a43f10b782808000200041106a2480808080000b3e01017f0240024010a0808080002201450d0020002001360204410121010c010b109e80808000200041106a109a80808000410021010b200020013602000b4501027f23808080800041106b22002480808080002000410f6a10b3828080002000410f6a419882c0800010dd818080002101200041106a2480808080004100410220011b0b860606027f067e017f017e017f017e23808080800041b0016b22022480808080002002200137033802400240024002400240024002400240024010a0808080002203450d0020002003360204410121030c010b109e80808000200241c0006a200110a28080800041012103024020022802404101470d00200020022802443602040c010b20022903682104200229036021052002290358210120022903502106200241c0006a200241386a10a38080800042002107420021084200210902402002280240410171450d0020024100360234200241206a2002290350200229035820022903702002290378200241346a10f8828080002002280234210a2002290368210b20022903602109200228028801210c200241af016a10b4828080002103200a0d02200229032821082002290320210d2002410036021c2002200d200841002003200c6b220a200a20034b1bad42002002411c6a10f882808000200228021c0d03200b2002290308220885427f85200b200b20087c200920022903007c2208200954ad7c220985834200530d040b200241c0006a200241386a10a4808080004200210b02402002280240410171450d002002290360210b2002290368210d20024190016a200241386a200241d0006a200241af016a10b482808000109980808000200d200229039801220785427f85200d200d20077c200b2002290390017c2207200b54ad7c220b8583427f570d050b2001200485427f852001200120047c200620057c2205200654ad7c220485834200530d052004200985427f852004200420097c200520087c2209200554ad7c220185834200530d062001200b85427f8520012001200b7c200920077c2204200954ad7c220985834200530d072000200437031020002009370318410021030b20002003360200200241b0016a2480808080000f0b41e483c0800010f282808000000b41e483c0800010f282808000000b41f483c0800010f182808000000b41d483c0800010f182808000000b41c483c0800010f182808000000b41c483c0800010f182808000000b41c483c0800010f182808000000bb90101027f23808080800041d0006b2202248080808000109e808080002002420e37030020022001370308200241cf006a10b382808000200241106a200241cf006a200210c781808000024020022903102201200229031884500d00200210c2808080000b200041003602002000200229033842002001a741017122031b37032820002002290330420020031b37032020002002290328420020031b37031820002002290320420020031b370310200241d0006a2480808080000b6a01017f23808080800041206b22022480808080002002420d370308200220012903003703102002411f6a10b38280800020002002411f6a200241086a10c88180800002402000290300200029030884500d00200241086a10c2808080000b200241206a2480808080000b6a01017f23808080800041206b22022480808080002002420c370308200220012903003703102002411f6a10b38280800020002002411f6a200241086a10cb8180800002402000290300200029030884500d00200241086a10c2808080000b200241206a2480808080000b880603027f037e017f2380808080004180026b2203248080808000200320023703182003200137031020032000370308200341086a10bf82808000024010a08080800022040d0010a68080800022040d0002400240200142005220024200552002501b450d0010a780808000450d01200341086a10a8808080000d01410521040c020b418484c08000412f419c84c0800010ec82808000000b200341e0006a10a980808000024020032802600d00024020012003290370542002200329037822055320022005511b450d00410621040c020b109e80808000200341ff016a10b4828080002104200341e0006a200341086a10a380808000024002402003280260410171450d00200341b0016a200341f0006a41c00010f7828080001a200341b0016a10aa80808000024020032903b8012205200285427f852005200520027c20032903b001220620017c2207200654ad7c220685834200530d00200320073703b001200320063703b8012003417f200410ab808080006a220820082004491b220420032802e4012208200420084b1b3602e401200341206a200341b0016a41c00010f7828080001a0c020b41ac84c0800010f182808000000b10ab808080002108200341c0006a109a808080002003200237032820032001370320200342003703382003420037033020032004360258200320043602502003417f200420086a220820082004491b3602540b200341c0006a109a80808000200341086a200341206a10ac808080002001200210ad80808000200341e0006a10ae8080800020032802604101460d00200320032903683703f0012003200341ff016a200341f0016a10b282808000370360200341e0006a200341086a200341ff016a10a182808000200341106a10c1818080002003200237037820032001370370200320003703602003428ed2aa98ca8e033703b8012003428ee2b4ba0d3703b001200341ff016a200341ff016a200341b0016a10e281808000200341ff016a200341e0006a10808280800010a6828080001a410021040c010b200328026421040b20034180026a24808080800020040b5801027f23808080800041106b2200248080808000410a2101024010cb808080000d002000410f6a10b382808000410a41002000410f6a41d084c0800010db8180800041fd01711b21010b200041106a24808080800020010b4401027f23808080800041106b22002480808080002000410f6a10b3828080002000410f6a419886c0800010db818080002101200041106a248080808000200141fd01710b6801017f23808080800041206b220124808080800020014210370308200120002903003703102001411f6a10b38280800002402001411f6a200141086a10ca8180800041ff01714101712200450d00200141086a10c2808080000b200141206a24808080800020000b930102027f017e23808080800041306b22012480808080000240024010a0808080002202450d0020002002360204410121020c010b2001412f6a10b38280800020012001412f6a41f882c0800010dc8180800020012903102103200020012903184200200128020041017122021b37031820002003420120021b370310410021020b20002002360200200141306a2480808080000bcd0204027f027e017f017e23808080800041e0006b22012480808080002001410036023c200141df006a10b4828080002102200141206a20002903002000290308200029032020002903282001413c6a10f882808000024002400240200128023c0d002001290328210320012903202104200028023821052001410036021c2001200420034100200220056b2205200520024b1bad42002001411c6a10f882808000200128021c0d01200029031822032001290308220485427f852003200320047c2000290310220420012903007c2206200454ad7c220485834200590d0241c489c0800010f182808000000b41b489c0800010f282808000000b41b489c0800010f282808000000b200020063703102000200236023820002004370318200141c0006a109a80808000200129034021032000200129034837032820002003370320200141e0006a2480808080000b5601037f23808080800041106b22002480808080002000410f6a10b38280800020002000410f6a41e882c0800010da818080002000280200210120002802042102200041106a2480808080002002410020014101711b0b5901017f23808080800041206b22022480808080002002420d370308200220002903003703102002411f6a10b3828080002002411f6a200241086a200110d581808000200241086a10c280808000200241206a2480808080000bd00102027f027e23808080800041306b22022480808080002002412f6a10b38280800020022002412f6a418883c0800010dc818080002002280200210320022903102104200229031821052002412f6a10b382808000024020054200200341017122031b2205200185427f852005200520017c2004420020031b220120007c2200200154ad7c22018583427f550d00419089c08000411441a489c0800010ef82808000000b20022000370300200220013703082002412f6a418883c08000200210de81808000200241306a2480808080000b7301027f23808080800041206b22012480808080002001411f6a10b382808000200141086a2001411f6a41b882c0800010d981808000410121020240024020012802084101470d0020002001290310370308410021020c010b200041023602040b20002002360200200141206a2480808080000bc10202027f027e23808080800041306b2200248080808000024010a08080800022010d002000412f6a10b382808000200041186a2000412f6a41c084c0800010d981808000410b210120002802184101470d00200020002903202202370300200010bf82808000200041186a10b080808000024020002802184101470d00200028021c21010c010b20002903202103109e808080002000412f6a10b3828080002000412f6a419882c08000200010df818080002000412f6a10b3828080002000412f6a2000412f6a41c084c0800010ff81808000420210a7828080001a20002002370320200020033703182000428eeeebbea0ce9a013703102000428ee2b4ba0d3703082000412f6a2000412f6a200041086a10e2818080002000412f6a200041186a108b8280800010a6828080001a410021010b200041306a24808080800020010b7301027f23808080800041206b22012480808080002001411f6a10b382808000200141086a2001411f6a419882c0800010d981808000410121020240024020012802084101470d0020002001290310370308410021020c010b200041023602040b20002002360200200141206a2480808080000b7201027f23808080800041e0006b2202248080808000200220013703080240024010a0808080002203450d0020002003360204410121030c010b109e80808000200241106a200241086a10a380808000200020022d00103a0001410021030b200020033a0000200241e0006a2480808080000b990102027f017e23808080800041306b22012480808080000240024010a0808080002202450d0020002002360204410121020c010b109e808080002001412f6a10b38280800020012001412f6a418883c0800010dc8180800020012903102103200020012903184200200128020041017122021b37031820002003420020021b370310410021020b20002002360200200141306a2480808080000bc90101027f23808080800041206b2200248080808000024010a08080800022010d00200041106a10b080808000024020002802104101470d00200028021421010c010b20002000290318370308200041086a10bf82808000109e80808000200041086a10b382808000200041086a41d084c0800041e084c0800010e1818080002000428ed4b8ddd98eb0f3383703182000428ee2b4ba0d370310200041086a200041086a200041106a10e281808000420210a6828080001a410021010b200041206a24808080800020010ba40202027f017e23808080800041c0006b220124808080800020012000370308200141286a10b0808080000240024020012802284101470d00200128022c21020c010b200120012903302203370310200141106a10bf82808000109e80808000200141086a200141106a10c48280800021022001413f6a10b3828080000240024020020d002001413f6a41c084c08000200141086a10df818080000c010b2001413f6a2001413f6a41c084c0800010ff81808000420210a7828080001a0b20012000370330200120033703282001428eeaf4bb9d90a7cd003703202001428ee2b4ba0d3703182001413f6a2001413f6a200141186a10e2818080002001413f6a200141286a108b8280800010a6828080001a410021020b200141c0006a24808080800020020ba40602027f057e23808080800041d0016b2203248080808000200320023703182003200137031020032000370308200341086a10bf82808000024010a08080800022040d0010b68080800022040d0002400240024002400240024002400240200142005220024200552002501b450d00109e80808000200341e0006a200341086a10a3808080002003280260410171450d01200341206a200341f0006a41c00010f7828080001a20012003290320582002200329032822055720022005511b450d02200341cf016a10b4828080002003280254490d03200341206a10aa80808000200329032822052002852005200520027d20032903202206200154ad7d220785834200530d0420032903382108200329033021092003200620017d22053703202003200737032802402005200784500d00200341086a200341206a10ac808080000c060b200341e0006a200010a28080800020032802600d06024020032903782205200885427f852005200520087c2003290370220720097c2206200754ad7c220785834200530d00200341086a2006200720032903800120032903880110b780808000200341086a10b8808080000c060b418486c0800010f182808000000b418484c08000412f41e484c0800010ec82808000000b41f484c080004112418885c0800010ef82808000000b419885c08000413741b485c0800010ec82808000000b41c485c08000413f41e485c0800010ec82808000000b41f485c0800010f382808000000b2001200210b980808000200341e0006a10ae808080002003280260450d010b200328026421040c010b200320032903683703b0012003200341cf016a200341b0016a10b2828080003703b8012003200341cf016a10a182808000370360200341b8016a200341e0006a200341086a200341106a10c081808000200320083703880120032009370380012003200237036820032001370360200320003703702003428ed2aa98ca8ecff5003703c0012003428ee2b4ba0d3703b801200341cf016a200341cf016a200341b8016a10e281808000200341cf016a200341e0006a10858280800010a6828080001a410021040b200341d0016a24808080800020040b5801027f23808080800041106b2200248080808000410a2101024010cb808080000d002000410f6a10b382808000410a41002000410f6a41e886c0800010db8180800041fd01711b21010b200041106a24808080800020010b7701017f23808080800041c0006b2205248080808000200520043703182005200337031020052002370308200520013703002005420e370328200520002903003703302005413f6a10b3828080002005413f6a200541286a200510cf81808000200541286a10c280808000200541c0006a2480808080000b5a01017f23808080800041206b22012480808080002001411f6a10b3828080002001420d370308200120002903003703102001411f6a2001411f6a200141086a10ff81808000420110a7828080001a200141206a2480808080000bcb0102027f027e23808080800041306b22022480808080002002412f6a10b38280800020022002412f6a418883c0800010dc818080002002280200210320022903182104200229031021052002412f6a10b382808000024020044200200341017122031b22042001852004200420017d2005420020031b2201200054ad7d22058583427f550d0041a48ac08000411541bc8ac0800010ef82808000000b2002200120007d370300200220053703082002412f6a418883c08000200210de81808000200241306a2480808080000b3c01027f23808080800041106b220124808080800020012000370308109e80808000200141086a10a8808080002102200141106a24808080800020020b0e00109e8080800010bc808080000b5601037f23808080800041106b22002480808080002000410f6a10b38280800020002000410f6a41b083c0800010da818080002000280200210120002802042102200041106a2480808080002002410120014101711b0b900202027f017e23808080800041c0006b220124808080800020012000370308200141286a10b0808080000240024020012802284101470d00200128022c21020c010b200120012903302203370310200141106a10bf82808000109e808080002001413f6a10b3828080002001413f6a419882c08000200141086a10df818080002001413f6a10b3828080002001413f6a2001413f6a41c084c0800010ff81808000420210a7828080001a20012000370330200120033703282001428eeeebbea0ce9a013703202001428ee2b4ba0d3703182001413f6a2001413f6a200141186a10e2818080002001413f6a200141286a108b8280800010a6828080001a410021020b200141c0006a24808080800020020b3501027f41012101024010a08080800022020d00109e808080004100210110ab8080800021020b20002002360204200020013602000bb00202027f017e23808080800041d0006b22022480808080002002200137030820022000370300024010a08080800022030d00200241206a10b080808000024020022802204101470d00200228022421030c010b20022002290328370310200241106a10bf8280800041032103200042ffbda8507c22044280bea8505420012004200054ad7c427f7c2204427f522004427f511b0d00109e80808000200241206a109a80808000200241cf006a10b382808000200241cf006a41d882c08000200210de8180800020022001370338200220003703302002428ef2aabca0cd9bef003703182002428ee2b4ba0d370310200241cf006a200241cf006a200241106a10e281808000200241cf006a200241206a10878280800010a6828080001a410021030b200241d0006a24808080800020030bc90101027f23808080800041206b2200248080808000024010a08080800022010d00200041106a10b080808000024020002802104101470d00200028021421010c010b20002000290318370308200041086a10bf82808000109e80808000200041086a10b382808000200041086a41d084c08000418182c0800010e1818080002000428ef0f5d99ee0e6f1003703182000428ee2b4ba0d370310200041086a200041086a200041106a10e281808000420210a6828080001a410021010b200041206a24808080800020010ba60101027f23808080800041206b2201248080808000024010a08080800022020d00200141086a10b080808000024020012802084101470d00200128020c21020c010b20012001290310370300200110bf82808000109e8080800020014210370308200120003703102001411f6a10b3828080002001411f6a200141086a41e084c0800010cd81808000200141086a10c280808000410021020b200141206a24808080800020020b4001017f23808080800041106b22012480808080002001410f6a10b3828080002001410f6a20004180d21f4180a43f10c481808000200141106a2480808080000b8e0101027f23808080800041206b2200248080808000024010a08080800022010d00200041086a10b080808000024020002802084101470d00200028020c21010c010b20002000290310370300200010bf82808000109e808080002000411f6a10b3828080002000411f6a419886c0800041e084c0800010e181808000410021010b200041206a24808080800020010b990101047f23808080800041106b2202248080808000200220013703080240024010a0808080002203450d0020004102360200200020033602040c010b109e808080002002200241086a10c580808000410121030240024020022802004101710d00410021030c010b20022802042104109b8080800021050b2000200436020820002005360204200020033602000b200241106a2480808080000b7b01027f23808080800041206b22022480808080002002420b370308200220012903003703102002411f6a10b38280800020022002411f6a200241086a10c68180800020022802042101024020022802002203450d00200241086a10c2808080000b2000200136020420002003360200200241206a2480808080000b940304037f017e017f027e23808080800041a0016b220224808080800020022001370338024002400240024010a0808080002203450d0020002003360204410121030c010b109e80808000200241c0006a200241386a10a380808000024002402002280240410171450d0020024100360234200241206a2002290350200229035820022903702002290378200241346a10f88280800020022802342104200229036821012002290360210520022802880121062002419f016a10b482808000210320040d0320022903282107200229032021082002410036021c2002200820074100200320066b2204200420034b1bad42002002411c6a10f882808000200228021c0d04024020012002290308220785427f852001200120077c200520022903007c2207200554ad7c220585834200530d0020002007370310200020053703180c020b41b886c0800010f182808000000b20004200370318200042003703100b410021030b20002003360200200241a0016a2480808080000f0b41a886c0800010f282808000000b41a886c0800010f282808000000b8e0101027f23808080800041206b2200248080808000024010a08080800022010d00200041086a10b080808000024020002802084101470d00200028020c21010c010b20002000290310370300200010bf82808000109e808080002000411f6a10b3828080002000411f6a419886c08000418182c0800010e181808000410021010b200041206a24808080800020010be40306027f027e017f017e027f037e23808080800041a0016b220224808080800020022001370338024002400240024010a0808080002203450d002000420037030820004202370300200020033602100c010b109e80808000200241c0006a200241386a10a38080800002402002280240410171450d0020024100360234200241206a200229035022042002290358220520022903702002290378200241346a10f882808000200228023421062002290368210120022903602107200228028c0121082002280288012109200229038001210a2002419f016a10b482808000210320060d022002290328210b2002290320210c2002410036021c2002200c200b4100200320096b2206200620034b1bad42002002411c6a10f882808000200228021c0d03024020012002290308220b85427f8520012001200b7c200720022903007c220b200754ad7c220785834200530d00200041306a109a80808000200020073703282000200b370320200020053703182000200437031020004200370308200042013703002000200836024c200020033602482000200a3703400c020b41d886c0800010f182808000000b20004200370308200042003703000b200241a0016a2480808080000f0b41c886c0800010f282808000000b41c886c0800010f282808000000bc90101027f23808080800041206b2200248080808000024010a08080800022010d00200041106a10b080808000024020002802104101470d00200028021421010c010b20002000290318370308200041086a10bf82808000109e80808000200041086a10b382808000200041086a41e886c0800041e084c0800010e1818080002000428ed4b8ddd98ea4f9003703182000428ee2b4ba0d370310200041086a200041086a200041106a10e281808000420210a6828080001a410021010b200041206a24808080800020010be00602027f097e23808080800041c0016b220224808080800020022001370308200241086a10bf828080000240024010a0808080002203450d0020004101360200200020033602040c010b200241206a10b080808000024020022802204101470d002002280224210320004101360200200020033602040c010b20022903282104024010cb808080000d002000428180808080013703000c010b109e80808000200241206a10ae80808000024020022802204101470d002002280224210320004101360200200020033602040c010b200220022903283703102002200241bf016a200241106a10b282808000370318200241206a200241086a10a380808000024002400240024002402002280220410171450d00200241f0006a200241306a41c00010f7828080001a2002200241bf016a10a1828080003703b001200241186a200241b0016a200241086a200241f0006a10c081808000200229037022052002290378220610b98080800020022903880121072002290380012108200241086a10b880808000200241206a200241086a10a480808000420021094200210a20022802204101710d010c020b200241206a200241086a10a480808000420021084200210742002105420021062002280220410171450d020b200241f0006a200241306a41c00010f7828080001a2002200241bf016a10a1828080003703b001200241186a200241b0016a200241086a200241f0006a10c081808000024020062002290378220a85427f8520062006200a7c2005200229037022097c220b200554ad7c220c85834200530d002009200a10b980808000200229038801210a2002290380012109200241086a10cc80808000200b2105200c21060c010b41f886c0800010f182808000000b2005200684500d000240200842005220074200552007501b0d002009420052200a420055200a501b450d020b200241086a200820072009200a10b7808080000c010b2000428180808090013703000c010b200220053703302002200137032820022004370320200220063703382002428ef2eede9ae0dee52a3703782002428ee2b4ba0d370370200241bf016a200241bf016a200241f0006a10e281808000200241bf016a200241206a10fc8180800010a6828080001a2000200637031820002005370310200041003602000b200241c0016a2480808080000b4401027f23808080800041106b22002480808080002000410f6a10b3828080002000410f6a41e887c0800010db818080002101200041106a248080808000200141fd01710b5a01017f23808080800041206b22012480808080002001411f6a10b3828080002001420c370308200120002903003703102001411f6a2001411f6a200141086a10ff81808000420110a7828080001a200141206a2480808080000ba00102027f027e23808080800041306b2202248080808000109e808080002002200110a280808000024042002002290318200228020022031b22014200200229032820031b220485427f852001200120047c4200200229031020031b22044200200229032020031b7c2205200454ad7c220485834200530d002000200537030020002004370308200241306a2480808080000f0b418887c0800010f182808000000bf30101027f23808080800041306b22012480808080002001200036020c024010a08080800022020d00200141106a10b080808000024020012802104101470d00200128021421020c010b20012001290318370320200141206a10bf82808000109e8080800010ab8080800021022001412f6a10b3828080002001412f6a41e882c080002001410c6a10e08180800020012000360224200120023602202001428ef2aabc80c6d2e3003703182001428ee2b4ba0d3703102001412f6a2001412f6a200141106a10e2818080002001412f6a200141206a10fd8180800010a6828080001a410021020b200141306a24808080800020020bc80101027f23808080800041206b2200248080808000024010a08080800022010d00200041106a10b080808000024020002802104101470d00200028021421010c010b20002000290318370308200041086a10bf82808000109e80808000200041086a10b382808000200041086a41e886c08000418182c0800010e1818080002000428ef0f5d99ec8f2013703182000428ee2b4ba0d370310200041086a200041086a200041106a10e281808000420210a6828080001a410021010b200041206a24808080800020010be00202027f027e23808080800041d0006b22022480808080002002200137030820022000370300024010a08080800022030d00200241206a10b080808000024020022802204101460d0020022002290328370310200241106a10bf82808000109e8080800041072103200042ffffefc4c5a9d28f727c2204428080f0c4c5a9d28f725420012004200054ad7c427f7c2204427f522004427f511b0d01200241206a10a98080800020022802204101460d002002290330210420022903382105200241cf006a10b382808000200241cf006a41f882c08000200210de81808000200220013703382002200037033020022005370328200220043703202002428ef2aabc90c7cfdd323703182002428ee2b4ba0d370310200241cf006a200241cf006a200241106a10e281808000200241cf006a200241206a10878280800010a6828080001a410021030c010b200228022421030b200241d0006a24808080800020030ba30101027f23808080800041206b2201248080808000024010a08080800022020d00200141086a10b080808000024020012802084101470d00200128020c21020c010b20012001290310370300200110bf82808000109e8080800020014210370308200120003703102001411f6a10b3828080002001411f6a2001411f6a200141086a10ff81808000420110a7828080001a410021020b200141206a24808080800020020bae0201027f23808080800041306b22012480808080002001200036020c024010a08080800022020d00200141186a10b080808000024020012802184101470d00200128021c21020c010b20012001290320370310200141106a10bf828080004104210241a882c080002001410c6a109d80808000450d00109e808080002001412f6a10b3828080002001412f6a41c882c080002001410c6a10e0818080002001412f6a10b38280800020012001412f6a10b4828080003602182001412f6a419887c08000200141186a10e081808000200120003602102001428ef2aabc908febe5003703202001428ef2b89afd043703182001412f6a2001412f6a200141186a10e281808000200141106a2001412f6a10a28280800010a6828080001a410021020b200141306a24808080800020020bae0201027f23808080800041c0006b2201248080808000200120003703000240024010a08080800022020d00200141286a10b080808000024020012802284101470d00200128022c21020c010b20012001290330370318200141186a10bf82808000200141086a200010ac8280800010e08280800041334f0d01109e80808000200141086a200010bf8180800002400340200141286a200141086a10e881808000200141186a2001290328200129033010d48080800020012802184101470d012001290320210020014210370328200120003703302001413f6a10b3828080002001413f6a200141286a41e084c0800010cd81808000200141286a10c2808080000c000b0b410021020b200141c0006a24808080800020020f0b41a887c08000413341c487c0800010ec82808000000b6e02017f017e23808080800041106b2203248080808000420021040240024020014202510d002001a74101710d0120002002370308420121040b20002004370300200341106a2480808080000f0b41ec8ac08000412b2003410f6a41dc8ac0800041cc8ac0800010f082808000000b6601037f23808080800041106b2201248080808000200141086a10be8080800041012102200128020c2103024002402001280208410171450d00200020033602040c010b20002003ad42057e370308410021020b20002002360200200141106a2480808080000bab0201027f23808080800041c0006b2201248080808000200120003703000240024010a08080800022020d00200141286a10b080808000024020012802284101470d00200128022c21020c010b20012001290330370318200141186a10bf82808000200141086a200010ac8280800010e08280800041334f0d01109e80808000200141086a200010bf8180800002400340200141286a200141086a10e881808000200141186a2001290328200129033010d48080800020012802184101470d012001290320210020014210370328200120003703302001413f6a10b3828080002001413f6a2001413f6a200141286a10ff81808000420110a7828080001a0c000b0b410021020b200141c0006a24808080800020020f0b41a887c08000413341d487c0800010ec82808000000b1000109e80808000200010b0808080000b8b0201027f23808080800041206b2200248080808000024010a08080800022010d00200041106a10b080808000024020002802104101470d00200028021421010c010b20002000290318370308200041086a10bf82808000109e80808000200041086a10b382808000200041086a41e887c0800041e084c0800010e181808000200041086a10b382808000200041086a41d084c0800041e084c0800010e181808000200041086a10b382808000200041086a41e886c0800041e084c0800010e1818080002000428ed2aadceeac033703182000428ee2b4ba0d370310200041086a200041086a200041106a10e281808000420210a6828080001a410021010b200041206a24808080800020010bd00503027f037e017f2380808080004180026b2203248080808000200320023703182003200137031020032000370308200341086a10bf82808000024010a08080800022040d0010a68080800022040d0002400240200142005220024200552002501b450d0010a780808000450d01200341086a10a8808080000d01410521040c020b418484c08000412f41f887c0800010ec82808000000b200341e0006a10a980808000024020032802600d00024020012003290370542002200329037822055320022005511b450d00410621040c020b109e80808000200341ff016a10b4828080002104200341e0006a200341086a10a480808000024002402003280260410171450d00200341b0016a200341f0006a41c00010f7828080001a200341086a200341b0016a109880808000024020032903b8012205200285427f852005200520027c20032903b001220620017c2207200654ad7c220685834200530d00200320073703b001200320063703b801200341206a200341b0016a41c00010f7828080001a0c020b418888c0800010f182808000000b200341c0006a109a80808000109b8080800021082003200237032820032001370320200342003703382003420037033020032004360250200320083602540b200341c0006a109a80808000200341086a200341206a10da808080002001200210ad80808000200341e0006a10ae8080800020032802604101460d00200320032903683703f0012003200341ff016a200341f0016a10b282808000370360200341e0006a200341086a200341ff016a10a182808000200341106a10c1818080002003200237037820032001370370200320003703602003428ed2aad899c7033703b8012003428ee2b4ba0d3703b001200341ff016a200341ff016a200341b0016a10e281808000200341ff016a200341e0006a10808280800010a6828080001a410021040c010b200328026421040b20034180026a24808080800020040b5901017f23808080800041206b22022480808080002002420c370308200220002903003703102002411f6a10b3828080002002411f6a200241086a200110d381808000200241086a10c280808000200241206a2480808080000baa0101037f23808080800041206b220124808080800041012102024010a08080800022030d00200141086a10b08080800041012102024020012802084101470d00200128020c21030c010b20012001290310370300200110bf82808000109e8080800010bc8080800021032001411f6a10b3828080002001411f6a41b083c0800041c083c0800010e081808000410021020b2000200336020420002002360200200141206a2480808080000b8d0201027f23808080800041206b2200248080808000024010a08080800022010d00200041106a10b080808000024020002802104101470d00200028021421010c010b20002000290318370308200041086a10bf82808000109e80808000200041086a10b382808000200041086a41e887c08000418182c0800010e181808000200041086a10b382808000200041086a41d084c08000418182c0800010e181808000200041086a10b382808000200041086a41e886c08000418182c0800010e1818080002000428ed2aadceeaccff5003703182000428ee2b4ba0d370310200041086a200041086a200041106a10e281808000420210a6828080001a410021010b200041206a24808080800020010b870402027f047e23808080800041c0016b220224808080800020022001370308200241086a10bf8280800002400240024010a0808080002203450d0020004101360200200020033602040c010b024010b6808080002203450d0020004101360200200020033602040c010b109e80808000200241d0006a200241086a10a4808080002002280250410171450d01200241106a200241e0006a41c00010f7828080001a200241086a200241106a1098808080002002290328210420022903202105200241d0006a10ae80808000024020022802504101470d002002280254210320004101360200200020033602040c010b200220022903583703a0012002200241bf016a200241a0016a10b2828080003703a8012002200241bf016a10a182808000370350200241a8016a200241d0006a200241086a200241106a10c0818080002002200437037820022005370370200220022903182206370358200220022903102207370350200220013703602002428ed2aad899c7cff5003703b0012002428ee2b4ba0d3703a801200241bf016a200241bf016a200241a8016a10e281808000200241bf016a200241d0006a10858280800010a6828080001a200241086a10cc808080002007200610b9808080002000200437031820002005370310200041003602000b200241c0016a2480808080000f0b419888c08000410f41a888c0800010ef82808000000bce0101027f23808080800041206b2201248080808000024010a08080800022020d00200110b080808000024020012802004101470d00200128020421020c010b20012001290308370310200141106a10bf82808000109e80808000200120003703102001428ed2ead4f9e6d6f5003703082001428ee2b4ba0d3703002001411f6a2001411f6a200110e2818080002001411f6a200141106a108f8280800010a6828080001a2001411f6a10b3828080002001411f6a200010c381808000410021020b200141206a24808080800020020bd70202027f027e23808080800041b0016b2202248080808000200220013703080240024010a0808080002203450d002000420037030820004202370300200020033602100c010b109e80808000200241d0006a200241086a10a48080800002402002280250410171450d00200241106a200241d0006a41106a41c00010f7828080001a200241d0006a200241086a200241106a200241af016a10b48280800022031099808080000240200229032822012002290358220485427f852001200120047c2002290320220420022903507c2205200454ad7c220485834200530d00200220053703202002200336024020022004370328200241306a109a808080002002109b80808000360244200041106a200241106a41c00010f7828080001a20004200370308200042013703000c020b41b888c0800010f182808000000b20004200370308200042003703000b200241b0016a2480808080000b3e01017f0240024010a0808080002201450d0020002001360204410121010c010b109e80808000200010cb808080003a0001410021010b200020013a00000ba50301027f23808080800041c0016b22022480808080002002200136020c200220003703000240024010a08080800022030d0010a68080800022030d00200241106a10b080808000024020022802104101470d00200228021421030c010b20022002290318370360200241e0006a10bf8280800041c888c080002002410c6a109d80808000450d01109e80808000200241106a200210a48080800002402002280210410171450d00200241e0006a200241206a41c00010f7828080001a2002200241e0006a1098808080002002200241e0006a10da808080000b2002420b3703a801200220003703b001200241bf016a10b382808000200241bf016a200241a8016a2002410c6a10d181808000200241a8016a10c2808080002002109b8080800036026c20022001360268200220003703602002428ed2aab7dcae9b013703182002428ef2b89afd04370310200241bf016a200241bf016a200241106a10e281808000200241bf016a200241e0006a10fa8180800010a6828080001a410021030b200241c0016a24808080800020030f0b41d488c08000413941f088c0800010ec82808000000bbb0302017f037e2380808080004190016b22082480808080002008410036028c01200841f0006a200120022003ad42002008418c016a10f882808000024002400240024002400240200828028c010d00200841e0006a2008290370200829037842e400420010fa82808000200220082903682209852002200220097d20012008290360220a54ad7d220b85834200530d012008410036025c200841c0006a200a20092004ad4200200841dc006a10f882808000200828025c0d02200b2008290348220285427f85200b200b20027c2001200a7d220220082903407c2201200254ad7c220285834200530d032008410036023c200841206a20012002200520062008413c6a10f882808000200828023c0d0420082903282102200829032021012008410036021c2008200120022007ad42002008411c6a10f882808000200828021c450d05418089c0800010f282808000000b41d489c0800010f282808000000b41e489c0800010f382808000000b41f489c0800010f282808000000b41848ac0800010f182808000000b418089c0800010f282808000000b20082903082102200020082903003703002000200237030820084190016a2480808080000b4102017f017e23808080800041206b2200248080808000200041086a10d7808080002000411f6a200041086a1083828080002101200041206a24808080800020010b3702017f017e23808080800041106b220024808080800010d8808080002000410f6a10e7818080002101200041106a24808080800020010b980101017f23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002413f6a200210c182808000024020022802104101460d0020022903182101200241106a2002413f6a200241086a10b18280800020022802104101460d0020012002290320200229032810d9808080002002413f6a10e7818080002101200241c0006a24808080800020010f0b000b4302017f017e23808080800041106b2200248080808000200010db80808000200028020020002802042000410f6a10e6818080002101200041106a24808080800020010b3702017f017e23808080800041106b220024808080800010dc808080002000410f6a10e7818080002101200041106a24808080800020010b7001017f23808080800041c0006b220124808080800020012000370308200141106a2001413f6a200141086a10c182808000024020012802104101470d00000b200141106a200129031810dd808080002001413f6a200141106a108a828080002100200141c0006a24808080800020000b6101017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c782808000024020012802084101470d00000b200129031010de808080002001411f6a10e7818080002100200141206a24808080800020000b7201017f23808080800041f0006b220124808080800020012000370308200141106a200141ef006a200141086a10c182808000024020012802104101470d00000b200141106a200129031810df80808000200141ef006a200141106a1088828080002100200141f0006a24808080800020000b4102017f017e23808080800041106b2200248080808000200041046a10e0808080002000410f6a200041046a10fb818080002101200041106a24808080800020010b7301017f23808080800041206b220224808080800020022000370300200241086a2002411f6a200210c182808000024020022802084101460d00200142ff01834204520d0020022903102001422088a710e1808080002002411f6a10e7818080002101200241206a24808080800020010f0b000ba60201017f23808080800041d0006b220624808080800020062001370308200620003703002006200337031020062005370318200641206a200641cf006a200610c182808000024020062802204101460d0020062903282101200641206a200641cf006a200641086a10c18280800020062802204101460d00200242ff01834204520d0020062903282100200641206a200641cf006a200641106a10b18280800020062802204101460d00200442ff01834204520d002006290338210320062903302105200641206a200641cf006a200641186a10b18280800020062802204101460d00200120002002422088a7200520032004422088a720062903302006290338109c80808000200641cf006a10e7818080002102200641d0006a24808080800020020f0b000b3b02017f017e23808080800041306b22002480808080002000109f808080002000412f6a2000108a828080002101200041306a24808080800020010b7001017f23808080800041c0006b220124808080800020012000370308200141106a2001413f6a200141086a10c182808000024020012802104101470d00000b200141106a200129031810a1808080002001413f6a200141106a108a828080002100200141c0006a24808080800020000b980101017f23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002413f6a200210c182808000024020022802104101460d0020022903182101200241106a2002413f6a200241086a10b18280800020022802104101460d0020012002290320200229032810a5808080002002413f6a10e7818080002101200241c0006a24808080800020010f0b000b3702017f017e23808080800041106b220024808080800010af808080002000410f6a10e7818080002101200041106a24808080800020010b6b01017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200141086a200129031010b1808080002001411f6a200141086a10fb818080002100200141206a24808080800020000b3b02017f017e23808080800041306b2200248080808000200010b2808080002000412f6a2000108a828080002101200041306a24808080800020010b3702017f017e23808080800041106b220024808080800010b3808080002000410f6a10e7818080002101200041106a24808080800020010b6101017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200129031010b4808080002001411f6a10e7818080002100200141206a24808080800020000b980101017f23808080800041c0006b22022480808080002002200137030820022000370300200241106a2002413f6a200210c182808000024020022802104101460d0020022903182101200241106a2002413f6a200241086a10b18280800020022802104101460d0020012002290320200229032810b5808080002002413f6a10e7818080002101200241c0006a24808080800020010f0b000b6101017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200129031010ba808080002001411f6a10e3818080002100200141206a24808080800020000b3702017f017e23808080800041106b220024808080800010bb808080002000410f6a10e5818080002101200041106a24808080800020010b6101017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200129031010bd808080002001411f6a10e7818080002100200141206a24808080800020000b4302017f017e23808080800041106b2200248080808000200010be80808000200028020020002802042000410f6a10e6818080002101200041106a24808080800020010b6b01017f23808080800041c0006b220124808080800020012000370308200141106a2001413f6a200141086a10b182808000024020012802104101470d00000b2001290320200129032810bf808080002001413f6a10e7818080002100200141c0006a24808080800020000b3702017f017e23808080800041106b220024808080800010c0808080002000410f6a10e7818080002101200041106a24808080800020010b6101017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200129031010c1808080002001411f6a10e7818080002100200141206a24808080800020000b3702017f017e23808080800041106b220024808080800010c3808080002000410f6a10e7818080002101200041106a24808080800020010b6b01017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200141086a200129031010c4808080002001411f6a200141086a1084828080002100200141206a24808080800020000b7001017f23808080800041c0006b220124808080800020012000370308200141106a2001413f6a200141086a10c182808000024020012802104101470d00000b200141106a200129031810c6808080002001413f6a200141106a108a828080002100200141c0006a24808080800020000b3702017f017e23808080800041106b220024808080800010c7808080002000410f6a10e7818080002101200041106a24808080800020010b7201017f23808080800041f0006b220124808080800020012000370308200141106a200141ef006a200141086a10c182808000024020012802104101470d00000b200141106a200129031810c880808000200141ef006a200141106a1091828080002100200141f0006a24808080800020000b3702017f017e23808080800041106b220024808080800010c9808080002000410f6a10e7818080002101200041106a24808080800020010b7001017f23808080800041c0006b220124808080800020012000370308200141106a2001413f6a200141086a10c182808000024020012802104101470d00000b200141106a200129031810ca808080002001413f6a200141106a108a828080002100200141c0006a24808080800020000b7301017f23808080800041306b220124808080800020012000370308200141106a2001412f6a200141086a10c182808000024020012802104101470d00000b200141106a200129031810cd80808000200129031020012903182001412f6a10e4818080002100200141306a24808080800020000b4a01017f23808080800041106b22012480808080000240200042ff01834204510d00000b2000422088a710ce808080002001410f6a10e7818080002100200141106a24808080800020000b3702017f017e23808080800041106b220024808080800010cf808080002000410f6a10e7818080002101200041106a24808080800020010b3b02017f017e23808080800041306b2200248080808000200010a9808080002000412f6a2000108a828080002101200041306a24808080800020010b6b01017f23808080800041c0006b220124808080800020012000370308200141106a2001413f6a200141086a10b182808000024020012802104101470d00000b2001290320200129032810d0808080002001413f6a10e7818080002100200141c0006a24808080800020000b6101017f23808080800041206b220124808080800020012000370300200141086a2001411f6a200110c182808000024020012802084101470d00000b200129031010d1808080002001411f6a10e7818080002100200141206a24808080800020000b4a01017f23808080800041106b22012480808080000240200042ff01834204510d00000b2000422088a710d2808080002001410f6a10e7818080002100200141106a24808080800020000b4701017f23808080800041106b22012480808080000240200042ff018342cb00510d00000b200010d3808080002001410f6a10e7818080002100200141106a24808080800020000b4102017f017e23808080800041206b2200248080808000200041086a10d5808080002000411f6a200041086a1090828080002101200041206a24808080800020010b7201017f23808080800041d0006b220124808080800020012000370308200141106a200141cf006a200141086a10c182808000024020012802104101470d00000b200141106a200129031810a280808000200141cf006a200141106a1086828080002100200141d0006a24808080800020000b4701017f23808080800041106b22012480808080000240200042ff018342cb00510d00000b200010d6808080002001410f6a10e7818080002100200141106a24808080800020000b1200200141978bc08000410f10ee828080000b0e0010a58280800010f1808080000b100010a582808000200010fd808080000b0e0010a58280800010e3808080000b100010a5828080002000108c818080000b100010a5828080002000108f818080000b100010a58280800020001080818080000b0e0010a58280800010ee808080000b0e0010a5828080001081818080000b100010a58280800020001084818080000b0e0010a58280800010fe808080000b100010a58280800020001085818080000b100010a5828080002000108e818080000b100010a582808000200010ff808080000b100010a582808000200010ef808080000b0e0010a58280800010fa808080000b0e0010a582808000108d818080000b0e0010a5828080001088818080000b100010a582808000200010ea808080000b100010a58280800020001082818080000b100010a582808000200010f2808080000b1a0010a58280800020002001200220032004200510ed808080000b0e0010a58280800010eb808080000b100010a582808000200010f7808080000b120010a5828080002000200110f0808080000b0e0010a58280800010e6808080000b0e0010a58280800010e4808080000b0e0010a58280800010f4808080000b0e0010a5828080001083818080000b100010a582808000200010f5808080000b100010a5828080002000108a818080000b0e0010a58280800010f8808080000b120010a5828080002000200110ec808080000b100010a582808000200010fb808080000b100010a5828080002000108b818080000b100010a58280800020001086818080000b100010a58280800020001089818080000b120010a5828080002000200110e5808080000b0e0010a58280800010f3808080000b100010a582808000200010f9808080000b120010a5828080002000200110f6808080000b0e0010a58280800010e7808080000b0e0010a58280800010fc808080000b0e0010a5828080001087818080000b100010a582808000200010e8808080000b100010a582808000200010e9808080000bf80102027f047e23808080800041306b2203248080808000410021040240034020044110460d01200320046a4202370300200441086a21040c000b0b420021054201210602402002290300220742ff018342cc00520d002001200741948dc0800041022003410210af828080001a200341106a2001200310b18280800020032802104101460d002003290328210720032903202108200341106a2001200341086a10b18280800020032802104101460d00200329032021052000200329032837032820002005370320200020073703182000200837031042002106420021050b2000200637030020002005370308200341306a2480808080000b4d01017f23808080800041106b2202248080808000200220013703082000200241106a200110ac8280800010e08280800036020c2000410036020820002001370300200241106a2480808080000bbf0202027f027e23808080800041e0006b22042480808080002001200041086a220510c2828080002106200441206a20021099828080002005200441206a108982808000210720042003200510a3828080003703182004200737031020042006370308410021010240034020014118460d01200441306a20016a4202370300200141086a21010c000b0b200441c8006a200441306a200441306a41186a200441086a200441086a41186a10bd828080004100200428025c2201200428025822026b2203200320014b1b21012004280250200241037422036a2102200428024820036a2103024003402001450d01200320022005109c828080003703002001417f6a2101200241086a2102200341086a21030c000b0b2005200041a88bc080002005200441306a410310ad8280800010a082808000200441e0006a2480808080000bc10203027f017e017f23808080800041e0006b22042480808080002001200041086a220510c2828080002106200441206a20021095828080002005200441206a108982808000210220042003200510a3828080003703182004200237031020042006370308410021010240034020014118460d01200441306a20016a4202370300200141086a21010c000b0b200441c8006a200441306a200441306a41186a200441086a200441086a41186a10bd828080004100200428025c2201200428025822036b2207200720014b1b21012004280250200341037422076a2103200428024820076a2107024003402001450d01200720032005109c828080003703002001417f6a2101200341086a2103200741086a21070c000b0b2005200041a88bc080002005200441306a410310ad8280800010a082808000200441e0006a2480808080000b9b0203017f017e027f23808080800041c0006b220324808080800020012002108e82808000210420032001200241086a108e8280800037031020032004370308410021020240034020024110460d01200341186a20026a4202370300200241086a21020c000b0b200341286a200341186a200341186a41106a200341086a200341086a41106a10bd828080004100200328023c2202200328023822056b2206200620024b1b21022003280230200541037422066a2105200328022820066a2106024003402002450d01200620052001109c828080003703002002417f6a2102200541086a2105200641086a21060c000b0b2001200341186a410210ad8280800021042000420037030020002004370308200341c0006a2480808080000b3b01017f23808080800041106b2202248080808000200220013703082000200241086a10c68280800010aa828080001a200241106a2480808080000b12002000200142012002200310c5818080000b270020002000200110ff818080002002200310e382808000200410e38280800010a9828080001a0b5e01017e02400240024020012001200210ff818080002203420110b6828080000d00410021010c010b20012003420110b582808000220342ff01834204520d012003422088a72102410121010b20002002360204200020013602000f0b000bc60102017f037e23808080800041c0006b220324808080800002400240024020012001200210ff818080002204420110b6828080000d0020004200370308200042003703000c010b200320012004420110b582808000370308200341106a2001200341086a10be8180800020032802104101710d012003290320210420032903282105200329033021062000200329033837032820002006370320200020053703182000200437031020004200370308200042013703000b200341c0006a2480808080000f0b000ba90102017f017e23808080800041e0006b220324808080800002400240024020012001200210ff818080002204420110b6828080000d0020004200370308200042003703000c010b200320012004420110b582808000370308200341106a2001200341086a10c98180800020032802104101710d01200041106a200341106a41106a41c00010f7828080001a20004200370308200042013703000b200341e0006a2480808080000f0b000b860302027f097e23808080800041d0006b2203248080808000410021040240034020044130460d01200320046a4202370300200441086a21040c000b0b420021054201210602402002290300220742ff018342cc00520d002001200741f88bc0800041062003410610af828080001a200341306a2001200310b18280800020032802304101460d002003290308220742ff01834204520d002003290348210820032903402109200341306a2001200341106a10b18280800020032802304101460d002003290318220a42ff01834204520d002003290348210b2003290340210c200341306a2001200341206a10b18280800020032802304101460d002003290328220d42ff01834204520d0020032903482105200329034021062000200c370330200020063703202000200937031020002007422088a73602482000200a422088a73602402000200b37033820002005370328200020083703182000200d4220883e024442002106420021050b2000200637030020002005370308200341d0006a2480808080000b4d02017f017e41022102024020002000200110ff818080002203420110b682808000450d00410121020240024020002003420110b582808000a741ff01710e020102000b000b410021020b20020ba90102017f017e23808080800041e0006b220324808080800002400240024020012001200210ff818080002204420110b6828080000d0020004200370308200042003703000c010b200320012004420110b582808000370308200341106a2001200341086a10cc8180800020032802104101710d01200041106a200341106a41106a41c00010f7828080001a20004200370308200042013703000b200341e0006a2480808080000f0b000bf40202027f087e23808080800041d0006b2203248080808000410021040240034020044128460d01200341086a20046a4202370300200441086a21040c000b0b420021054201210602402002290300220742ff018342cc00520d002001200741cc8cc080004105200341086a410510af828080001a200341306a2001200341086a10b18280800020032802304101460d002003290348210720032903402108200341306a2001200341106a10b18280800020032802304101460d00200329034821092003290340210a200341306a2001200341186a10b18280800020032802304101460d002003290320220b42ff01834204520d002003290328220c42ff01834204520d0020032903482105200329034021062000200a37033020002006370320200020083703102000200b422088a73602442000200937033820002005370328200020073703182000200c4220883e024042002106420021050b2000200637030020002005370308200341d0006a2480808080000b1000200020012002420110ce818080000b210020002000200110ff818080002002200010a482808000200310a8828080001a0b1000200020012002420110d0818080000b210020002000200110ff8180800020002002108182808000200310a8828080001a0b1000200020012002420110d2818080000b210020002000200110ff818080002002200010a282808000200310a8828080001a0b1000200020012002420110d4818080000b210020002000200110ff8180800020002002108d82808000200310a8828080001a0b1000200020012002420110d6818080000b210020002000200110ff8180800020002002108c82808000200310a8828080001a0b210020002000200110ff818080002002200010c282808000200310a8828080001a0b210020002000200110ff818080002002200010a382808000200310a8828080001a0b900102017f017e23808080800041206b220324808080800002400240024020012001200210ff818080002204420210b6828080000d00200042003703000c010b200320012004420210b582808000370308200341106a2001200341086a10c18280800020032802104101460d012003290318210420004201370300200020043703080b200341206a2480808080000f0b000b5e01017e02400240024020012001200210ff818080002203420210b6828080000d00410021010c010b20012003420210b582808000220342ff01834204520d012003422088a72102410121010b20002002360204200020013602000f0b000b4d02017f017e41022102024020002000200110ff818080002203420210b682808000450d00410121020240024020002003420210b582808000a741ff01710e020102000b000b410021020b20020bac0102017f027e23808080800041306b220324808080800002400240024020012001200210ff818080002204420210b6828080000d0020004200370308200042003703000c010b200320012004420210b582808000370308200341106a2001200341086a10b18280800020032802104101460d012003290320210420032903282105200042003703082000420137030020002005370318200020043703100b200341306a2480808080000f0b000b160020002000200110ff81808000420210b6828080000b1000200020012002420210d8818080000b1000200020012002420210d7818080000b1000200020012002420210d2818080000b1000200020012002420210ce818080000b4502017f017e23808080800041106b220224808080800020022000200110c281808000024020022802004101470d00000b20022903082103200241106a24808080800020030b3a02017f017e23808080800041106b2202248080808000200220003a000f2002410f6a200110a4828080002103200241106a24808080800020030b3c01017f23808080800041106b220324808080800020032001370308200320003703002003200210a3828080002101200341106a24808080800020010b3a02017f017e23808080800041106b22022480808080002002200036020c2002410c6a200110a2828080002103200241106a24808080800020030b4102017f017e23808080800041106b22032480808080002003200136020c200320003602082002200341086a10fe818080002104200341106a24808080800020040b3a02017f017e23808080800041106b22022480808080002002200036020c20012002410c6a1082828080002103200241106a24808080800020030b8d0103017f017e027f23808080800041206b220224808080800042022103024020012802082204200128020c4f0d002002200141086a22052001290300200410e38280800010ab82808000370318200241086a2005200241186a10c18280800020022903082103200020022903103703082001200441016a3602080b20002003370300200241206a2480808080000b4602017f017e23808080800041106b220324808080800020032001200210b882808000200329030821042000200329030037030020002004370308200341106a2480808080000b9e0202017f067e23808080800041306b220324808080800020032001200210948280800042012104024020032802000d002003290308210520032001200241386a10928280800020032802000d002003290308210620032001200241206a10948280800020032802000d002003290308210720032001200241306a10928280800020032802000d002003290308210820032001200241106a10948280800020032802000d002003290308210920032001200241346a10928280800020032802000d0020032003290308370328200320093703202003200837031820032007370310200320063703082003200537030020002001419491c0800041062003410610ae82808000370308420021040b20002004370300200341306a2480808080000b8c0202017f057e23808080800041306b2203248080808000200341086a2001200210948280800042012104024020032802080d0020032903102105200341086a2001200241206a10948280800020032802080d0020032903102106200341086a2001200241106a10948280800020032802080d0020032903102107200341086a2001200241346a10928280800020032802080d0020032903102108200341086a2001200241306a10928280800020032802080d0020032003290310370328200320083703202003200737031820032006370310200320053703082000200141e891c080004105200341086a410510ae82808000370308420021040b20002004370300200341306a2480808080000b8e0102017f027e23808080800041106b220324808080800020032001200241046a10928280800042012104024020032802000d002003290308210520032001200210928280800020032802000d0020032003290308370308200320053703002000200141a092c0800041022003410210ae82808000370308420021040b20002004370300200341106a2480808080000b8e0102017f027e23808080800041106b220324808080800020032001200210948280800042012104024020032802000d002003290308210520032001200241106a10948280800020032802000d0020032003290308370308200320053703002000200141d092c0800041022003410210ae82808000370308420021040b20002004370300200341106a2480808080000b7302017f027e23808080800041106b2203248080808000200320022001109e828080000240024020032802000d00200320032903083703004200210420012003410110ad8280800021050c010b4201210410e78280800021050b2000200437030020002005370308200341106a2480808080000b970102017f027e23808080800041106b220324808080800020032002200110c5828080000240024020032802000d00200329030821042003200241086a200110c58280800020032802000d0020032003290308370308200320043703004200210420012003410210ad8280800021050c010b4201210410e78280800021050b2000200437030020002005370308200341106a2480808080000b970102017f027e23808080800041106b22032480808080002003200120021092828080000240024020032802000d002003290308210420032001200241046a10928280800020032802000d0020032003290308370308200320043703004200210420012003410210ad8280800021050c010b4201210410e78280800021050b2000200437030020002005370308200341106a2480808080000b980102017f037e23808080800041106b22032480808080002003200120021094828080002003290308210442012105024020032802000d0020032001200241106a1094828080002003290308210602402003280200450d00200621040c010b20032006370308200320043703004200210520012003410210ad8280800021040b2000200537030020002004370308200341106a2480808080000ba20102017f037e23808080800041106b220324808080800020032002200110c5828080000240024020032802004101470d004201210410e78280800021050c010b2003290308210620032001200241106a109482808000200329030821054201210420032802000d0020032005370308200320063703004200210420012003410210ad8280800021050b2000200437030020002005370308200341106a2480808080000bdc0102017f047e23808080800041206b2203248080808000200341086a200241106a200110c5828080000240024020032802084101470d004201210410e78280800021050c010b20032903102106200341086a20012002109482808000200329031021054201210420032802080d00200341086a2001200241206a1094828080002003290310210702402003280208450d00200721050c010b200320073703182003200537031020032006370308420021042001200341086a410310ad8280800021050b2000200437030020002005370308200341206a2480808080000bcf0102017f047e23808080800041206b2203248080808000200341086a2002200110c5828080000240024020032802080d0020032903102104200341086a200241086a200110c58280800020032802080d0020032903102105200341086a2001200241106a109482808000200329031021064201210720032802080d01200320063703182003200537031020032004370308420021072001200341086a410310ad8280800021060c010b4201210710e78280800021060b2000200737030020002006370308200341206a2480808080000bc70102017f027e23808080800041206b2203248080808000200341086a2002200110c5828080000240024020032802080d0020032903102104200341086a2001200241086a10928280800020032802080d0020032903102105200341086a20012002410c6a10928280800020032802080d00200320032903103703182003200537031020032004370308420021042001200341086a410310ad8280800021050c010b4201210410e78280800021050b2000200437030020002005370308200341206a2480808080000b2e0002402002280200410171450d0020002001200241106a10ea818080000f0b20004200370300200042023703080b2d00024020022802004101470d0020002001200241046a10ec818080000f0b20004200370300200042023703080b2e0002402002280200410171450d0020002001200241106a10eb818080000f0b20004200370300200042023703080b15002000280200417f6aad4220864283808080107c0b4502017f017e23808080800041106b220224808080800020022000200110f581808000024020022802004101470d00000b20022903082103200241106a24808080800020030b6802017f017e23808080800041106b22022480808080000240024020012d00000d0020022000200141016a109382808000024020022802000d00200229030821030c020b10e7828080001a000b200141046a10f98180800021030b200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110f481808000024020022802004101470d00000b20022903082103200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110f081808000024020022802004101470d00000b20022903082103200241106a24808080800020030b6902027f017e23808080800041106b2202248080808000200141046a21030240024020012802000d00200220002003109282808000024020022802000d00200229030821040c020b10e7828080001a000b200310f98180800021040b200241106a24808080800020040ba20d02027f017e23808080800041306b2202248080808000200141086a2103024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012802000e13000102030405060708090a0b0c0d0e0f101112000b200241206a200041ac8dc0800010c08280800020022802200d13200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c120b200241206a200041c08dc0800010c08280800020022802200d12200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c110b200241206a200041d88dc0800010c08280800020022802200d11200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c100b200241206a200041ec8dc0800010c08280800020022802200d10200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c0f0b200241206a200041808ec0800010c08280800020022802200d0f200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c0e0b200241206a200041988ec0800010c08280800020022802200d0e200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c0d0b200241206a200041b08ec0800010c08280800020022802200d0d200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c0c0b200241206a200041c08ec0800010c08280800020022802200d0c200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c0b0b200241206a200041d88ec0800010c08280800020022802200d0b200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c0a0b200241206a200041f48ec0800010c08280800020022802200d0a200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c090b200241206a200041988fc0800010c08280800020022802200d09200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c080b200241206a200041ac8fc0800010c08280800020022802200d0820022002290328370318200241186a10be828080002104200241206a2003200010c58280800020022802200d082002200229032837031020022004370308200241206a200241086a2000109d828080000c070b200241206a200041c08fc0800010c08280800020022802200d0720022002290328370318200241186a10be828080002104200241206a2003200010c58280800020022802200d072002200229032837031020022004370308200241206a200241086a2000109d828080000c060b200241206a200041d48fc0800010c08280800020022802200d0620022002290328370318200241186a10be828080002104200241206a2003200010c58280800020022802200d062002200229032837031020022004370308200241206a200241086a2000109d828080000c050b200241206a200041ec8fc0800010c08280800020022802200d0520022002290328370318200241186a10be828080002104200241206a2003200010c58280800020022802200d052002200229032837031020022004370308200241206a200241086a2000109d828080000c040b200241206a2000418490c0800010c08280800020022802200d04200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c030b200241206a2000419890c0800010c08280800020022802200d0320022002290328370318200241186a10be828080002104200241206a2003200010c58280800020022802200d032002200229032837031020022004370308200241206a200241086a2000109d828080000c020b200241206a200041b090c0800010c08280800020022802200d02200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000c010b200241206a200041c490c0800010c08280800020022802200d01200220022903283703082002200241086a10be82808000370318200241206a2000200241186a10ee818080000b200229032821042002290320500d010b000b200241306a24808080800020040b4502017f017e23808080800041106b220224808080800020022000200110f281808000024020022802004101470d00000b20022903082103200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110ed81808000024020022802004101470d00000b20022903082103200241106a24808080800020030b1700024020012802000d0042020f0b200110f9818080000b6802017f017e23808080800041106b22022480808080000240024020012802000d002002200141086a200010c582808000024020022802000d00200229030821030c020b10e7828080001a000b200141046a10f98180800021030b200241106a24808080800020030b6802017f017e23808080800041106b22022480808080000240024020012802004102460d0020022000200110f781808000024020022802000d00200229030821030c020b10e7828080001a000b200141046a10f98180800021030b200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110f381808000024020022802004101470d00000b20022903082103200241106a24808080800020030b6802017f017e23808080800041106b22022480808080000240024020012802000d0020022000200141106a10ed81808000024020022802000d00200229030821030c020b10e7828080001a000b200141046a10f98180800021030b200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110f181808000024020022802004101470d00000b20022903082103200241106a24808080800020030b6f02017f017e23808080800041106b2202248080808000024002402001290300420285200129030884500d0020022000200110f881808000024020022802000d00200229030821030c020b10e7828080001a000b200141106a10f98180800021030b200241106a24808080800020030b4502017f017e23808080800041106b2202248080808000200220002001109682808000024020022802004101470d00000b20022903082103200241106a24808080800020030b6802017f017e23808080800041106b220224808080800002400240024020012802004101470d00200141046a10f98180800021030c010b20022000200141106a10948280800020022802004101460d01200229030821030b200241106a24808080800020030f0b000b4502017f017e23808080800041106b220224808080800020022000200110ef81808000024020022802004101470d00000b20022903082103200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110ea81808000024020022802004101470d00000b20022903082103200241106a24808080800020030b4502017f017e23808080800041106b220224808080800020022000200110eb81808000024020022802004101470d00000b20022903082103200241106a24808080800020030b4502017f017e23808080800041106b2202248080808000200220002001109782808000024020022802004101470d00000b20022903082103200241106a24808080800020030b4502017f017e23808080800041106b2202248080808000200220002001109882808000024020022802004101470d00000b20022903082103200241106a24808080800020030b6802017f017e23808080800041106b220224808080800002400240024020012802004101470d00200141046a10f98180800021030c010b20022000200141086a10e98180800020022802004101460d01200229030821030b200241106a24808080800020030f0b000b6f02017f017e23808080800041106b2202248080808000024002402001290300420285200129030884500d0020022000200110f681808000024020022802000d00200229030821030c020b10e7828080001a000b200141106a10f98180800021030b200241106a24808080800020030b190020004200370300200020023502004220864204843703080b130020004200370300200020023100003703080b4602017f017e23808080800041106b220324808080800020032001200210b982808000200329030821042000200329030037030020002004370308200341106a2480808080000b100020002001370308200042003703000b130020004200370300200020022903083703080b130020004200370300200020022903003703080b130020004200370300200020022903003703080b130020004200370300200020012903003703080b5202017f017e23808080800041106b2203248080808000200320022903083703082003200229030037030020012003410210dc8280800021042000420037030020002004370308200341106a2480808080000b4502017f017e23808080800041106b2202248080808000200220002001109482808000024020022802004101470d00000b20022903082103200241106a24808080800020030b070020002903000b0e00200020022001109a828080000b130020004200370300200020012903003703080b10002000200129030010c9828080001a0b6001017f23808080800041106b22042480808080000240200020012903002002290300200310d78280800042ff01834202510d00418093c08000412b2004410f6a41f092c0800041e092c0800010f082808000000b200441106a2480808080000b0a00200010d4828080000b0d0020003502004220864204840b0c0020012000109b828080000b070020003100000b02000b0e0020002001200210ca828080000b0e0020002001200210cd828080000b1000200020012002200310d0828080000b12002000200120022003200410d3828080000b0c002000200110d5828080000b0e0020002001200210d9828080000b0c002000200110da828080000b0e0020002001200210dc828080000b12002000200120022003200410dd828080000b140020002001200220032004200510de828080000b1200200141ab93c08000410f10ee828080000b7c01027e024002400240024020022903002203a741ff0171220241c500460d002002410b470d02200041106a200310e1828080000c010b2001200310cb8280800021042001200310cc82808000210320002004370318200020033703100b420021030c010b200010e782808000370308420121030b200020033703000b070020012903000b02000b1000200010d18280800010e0828080000b0e0020002001200210ce828080000b140020002001200210cf8280800010e2828080000b1b002000200110e382808000200210e38280800010d6828080001a0b6102017f017e23808080800041106b220324808080800020032002290300220410e4828080000240024020032802000d00200329030821040c010b2001200410c88280800021040b2000420037030020002004370308200341106a2480808080000b6a02017f027e23808080800041106b22032480808080002003200229030022042002290308220510e5828080000240024020032802000d00200329030821040c010b20012005200410d28280800021040b2000420037030020002004370308200341106a2480808080000b3901017f23808080800041106b22032480808080002003200229020037020820002001200341086a10bb82808000200341106a2480808080000b6d02027f017e23808080800041106b22032480808080002003200228020022042002280204220210e6828080000240024020032802004101470d0020012004200210df8280800021050c010b200329030821050b2000420037030020002005370308200341106a2480808080000b0300000b4400200041003602102000200436020c2000200336020820002002360204200020013602002000200420036b4103762204200220016b410376220320042003491b3602140b070020002903000b0f00200041086a2000109f828080000b5102017f017e23808080800041106b220324808080800020032001200210ba8280800042012104024020032802000d0020002003290308370308420021040b20002004370300200341106a2480808080000b2e01027e4201210302402002290300220442ff018342cd00520d0020002004370308420021030b200020033703000b070020002903000b2401017e200041086a2000290300200129030010d882808000220242005520024200536b0b11002000200110c38280800041ff0171450b130020004200370300200020012903003703080b070020002903000b7a02017f027e23808080800041106b2203248080808000024002402002290300220442ff018342c800510d00200042013703000c010b20032004370308420121050240200341106a200410db8280800010e0828080004120470d0020002004370308420021050b200020053703000b200341106a2480808080000b0a0020011080808080000b0a0020011081808080000b0c00200120021082808080000b0a0020011083808080000b0a0020011084808080000b0c00200120021085808080000b0c00200120021086808080000b0c00200120021087808080000b0e002001200220031088808080000b08001089808080000b0c0020012002108a808080000b10002001200220032004108b808080000b0800108f808080000b0a0020011090808080000b0c00200120021092808080000b0e002001200220031093808080000b0c00200120021094808080000b0c00200120021095808080000b0a0020011096808080000b0a0020011097808080000b1a002001ad4220864204842002ad422086420484108d808080000b2e00024020022004460d00000b2001ad4220864204842003ad4220864204842002ad422086420484108c808080000b3000024020032005460d00000b20012002ad4220864204842004ad4220864204842003ad422086420484108e808080000b1a002001ad4220864204842002ad4220864204841091808080000b08002000422088a70b160020002001423f87370308200020014208873703000b070020004201510b0b002000ad4220864204840b3201017e420121020240200142ffffffffffffffff00560d0020002001420886420684370308420021020b200020023703000b5001017e42012103024020014280808080808080c0007c42ffffffffffffffff00560d00200120018520022001423f8785844200520d0020002001420886420b84370308420021030b200020033703000bb50102017f017e23808080800041106b220324808080800002400240200241094b0d00420021040340024020020d002000410036020020002004420886420e843703080c030b200341086a20012d000010e882808000024020032d00084103460d0020002003290308370204200041013602000c030b2002417f6a2102200141016a2101200442068620033100098421040c000b0b20002002360208200041003a0004200041013602000b200341106a2480808080000b0900428390808080010b820101017f410121020240200141ff017141df00460d0002400240200141506a41ff0171410a490d00200141bf7f6a41ff0171411a490d0102402001419f7f6a41ff0171411a490d00200020013a0001200041013a00000f0b200141456a21020c020b200141526a21020c010b2001414b6a21020b200041033a0000200020023a00010b180020002802002001200028020428020c118080808000000ba30501077f024002402000280208220341808080c00171450d00024002402003418080808001710d00024020024110490d002001200210ed8280800021040c020b024020020d0041002104410021020c020b2002410371210502400240200241044f0d0041002106410021040c010b2002410c712107410021064100210403402004200120066a22082c000041bf7f4a6a200841016a2c000041bf7f4a6a200841026a2c000041bf7f4a6a200841036a2c000041bf7f4a6a21042007200641046a2206470d000b0b2005450d01200120066a21080340200420082c000041bf7f4a6a2104200841016a21082005417f6a22050d000c020b0b02400240024020002f010e22070d00410021020c010b200120026a21054100210220012108200721060340200822042005460d020240024020042c00002208417f4c0d00200441016a21080c010b0240200841604f0d00200441026a21080c010b0240200841704f0d00200441036a21080c010b200441046a21080b200820046b20026a21022006417f6a22060d000b0b410021060b200720066b21040b200420002f010c22084f0d00200820046b210941002104410021070240024002402003411d764103710e0402000102020b200921070c010b200941feff037141017621070b200341ffffff00712105200028020421062000280200210002400340200441ffff0371200741ffff03714f0d0141012108200441016a210420002005200628021011808080800000450d000c030b0b41012108200020012002200628020c118180808000000d0141002104200920076b41ffff037121020340200441ffff037122072002492108200720024f0d02200441016a210420002005200628021011808080800000450d000c020b0b200028020020012002200028020428020c1181808080000021080b20080b140020012000280200200028020410ea828080000b4701017f23808080800041206b2203248080808000200320013602102003200036020c200341013b011c2003200236021820032003410c6a360214200341146a10bc82808000000bf10601087f024002402001200041036a417c71220220006b2203490d00200120036b22044104490d00200441037121054100210641002101024020022000460d0041002107410021010240200020026b2208417c4b0d00410021074100210103402001200020076a22022c000041bf7f4a6a200241016a2c000041bf7f4a6a200241026a2c000041bf7f4a6a200241036a2c000041bf7f4a6a2101200741046a22070d000b0b200020076a21020340200120022c000041bf7f4a6a2101200241016a2102200841016a22080d000b0b200020036a210802402005450d002008200441fcffffff07716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21070340200821062003450d02200341c001200341c001491b22044103712105024002402004410274220941f0077122080d00410021020c010b410021022006210103402001410c6a2802002200417f73410776200041067672418182840871200141086a2802002200417f73410776200041067672418182840871200141046a2802002200417f7341077620004106767241818284087120012802002200417f7341077620004106767241818284087120026a6a6a6a2102200141106a2101200841706a22080d000b0b200320046b2103200620096a2108200241087641ff81fc0771200241ff81fc07716a418180046c41107620076a21072005450d000b2006200441fc01714102746a22022802002201417f734107762001410676724181828408712101024020054101460d0020022802042208417f7341077620084106767241818284087120016a210120054102460d0020022802082202417f7341077620024106767241818284087120016a21010b200141087641ff811c71200141ff81fc07716a418180046c41107620076a21070c010b024020010d0041000f0b2001410371210802400240200141044f0d0041002102410021070c010b2001417c712103410021024100210703402007200020026a22012c000041bf7f4a6a200141016a2c000041bf7f4a6a200141026a2c000041bf7f4a6a200141036a2c000041bf7f4a6a21072003200241046a2202470d000b0b2008450d00200020026a21010340200720012c000041bf7f4a6a2107200141016a21012008417f6a22080d000b0b20070b1a00200028020020012002200028020428020c118180808000000b4a01017f23808080800041106b220324808080800020032001360204200320003602002003418380808000ad4220862003ad84370308418480c08000200341086a200210ec82808000000b6e01017f23808080800041206b220524808080800020052001360204200520003602002005200336020c200520023602082005418480808000ad422086200541086aad843703182005418380808000ad4220862005ad84370310418080c08000200541106a200410ec82808000000b130041ba93c080004139200010ec82808000000b140041d693c0800041c300200010ec82808000000b140041f793c0800041c300200010ec82808000000bbc0804017f017e037f047e23808080800041b0016b220524808080800042002106024002400240024020047920037942c0007c20044200521ba7220720027920017942c0007c20024200521ba722084d0d002008413f4b0d01200741df004b0d02024002400240200720086b4120490d00200541a0016a2003200441e00020076b220910fb8280800020053502a00142017c210a4200210b420021060c010b200541306a2001200241c00020086b220810fb82808000200541206a20032004200810fb82808000420021062005200342002005290330200529032080220c420010f582808000200541106a20044200200c420010f5828080002005290300210a024020052903182005290308220d20052903107c220b200d54ad7c4200520d002001200a5422082002200b542002200b511b450d020b200420027c200320017c2201200354ad7c200b7d2001200a54ad7d2102200c427f7c210c2001200a7d21010c050b02400240034020054190016a2001200241c00020086b220810fb82808000200529039001210c0240200820094f0d00200541d0006a20032004200810fb82808000200541c0006a20032004200c200529035080220d420010f582808000024020012005290340220a54220820022005290348220c542002200c511b0d002002200c7d2008ad7d21022001200a7d21012006200b200d7c220c200b54ad7c21060c090b200220047c200120037c2204200154ad7c200c7d2004200a54ad7d21022004200a7d21012006200d200b7c427f7c220c200b54ad7c21060c080b20054180016a200c200a80220c4200200820096b220810f982808000200541f0006a20032004200c420010f582808000200541e0006a20052903702005290378200810f98280800020052903880120067c2005290380012206200b7c220b200654ad7c210602402007200220052903687d20012005290360220c54ad7d2202792001200c7d22017942c0007c20024200521ba722084d0d002008413f4b0d020c010b0b20012003542208200220045420022004511b450d01200b210c0c060b20012001200380220220037e7d21012006200b20027c220c200b54ad7c2106420021020c050b200220047d2008ad7d2102200120037d21012006200b42017c220c50ad7c21060c040b2002200b7d2008ad7d21022001200a7d2101420021060c030b200220044200200120035a200220045a20022004511b22081b7d20012003420020081b220454ad7d2102200120047d21012008ad210c0c020b20012001200380220c20037e7d210142002106420021020c010b20022002200342ffffffff0f83220480220620037e7d4220862001422088220c842004802202422086200c200220037e7d422086200142ffffffff0f83842201200480220384210c2001200320047e7d210120024220882006842106420021020b200020013703102000200c3703002000200237031820002006370308200541b0016a2480808080000b6e01067e2000200342ffffffff0f832205200142ffffffff0f8322067e22072003422088220820067e22062005200142208822097e7c22054220867c220a3703002000200820097e2005200654ad4220862005422088847c200a200754ad7c200420017e200320027e7c7c3703080bba07010c7f23808080800041106b210302400240200241104f0d00200021040c010b024020002000410020006b41037122056a22064f0d002005417f6a2107200021042001210802402005450d002005210920002104200121080340200420082d00003a0000200841016a2108200441016a21042009417f6a22090d000b0b20074107490d000340200420082d00003a0000200441016a200841016a2d00003a0000200441026a200841026a2d00003a0000200441036a200841036a2d00003a0000200441046a200841046a2d00003a0000200441056a200841056a2d00003a0000200441066a200841066a2d00003a0000200441076a200841076a2d00003a0000200841086a2108200441086a22042006470d000b0b2006200220056b2209417c7122076a210402400240200120056a22084103712201450d00410021022003410036020c2003410c6a20017221050240410420016b220a410171450d00200520082d00003a0000410121020b0240200a410271450d00200520026a200820026a2f01003b01000b200820016b21022001410374210b200328020c210502400240200641046a2004490d002006210c0c010b4100200b6b411871210d034020062005200b76200241046a22022802002205200d7472360200200641086a210a200641046a220c2106200a2004490d000b0b41002106200341003a0008200341003a00060240024020014101470d00200341086a210d410021014100210a4100210e0c010b200241056a2d0000210a2003200241046a2d000022013a0008200a410874210a4102210e200341066a210d0b02402008410171450d00200d200241046a200e6a2d00003a000020032d0006411074210620032d000821010b200c200a200672200141ff0171724100200b6b411871742005200b76723602000c010b200620044f0d0020082101034020062001280200360200200141046a2101200641046a22062004490d000b0b20094103712102200820076a21010b02402004200420026a22064f0d002002417f6a2109024020024107712208450d000340200420012d00003a0000200141016a2101200441016a21042008417f6a22080d000b0b20094107490d000340200420012d00003a0000200441016a200141016a2d00003a0000200441026a200141026a2d00003a0000200441036a200141036a2d00003a0000200441046a200141046a2d00003a0000200441056a200141056a2d00003a0000200441066a200141066a2d00003a0000200441076a200141076a2d00003a0000200141086a2101200441086a22042006470d000b0b20000b0e0020002001200210f6828080000bd50303017f027e027f23808080800041e0006b220624808080800042002107420021084100210902402001200284500d002003200484500d00420020037d2003200442005322091b2107420020017d20012002420053220a1b2108420020042003420052ad7c7d200420091b21032004200285210402400240420020022001420052ad7c7d2002200a1b2202500d0002402003500d00200641d0006a200720032008200210f5828080004101210920062903582101200629035021020c020b200641c0006a200720032008420010f582808000200641306a200720032002420010f5828080002006290330220220062903487c22012002542006290338420052722109200629034021020c010b02402003500d00200641206a200742002008200210f582808000200641106a200342002008200210f5828080002006290310220220062903287c22012002542006290318420052722109200629032021020c010b2006200720032008200210f5828080004100210920062903082101200629030021020b420020027d20022004420053220a1b2108420020012002420052ad7c7d2001200a1b22072004854200590d00410121090b200020083703002005200936020020002007370308200641e0006a2480808080000b5701017e02400240200341c000710d002003450d0120022003413f71ad2204862001410020036b413f71ad88842102200120048621010c010b20012003413f71ad862102420021010b20002001370300200020023703080ba10101027f23808080800041206b22052480808080002005420020017d2001200242005322061b420020022001420052ad7c7d200220061b420020037d2003200442005322061b420020042003420052ad7c7d200420061b10f4828080002005290308210320004200200529030022017d2001200420028542005322061b3703002000420020032001420052ad7c7d200320061b370308200541206a2480808080000b5701017e02400240200341c000710d002003450d012002410020036b413f71ad8620012003413f71ad220488842101200220048821020c010b20022003413f71ad882101420021020b20002001370300200020023703080b0ba2140100418080c0000b9814c0023a20c0002f686f6d652f6465762d6162656c2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d313934396366386336623562353537662f736f726f62616e2d73646b2d32352e332e312f7372632f656e762e7273002f686f6d652f6465762d6162656c2f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f6f70732f66756e6374696f6e2e727300636f6e7472616374732f6661726d696e672d706f6f6c2f7372632f6c69622e7273000000e0001000210000006701000005000000000000000000000000000000000000000000000001000000e803000000000000000000000400000000000000000000000000000002000000000000000000000000000000030000000000000000000000000000000500000000000000000000000000000011000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000001000000e000100021000000c40400000c000000e000100021000000bf04000011000000e000100021000000b904000017000000e000100021000000b804000011000000616d6f756e74206d75737420626520706f73697469766500e0001000210000002002000009000000e0001000210000002f0200000d00000000000000010000000000000000000000000000000800000000000000000000000000000001000000e0001000210000005f020000090000006e6f2061637469766520706f736974696f6e0000e0001000210000006202000036000000696e73756666696369656e74206c6f636b65642062616c616e636500e00010002100000063020000090000006d696e696d756d206c6f636b20706572696f64206e6f7420656c617073656400e0001000210000006602000009000000e0001000210000006d02000009000000e0001000210000007602000027000000000000000f000000000000000000000000000000e0001000210000009902000025000000e000100021000000990200000c000000e000100021000000a402000023000000e000100021000000a40200000900000009000000000000000000000000000000e000100021000000190300000d000000e0001000210000003d030000090000000a0000000000000000000000000000006d617820353020616464726573736573207065722063616c6c000000e0001000210000008a03000009000000e0001000210000009d030000090000000000000007000000000000000000000000000000e000100021000000c303000009000000e000100021000000d20300000d0000006e6f20616374697665207374616b6500e0001000210000000104000035000000e000100021000000ef04000009000000010000006400000000000000616c6c6f636174696f6e5f706374206d75737420626520312d313030e0001000210000001b04000009000000e0001000210000003b01000005000000746f74616c207374616b65206f766572666c6f77e000100021000000e700000024000000e000100021000000700100001f000000e0001000210000007001000005000000e0001000210000002e01000013000000e0001000210000002f01000015000000e0001000210000003001000019000000e0001000210000003101000005000000e0001000210000005601000005000000746f74616c207374616b6520756e646572666c6f77000000e000100021000000f3000000240000006800100077000000fa000000050000000000000000000000010000000100000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565436f6e76657273696f6e4572726f7200000eb7bae2b379e700616d6f756e74636865636b706f696e745f6c65646765726372656469745f726174656c6f636b5f6c6564676572746f74616c5f63726564697473756e6c6f636b5f6c656467657200b005100006000000b605100011000000c70510000b000000d20510000b000000dd0510000d000000ea0510000d000000637265646974735f62616e6b65646d756c7469706c69657273746172745f6c6564676572b005100006000000c70510000b000000280610000e000000360610000a000000400610000c000000706f736974696f6e5f637265646974737374616b655f637265646974730000007406100010000000840610000d00000041646d696e000000a40610000500000050656e64696e6741646d696eb40610000c000000476c6f62616c4d756c7469706c696572c806100010000000437265646974526174650000e00610000a0000005374616b65546f6b656e0000f40610000a0000004d696e4c6f636b506572696f64000000080710000d000000536368656d6156657273696f6e000000200710000d000000506175736564000038071000060000005061757365645374616b696e67000000480710000d0000005061757365645769746864726177616c730000006007100011000000476c6f62616c4d756c7469706c6965724368616e67654c65646765727c0710001c00000055736572426f6f7374000000a007100009000000557365725374616b65000000b40710000900000055736572506f736974696f6ec80710000c00000042616e6b656443726564697473000000dc0710000d00000057686974656c697374456e61626c6564f40710001000000057686974656c6973746564000c0810000b0000004d696e5374616b65416d6f756e740000200810000e000000546f74616c5374616b656400380810000b000000616d6f756e74636865636b706f696e745f6c65646765726372656469745f726174656c6f636b5f6c6564676572746f74616c5f63726564697473756e6c6f636b5f6c6564676572004c081000060000005208100011000000630810000b0000006e0810000b000000790810000d000000860810000d000000637265646974735f62616e6b65646d756c7469706c69657273746172745f6c65646765724c08100006000000630810000b000000c40810000e000000d20810000a000000dc0810000c000000616c6c6f636174696f6e5f7063740000100910000e000000d20810000a000000706f736974696f6e5f637265646974737374616b655f637265646974730000003009100010000000400910000d0000000600100061000000950100000e0000000000000000000000010000000200000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565436f6e76657273696f6e4572726f72617474656d707420746f206164642077697468206f766572666c6f77617474656d707420746f206d756c7469706c792077697468206f766572666c6f77617474656d707420746f2073756274726163742077697468206f766572666c6f7700b3650e636f6e747261637473706563763000000000000000000000000561646d696e0000000000000000000001000003e900000013000007d000000009506f6f6c4572726f7200000000000000000000000000000570617573650000000000000000000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000004005374616b652060616d6f756e746020746f6b656e732e2049662061207072696f72207374616b65206578697374732c206561726e656420637265646974732061726520636865636b706f696e7465642066697273742e0a0a23204e6f206d696e696d756d206c6f636b20706572696f6420e280942064656c696265726174656c790a556e6c696b6520606c6f636b5f617373657473602c207468697320666c657869626c65207374616b652073797374656d20686173202a2a6e6f2a2a20656e666f72636564206c6f636b0a706572696f6420616e642060756e7374616b65602063616e2062652063616c6c656420696d6d6564696174656c792e205468697320697320616e20696e74656e74696f6e616c0a64657369676e2070726f7065727479206f662074686520626f6f73742f7374616b652073797374656d20287365652060646f63732f7374616b696e675f73797374656d732e6d6460292c0a6e6f7420616e206f76657273696768743a206974206973206120736570617261746520636f6e74696e756f75732d7374616b696e67206d6f64656c206275696c7420666f720a666c657869626c65206465706f736974732077686572652061206c6f636b20776f756c64206465666561742069747320707572706f73652e0a0a5468652022666c6173682d7374616b696e672220636f6e6365726e2072616973656420696e202331363920287374616b6520616e6420696d6d6564696174656c790a756e7374616b6529206578706f736573206e6f2070726976696c6567652c20626563617573653a0a2d2041207374616b65206973202a2a6e6f742a2a2061206c6f616e206f66206c657665726167653a2074686520706f6f6c206e65766572206f776573206d6f7265207468616e0a746865206578616374207374616b656420616d6f756e742c20616e642060756e7374616b65602072657475726e73206f6e6c7920607374616b652e616d6f756e74602e0a2d204372656469747320616363727565206c696e6561726c79206f766572202a656c6170736564206c6564676572732a20287365652060636f6d707574655f7374616b655f6163637275616c60292c0a736f20616e20696d6d65646961746520726f756e642d747269702062616e6b73207e3020637265646974733b207468657265206973206e6f2066697865640a75702d66726f6e742072657761726420746f20686172766573742e0a2d204f6e207374616b652c2074686520706f736974696f6e20697320636865636b706f696e74656420746f207468652063757272656e74206c656467657220616e640a63726564697420726174653b206f6e20756e7374616b6520697420697320636865636b706f696e74656420616761696e2c20736f20616e7920696e7465726d000000057374616b6500000000000002000000000000000466726f6d000000130000000000000006616d6f756e7400000000000b00000001000003e900000002000007d000000009506f6f6c4572726f720000000000000000000000000000076d696772617465000000000000000001000003e900000004000007d000000009506f6f6c4572726f72000000000000000000000000000007756e7061757365000000000000000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000014f5769746864726177207468652063616c6c6572277320656e7469726520666c657869626c65207374616b6520616e642062616e6b20746865206163637275656420637265646974732e0a0a5468657265206973206e6f206d696e696d756d206c6f636b20706572696f64202873656520607374616b6560293b207468652063616c6c6572206d61792077697468647261772061740a616e792074696d652e2042656361757365206372656469747320616363727565206f6e6c79206f76657220656c6170736564206c656467657273202823313639292c20616e0a696d6d656469617465207374616b65e28692756e7374616b6520726f756e642d74726970206561726e73206e6f20637265646974732c20736f20746865206c61636b206f6620610a6c6f636b20646f6573206e6f7420637265617465206120666c6173682d7374616b696e67207265776172642e0000000007756e7374616b650000000001000000000000000466726f6d0000001300000001000003e90000000b000007d000000009506f6f6c4572726f72000000000000000000000000000007757067726164650000000001000000000000000d6e65775f7761736d5f68617368000000000003ee0000002000000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000004452657475726e207468652063757272656e74207374616b65207265636f726420666f72206075736572602c206f7220604e6f6e6560206966206e6f74207374616b65642e000000096765745f7374616b65000000000000010000000000000004757365720000001300000001000003e9000003e8000007d000000009557365725374616b65000000000007d000000009506f6f6c4572726f7200000000000000000000000000000969735f7061757365640000000000000000000001000003e900000001000007d000000009506f6f6c4572726f720000000000000000000000000000097365745f626f6f73740000000000000200000000000000047573657200000013000000000000000e616c6c6f636174696f6e5f70637400000000000400000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000dd496e697469616c697a652074686520706f6f6c2e2060676c6f62616c5f6d756c7469706c6965726020616e6420606372656469745f72617465602061726520626f756e6465640a627920604d41585f474c4f42414c5f4d554c5449504c494552602f604d41585f4352454449545f524154456020e28094207365652023383920666f72207468650a6f766572666c6f772d7361666574792064657269766174696f6e20736861726564207769746820607365745f676c6f62616c5f6d756c7469706c6965726020616e640a607365745f6372656469745f72617465602e0000000000000a696e697469616c697a65000000000006000000000000000561646d696e00000000000013000000000000000b7374616b655f746f6b656e00000000130000000000000011676c6f62616c5f6d756c7469706c69657200000000000004000000000000000b6372656469745f72617465000000000b000000000000000f6d696e5f6c6f636b5f706572696f64000000000400000000000000106d696e5f7374616b655f616d6f756e740000000b00000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000000000000b6372656469745f72617465000000000000000001000003e90000000b000007d000000009506f6f6c4572726f72000000000000000000020052657475726e2074686520746f74616c2063726564697473202862616e6b6564202b20756e636f6d6d69747465642920666f72206075736572602e0a0a546869732072657475726e73207468652075736572277320616363756d756c617465642063726564697473206163726f737320626f746820746865206c6f636b65640a706f736974696f6e20616e6420666c657869626c65207374616b652073797374656d732e20437265646974202a686973746f72792a2028686f7720637265646974730a61636372756564206f7665722074696d6529206973206e6f7420747261636b6564206f6e2d636861696e20e28094206f6e6c79207468652063757272656e7420746f74616c2e0a4f66662d636861696e20696e646578657273206d7573742073756273637269626520746f20602822706f6f6c222c20227374616b65642229602c0a602822706f6f6c222c2022756e7374616b65642229602c20602822706f6f6c222c20226c6f636b65642229602c20616e6420602822706f6f6c222c2022756e6c6f636b65642229600a6576656e747320616e64206d61696e7461696e207468656972206f776e2072756e6e696e67206c6564676572206f66207065722d636865636b706f696e74206372656469740a736e617073686f747320746f207265636f6e737472756374206561726e696e6773206f7665722074696d652e0000000b6765745f6372656469747300000000010000000000000004757365720000001300000001000003e90000000b000007d000000009506f6f6c4572726f7200000000000000000000ce4c6f636b2061737365747320666f7220746865206d696e696d756d206c6f636b20706572696f642e204120746f702d757020636865636b706f696e7473207468650a6578697374696e6720706f736974696f6e20616e6420657874656e6473206974732077686f6c652d706f736974696f6e20756e6c6f636b206c656467657220746f207468650a6c61746572206f6620746865206578697374696e6720756e6c6f636b206c656467657220616e64206120667265736820706572696f642066726f6d20746869732063616c6c2e00000000000b6c6f636b5f6173736574730000000002000000000000000475736572000000130000000000000006616d6f756e7400000000000b00000001000003e900000002000007d000000009506f6f6c4572726f720000000000000000000048416363657074207468652070656e64696e672061646d696e2068616e646f66662e204f6e6c79207468652070726f706f7365642061646d696e2063616e20617574686f726973652e0000000c6163636570745f61646d696e0000000000000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000ee4c6967687477656967687420636865636b20666f722077686574686572206075736572602068617320616e20616374697665206c6f636b656420706f736974696f6e2e0a0a52657475726e7320607472756560206966207468652075736572206861732061206e6f6e2d7a65726f206c6f636b656420706f736974696f6e2c206066616c7365600a6f74686572776973652e20546869732069732063686561706572207468616e20606765745f757365725f706f736974696f6e602061732069742061766f6964730a636f6d707574696e6720756e636f6d6d697474656420637265646974206163637275616c2e00000000000c6861735f706f736974696f6e000000010000000000000004757365720000001300000001000003e900000001000007d000000009506f6f6c4572726f7200000000000000000000000000000c746f74616c5f7374616b65640000000000000001000003e90000000b000007d000000009506f6f6c4572726f7200000000000000000000000000000d70617573655f7374616b696e670000000000000000000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000014050726f706f736520616e2061646d696e2068616e646f66662e205468652070726f706f7365642061646d696e206d7573742073657061726174656c792063616c6c0a606163636570745f61646d696e6020616e6420617574686f72697365207468652063616c6c206265666f7265207468652068616e646f666620636f6d706c657465732e0a0a50726f706f73696e67207468652063757272656e742061646d696e2063616e63656c7320616e792070656e64696e672068616e646f66662e2041206e65772070726f706f73616c0a616c736f206f76657277726974657320616e206578697374696e672070656e64696e672068616e646f66662e0a456d69747320602822706f6f6c222c202261646d5f70726f70222960207769746820602863757272656e745f61646d696e2c2070726f706f7365645f61646d696e29602e0000000d70726f706f73655f61646d696e0000000000000100000000000000096e65775f61646d696e0000000000001300000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000000000000d756e6c6f636b5f61737365747300000000000002000000000000000475736572000000130000000000000006616d6f756e7400000000000b00000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000004e5075626c69633a20636865636b206966206075736572602069732077686974656c69737465642e2042756d70732054544c206f662074686520656e7472792069662077686974656c69737465642e00000000000e69735f77686974656c697374656400000000000100000000000000047573657200000013000000010000000100000000000000000000000e736368656d615f76657273696f6e0000000000000000000100000004000000000000010841646d696e3a207472616e736665722061646d696e2072696768747320746f20606e65775f61646d696e6020696e206f6e6520737465702e0a0a446570726563617465643a20757365206070726f706f73655f61646d696e6020666f6c6c6f77656420627920606163636570745f61646d696e6020736f20746865206e65770a61646d696e206d7573742070726f766520636f6e74726f6c206f66206974732061646472657373206265666f7265207468652068616e646f666620636f6d706c657465732e0a456d697473206120602822706f6f6c222c202261646d5f786672222960206576656e7420776974682060286f6c645f61646d696e2c206e65775f61646d696e29602e0000000e7472616e736665725f61646d696e00000000000100000000000000096e65775f61646d696e0000000000001300000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000000000000f6765745f6372656469745f72617465000000000000000001000003e90000000b000007d000000009506f6f6c4572726f7200000000000000000000000000000f6d696e5f6c6f636b5f706572696f64000000000000000001000003e900000004000007d000000009506f6f6c4572726f72000000000000000000026c5365742074686520637265646974206163637275616c20726174652e2052656a65637473206e6f6e2d706f7369746976652076616c75657320616e6420616e797468696e670a61626f766520604d41585f4352454449545f524154456020e28094207365652023383920666f7220746865206f766572666c6f772d7361666574792064657269766174696f6e2e0a0a546865206e657720726174652074616b65732065666665637420696d6d6564696174656c7920666f72202a6e65772a20636865636b706f696e74732e204578697374696e670a7374616b6564206f72206c6f636b65642075736572732072657461696e2074686569722070726576696f7573207261746520736e617073686f7420756e74696c20746865790a696e7465726163742028652e672e20607374616b65602f60756e7374616b6560206f7220606c6f636b5f617373657473602f60756e6c6f636b5f61737365747360292c0a617420776869636820706f696e742060636865636b706f696e7460207265636f72647320746865206e657720726174652e20546869732069732062792064657369676e3a0a697465726174696e6720616c6c206f6e2d636861696e207573657220656e747269657320776f756c642062652070726f68696269746976656c7920657870656e736976652e0a4f66662d636861696e20696e6465786572732073686f756c64206170706c792074686520726174652066726f6d207468652060726174655f73657460206576656e740a7768656e20636f6d707574696e67206372656469747320666f722075736572732077686f2068617665206e6f742079657420636865636b706f696e7465642e0000000f7365745f6372656469745f72617465000000000100000000000000086e65775f726174650000000b00000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000000000000f756e70617573655f7374616b696e67000000000000000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000003941646d696e3a206164642060757365726020746f207468652077686974656c6973742e2041646d696e206d75737420617574686f726973652e000000000000106164645f746f5f77686974656c697374000000010000000000000004757365720000001300000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000003341646d696e3a20656e61626c652077686974656c697374206d6f64652e2041646d696e206d75737420617574686f726973652e0000000010656e61626c655f77686974656c6973740000000000000001000003e900000002000007d000000009506f6f6c4572726f720000000000000000000000000000106765745f626f6f73745f636f6e666967000000010000000000000004757365720000001300000001000003e9000003e8000007d00000000b426f6f7374436f6e66696700000007d000000009506f6f6c4572726f7200000000000000000000000000001163616c63756c6174655f63726564697473000000000000010000000000000004757365720000001300000001000003e90000000b000007d000000009506f6f6c4572726f72000000000000000000003441646d696e3a2064697361626c652077686974656c697374206d6f64652e2041646d696e206d75737420617574686f726973652e0000001164697361626c655f77686974656c6973740000000000000000000001000003e900000002000007d000000009506f6f6c4572726f720000000000000000000000000000116765745f757365725f706f736974696f6e000000000000010000000000000004757365720000001300000001000003e9000003e8000007d000000008506f736974696f6e000007d000000009506f6f6c4572726f7200000000000000000000000000001170617573655f7769746864726177616c730000000000000000000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000010c5769746864726177207374616b65642f6c6f636b656420746f6b656e7320647572696e6720656d657267656e6379207768656e20706f6f6c206973207061757365642e0a0a416c6c6f777320757365727320746f2073656c662d77697468647261772074686569722061737365747320647572696e67206120706175736520776974686f757420726571756972696e670a61646d696e20696e74657276656e74696f6e2e20526571756972657320617574686f72697a6174696f6e2066726f6d206075736572602e20436865636b706f696e747320616e64207072657365727665730a616363727565642063726564697420746f74616c7320696e206042616e6b656443726564697473602e00000012656d657267656e63795f77697468647261770000000000010000000000000004757365720000001300000001000003e90000000b000007d000000009506f6f6c4572726f720000000000000000000000000000126765745f62616e6b65645f6372656469747300000000000100000000000000047573657200000013000000010000000b0000000000000000000000136765745f6d696e5f6c6f636b5f706572696f64000000000000000001000003e900000004000007d000000009506f6f6c4572726f720000000000000000000000000000137365745f6d696e5f6c6f636b5f706572696f640000000001000000000000000a6e65775f706572696f6400000000000400000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000000000000013756e70617573655f7769746864726177616c73000000000000000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000003e52657475726e207468652063757272656e74206d696e207374616b6520616d6f756e74202c206f7220604e6f6e6560206966206e6f74207374616b65642e0000000000146765745f6d696e5f7374616b655f616d6f756e740000000000000001000003e90000000b000007d000000009506f6f6c4572726f720000000000000000000000000000147365745f6d696e5f7374616b655f616d6f756e74000000010000000000000006616d6f756e7400000000000b00000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000003e41646d696e3a2072656d6f7665206075736572602066726f6d207468652077686974656c6973742e2041646d696e206d75737420617574686f726973652e00000000001572656d6f76655f66726f6d5f77686974656c697374000000000000010000000000000004757365720000001300000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000865365742074686520676c6f62616c20637265646974206d756c7469706c6965722e2052656a65637473203020616e6420616e797468696e672061626f76650a604d41585f474c4f42414c5f4d554c5449504c4945526020e28094207365652023383920666f7220746865206f766572666c6f772d7361666574792064657269766174696f6e2e0000000000157365745f676c6f62616c5f6d756c7469706c69657200000000000001000000000000000a6d756c7469706c69657200000000000400000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000006a41646d696e3a20626174636820616464206d756c7469706c65206075736572736020746f207468652077686974656c6973742e2043617070656420617420353020616464726573736573207065722063616c6c2e2041646d696e206d75737420617574686f726973652e00000000001662617463685f6164645f746f5f77686974656c69737400000000000100000000000000057573657273000000000003ea0000001300000001000003e900000002000007d000000009506f6f6c4572726f72000000000000000000012152657475726e20746865206d696e696d756d206c6f636b20706572696f6420696e207365636f6e64732028617373756d696e67207e35732f6c6564676572292e0a0a54686520726177206c656467657220636f756e7420696e20606d696e5f6c6f636b5f706572696f646020697320616e20696d706c656d656e746174696f6e2064657461696c0a746861742066726f6e74656e647320616e642075736572732063616e6e6f74206d65616e696e6766756c6c7920646973706c61792e20546869732068656c7065720a636f6e766572747320697420746f20612068756d616e2d7265616461626c65206475726174696f6e20736f205549732063616e2073686f7720646179732f686f7572730a6469726563746c792e2053656520233136362e000000000000176d696e5f6c6f636b5f706572696f645f7365636f6e6473000000000000000001000003e900000006000007d000000009506f6f6c4572726f72000000000000000000010952657475726e207468652062616e6b6564206372656469747320666f72206075736572602c2073706c6974206279207374616b696e672073797374656d2e205468650a6c6f636b2f756e6c6f636b2060706f736974696f6e6020616e6420626f6f737420607374616b656020686973746f7269657320617265206b65707420736570617261746520736f0a74686174206120757365722077686f2068656c6420626f746820646f6573206e6f74206c6f736520776869636820637265646974732063616d652066726f6d2077686572650a2823313435292e2052657475726e73207a65726f73207768656e2060757365726020686173206e6f2062616e6b656420637265646974732e000000000000186765745f62616e6b65645f637265646974735f73706c6974000000010000000000000004757365720000001300000001000003e9000007d00000001242616e6b6564437265646974546f74616c730000000007d000000009506f6f6c4572726f72000000000000000000011d41646d696e3a2062617463682072656d6f7665206d756c7469706c6520607573657273602066726f6d207468652077686974656c6973742e2043617070656420617420353020616464726573736573207065722063616c6c2e2041646d696e206d75737420617574686f726973652e0a0a4d6972726f7273206062617463685f6164645f746f5f77686974656c6973746020736f2061646d696e732077686f206e65656420746f207265766f6b65206d616e790a757365727320646f206e6f74206861766520746f206973737565206f6e65206072656d6f76655f66726f6d5f77686974656c697374602063616c6c2070657220757365722c0a7768696368206973206761732d696e656666696369656e742e2053656520233136372e0000000000001b62617463685f72656d6f76655f66726f6d5f77686974656c697374000000000100000000000000057573657273000000000003ea0000001300000001000003e900000002000007d000000009506f6f6c4572726f7200000000000000000000000000001b6765745f6d696e5f6c6f636b5f706572696f645f7365636f6e6473000000000000000001000003e900000006000007d000000009506f6f6c4572726f72000000000000020000003253746f72616765206b65797320666f7220616c6c2070657273697374656e7420616e6420696e7374616e636520646174612e00000000000000000007446174614b6579000000001300000000000000000000000541646d696e00000000000000000000000000000c50656e64696e6741646d696e000000000000000000000010476c6f62616c4d756c7469706c69657200000000000000000000000a43726564697452617465000000000000000000000000000a5374616b65546f6b656e000000000000000000000000000d4d696e4c6f636b506572696f6400000000000000000000000000000d536368656d6156657273696f6e000000000000000000000000000006506175736564000000000000000000000000000d5061757365645374616b696e670000000000000000000000000000115061757365645769746864726177616c7300000000000000000000000000001c476c6f62616c4d756c7469706c6965724368616e67654c656467657200000001000000000000000955736572426f6f73740000000000000100000013000000010000000000000009557365725374616b65000000000000010000001300000001000000000000000c55736572506f736974696f6e000000010000001300000001000000000000000d42616e6b656443726564697473000000000000010000001300000000000000000000001057686974656c697374456e61626c656400000001000000000000000b57686974656c697374656400000000010000001300000000000000000000000e4d696e5374616b65416d6f756e74000000000000000000000000000b546f74616c5374616b65640000000001000002415265636f7264656420737461746520666f72206120757365722773206c6f636b696e6720706f736974696f6e20696e207468652074696d652d6c6f636b6564207374616b696e672073797374656d2e0a0a60506f736974696f6e6020656e666f726365732061206d616e6461746f7279206d696e696d756d206c6f636b206475726174696f6e2028606d696e5f6c6f636b5f706572696f6460292c2070726576656e74696e670a7769746864726177616c73207669612060756e6c6f636b5f6173736574736020756e74696c2060756e6c6f636b5f6c65646765726020697320726561636865642e20416464696e6720746f20616e206578697374696e670a706f736974696f6e20657874656e64732060756e6c6f636b5f6c65646765726020746f20746865206c61746572206f66206974732063757272656e742076616c756520616e642061206672657368206c6f636b20706572696f640a66726f6d2074686520746f702d7570206c65646765722e204163637275616c2069732063616c63756c61746564207573696e672060616d6f756e74202a206372656469745f72617465202a20656c6170736564602e0a456d697473207374727563747572656420606c6f636b65646020616e642060756e6c6f636b656460206576656e74732e0a557365727320696e7465726163742076696120606c6f636b5f617373657473602c2060756e6c6f636b5f617373657473602c206063616c63756c6174655f63726564697473602c20616e6420606765745f757365725f706f736974696f6e602e0000000000000000000008506f736974696f6e000000060000000000000006616d6f756e7400000000000b0000000000000011636865636b706f696e745f6c65646765720000000000000400000040437265646974207261746520736e617073686f74207573656420666f72206163637275616c2073696e63652060636865636b706f696e745f6c6564676572602e0000000b6372656469745f72617465000000000b000000000000000b6c6f636b5f6c65646765720000000004000000000000000d746f74616c5f637265646974730000000000000b000000894561726c69657374206c6564676572206174207768696368207468652077686f6c6520706f736974696f6e206d617920626520756e6c6f636b65642e20546f702d7570730a657874656e64207468697320746f206174206c656173742061206672657368206d696e696d756d206c6f636b20706572696f642066726f6d2074686520746f702d75702e0000000000000d756e6c6f636b5f6c65646765720000000000000400000004000000324572726f7220636f6465732072657475726e656420627920746865206661726d696e6720706f6f6c20636f6e74726163742e00000000000000000009506f6f6c4572726f720000000000000b0000000000000012416c7265616479496e697469616c697a6564000000000001000000000000000e4e6f74496e697469616c697a65640000000000020000000000000011496e76616c696443726564697452617465000000000000030000004760676c6f62616c5f6d756c7469706c69657260207761732030206f7220657863656564656420604d41585f474c4f42414c5f4d554c5449504c494552602e20536565202338392e0000000017496e76616c6964476c6f62616c4d756c7469706c6965720000000004000000000000000e4e6f7457686974656c6973746564000000000005000000000000001142656c6f774d696e696d756d5374616b65000000000000060000000000000015496e76616c69644d696e5374616b65416d6f756e74000000000000070000004752657475726e65642062792060656d657267656e63795f776974686472617760207768656e2074686520706f6f6c206973206e6f742063757272656e746c79207061757365642e00000000094e6f74506175736564000000000000080000004f52657475726e65642062792060656d657267656e63795f776974686472617760207768656e20746865207573657220686173206e6f207374616b65206f72206c6f636b656420706f736974696f6e2e000000000d4e6f4163746976655374616b6500000000000009000000000000000650617573656400000000000a0000003c52657475726e656420627920606163636570745f61646d696e60207768656e206e6f2061646d696e2068616e646f66662069732070656e64696e672e0000000e4e6f50656e64696e6741646d696e00000000000b00000001000001d25265636f7264656420737461746520666f72206120757365722773207374616b6520706f736974696f6e20696e2074686520626f6f7374202f20636f6e74696e756f7573207374616b696e672073797374656d2e0a0a556e6c696b652060506f736974696f6e602028776869636820656e666f72636573206120737472696374206d696e696d756d206c6f636b20706572696f64292c2060557365725374616b656020737570706f7274730a666c657869626c652c206e6f6e2d6c6f636b6564207374616b696e672077697468206f7074696f6e616c20757365722d616c6c6f636174656420626f6f7374206d756c7469706c69657273202860426f6f7374436f6e66696760292e0a4163637275616c2069732063616c63756c61746564207573696e672060636f6d707574655f746f74616c5f7374616b6528616d6f756e742c20616c6c6f636174696f6e5f7063742c206d756c7469706c69657229202a206372656469745f72617465202a20656c6170736564602e0a557365727320696e7465726163742076696120607374616b65602c2060756e7374616b65602c20607365745f626f6f7374602c20606765745f626f6f73745f636f6e666967602c20616e6420606765745f63726564697473602e00000000000000000009557365725374616b65000000000000050000000000000006616d6f756e7400000000000b0000003b437265646974207261746520736e617073686f74207573656420666f72206163637275616c2073696e6365206073746172745f6c6564676572602e000000000b6372656469745f72617465000000000b000000000000000e637265646974735f62616e6b656400000000000b0000003d476c6f62616c206d756c7469706c69657220736e617073686f7420636170747572656420617420636865636b706f696e742074696d652028233630292e0000000000000a6d756c7469706c696572000000000004000000000000000c73746172745f6c656467657200000004000000010000003c5065722d7573657220626f6f737420636f6e66696775726174696f6e2072657475726e656420627920606765745f626f6f73745f636f6e666967602e000000000000000b426f6f7374436f6e6669670000000002000000000000000e616c6c6f636174696f6e5f706374000000000004000000000000000a6d756c7469706c69657200000000000400000001000000fd437265646974732062616e6b656420666f72206120757365722062792060656d657267656e63795f7769746864726177602c206b6570742061732074776f2064697374696e63740a746f74616c7320726174686572207468616e20612073696e676c65206d65726765642073756d20736f20746861742074686520696e646976696475616c206163637275616c0a686973746f7279206f6620746865206c6f636b2f756e6c6f636b202860706f736974696f6e602920616e6420626f6f73742028607374616b6560292073797374656d73206973206e6f740a6c6f7374207768656e206120757365722068617320626f74682e2053656520233134352e000000000000000000001242616e6b6564437265646974546f74616c730000000000020000000000000010706f736974696f6e5f637265646974730000000b000000000000000d7374616b655f637265646974730000000000000b001e11636f6e7472616374656e766d6574617630000000000000001900000000006f0e636f6e74726163746d65746176300000000000000005727376657200000000000006312e39332e3100000000000000000008727373646b7665720000002f32352e332e31236535306439356166303239633833313936646431323266303135346261633366313330323339346200" + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/soroban/contracts/farming-pool/src/lib.rs b/soroban/contracts/farming-pool/src/lib.rs index 17252d6..12cab0a 100644 --- a/soroban/contracts/farming-pool/src/lib.rs +++ b/soroban/contracts/farming-pool/src/lib.rs @@ -827,6 +827,17 @@ impl FarmingPool { Ok(Some(position)) } + /// Lightweight check for whether `user` has an active locked position. + /// + /// Returns `true` if the user has a non-zero locked position, `false` + /// otherwise. This is cheaper than `get_user_position` as it avoids + /// computing uncommitted credit accrual. + pub fn has_position(env: Env, user: Address) -> Result { + require_initialized(&env)?; + bump_instance(&env); + Ok(get_position(&env, &user).is_some()) + } + pub fn pause(env: Env) -> Result<(), PoolError> { require_initialized(&env)?; get_admin(&env)?.require_auth(); @@ -1360,6 +1371,14 @@ impl FarmingPool { /// Set the credit accrual rate. Rejects non-positive values and anything /// above `MAX_CREDIT_RATE` — see #89 for the overflow-safety derivation. + /// + /// The new rate takes effect immediately for *new* checkpoints. Existing + /// staked or locked users retain their previous rate snapshot until they + /// interact (e.g. `stake`/`unstake` or `lock_assets`/`unlock_assets`), + /// at which point `checkpoint` records the new rate. This is by design: + /// iterating all on-chain user entries would be prohibitively expensive. + /// Off-chain indexers should apply the rate from the `rate_set` event + /// when computing credits for users who have not yet checkpointed. pub fn set_credit_rate(env: Env, new_rate: i128) -> Result<(), PoolError> { require_initialized(&env)?; get_admin(&env)?.require_auth(); diff --git a/soroban/contracts/farming-pool/src/test.rs b/soroban/contracts/farming-pool/src/test.rs index 25db8ef..da81b0e 100644 --- a/soroban/contracts/farming-pool/src/test.rs +++ b/soroban/contracts/farming-pool/src/test.rs @@ -1178,6 +1178,28 @@ fn test_lock_assets_creates_position() { assert_eq!(t.token.balance(&t.contract_id), 500); } +#[test] +fn test_has_position_returns_false_without_position() { + let t = setup(1, 1); + assert!(!t.client.has_position(&t.user)); +} + +#[test] +fn test_has_position_returns_true_after_lock() { + let t = setup(1, 1); + t.client.lock_assets(&t.user, &500); + assert!(t.client.has_position(&t.user)); +} + +#[test] +fn test_has_position_returns_false_after_full_unlock() { + let t = setup(1, 1); + t.client.lock_assets(&t.user, &500); + advance_ledgers(&t.env, 100); + t.client.unlock_assets(&t.user, &500); + assert!(!t.client.has_position(&t.user)); +} + #[test] fn test_lock_assets_additional_lock_checkpoints_credits() { // Lock 1000, advance 10 ledgers (10000 credits), then lock 500 more. diff --git a/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_false_after_full_unlock.1.json b/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_false_after_full_unlock.1.json new file mode 100644 index 0000000..77a12c5 --- /dev/null +++ b/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_false_after_full_unlock.1.json @@ -0,0 +1,617 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": "1000000000" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "function_name": "lock_assets", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": "500" + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": "500" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "function_name": "unlock_assets", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": "500" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 100, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6312099 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "vec": [ + { + "symbol": "BankedCredits" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "position_credits" + }, + "val": { + "i128": "50000" + } + }, + { + "key": { + "symbol": "stake_credits" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036900 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "vec": [ + { + "symbol": "CreditRate" + } + ] + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "vec": [ + { + "symbol": "GlobalMultiplier" + } + ] + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "vec": [ + { + "symbol": "MinLockPeriod" + } + ] + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "vec": [ + { + "symbol": "MinStakeAmount" + } + ] + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "vec": [ + { + "symbol": "SchemaVersion" + } + ] + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "vec": [ + { + "symbol": "StakeToken" + } + ] + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + }, + { + "key": { + "vec": [ + { + "symbol": "TotalStaked" + } + ] + }, + "val": { + "i128": "0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1000000000" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1036800 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_false_without_position.1.json b/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_false_without_position.1.json new file mode 100644 index 0000000..6091dab --- /dev/null +++ b/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_false_without_position.1.json @@ -0,0 +1,416 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": "1000000000" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "vec": [ + { + "symbol": "CreditRate" + } + ] + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "vec": [ + { + "symbol": "GlobalMultiplier" + } + ] + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "vec": [ + { + "symbol": "MinLockPeriod" + } + ] + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "vec": [ + { + "symbol": "MinStakeAmount" + } + ] + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "vec": [ + { + "symbol": "SchemaVersion" + } + ] + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "vec": [ + { + "symbol": "StakeToken" + } + ] + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + }, + { + "key": { + "vec": [ + { + "symbol": "TotalStaked" + } + ] + }, + "val": { + "i128": "0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1000000000" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1036800 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_true_after_lock.1.json b/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_true_after_lock.1.json new file mode 100644 index 0000000..7172fe7 --- /dev/null +++ b/soroban/contracts/farming-pool/test_snapshots/test/test_has_position_returns_true_after_lock.1.json @@ -0,0 +1,607 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": "1000000000" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "function_name": "lock_assets", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": "500" + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": "500" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "vec": [ + { + "symbol": "UserPosition" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "500" + } + }, + { + "key": { + "symbol": "checkpoint_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "credit_rate" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "lock_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_credits" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "unlock_ledger" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "vec": [ + { + "symbol": "CreditRate" + } + ] + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "vec": [ + { + "symbol": "GlobalMultiplier" + } + ] + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "vec": [ + { + "symbol": "MinLockPeriod" + } + ] + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "vec": [ + { + "symbol": "MinStakeAmount" + } + ] + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "vec": [ + { + "symbol": "SchemaVersion" + } + ] + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "vec": [ + { + "symbol": "StakeToken" + } + ] + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + }, + { + "key": { + "vec": [ + { + "symbol": "TotalStaked" + } + ] + }, + "val": { + "i128": "500" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "999999500" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "500" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1036800 + } + ] + }, + "events": [] +} \ No newline at end of file