logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: 975ccd173d7e3e71647da4629159137c4a963d80d6b7eab1fd9600f51e57f8da Type SC

Block: a5f59dbd6d97ade4b6f893f52dc61a240281b88912678ad310a6aca931066d05 (VALID)
built BLID : 51a757aa92e356212c611126f580cc1ad63d0481610b0ce2f360bf4d787f72d3
Tx RootHash: 233708bbfa404ccc7a92174b1dfa1129785adf9bcd284787ed73bfe64db345a0 built height : 3381221
Timestamp: 1709499287943 Timestamp [UTC]: 2024-03-03 20:54:47 Age [y:d:h:m:s]: 13259:57:53.965
Block: 3381225 Fee: 0.28435 Tx size: 20.105 kB
Tx version: 1 No of confirmations: 2520528 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.28435 Deposited to SC 0.00000
Sender : dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf
address
dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf
dero1qyreht5hte8hpxhcfh4fc7nxeahjfsf3y6yk9m5ew8k35ascu2hu6qg6tje3s
SC Balance: 0.00000 DERO
SC CODE:
  
SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:'' Ghost exchange interface ' Use at your own risk ' For more info visit: Ghost.trading Function Initialize() Uint64 10 STORE("owner", SIGNER()) 20 STORE("feeTo", SIGNER()) 30 RETURN 0 End Function ' AFAIK you can't send both assets and dero in the same call, so the first step of the flow ' of adding liquidity is to deposit the DERO. ' DERO deposited by an address will be stored in a variable identified by the address of the ' signer. Function Deposit_dero() Uint64 10 DIM dero_reserve as Uint64 30 IF EXISTS(ADDRESS_STRING(SIGNER())) THEN GOTO 50 40 STORE(ADDRESS_STRING(SIGNER()),0) 50 LET dero_reserve = LOAD(ADDRESS_STRING(SIGNER())) 60 STORE(ADDRESS_STRING(SIGNER()), dero_reserve + DEROVALUE()) 70 RETURN 0 End Function ' Provided liquidity will be tracked using BOO tokens. ' BOO TOKENS ARE NOT ASSETS. Each account's BOO balance per token pair is stored ' inside the Smart Contract as a variable with the following schema: ' <provider_address>:BOO:<asset_address> ' The total liquidity provided by all LPs of a pair at a given moment is denominated supply. ' supply is tracked inside the Smart Contract as a variable with the following schema: ' <asset_address>:BOO ' Deposit assets & use previously deposited DERO (Deposit_dero()) at current ratio to get BOO tokens. ' {asset_address} The deposited asset's SCID ' {min_liquidity} Minimum number of BOO sender will get if total BOO supply is greater than 0. ' min_liquidity does nothing when total BOO supply is 0. Function AddLiquidity(asset_address String, min_liquidity Uint64) Uint64 01 DIM total_liquidity, dero_reserve, asset_reserve, asset_amount, liquidity_minted, dero_deposited, asset_deposited as Uint64 02 LET dero_deposited = get_dero_deposited() 03 LET asset_deposited = ASSETVALUE(asset_address) 10 IF (asset_deposited > 0 & dero_deposited > 0 ) THEN GOTO 30 20 GOTO 666 30 LET total_liquidity = get_supply_per_asset(asset_address) ' Pair already exists 40 IF total_liquidity > 0 THEN GOTO 41 ELSE GOTO 60 41 IF min_liquidity > 0 THEN GOTO 43 42 GOTO 666 43 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 44 LET asset_reserve = get_asset_reserve(asset_address) 45 mintFee(dero_reserve, asset_reserve, asset_address) 46 LET total_liquidity = get_supply_per_asset(asset_address) ' Must be defined again since totalSupply can update in mintFee 47 LET asset_amount = dero_deposited * asset_reserve / dero_reserve + 1 48 LET liquidity_minted = dero_deposited * total_liquidity / dero_reserve 49 IF asset_deposited >= asset_amount & liquidity_minted >= min_liquidity THEN GOTO 51 50 GOTO 666 51 increase_liquidity_by(SIGNER(), liquidity_minted, asset_address) 52 set_supply_per_asset(total_liquidity + liquidity_minted, asset_address) 53 IF asset_deposited == asset_amount THEN GOTO 55 ' Return any reminding assets 54 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_deposited - asset_amount, asset_address) ' Increase the dero reserve record for this asset 55 set_dero_reserve_per_asset(dero_reserve + dero_deposited, asset_address) ' Increase the asset reserve record 56 set_asset_reserve(asset_reserve + asset_amount, asset_address) 57 STORE(HEX(asset_address)+":kLast", (dero_reserve + dero_deposited) * (asset_reserve + asset_amount)) ' The user's dero deposit count has been used, set it to 0 58 reset_dero_deposited() ' Return gracefully 59 GOTO 70 ' else ' Creating pair 60 IF dero_deposited >= 1000 THEN GOTO 62 61 GOTO 666 ' Initialize the asset reserve record for this asset 62 set_asset_reserve(asset_deposited, asset_address) 63 DIM initial_liquidity as Uint64 64 LET initial_liquidity = dero_deposited 65 set_supply_per_asset(initial_liquidity, asset_address) ' Initialize the dero reserve record for this asset 66 set_dero_reserve_per_asset(dero_deposited, asset_address) 67 STORE(HEX(asset_address)+":kLast", (asset_deposited) * (dero_deposited)) 68 increase_liquidity_by(SIGNER(), initial_liquidity, asset_address) ' The user's dero deposit count has been used, set it to 0 69 reset_dero_deposited() 70 RETURN 0 666 RETURN 1 End Function ' Burn BOO tokens to withdraw Dero & assets at current ratio. ' {amount} Amount of BOO burned. ' {min_dero} Minimum DERO withdrawn. ' {min_assets} Minimum assets withdrawn. ' {asset_address} The deposited asset's SCID Function RemoveLiquidity(amount Uint64, min_dero Uint64, min_assets Uint64, asset_address String) Uint64 01 DIM total_liquidity, asset_reserve, dero_amount, asset_amount as Uint64 10 IF amount > 0 & (min_dero > 0 & min_assets > 0) & Get_liquidity(SIGNER(), asset_address) >= amount THEN GOTO 30 20 GOTO 666 30 LET total_liquidity = get_supply_per_asset(asset_address) 40 IF total_liquidity > 0 THEN GOTO 60 50 GOTO 666 60 LET asset_reserve = get_asset_reserve(asset_address) 70 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 80 mintFee(dero_reserve, asset_reserve, asset_address) 90 LET total_liquidity = get_supply_per_asset(asset_address) ' Must be defined again since totalSupply can update in mintFee 100 LET dero_amount = amount * dero_reserve / total_liquidity 110 LET asset_amount = amount * asset_reserve / total_liquidity 120 IF dero_amount >= min_dero & asset_amount >= min_assets THEN GOTO 140 130 GOTO 666 140 decrease_liquidity_by(SIGNER(), amount, asset_address) 150 set_supply_per_asset(total_liquidity - amount, asset_address) 160 set_dero_reserve_per_asset(dero_reserve - dero_amount, asset_address) 170 set_asset_reserve(asset_reserve - asset_amount, asset_address) 180 STORE(HEX(asset_address)+":kLast", (dero_reserve - dero_amount) * (asset_reserve - asset_amount) ) 190 SEND_DERO_TO_ADDRESS(SIGNER(), dero_amount) 200 SEND_ASSET_TO_ADDRESS(SIGNER(),asset_amount, asset_address) 210 RETURN 0 666 RETURN 1 End Function ' Pricing function for converting between DERO & Assets. ' {input_amount} Amount of DERO or Assets being sold. ' {input_reserve} Amount of DERO or Assets (input type) in exchange reserves. ' {output_reserve} Amount of DERO or Assets (output type) in exchange reserves. Function getInputPrice(input_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64 10 IF input_reserve > 0 & output_reserve > 0 THEN GOTO 30 20 PANIC 30 DIM input_amount_with_fee, numerator, denominator as Uint64 40 LET input_amount_with_fee = input_amount * 997 50 LET numerator = input_amount_with_fee * output_reserve 60 LET denominator = (input_reserve * 1000) + input_amount_with_fee 70 RETURN numerator / denominator End Function ' Pricing function for converting between DERO & Assets. ' output_amount Amount of DERO or Assets being bought. ' input_reserve Amount of DERO or Assets (input type) in exchange reserves. ' output_reserve Amount of DERO or Assets (output type) in exchange reserves. Function getOutputPrice(output_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64 10 IF input_reserve > 0 & output_reserve > 0 THEN GOTO 30 20 PANIC 30 DIM numerator, denominator as Uint64 40 LET numerator = input_reserve * output_amount * 1000 50 LET denominator = (output_reserve - output_amount) * 997 60 RETURN numerator / denominator + 1 End Function Function deroToAssetInput(dero_sold Uint64, min_assets Uint64, asset_address String) Uint64 10 IF (dero_sold > 0 & min_assets > 0) THEN GOTO 30 20 PANIC 30 DIM assets_bought, asset_reserve, dero_reserve as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 60 LET assets_bought = getInputPrice(dero_sold, dero_reserve, asset_reserve) 70 IF assets_bought >= min_assets THEN GOTO 90 80 PANIC 90 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, asset_address) 100 set_asset_reserve(asset_reserve - assets_bought, asset_address) 110 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address) 120 RETURN 0 End Function ' Convert DERO to Assets. ' User specifies exact input (DEROVALUE()). ' User cannot specify minimum output. Function DeroToAssetSwapInput(asset_address String) Uint64 10 RETURN deroToAssetInput(DEROVALUE(), 1, asset_address) End Function ' Convert DERO to Assets. ' User specifies exact input (DEROVALUE()) & minimum output. ' min_assets Minimum Assets bought. Function DeroToAssetSwapInputMin(min_assets Uint64, asset_address String) Uint64 10 RETURN deroToAssetInput(DEROVALUE(), min_assets, asset_address) End Function Function deroToAssetOutput(assets_bought Uint64, max_dero Uint64, asset_address String) Uint64 10 IF (assets_bought > 0 & max_dero > 0) THEN GOTO 30 20 PANIC 30 DIM asset_reserve, dero_sold, dero_refund as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_sold = getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), asset_reserve) 60 IF dero_sold > max_dero THEN PANIC 70 LET dero_refund = max_dero - dero_sold 80 IF dero_refund == 0 THEN GOTO 100 90 SEND_DERO_TO_ADDRESS(SIGNER(), dero_refund) 100 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, asset_address) 110 set_asset_reserve(asset_reserve - assets_bought, asset_address) 120 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address) 130 RETURN 0 End Function ' Convert DERO to Assets. ' User specifies maximum input (DEROVALUE()) & exact output. ' assets_bought Amount of Assets bought. Function DeroToAssetSwapOutput(assets_bought Uint64, asset_address String) Uint64 10 RETURN deroToAssetOutput(assets_bought, DEROVALUE(), asset_address) End Function Function assetToDeroInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64 10 IF (assets_sold > 0 & min_dero > 0) THEN GOTO 30 20 PANIC 30 DIM asset_reserve, dero_bought 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_bought = getInputPrice(assets_sold, asset_reserve, get_dero_reserve_per_asset(asset_address)) 60 IF dero_bought >= min_dero THEN GOTO 80 70 PANIC 80 SEND_DERO_TO_ADDRESS(SIGNER(),dero_bought) 90 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address) 100 set_asset_reserve(asset_reserve + assets_sold, asset_address) 110 RETURN 0 End Function ' Convert Assets to DERO. ' User specifies exact input (ASSETVALUE(asset_address)) & minimum output. ' {assets_sold} Amount of Assets sold. ' {min_dero} Minimum DERO purchased. Function AssetToDeroSwapInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64 10 RETURN assetToDeroInput(ASSETVALUE(asset_address), min_dero, asset_address) End Function //TODO: Optimize get_dero_reserve_per_asset access Function assetToDeroOutput(dero_bought Uint64, max_assets Uint64 , deadline Uint64, asset_address String) Uint64 10 IF dero_bought > 0 THEN GOTO 30 20 PANIC 30 DIM asset_reserve, assets_sold, asset_refund as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET assets_sold = getOutputPrice(dero_bought, asset_reserve, get_dero_reserve_per_asset(asset_address)) //' # assets_sold is always > 0 60 IF max_assets >= assets_sold THEN GOTO 80 70 PANIC 80 SEND_DERO_TO_ADDRESS(SIGNER(), dero_bought) 90 LET asset_refund = max_assets - assets_sold 100 IF asset_refund == 0 THEN GOTO 120 110 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_refund, asset_address) 120 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address) 130 set_asset_reserve(asset_reserve + assets_sold, asset_address) 140 RETURN 0 End Function ' Convert Assets to DERO. ' User specifies maximum input (ASSETVALUE(asset_address)) & exact output. ' dero_bought Amount of DERO purchased. Function AssetToDeroSwapOutput(dero_bought Uint64, asset_address String) Uint64 10 RETURN assetToDeroOutput(dero_bought, ASSETVALUE(asset_address), asset_address) End Function ' Public price function for DERO to Asset trades with an exact input. ' dero_sold Amount of DERO sold. ' Amount of Assets that can be bought with input DERO. Function GetDeroToAssetInputPrice(dero_sold Uint64, asset_address String) Uint64 10 IF dero_sold > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getInputPrice(dero_sold, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address)) End Function ' Public price function for DERO to Asset trades with an exact output. ' assets_bought Amount of Assets bought. ' Amount of DERO needed to buy output Assets. Function GetDeroToAssetOutputPrice(assets_bought Uint64, asset_address String) Uint64 10 IF assets_bought > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address)) End Function ' Public price function for Asset to DERO trades with an exact input. ' assets_sold Amount of Assets sold. ' Amount of DERO that can be bought with input Assets. Function GetAssetToDeroInputPrice(assets_sold Uint64, asset_address String) Uint64 10 IF assets_sold > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getInputPrice(assets_sold, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address)) End Function ' Public price function for Asset to DERO trades with an exact output. ' eth_bought Amount of output DERO. ' Amount of Assets needed to buy output DERO. Function GetAssetToDeroOutputPrice(dero_bought Uint64, asset_address String) Uint64 10 IF dero_bought > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getOutputPrice(dero_bought, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address)) End Function ' Helper functions ' Encapsulated to better understand what's happening and absctract BOO storage schema ' from main code. ' Stores the existing liquidity for a specific asset. Function set_supply_per_asset(amount Uint64, asset_address String) 10 STORE(HEX(asset_address)+":BOO", amount) 20 RETURN End Function ' Returns all existing liquidity for a specific asset. Function get_supply_per_asset(asset_address String) Uint64 10 IF EXISTS(HEX(asset_address)+":BOO") THEN GOTO 30 20 RETURN 0 30 RETURN LOAD(HEX(asset_address)+":BOO") End Function ' Stores the amount of DERO owned by a specific asset trading pair. Function set_dero_reserve_per_asset(amount Uint64, asset_address String) 10 STORE(HEX(asset_address)+":DERO", amount) 20 RETURN End Function ' Loads the amount of DERO owned by a specific asset trading pair. Function get_dero_reserve_per_asset(asset_address String) Uint64 10 RETURN LOAD(HEX(asset_address)+":DERO") End Function ' Stores the amount of assets owned by a specific asset trading pair. Function set_asset_reserve(amount Uint64, asset_address String) 10 STORE(HEX(asset_address), amount) 20 RETURN End Function ' Loads the amount of assets owned by a specific asset trading pair. Function get_asset_reserve(asset_address String) Uint64 20 RETURN LOAD(HEX(asset_address)) End Function ' Increases the amount of BOO of a specific traiding pair owned by a given provider_address. Function increase_liquidity_by(provider_address String, amount Uint64, asset_address String) 10 IF EXISTS(HEX(provider_address)+":BOO:"+HEX(asset_address)) THEN GOTO 40 20 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), amount) 30 RETURN 40 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), Get_liquidity(provider_address, asset_address) + amount) 50 RETURN End Function ' Decreases the amount of BOO of a specific traiding pair owned by a given provider_address. Function decrease_liquidity_by(provider_address String, amount Uint64, asset_address String) 10 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), Get_liquidity(provider_address, asset_address) - amount) 20 RETURN End Function ' Returns the amount of BOO of a specific traiding pair owned by a given provider_address. Function Get_liquidity(provider_address String, asset_address String) Uint64 10 RETURN LOAD(HEX(provider_address)+":BOO:"+HEX(asset_address)) End Function ' Sets to 0 the amount of dero owned by the signer. Function reset_dero_deposited() 10 STORE(ADDRESS_STRING(SIGNER()),0) 20 RETURN End Function ' Returns the amount of dero deposited by the signer of the tx. Function get_dero_deposited() Uint64 10 IF EXISTS(ADDRESS_STRING(SIGNER())) THEN GOTO 30 20 RETURN 0 30 RETURN LOAD(ADDRESS_STRING(SIGNER())) End Function ' Mint liquidity to the feeTo address equivalent to 1/6th of the growth in sqrt(k) (0.05%) Function mintFee(reserve0 Uint64, reserve1 Uint64, asset_address String) Uint64 10 DIM feeTo as String 11 DIM kLast as Uint64 20 LET feeTo = LOAD("feeTo") //' Get the last k for the asset 30 LET kLast = LOAD(HEX(asset_address)+":kLast") 40 IF kLast != 0 THEN GOTO 50 41 RETURN 0 50 DIM rootK, rootKLast as Uint64 60 LET rootK = sqrt(reserve0 * reserve1) 70 LET rootKLast = sqrt(kLast) 80 IF rootK > rootKLast GOTO 90 81 RETURN 0 90 DIM numerator, denominator, supply, liquidity_minted as Uint64 100 LET supply = get_supply_per_asset(asset_address) 110 LET numerator = supply*(rootK-rootKLast) 120 LET denominator = rootK * 5 + rootKLast 130 LET liquidity_minted = numerator / denominator 140 IF liquidity_minted > 0 THEN GOTO 141 ELSE GOTO 150 141 increase_liquidity_by(feeTo, liquidity_minted, asset_address) 142 set_supply_per_asset(supply + liquidity_minted, asset_address) 150 RETURN 0 End Function ' Babylonian method for Square root Function sqrt(y Uint64) Uint64 10 IF y > 3 GOTO 20 ELSE GOTO 90 20 DIM x,z as Uint64 30 LET z = y 40 LET x = y / 2 + 1 50 IF x < z THEN GOTO 60 ELSE GOTO 100 60 LET z = x 70 LET x = (y / x + x) / 2 80 GOTO 50 90 IF y != 0 THEN RETURN 1 ELSE RETURN 0 100 RETURN 0 End Function']


Prove to someone that you have sent them DERO in this transaction

proof can be obtained using wallet command in dero-wallet-cli or from the statement
Note: proof is sent to the server, as the calculations are done on the server side


TX hex bytes
0100000500e5afce0151a757aa92e356212c611126f580cc1ad63d0481610b0ce2f360bf4d787f72d30100000000000000000000000000000000000000000000000000000000000000000000f1757380fc1c71a7293fb7dd5f67fbc0af017500db87f245feae4efea0b923a6ecc480795dbf389ccb25fd6a8d63ebbf313a11f8278c746cf58d6ec02c3c6f01d07a412b5076779e707f7f963225a8e9477cc733fbbc048db0f108553cffb7cf4567b0f6af15da9faab33719603ef7baa9b97dc1f525f823824f6107ecde127bd527bd487c73f12a546ff014fbdb883a9b010593de010b798be51b2fb0189052df8b4e65828da3eb0de5fca27838c6527c3dd6d1c53d006972cdd299868517a8c907566194ac617be106151e32e22e299375b293859dba6c4f6e06d6c7ef833ea600099da641db2a84afa2ead01ebbe28584838a671ef94ffd32d4b35ae226c2777a01233708bbfa404ccc7a92174b1dfa1129785adf9bcd284787ed73bfe64db345a0bd9301a26853435f434f4445537949a4272047686f73742065786368616e676520696e746572666163650d0a272055736520617420796f7572206f776e207269736b0d0a2720466f72206d6f726520696e666f2076697369743a2047686f73742e74726164696e670d0a0d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a0931302053544f524528226f776e6572222c205349474e45522829290d0a2020202032302053544f52452822666565546f222c205349474e45522829290d0a093330202052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a2720414641494b20796f752063616e27742073656e6420626f74682061737365747320616e64206465726f20696e207468652073616d652063616c6c2c20736f207468652066697273742073746570206f662074686520666c6f770d0a27206f6620616464696e67206c697175696469747920697320746f206465706f73697420746865204445524f2e0d0a27204445524f206465706f736974656420627920616e20616464726573732077696c6c2062652073746f72656420696e2061207661726961626c65206964656e746966696564206279207468652061646472657373206f6620746865200d0a27207369676e65722e0d0a46756e6374696f6e204465706f7369745f6465726f28292055696e7436340d0a2020202031302044494d206465726f5f726573657276652061732055696e7436340d0a2020202033302049462045584953545328414444524553535f535452494e47285349474e455228292929205448454e20474f544f2035300d0a2020202034302053544f524528414444524553535f535452494e47285349474e45522829292c30290d0a202020203530204c4554206465726f5f72657365727665203d204c4f414428414444524553535f535452494e47285349474e4552282929290d0a2020202036302053544f524528414444524553535f535452494e47285349474e45522829292c206465726f5f72657365727665202b204445524f56414c55452829290d0a2020202037302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a272050726f7669646564206c69717569646974792077696c6c20626520747261636b6564207573696e6720424f4f20746f6b656e732e200d0a2720424f4f20544f4b454e5320415245204e4f54204153534554532e2045616368206163636f756e74277320424f4f2062616c616e63652070657220746f6b656e20706169722069732073746f726564200d0a2720696e736964652074686520536d61727420436f6e74726163742061732061207661726961626c6520776974682074686520666f6c6c6f77696e6720736368656d613a0d0a27203c70726f76696465725f616464726573733e3a424f4f3a3c61737365745f616464726573733e0d0a0d0a272054686520746f74616c206c69717569646974792070726f766964656420627920616c6c204c5073206f6620612070616972206174206120676976656e206d6f6d656e742069732064656e6f6d696e6174656420737570706c792e0d0a2720737570706c7920697320747261636b656420696e736964652074686520536d61727420436f6e74726163742061732061207661726961626c6520776974682074686520666f6c6c6f77696e6720736368656d613a0d0a27203c61737365745f616464726573733e3a424f4f0d0a0d0a27204465706f736974206173736574732026207573652070726576696f75736c79206465706f7369746564204445524f20284465706f7369745f6465726f2829292061742063757272656e7420726174696f20746f2067657420424f4f20746f6b656e732e200d0a27207b61737365745f616464726573737d20546865206465706f7369746564206173736574277320534349440d0a27207b6d696e5f6c69717569646974797d204d696e696d756d206e756d626572206f6620424f4f2073656e6465722077696c6c2067657420696620746f74616c20424f4f20737570706c792069732067726561746572207468616e20302e0d0a27206d696e5f6c697175696469747920646f6573206e6f7468696e67207768656e20746f74616c20424f4f20737570706c7920697320302e0d0a46756e6374696f6e204164644c69717569646974792861737365745f6164647265737320537472696e672c206d696e5f6c69717569646974792055696e743634292055696e7436340d0a2020202030312044494d20746f74616c5f6c69717569646974792c206465726f5f726573657276652c2061737365745f726573657276652c2061737365745f616d6f756e742c206c69717569646974795f6d696e7465642c206465726f5f6465706f73697465642c2061737365745f6465706f73697465642061732055696e7436340d0a202020203032204c4554206465726f5f6465706f7369746564203d206765745f6465726f5f6465706f736974656428290d0a202020203033204c45542061737365745f6465706f7369746564203d20415353455456414c55452861737365745f61646472657373290d0a202020203130204946202861737365745f6465706f7369746564203e20302026206465726f5f6465706f7369746564203e20302029205448454e20474f544f2033300d0a20202020323020474f544f203636360d0a202020203330204c455420746f74616c5f6c6971756964697479203d20206765745f737570706c795f7065725f61737365742861737365745f6164647265737329200d0a2020202027205061697220616c7265616479206578697374730d0a20202020343020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f20343120454c534520474f544f2036300d0a20202020202020203431204946206d696e5f6c6971756964697479203e2030205448454e20474f544f2034330d0a2020202020202020343220474f544f2036363620200d0a20202020202020203433204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329200d0a20202020202020203434204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f616464726573732920202020200d0a20202020202020203435206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020202020203436204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373292027204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202020202020203437204c45542061737365745f616d6f756e74203d2020206465726f5f6465706f7369746564202a2061737365745f72657365727665202f206465726f5f72657365727665202b20310d0a20202020202020203438204c4554206c69717569646974795f6d696e746564203d206465726f5f6465706f7369746564202a20746f74616c5f6c6971756964697479202f206465726f5f726573657276650d0a202020202020202034392049462061737365745f6465706f7369746564203e3d2061737365745f616d6f756e742026206c69717569646974795f6d696e746564203e3d206d696e5f6c6971756964697479205448454e20474f544f2035310d0a2020202020202020353020474f544f203636360d0a2020202020202020353120696e6372656173655f6c69717569646974795f6279285349474e455228292c206c69717569646974795f6d696e7465642c2061737365745f6164647265737329200d0a20202020202020203532207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a202020202020202035332049462061737365745f6465706f7369746564203d3d2061737365745f616d6f756e74205448454e20474f544f2035350d0a2020202020202020272052657475726e20616e792072656d696e64696e67206173736574730d0a202020202020202035342053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f6465706f7369746564202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a20202020202020202720496e63726561736520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203535207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f6465706f73697465642c2061737365745f61646472657373290d0a20202020202020202720496e637265617365207468652061737365742072657365727665207265636f72640d0a20202020202020203536207365745f61737365745f726573657276652861737365745f72657365727665202b2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020202020202035372053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c2020286465726f5f72657365727665202b206465726f5f6465706f736974656429202a202861737365745f72657365727665202b2061737365745f616d6f756e7429290d0a2020202020202020272054686520757365722773206465726f206465706f73697420636f756e7420686173206265656e20757365642c2073657420697420746f20300d0a202020202020202035382072657365745f6465726f5f6465706f736974656428290d0a2020202020202020272052657475726e20677261636566756c6c790d0a2020202020202020353920474f544f2037300d0a202020202720656c73650d0a2020202027204372656174696e67207061697220200d0a202020203630204946206465726f5f6465706f7369746564203e3d2031303030205448454e20474f544f2036320d0a2020202020202020363120474f544f203636360d0a20202020202020202720496e697469616c697a65207468652061737365742072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203632207365745f61737365745f726573657276652861737365745f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036332044494d20696e697469616c5f6c69717569646974792061732055696e7436340d0a20202020202020203634204c455420696e697469616c5f6c6971756964697479203d206465726f5f6465706f73697465640d0a20202020202020203635207365745f737570706c795f7065725f617373657428696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a20202020202020202720496e697469616c697a6520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203636207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036372053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c202861737365745f6465706f736974656429202a20286465726f5f6465706f736974656429290d0a2020202020202020363820696e6372656173655f6c69717569646974795f6279285349474e455228292c20696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a2020202020202020272054686520757365722773206465726f206465706f73697420636f756e7420686173206265656e20757365642c2073657420697420746f20300d0a202020202020202036392072657365745f6465726f5f6465706f736974656428290d0a2020202037302052455455524e20300d0a0d0a202020203636362052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a27204275726e20424f4f20746f6b656e7320746f207769746864726177204465726f2026206173736574732061742063757272656e7420726174696f2e0d0a27207b616d6f756e747d20416d6f756e74206f6620424f4f206275726e65642e0d0a27207b6d696e5f6465726f7d204d696e696d756d204445524f2077697468647261776e2e0d0a27207b6d696e5f6173736574737d204d696e696d756d206173736574732077697468647261776e2e0d0a27207b61737365745f616464726573737d20546865206465706f7369746564206173736574277320534349440d0a46756e6374696f6e2052656d6f76654c697175696469747928616d6f756e742055696e7436342c206d696e5f6465726f2055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203031202044494d20746f74616c5f6c69717569646974792c2061737365745f726573657276652c206465726f5f616d6f756e742c2061737365745f616d6f756e742061732055696e7436340d0a2020202031302020494620616d6f756e74203e203020202620286d696e5f6465726f203e20302026206d696e5f617373657473203e2030292026204765745f6c6971756964697479285349474e455228292c2061737365745f6164647265737329203e3d20616d6f756e74205448454e20474f544f2033300d0a2020202032302020474f544f203636360d0a20202020333020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a2020202034302020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f2036300d0a2020202035302020474f544f203636360d0a20202020363020204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a20202020373020204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a20202020383020206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020393020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373292027204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202031303020204c4554206465726f5f616d6f756e7420203d20616d6f756e74202a206465726f5f7265736572766520202f20746f74616c5f6c69717569646974790d0a20202031313020204c45542061737365745f616d6f756e74203d20616d6f756e74202a2061737365745f72657365727665202f20746f74616c5f6c69717569646974790d0a20202031323020204946206465726f5f616d6f756e74203e3d206d696e5f6465726f20262061737365745f616d6f756e74203e3d206d696e5f617373657473205448454e20474f544f203134300d0a2020203133302020474f544f203636360d0a202020313430202064656372656173655f6c69717569646974795f6279285349474e455228292c20616d6f756e742c2061737365745f61646472657373290d0a20202031353020207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202d20616d6f756e742c2061737365745f61646472657373290d0a20202031363020207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202d206465726f5f616d6f756e742c2061737365745f61646472657373290d0a20202031373020207365745f61737365745f726573657276652861737365745f72657365727665202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020313830202053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c20286465726f5f72657365727665202d206465726f5f616d6f756e7429202a202861737365745f72657365727665202d2061737365745f616d6f756e742920290d0a202020313930202053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f616d6f756e74290d0a202020323030202053454e445f41535345545f544f5f41444452455353285349474e455228292c61737365745f616d6f756e742c2061737365745f61646472657373290d0a202020323130202052455455524e20300d0a0d0a202020363636202052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a272020202050726963696e672066756e6374696f6e20666f7220636f6e76657274696e67206265747765656e204445524f2026204173736574732e0d0a27202020207b696e7075745f616d6f756e747d20416d6f756e74206f66204445524f206f7220417373657473206265696e6720736f6c642e0d0a27202020207b696e7075745f726573657276657d20416d6f756e74206f66204445524f206f72204173736574732028696e70757420747970652920696e2065786368616e67652072657365727665732e0d0a27202020207b6f75747075745f726573657276657d20416d6f756e74206f66204445524f206f722041737365747320286f757470757420747970652920696e2065786368616e67652072657365727665732e0d0a46756e6374696f6e20676574496e707574507269636528696e7075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d20696e7075745f616d6f756e745f776974685f6665652c206e756d657261746f722c2064656e6f6d696e61746f722061732055696e7436340d0a202020203430204c455420696e7075745f616d6f756e745f776974685f666565203d20696e7075745f616d6f756e74202a203939370d0a202020203530204c4554206e756d657261746f72203d20696e7075745f616d6f756e745f776974685f666565202a206f75747075745f726573657276650d0a202020203630204c45542064656e6f6d696e61746f72203d2028696e7075745f72657365727665202a203130303029202b20696e7075745f616d6f756e745f776974685f6665650d0a2020202037302052455455524e206e756d657261746f72202f2064656e6f6d696e61746f720d0a456e642046756e6374696f6e0d0a0d0a272020202050726963696e672066756e6374696f6e20666f7220636f6e76657274696e67206265747765656e204445524f2026204173736574732e0d0a27202020206f75747075745f616d6f756e7420416d6f756e74206f66204445524f206f7220417373657473206265696e6720626f756768742e0d0a2720202020696e7075745f7265736572766520416d6f756e74206f66204445524f206f72204173736574732028696e70757420747970652920696e2065786368616e67652072657365727665732e0d0a27202020206f75747075745f7265736572766520416d6f756e74206f66204445524f206f722041737365747320286f757470757420747970652920696e2065786368616e67652072657365727665732e0d0a46756e6374696f6e206765744f75747075745072696365286f75747075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206e756d657261746f722c2064656e6f6d696e61746f722061732055696e7436340d0a202020203430204c4554206e756d657261746f72203d20696e7075745f72657365727665202a206f75747075745f616d6f756e74202a20313030300d0a202020203530204c45542064656e6f6d696e61746f72203d20286f75747075745f72657365727665202d206f75747075745f616d6f756e7429202a203939370d0a2020202036302052455455524e206e756d657261746f72202f2064656e6f6d696e61746f72202b20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206465726f546f4173736574496e707574286465726f5f736f6c642055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302049462020286465726f5f736f6c64203e20302026206d696e5f617373657473203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206173736574735f626f756768742c2061737365745f726573657276652c206465726f5f726573657276652061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a202020203630204c4554206173736574735f626f75676874203d20676574496e7075745072696365286465726f5f736f6c642c206465726f5f726573657276652c2061737365745f72657365727665290d0a202020203730204946206173736574735f626f75676874203e3d206d696e5f617373657473205448454e20474f544f2039300d0a2020202038302050414e49430d0a2020202039302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2720202020436f6e76657274204445524f20746f204173736574732e0d0a2720202020557365722073706563696669657320657861637420696e70757420284445524f56414c55452829292e0d0a2720202020557365722063616e6e6f742073706563696679206d696e696d756d206f75747075742e0d0a46756e6374696f6e204465726f546f417373657453776170496e7075742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c20312c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a2720202020436f6e76657274204445524f20746f204173736574732e0d0a2720202020557365722073706563696669657320657861637420696e70757420284445524f56414c55452829292026206d696e696d756d206f75747075742e0d0a27202020206d696e5f617373657473204d696e696d756d2041737365747320626f756768742e0d0a46756e6374696f6e204465726f546f417373657453776170496e7075744d696e286d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c206d696e5f6173736574732c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a0d0a46756e6374696f6e206465726f546f41737365744f7574707574286173736574735f626f756768742055696e7436342c206d61785f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f626f75676874203e20302026206d61785f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f736f6c642c206465726f5f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f736f6c64203d206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c2061737365745f72657365727665290d0a202020203630204946206465726f5f736f6c64203e206d61785f6465726f205448454e2050414e49430d0a202020203730204c4554206465726f5f726566756e64203d206d61785f6465726f202d206465726f5f736f6c640d0a202020203830204946206465726f5f726566756e64203d3d2030205448454e20474f544f203130300d0a2020202039302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f726566756e64290d0a2020203130302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203133302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2720202020436f6e76657274204445524f20746f204173736574732e0d0a27202020205573657220737065636966696573206d6178696d756d20696e70757420284445524f56414c55452829292026206578616374206f75747075742e0d0a27202020206173736574735f626f7567687420416d6f756e74206f662041737365747320626f756768742e0d0a46756e6374696f6e204465726f546f4173736574537761704f7574707574286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f41737365744f7574707574286173736574735f626f756768742c204445524f56414c554528292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206173736574546f4465726f496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f736f6c64203e20302026206d696e5f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f626f756768740d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f626f75676874203d20676574496e7075745072696365286173736574735f736f6c642c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020203630204946206465726f5f626f75676874203e3d206d696e5f6465726f205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c6465726f5f626f75676874290d0a202020203930207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2720202020436f6e766572742041737365747320746f204445524f2e0d0a2720202020557365722073706563696669657320657861637420696e7075742028415353455456414c55452861737365745f6164647265737329292026206d696e696d756d206f75747075742e0d0a27202020207b6173736574735f736f6c647d20416d6f756e74206f662041737365747320736f6c642e0d0a27202020207b6d696e5f6465726f7d204d696e696d756d204445524f207075726368617365642e0d0a46756e6374696f6e204173736574546f4465726f53776170496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f496e70757428415353455456414c55452861737365745f61646472657373292c206d696e5f6465726f2c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a2f2f544f444f3a204f7074696d697a65206765745f6465726f5f726573657276655f7065725f6173736574206163636573730d0a46756e6374696f6e206173736574546f4465726f4f7574707574286465726f5f626f756768742055696e7436342c206d61785f6173736574732055696e743634202c20646561646c696e652055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206173736574735f736f6c642c2061737365745f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206173736574735f736f6c64203d206765744f75747075745072696365286465726f5f626f756768742c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020202f2f272023206173736574735f736f6c6420697320616c77617973203e20300d0a202020203630204946206d61785f617373657473203e3d206173736574735f736f6c64205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f626f75676874290d0a202020203930204c45542061737365745f726566756e64203d206d61785f617373657473202d206173736574735f736f6c640d0a2020203130302049462061737365745f726566756e64203d3d2030205448454e20474f544f203132300d0a2020203131302053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f726566756e642c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313330207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2720202020436f6e766572742041737365747320746f204445524f2e0d0a27202020205573657220737065636966696573206d6178696d756d20696e7075742028415353455456414c55452861737365745f6164647265737329292026206578616374206f75747075742e0d0a27202020206465726f5f626f7567687420416d6f756e74206f66204445524f207075726368617365642e0d0a46756e6374696f6e204173736574546f4465726f537761704f7574707574286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f4f7574707574286465726f5f626f756768742c20415353455456414c55452861737365745f61646472657373292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a27202020205075626c69632070726963652066756e6374696f6e20666f72204445524f20746f20417373657420747261646573207769746820616e20657861637420696e7075742e0d0a27202020206465726f5f736f6c6420416d6f756e74206f66204445524f20736f6c642e0d0a2720202020416d6f756e74206f662041737365747320746861742063616e20626520626f75676874207769746820696e707574204445524f2e0d0a46756e6374696f6e204765744465726f546f4173736574496e7075745072696365286465726f5f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286465726f5f736f6c642c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a0d0a27202020205075626c69632070726963652066756e6374696f6e20666f72204445524f20746f20417373657420747261646573207769746820616e206578616374206f75747075742e0d0a27202020206173736574735f626f7567687420416d6f756e74206f662041737365747320626f756768742e0d0a2720202020416d6f756e74206f66204445524f206e656564656420746f20627579206f7574707574204173736574732e0d0a46756e6374696f6e204765744465726f546f41737365744f75747075745072696365286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a27202020205075626c69632070726963652066756e6374696f6e20666f7220417373657420746f204445524f20747261646573207769746820616e20657861637420696e7075742e0d0a27202020206173736574735f736f6c6420416d6f756e74206f662041737365747320736f6c642e0d0a2720202020416d6f756e74206f66204445524f20746861742063616e20626520626f75676874207769746820696e707574204173736574732e0d0a46756e6374696f6e204765744173736574546f4465726f496e7075745072696365286173736574735f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286173736574735f736f6c642c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a27202020205075626c69632070726963652066756e6374696f6e20666f7220417373657420746f204445524f20747261646573207769746820616e206578616374206f75747075742e0d0a27202020206574685f626f7567687420416d6f756e74206f66206f7574707574204445524f2e0d0a2720202020416d6f756e74206f6620417373657473206e656564656420746f20627579206f7574707574204445524f2e0d0a46756e6374696f6e204765744173736574546f4465726f4f75747075745072696365286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286465726f5f626f756768742c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a272048656c7065722066756e6374696f6e73200d0a2720456e63617073756c6174656420746f2062657474657220756e6465727374616e64207768617427732068617070656e696e6720616e642061627363747261637420424f4f2073746f7261676520736368656d610d0a272066726f6d206d61696e20636f64652e0d0a0d0a272053746f72657320746865206578697374696e67206c697175696469747920666f7220612073706563696669632061737365742e0d0a46756e6374696f6e207365745f737570706c795f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f5245284845582861737365745f61646472657373292b223a424f4f222c20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a0d0a272052657475726e7320616c6c206578697374696e67206c697175696469747920666f7220612073706563696669632061737365742e0d0a46756e6374696f6e206765745f737570706c795f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620455849535453284845582861737365745f61646472657373292b223a424f4f2229205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f4144284845582861737365745f61646472657373292b223a424f4f22290d0a456e642046756e6374696f6e0d0a0d0a272053746f7265732074686520616d6f756e74206f66204445524f206f776e656420627920612073706563696669632061737365742074726164696e6720706169722e0d0a46756e6374696f6e207365745f6465726f5f726573657276655f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f5245284845582861737365745f61646472657373292b223a4445524f222c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a27204c6f6164732074686520616d6f756e74206f66204445524f206f776e656420627920612073706563696669632061737365742074726164696e6720706169722e0d0a46756e6374696f6e206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f4144284845582861737365745f61646472657373292b223a4445524f22290d0a456e642046756e6374696f6e0d0a0d0a272053746f7265732074686520616d6f756e74206f6620617373657473206f776e656420627920612073706563696669632061737365742074726164696e6720706169722e0d0a46756e6374696f6e207365745f61737365745f7265736572766528616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f5245284845582861737365745f61646472657373292c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a27204c6f6164732074686520616d6f756e74206f6620617373657473206f776e656420627920612073706563696669632061737365742074726164696e6720706169722e0d0a46756e6374696f6e206765745f61737365745f726573657276652861737365745f6164647265737320537472696e67292055696e7436340d0a2020202032302052455455524e204c4f4144284845582861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a2720496e637265617365732074686520616d6f756e74206f6620424f4f206f662061207370656369666963207472616964696e672070616972206f776e6564206279206120676976656e2070726f76696465725f616464726573732e0d0a46756e6374696f6e20696e6372656173655f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a20202020313020494620455849535453284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f616464726573732929205448454e20474f544f2034300d0a2020202032302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c20616d6f756e74290d0a2020202033302052455455524e0d0a2020202034302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c204765745f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202b20616d6f756e74290d0a2020202035302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a27204465637265617365732074686520616d6f756e74206f6620424f4f206f662061207370656369666963207472616964696e672070616972206f776e6564206279206120676976656e2070726f76696465725f616464726573732e0d0a46756e6374696f6e2064656372656173655f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c204765745f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202d20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a0d0a272052657475726e732074686520616d6f756e74206f6620424f4f206f662061207370656369666963207472616964696e672070616972206f776e6564206279206120676976656e2070726f76696465725f616464726573732e0d0a46756e6374696f6e204765745f6c69717569646974792870726f76696465725f6164647265737320537472696e672c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f4144284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a0d0a27205365747320746f20302074686520616d6f756e74206f66206465726f206f776e656420627920746865207369676e65722e200d0a46756e6374696f6e2072657365745f6465726f5f6465706f736974656428290d0a2020202031302053544f524528414444524553535f535452494e47285349474e45522829292c30290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a272052657475726e732074686520616d6f756e74206f66206465726f206465706f736974656420627920746865207369676e6572206f66207468652074782e0d0a46756e6374696f6e206765745f6465726f5f6465706f736974656428292055696e7436340d0a2020202031302049462045584953545328414444524553535f535452494e47285349474e455228292929205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f414428414444524553535f535452494e47285349474e4552282929290d0a456e642046756e6374696f6e0d0a0d0a27204d696e74206c697175696469747920746f2074686520666565546f2061646472657373206571756976616c656e7420746f20312f367468206f66207468652067726f77746820696e2073717274286b292028302e303525290d0a46756e6374696f6e206d696e744665652872657365727665302055696e7436342c2072657365727665312055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302044494d20666565546f20617320537472696e670d0a2020202031312044494d206b4c6173742061732055696e7436340d0a202020203230204c455420666565546f203d204c4f41442822666565546f2229200d0a202020202f2f272047657420746865206c617374206b20666f72207468652061737365740d0a202020203330204c4554206b4c617374203d204c4f4144284845582861737365745f61646472657373292b223a6b4c61737422290d0a202020203430204946206b4c61737420213d2030205448454e20474f544f2035300d0a202020202020202034312052455455524e20300d0a2020202035302044494d20726f6f744b2c20726f6f744b4c6173742061732055696e7436340d0a202020203630204c455420726f6f744b203d2073717274287265736572766530202a207265736572766531290d0a202020203730204c455420726f6f744b4c617374203d2073717274286b4c617374290d0a20202020383020494620726f6f744b203e20726f6f744b4c61737420474f544f2039300d0a202020202020202038312052455455524e20300d0a2020202039302044494d206e756d657261746f722c2064656e6f6d696e61746f722c20737570706c792c206c69717569646974795f6d696e7465642061732055696e7436340d0a202020313030204c455420737570706c79203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a202020313130204c4554206e756d657261746f72203d20737570706c792a28726f6f744b2d726f6f744b4c617374290d0a202020313230204c45542064656e6f6d696e61746f72203d20726f6f744b202a2035202b20726f6f744b4c6173740d0a202020313330204c4554206c69717569646974795f6d696e746564203d206e756d657261746f72202f2064656e6f6d696e61746f720d0a202020313430204946206c69717569646974795f6d696e746564203e2030205448454e20474f544f2031343120454c534520474f544f203135300d0a2020202020202031343120696e6372656173655f6c69717569646974795f627928666565546f2c206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a20202020202020313432207365745f737570706c795f7065725f617373657428737570706c79202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a2020203135302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a2720426162796c6f6e69616e206d6574686f6420666f722053717561726520726f6f740d0a46756e6374696f6e207371727428792055696e743634292055696e7436340d0a2020202031302049462079203e203320474f544f20323020454c534520474f544f2039300d0a2020202032302044494d20782c7a2061732055696e7436340d0a202020203330204c4554207a203d2079200d0a202020203430204c45542078203d2079202f2032202b20310d0a2020202035302049462078203c207a205448454e20474f544f20363020454c534520474f544f203130300d0a202020203630204c4554207a203d20780d0a202020203730204c45542078203d202879202f2078202b207829202f20320d0a20202020383020474f544f2035300d0a202020203930204946207920213d2030205448454e2052455455524e203120454c53452052455455524e20300d0a2020203130302052455455524e20300d0a456e642046756e6374696f6e6a53435f414354494f4e550112abec161635a9cf29faabad6f07308eb9706a2b594ae1b9463a45d58667b84c010943051794a6b5c78872578e14134f02e29ba668ee55150cda0e65f93922bad5010d5bca92eefc249372bf7fa9be73504c1527788f26e2eaf399793d690e6bc375001d313c6da55368ebfa4654a81a6af0d4fe79277047d62099590cd001747952130102a45cab384b94eacff8ecaa063a14dd7e21c017dbc2e2968c820553751083c9010f958a3ebe1688384b09c9abe1dfc5c0e5945790346bbda892507241d9f7c942001a76362fb7b3315d8cd6330556d73964931d15b7d707f2c7bc08c4360054b47e00012de5549eacefbb98865111514bca496615a86aaefd9a03ce0cc86ccdaa554d012f51c27ec5be88e0a29360f70d1f827a86ef2228af9eeb995fa73e2a577e937f002238982e93d705d6961b3282d7cfd52ee150d665c4e477d8ba92b60d232e36a7000d09bed4be8601e7fbe97dd844d40ed6243dc47c384cf9649e2a07f2445cc96501094b6f2d3c8a7922482b8fbac8c8331a578e7cfa0d8d46e3047390bd1b551b8501128661d4f1d294f0a0254c2488dbb76f7ae918d068442c8292edbba6285444e801000000000000000000000000000000000000000000000000000000000000000009ae13dff3c04e151e4f9deadf1f59785c7fbae805bf1805fad9b54e6fef0f080ae3c3356f30a4fd27008bfd33335a891e0e804ce636a9a6ccfafe67548e5d4207e2a14dfe77b3b2dcccdce7e38d4193218a00f00beca938e4b63ea26e94bbfa0118ebdd1f9362ddedabaaaf1e2c8fd20a64f02e38fc54c522530d086ac99aedf20125a3f47770f482d7e54e346ec26830ec0a31adb0a0eac4c1fdfc80834a8484bf178f163753744402f7d0c42ac220dc5063d892a8d4154c9022fbcab3ba8feb8c29a77d837c7f6bca2637bb6909519741577c4cfb8ab509b73f651a3984280e4016881087f3967f766e8d54e1f96edb6388d6b3135a951844b9d191dc9a0e179e2f1cd68d602937439482a5b1c4392bb685d02e8992d0886b3db3c7ef50beeffd1fb7fd69e694444cc9fb4978c3a1274137eda9e1276e112e36b6da48174f2a44253233da335cb75619fb78fcc4859944f7af262aa8926e759c8eb0fa853da91211e8dab549d4b1247a30e581352a2bdd2a2bb21edc3ef2e69280e05c8ef277dc115cfcd2222e1a8b1db132fa5ede4e3e0ff40276010ba0cbeebd50574740ef8107b4562433d333fdead0400651702d76bbfe3e2f2826139c7b31e799866815c2012b98db8241e9017106dd5c129c814627d6537599f12bc5703032e04fc26bf12f0128cb943044c762a832e6feb8df01fa339d177f55d97840e74ed52b757470cee6010f8af465b4d3256560d7969b35acee5180667c5802d988f6dd72335adad6b1eb000e0332c70b9eb6c84247f507438997c18a886545699b9b37529f24de3752e17c0006c48e8946376554d4c7b0ed6dacc67c4f890e94121d4de1e1de67303bf6f375012489cf0761cac6af4acf12449bff397e5763a6cb02bd1a69b6be22ef918009490100c41dbcc64f63736422d77bd09d35041eace29fc6d42c2705094a1f98acb8bb0105b4ff9cfc392e8b6c4c5c25859db4d58b5e2be10ab5b36b44cdf1b0e82f7f92012ae7501fa89ff26321628bad601b31dee29786840fcb9f91730d544cab3940ae01282b40b827544f2208b080e2ba96503d67669669a4c6efd7b84d5488eae5c948002296978da523b1e9e71a117f173353d0941ff0498ffc75823d57b745830c4b0e010064d257bcc7e1f995639586bc158a2a208a10f1c3c2713dc2a87b65d5d124940126e34573815132829268ee50de21ce816461e4b491c9e5358ff0d12b9ecdfc6301
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project