From d56b1f53dc150a37856186a54b2907eeb4c97a78 Mon Sep 17 00:00:00 2001 From: nksazonov Date: Tue, 19 May 2026 14:59:47 +0200 Subject: [PATCH 01/18] feat: deploy sc stress test v1.3.0 --- .../11155111/run-1779194593262.json | 189 +++++++++++++++ .../11155111/run-latest.json | 162 ++++++++++--- .../84532/run-1779195327198.json | 229 ++++++++++++++++++ .../84532/run-latest.json | 170 ++++++------- .../stress-v1_3_0-2026-05-19T12-43-13.json | 11 + .../stress-v1_3_0-2026-05-19T12-43-13.json | 14 ++ .../stress-v1_3_0-2026-05-19T12-43-13.json | 11 + .../stress-v1_3_0-2026-05-19T12-43-13.json | 11 + .../stress-v1_3_0-2026-05-19T12-43-13.json | 11 + .../stress-v1_3_0-2026-05-19T12-51-48.json | 11 + .../stress-v1_3_0-2026-05-19T12-55-27.json | 11 + .../stress-v1_3_0-2026-05-19T12-55-27.json | 14 ++ .../stress-v1_3_0-2026-05-19T12-55-27.json | 11 + .../stress-v1_3_0-2026-05-19T12-55-27.json | 11 + .../stress-v1_3_0-2026-05-19T12-55-27.json | 11 + .../stress-v1_3_0-2026-05-19T12-58-32.json | 11 + .../chart/config/stress-v1/blockchains.yaml | 8 +- 17 files changed, 777 insertions(+), 119 deletions(-) create mode 100644 contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779194593262.json create mode 100644 contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779195327198.json create mode 100644 contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-51-48.json create mode 100644 contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-58-32.json diff --git a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779194593262.json b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779194593262.json new file mode 100644 index 000000000..ca706e4e5 --- /dev/null +++ b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779194593262.json @@ -0,0 +1,189 @@ +{ + "transactions": [ + { + "hash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", + "transactionType": "CREATE2", + "contractName": "ChannelEngine.channelhub", + "contractAddress": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1ad222", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea26469706673582212209929d28d6f4f84686b60107c75de0bf20707b30e60c2aea4ba079dccf78da9ab64736f6c634300081e0033", + "nonce": "0x35", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", + "transactionType": "CREATE2", + "contractName": "EscrowWithdrawalEngine.channelhub", + "contractAddress": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf5e82", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220854ea3b8ac791e9ce26e6783173cfd98de9d6f65d7e284de0500fdc6022468f264736f6c634300081e0033", + "nonce": "0x36", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", + "transactionType": "CREATE2", + "contractName": "EscrowDepositEngine.channelhub", + "contractAddress": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xfc763", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea2646970667358221220e4948e1e731e3da271666ebc3a21498d041ba70ab4b8811a088372c3360fe38364736f6c634300081e0033", + "nonce": "0x37", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", + "transactionType": "CREATE", + "contractName": "ECDSAValidator.channelhub", + "contractAddress": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "gas": "0x84c87", + "value": "0x0", + "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122038c13cfc3dcd57a2af2b26923fa6b959f5116c33924710878a46f8a3dc1c3a3164736f6c634300081e0033", + "nonce": "0x38", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", + "transactionType": "CREATE", + "contractName": "ChannelHub", + "contractAddress": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6", + "function": null, + "arguments": [ + "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "gas": "0x686f0b", + "value": "0x0", + "input": "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209734d5ca5df677a1bc2d6152129b8d22b047a6c8e88c7f12be97983785566ef764736f6c634300081e0033000000000000000000000000708b3ca8b7dc0f89ea5a06709c3b92dd5843b6620000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x39", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1a7a296", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", + "transactionIndex": "0xd0", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0x1256cb", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1b2c31a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", + "transactionIndex": "0xd1", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0xb2084", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1bd8d14", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", + "transactionIndex": "0xd2", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0xac9fa", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1c3ef55", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", + "transactionIndex": "0xd3", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0x66241", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x21444c0", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", + "transactionIndex": "0xd4", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0x50556b", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6" + } + ], + "libraries": [ + "src/ChannelEngine.sol:ChannelEngine:0xa023C476E02786356b84EdA6ad6f8C003960F406", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0x9F9513E2Ea0cA353f2108552F8d6A2357C103d20", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0x899A6059E7824b7C5538DC7B3a2F5286013ED9D6" + ], + "pending": [], + "returns": {}, + "timestamp": 1779194593262, + "chain": 11155111, + "commit": "df4e110a" +} \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json index 72408f4cf..ca706e4e5 100644 --- a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json +++ b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json @@ -1,39 +1,93 @@ { "transactions": [ { - "hash": "0x00dd759837ba610d871720c093e6ae25a01dae1aae2061a800dab828df2b1868", + "hash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", + "transactionType": "CREATE2", + "contractName": "ChannelEngine.channelhub", + "contractAddress": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1ad222", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea26469706673582212209929d28d6f4f84686b60107c75de0bf20707b30e60c2aea4ba079dccf78da9ab64736f6c634300081e0033", + "nonce": "0x35", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", + "transactionType": "CREATE2", + "contractName": "EscrowWithdrawalEngine.channelhub", + "contractAddress": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf5e82", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220854ea3b8ac791e9ce26e6783173cfd98de9d6f65d7e284de0500fdc6022468f264736f6c634300081e0033", + "nonce": "0x36", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", + "transactionType": "CREATE2", + "contractName": "EscrowDepositEngine.channelhub", + "contractAddress": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xfc763", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea2646970667358221220e4948e1e731e3da271666ebc3a21498d041ba70ab4b8811a088372c3360fe38364736f6c634300081e0033", + "nonce": "0x37", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", "transactionType": "CREATE", "contractName": "ECDSAValidator.channelhub", - "contractAddress": "0x165fe1a7d70dcf7594442ca9e2a572aa43b79e07", + "contractAddress": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "gas": "0x84c87", "value": "0x0", - "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122095e45fd8b2cc47ea030c67fe68509a60a481b4484daf7ffd997c964f1bf115f464736f6c634300081e0033", - "nonce": "0x33", + "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122038c13cfc3dcd57a2af2b26923fa6b959f5116c33924710878a46f8a3dc1c3a3164736f6c634300081e0033", + "nonce": "0x38", "chainId": "0xaa36a7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x54f8602c28e2937a0d52420a605ce41e551e2773a45e1ac141a25941592f9a23", + "hash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", "transactionType": "CREATE", "contractName": "ChannelHub", - "contractAddress": "0x3497229ed24ad7877160923a39b982fed7a91e31", + "contractAddress": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6", "function": null, "arguments": [ - "0x165fe1a7d70DcF7594442CA9E2A572aA43b79E07", + "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" ], "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "gas": "0x675df2", + "gas": "0x686f0b", "value": "0x0", - "input": "0x60c03461010b57601f615de938819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615cc5908161012482396080518181816110c80152613e11015260a051818181610bab01528181610cbe01528181611387015281816119d601528181611fa40152818161354c01528181613fbe0152818161456f01526146510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461026f57806316b390b11461026a578063187576d8146102655780633115f6301461026057806338a66be21461025b5780633c684f921461025657806341b660ef1461025157806347de477a1461024c57806351bfcdbd1461024757806353269198146102425780635a0745b41461023d5780635ae2accc146102385780635b9acbf9146102335780635dc46a741461022e5780636840dbd2146102295780636898234b1461022457806371a471411461021f578063735181f01461021a57806382d3e15d146102155780638d0b12a5146102105780638e31c7351461020b57806394191051146102015780639691b46814610206578063a459463114610201578063a5c82680146101fc578063b25a1d38146101f7578063b65b78d1146101f2578063c74a2d10146101ed578063c9408398146101e8578063d888ccae146101e3578063d91a1283146101de578063dc23f29e146101d9578063dd73d494146101d4578063e617208c146101cf578063f4ac51f5146101ca578063f766f8d6146101c5578063ff5bc09e146101c05763ffa1ad74146101bb575f80fd5b6125dd565b6125c6565b6124a7565b61242c565b61238e565b61220c565b612055565b611f39565b611e30565b611ba7565b611b27565b611a38565b6116a7565b611548565b61141e565b61143b565b6112bb565b611174565b611157565b611111565b6110a9565b610fc4565b610fad565b610f62565b610f40565b610f25565b610f09565b610d11565b610c9f565b610af7565b6107fa565b610734565b6106f9565b61055d565b6104d7565b610341565b610289565b6001600160a01b0381160361028557565b5f80fd5b34610285576020366003190112610285576001600160a01b036004356102ae81610274565b165f526006602052602060405f2054604051908152f35b9181601f84011215610285578235916001600160401b038311610285576020838186019501011161028557565b60643590600282101561028557565b9060606003198301126102855760043591602435906001600160401b03821161028557610330916004016102c5565b909160443560028110156102855790565b34610285576103a36103dd61035536610301565b9294916103b8610370879693965f52600260205260405f2090565b9485549261037f8415156125f8565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613df0565b9192909901986103b28a612812565b87613f21565b60c06103c387614013565b604051809481926301999b9360e61b835260048301612982565b038173b5c2e8bad7417e654e9087753ec1d08762a06f915af48015610499577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610451946080945f93610466575b5082610443939461043c89612812565b908b614087565b01516001600160401b031690565b9061046160405192839283612abd565b0390a2005b610443935061048c9060c03d60c011610492575b610484818361268e565b8101906128c0565b9261042c565b503d61047a565b612993565b60206040818301928281528451809452019201905f5b8181106104c15750505090565b82518452602093840193909201916001016104b4565b34610285576020366003190112610285576001600160a01b036004356104fc81610274565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061054757610543856105378187038261268e565b6040519182918261049e565b0390f35b8254845260209093019260019283019201610520565b34610285576020366003190112610285576004355f905f60035491600454925b808410806106f0575b156106e5576105bb6105b56105a761059d87613074565b90549060031b1c90565b5f52600260205260405f2090565b936138d4565b946105c584615439565b6106d3576105d284615469565b15610690575f516020615c705f395f51905f526001600160a01b0361067961067361065e945f610610600c8b01546001600160a01b039060401c1690565b9961066d60016106318d6001600160a01b03165f52600660205260405f2090565b54928d610644600483019586549061324e565b9b8c916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556138d4565b976138d4565b604051938452951691602090a25b9391929361057d565b945050505061069e90600455565b806106a557005b6040519081527f61815f4b11c6ea4e14a2e448a010bed8efdc3e53a15efbf183d16a31085cd14590602090a1005b936106df9193506138d4565b91610687565b50505060045561069e565b50818310610586565b34610285575f366003190112610285576020604051620186a08152f35b6004359060ff8216820361028557565b359060ff8216820361028557565b346102855760203660031901126102855760ff61074f610716565b165f52600760205260405f2060405160408101918183106001600160401b038411176107ad576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b61260d565b90816102609103126102855790565b90600319820160e081126102855760c0136102855760049160c435906001600160401b038211610285576107f7916004016107b2565b90565b610803366107c1565b60208101600261081282612aee565b61081b81611c8f565b148015610adc575b8015610abe575b61083390612af8565b600261083e82612aee565b61084781611c8f565b03610aaf575b61090461086261085d3686612b3d565b61448f565b9261089061088161087a865f525f60205260405f2090565b5460ff1690565b61088a816122e2565b15612bb1565b61089c60208601612bc7565b906108a686614532565b6108b6608087013583838861460f565b60a0816108e96108e26108cb60808401612bc7565b6001600160a01b03165f52600660205260405f2090565b5488614676565b604051632a2d120f60e21b8152958692839260048401612def565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4908115610499577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e4946109796109fa936001600160a01b03965f91610a80575b50610968368b612b3d565b6109723686612ef3565b908a6147c2565b61099d87610998866001600160a01b03165f52600160205260405f2090565b61586d565b5060026109a982612aee565b6109b281611c8f565b036109ff5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f41778696206696604051806109e88582612f9f565b0390a25b604051938493169683612fb0565b0390a3005b610a0a600391612aee565b610a1381611c8f565b03610a5057857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610a488582612f9f565b0390a26109ec565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610a488582612f9f565b610aa2915060a03d60a011610aa8575b610a9a818361268e565b810190612bd1565b5f61095d565b503d610a90565b610ab93415612b0e565b61084d565b50610833610acb82612aee565b610ad481611c8f565b15905061082a565b506003610ae882612aee565b610af181611c8f565b14610823565b610b00366107c1565b90610b216004610b1260208501612aee565b610b1b81611c8f565b14612af8565b610b2a81614532565b610b3761085d3683612b3d565b916080610b4660208401612bc7565b92013591610b568382848761460f565b610b68610b628361303f565b856148d5565b92610b7285614904565b15610be85750506109fa7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610bd26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613111565b610bdc8186614960565b60405191829182612f9f565b9091610c1460c082610bf987614013565b604051632ef10bcd60e21b8152938492839260048401613049565b038173b5c2e8bad7417e654e9087753ec1d08762a06f915af4928315610499577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca76946109fa94610c77935f91610c80575b50610c703686612ef3565b8989614087565b610bdc846130c3565b610c99915060c03d60c01161049257610484818361268e565b5f610c65565b34610285575f3660031901126102855760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102855760043591602435906001600160401b038211610285576107f7916004016107b2565b3461028557610d1f36610ce2565b610d306009610b1260208401612aee565b610d4c6001610d46845f525f60205260405f2090565b01613127565b610de7610d6360208301516001600160a01b031690565b91610d74608082015184868861460f565b610d7e3685612ef3565b61014085019386610d8e8661303f565b6001600160401b031646149586610ea1575b50505060a081610dcc610dc56108cb60206060850151016001600160a01b0390511690565b5489614676565b604051632a2d120f60e21b81529586928392600484016131b1565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af491821561049957610e19935f93610e80575b50866147c2565b15610e4f576104617f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182612f9f565b6104617f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182612f9f565b610e9a91935060a03d60a011610aa857610a9a818361268e565b915f610e12565b610f0092610eb3610efb923690612e14565b6060860152610ec53660608b01612e14565b6080860152610ed261319d565b60a0860152610edf61319d565b60c08601526001600160a01b03165f52600160205260405f2090565b615917565b505f8681610da0565b34610285575f366003190112610285576020604051612a308152f35b34610285575f36600319011261028557602060405160408152f35b346102855760403660031901126102855761054361053760243560043561327c565b3461028557610f79610f7336610ce2565b90613335565b005b6060600319820112610285576004359160243591604435906001600160401b038211610285576107f7916004016107b2565b3461028557610f79610fbe36610f7b565b91613685565b34610285576020366003190112610285576001600160a01b03600435610fe981610274565b165f526001602052610ffd60405f206157e1565b5f905f5b81518110156110965761102861087a61101a8385613268565b515f525f60205260405f2090565b611031816122e2565b60038114159081611081575b5061104b575b600101611001565b9161105e818460019310611066576138d4565b929050611043565b6110708585613268565b5161107b8286613268565b526138d4565b6005915061108e816122e2565b14155f61103d565b506105439181526040519182918261049e565b34610285575f3660031901126102855760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60409060031901126102855760043561110481610274565b906024356107f781610274565b3461028557602061114e6001600160a01b0361112c366110ec565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610285575f366003190112610285576020600454604051908152f35b346102855761118236610301565b6111ce61119a859493945f52600560205260405f2090565b918254946111a98615156125f8565b60a06111b488614bcb565b604051809581926312031f5d60e11b8352600483016138e2565b038173af9f833141094083b9de2cb6aa0f7e1f2d2deee15af4908115610499577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103b296610451966060965f95611278575b50916112688596610443969385600561124c600161125c9901546001600160a01b039060081c1690565b97889360028401549a8b91613df0565b92909193019e8f612812565b61127189612812565b908b614c85565b610443955061125c939192966112a86112689260a03d60a0116112b4575b6112a0818361268e565b8101906135d4565b96509692919350611222565b503d611296565b34610285576060366003190112610285576112d4610716565b6024356112e081610274565b6044356001600160401b038111610285576113f3916113066113f89236906004016102c5565b9390946113b96113b460ff83169661131f8815156138f3565b6001600160a01b038616986113358a1515613909565b611376856113706113646113646113578460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b1561391f565b6113ae6113848b8730614d4d565b917f0000000000000000000000000000000000000000000000000000000000000000933691612ea2565b90614d85565b61393d565b6113d36113c46126af565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613953565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610285575f366003190112610285576020604051620151808152f35b34610285576114c461144c36610ce2565b61146d61145e60208395949501612aee565b61146781611c8f565b15612af8565b6114836001610d46855f525f60205260405f2090565b906114a861149b60208401516001600160a01b031690565b608084015190838761460f565b60a0816108e96114bd6108cb60808401612bc7565b5487614676565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361046193610bdc925f92611527575b506115203685612ef3565b90876147c2565b61154191925060a03d60a011610aa857610a9a818361268e565b905f611515565b3461028557611556366107c1565b906115686006610b1260208501612aee565b61157181614532565b61157e61085d3683612b3d565b91608061158d60208401612bc7565b9201359161159d8382848761460f565b6115a9610b628361303f565b926115b385614904565b156115e95750506109fa81610bdc7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614960565b909161162560a08261160b6116046108cb6101608401612bc7565b5488614c28565b60405162ea54e760e01b815293849283926004840161366e565b038173af9f833141094083b9de2cb6aa0f7e1f2d2deee15af4928315610499577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f7946109fa94610bdc935f91611688575b506116813686612ef3565b8989614c85565b6116a1915060a03d60a0116112b4576112a0818361268e565b5f611676565b6080366003190112610285576004356024356001600160401b038111610285576116d59036906004016107b2565b6044356001600160401b038111610285576116f49036906004016102c5565b91906116fe6102f2565b92611710855f525f60205260405f2090565b91858461171f60018601613127565b9361172b865460ff1690565b93611735856122e2565b6001851494858015611a25575b61174b90612bb1565b61175760058901612812565b956117956117648661303f565b6001600160401b0361178c6117808b516001600160401b031690565b6001600160401b031690565b911610156139c1565b60208801516001600160a01b0316966001600160401b036117ce6117806117c060808d01519961303f565b93516001600160401b031690565b91161161188b575b5050946118317f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9989989661182b61185e9760149c61181f61184f996118469961187c9e613df0565b93919490923690612ef3565b90613f21565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b0342166139f7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61046160405192839283613a17565b6119209495506004916118de916118c960208d9c9a9d9b969b01926118c460016118b486612aee565b6118bd81611c8f565b1415612af8565b6122e2565b80611a05575b6118d99015612af8565b612aee565b6118e781611c8f565b14806119d2575b6118f89015613111565b6119048489898d61460f565b60a0876108e96119196108cb60808401612bc7565b548d614676565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4918215610499577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9960149961182b8d8b61181f61185e9a6118319761187c9e61199d6118469c61184f9e5f916119b3575b506119963688612ef3565b8d896151af565b999e5099509950505097505096989950996117d6565b6119cc915060a03d60a011610aa857610a9a818361268e565b5f61198b565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118ee565b506118d96009611a1483612aee565b611a1d81611c8f565b1490506118cf565b50611a2f816122e2565b60048114611742565b604036600319011261028557600435611a5081610274565b6001600160a01b0360243591611a67831515613a37565b611a6f6154e4565b611a7a838233615378565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611b22575f516020615c705f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611b0f61046194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6131d6565b3461028557611b4c611b3836610ce2565b61146d6003610b1260208496959601612aee565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361046193610bdc925f9261152757506115203685612ef3565b34610285575f36600319011261028557600354600454905f805b82841015611c63577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611c0483615439565b611c5157611c1183615469565b15611c3a57611c31916004611c286105b5936138d4565b9401549061324e565b915b9192611bc1565b92509250505b604080519182526020820192909252f35b915092611c5d906138d4565b91611c33565b92509050611c40565b634e487b7160e01b5f52602160045260245ffd5b60041115611c8a57565b611c6c565b600a1115611c8a57565b90600a821015611c8a5752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6107f7916001600160401b038251168152611ced60208301516020830190611c99565b60408201516040820152611d5a6060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ddb60a0840151610260610220850152610260840190611ca6565b92015190610240818403910152611ca6565b92936001600160401b0360c0956107f798979482948752611e0d81611c80565b602087015216604085015216606083015260808201528160a08201520190611cca565b3461028557602036600319011261028557600435611e4c613a83565b505f52600260205260405f2060405190611e6582612621565b80548252610543600182015491611eb0611ea0611e828560ff1690565b94611e91602088019687613ac7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291611f286117c0611f06600560048501549460c0870195865201612812565b9360e0810194855251965197611f1b89611c80565b516001600160401b031690565b905191519260405196879687611ded565b3461028557606036600319011261028557600435611f5681610274565b5f516020615c705f395f51905f5261046160243592611f7484610274565b60443593611f8c6001600160a01b0383161515613909565b611f97851515613a37565b611fcb6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613ad3565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611b0f866120456001600160a01b038516988995865f5260066020526120228260405f205461201d82821015613ae9565b61325b565b978861203f836001600160a01b03165f52600660205260405f2090565b55615498565b6040519081529081906020820190565b3461028557612063366107c1565b6120746008610b1260208401612aee565b61208161085d3684612b3d565b916120e261209160208301612bc7565b916120a2608082013584868861460f565b6120ac3685612ef3565b6120b586614904565b938685156121ab575b505060a081610dcc610dc56108cb60206060850151016001600160a01b0390511690565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af49182156104995761211f935f93612186575b50612119903690612b3d565b866147c2565b15612155576104617f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182612f9f565b6104617f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182612f9f565b6121199193506121a49060a03d60a011610aa857610a9a818361268e565b929061210d565b6109986121c9926121bb86614532565b610eb3366101408b01612e14565b505f866120be565b9160a0936001600160401b03916107f797969385526121ef81611c80565b602085015216604083015260608201528160808201520190611cca565b3461028557602036600319011261028557600435612228613a83565b505f52600560205260405f20604051906122418261263d565b80548252610543600182015491612278611ea060ff851694602087019561226781611c80565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936122d16122bc600560048501549460a0850195865201612812565b9160c0810192835251945195611f1b87611c80565b9151905191604051958695866121d1565b60061115611c8a57565b906006821015611c8a5752565b91926123706101209461231385612383959a99989a6122ec565b602085019060a0809163ffffffff81511684526001600160a01b0360208201511660208501526001600160a01b0360408201511660408501526001600160401b036060820151166060850152608081015160808501520151910152565b61014060e0840152610140830190611cca565b946101008201520152565b34610285576020366003190112610285576004355f60a06040516123b181612658565b82815282602082015282604082015282606082015282608082015201526123d6613a83565b505f525f6020526123e960405f20613b0b565b80516123f4816122e2565b610543602083015192604081015190606061241c61178060808401516001600160401b031690565b91015191604051958695866122f9565b61244c61243836610ce2565b61146d6002610b1260208496959601612aee565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361046193610bdc925f9261152757506115203685612ef3565b34610285576124b5366110ec565b6124bd6154e4565b6001600160a01b038116916124d3831515613909565b6001600160a01b03612510826124fa336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161251d831515613a37565b5f61253d826124fa336001600160a01b03165f52600860205260405f2090565b55169181836125b757612560915f808080858a5af161255a613b68565b50613b97565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a4610f7960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6125c19184615542565b612560565b3461028557610f796125d736610f7b565b91613bbf565b34610285575f36600319011261028557602060405160018152f35b156125ff57565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b038211176107ad57604052565b60e081019081106001600160401b038211176107ad57604052565b60c081019081106001600160401b038211176107ad57604052565b60a081019081106001600160401b038211176107ad57604052565b90601f801991011681019081106001600160401b038211176107ad57604052565b604051906126be60408361268e565b565b604051906126be60e08361268e565b906040516126dc8161263d565b60c06004829461271960ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561276c575b602083101461275857565b634e487b7160e01b5f52602260045260245ffd5b91607f169161274d565b5f92918154916127858361273e565b80835292600181169081156127da57506001146127a157505050565b5f9081526020812093945091925b8383106127c0575060209250010190565b6001816020929493945483858701015201910191906127af565b915050602093945060ff929192191683830152151560051b010190565b906126be61280b9260405193848092612776565b038361268e565b9060405161281f8161263d565b809260ff81546001600160401b038116845260401c1690600a821015611c8a57600d6128909160c093602086015260018101546040860152612863600282016126cf565b6060860152612874600782016126cf565b6080860152612885600c82016127f7565b60a0860152016127f7565b910152565b5190600482101561028557565b6001600160401b0381160361028557565b5190811515820361028557565b908160c09103126102855761292860a0604051926128dd84612658565b80518452602081015160208501526128f760408201612895565b6040850152606081015161290a816128a2565b6060850152608081015161291d816128a2565b6080850152016128b3565b60a082015290565b90815161293c81611c80565b815260806001600160401b0381612962602086015160a0602087015260a0860190611cca565b946040810151604086015282606082015116606086015201511691015290565b9060206107f7928181520190612930565b6040513d5f823e3d90fd5b90600d6107f7926129c681546001600160401b038116855260ff602086019160401c16611c99565b60018101546040840152612a326060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612aad6102608401600c8301612776565b9261024081850391015201612776565b906001600160401b03612add60209295949560408552604085019061299e565b9416910152565b600a111561028557565b356107f781612ae4565b15612aff57565b633226144f60e21b5f5260045ffd5b15612b1557565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361028557565b35906126be826128a2565b91908260c091031261028557604051612b5581612658565b60a08082948035612b6581612b24565b84526020810135612b7581610274565b60208501526040810135612b8881610274565b60408501526060810135612b9b816128a2565b6060850152608081013560808501520135910152565b15612bb857565b631e40ad6360e31b5f5260045ffd5b356107f781610274565b908160a09103126102855760405190612be982612673565b80518252602081015160208301526040810151600681101561028557612c2a9160809160408501526060810151612c1f816128a2565b6060850152016128b3565b608082015290565b90612c3e8183516122ec565b60806001600160401b0381612c62602086015160a0602087015260a0860190611cca565b94604081015160408601526060810151606086015201511691015290565b35906126be82612ae4565b60c080916001600160401b038135612ca2816128a2565b1684526001600160a01b036020820135612cbb81610274565b16602085015260ff612ccf60408301610726565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102855701602081359101916001600160401b03821161028557813603831361028557565b908060209392818452848401375f828201840152601f01601f1916010190565b6107f7916001600160401b038235612d62816128a2565b168152612d806020830135612d7681612ae4565b6020830190611c99565b60408201356040820152612d9a6060820160608401612c8b565b612dac61014082016101408401612c8b565b612de0612dd4612dc0610220850185612cfa565b610260610220860152610260850191612d2b565b92610240810190612cfa565b91610240818503910152612d2b565b9091612e066107f793604084526040840190612c32565b916020818403910152612d4b565b91908260e091031261028557604051612e2c8161263d565b60c08082948035612e3c816128a2565b84526020810135612e4c81610274565b6020850152612e5d60408201610726565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b0381116107ad57601f01601f191660200190565b929192612eae82612e87565b91612ebc604051938461268e565b829481845281830111610285578281602093845f960137010152565b9080601f83011215610285578160206107f793359101612ea2565b9190916102608184031261028557612f096126c0565b92612f1382612b32565b8452612f2160208301612c80565b602085015260408201356040850152612f3d8160608401612e14565b6060850152612f50816101408401612e14565b60808501526102208201356001600160401b0381116102855781612f75918401612ed8565b60a08501526102408201356001600160401b03811161028557612f989201612ed8565b60c0830152565b9060206107f7928181520190612d4b565b60e09060a06107f7949363ffffffff8135612fca81612b24565b1683526001600160a01b036020820135612fe381610274565b1660208401526001600160a01b036040820135612fff81610274565b1660408401526001600160401b03606082013561301b816128a2565b16606084015260808101356080840152013560a08201528160c08201520190612d4b565b356107f7816128a2565b9091612e066107f793604084526040840190612930565b634e487b7160e01b5f52603260045260245ffd5b60035481101561308c5760035f5260205f2001905f90565b613060565b805482101561308c575f5260205f2001905f90565b916130bf9183549060031b91821b915f19901b19161790565b9055565b600354680100000000000000008110156107ad576001810160035560035481101561308c5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561311857565b6370a8bfcd60e11b5f5260045ffd5b9060405161313481612658565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261318c6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b604051906131ac60208361268e565b5f8252565b90916131c86107f793604084526040840190612c32565b916020818403910152611cca565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116107ad5760051b60200190565b6040519061321060208361268e565b5f808352366020840137565b90613226826131ea565b613233604051918261268e565b8281528092613244601f19916131ea565b0190602036910137565b91908201809211611b2257565b91908203918211611b2257565b805182101561308c5760209160051b010190565b91906003549080840293808504821490151715611b22578184101561330057830190818411611b22578082116132f8575b506132c06132bb848361325b565b61321c565b92805b8281106132cf57505050565b806132de61059d600193613074565b6132f16132eb858461325b565b88613268565b52016132c3565b90505f6132ad565b505090506107f7613201565b906006811015611c8a5760ff80198354169116179055565b9060206107f7928181520190611cca565b90613347825f525f60205260405f2090565b61335360018201613127565b9161335f825460ff1690565b918461336d60058301612812565b91600261338460208801516001600160a01b031690565b9561338e816122e2565b148061357d575b6134a4575050506133ad6001610b1260208401612aee565b6133bd608084015183838761460f565b6133f060a0826133d56108e26108cb60808401612bc7565b604051632a2d120f60e21b8152938492839260048401612def565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4801561049957610efb61347e9461345a88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613471965f92613483575b506134533689612ef3565b90866147c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182612f9f565b0390a2565b61349d91925060a03d60a011610aa857610a9a818361268e565b905f613448565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061357092935061347e946135036014836134eb610efb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61345a6060860161352f8151606061352560208301516001600160a01b031690565b9101519085614a14565b5160a061354660208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614a14565b5060405191829182613324565b506014810154426001600160401b0390911610613395565b1561359c57565b6336c7a86b60e21b5f5260045ffd5b906135b581611c80565b60ff80198354169116179055565b9060206107f792818152019061299e565b908160a091031261028557612c2a6080604051926135f184612673565b805184526020810151602085015261360b60408201612895565b60408501526060810151612c1f816128a2565b90815161362a81611c80565b8152608080613648602085015160a0602086015260a0850190611cca565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612e066107f79360408452604084019061361e565b91613698825f52600560205260405f2090565b906136a38385614b7e565b61387c576136b384835414613595565b600182018054929060026136d6600886901c6001600160a01b03165b9560ff1690565b6136df81611c80565b1480613864575b61377d57506002906136ff6007610b1260208601612aee565b01549061370e8284838861460f565b61371d60a08261160b87614bcb565b038173af9f833141094083b9de2cb6aa0f7e1f2d2deee15af4928315610499577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461377894610bdc935f9161168857506116813686612ef3565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556137cf600383016001600160401b03198154169055565b5f516020615c705f395f51905f526001600160a01b03613822613800600c8601546001600160a01b039060401c1690565b9361381c856001600160a01b03165f52600660205260405f2090565b5461324e565b928361383f826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a2613854614389565b61377860405192839201826135c3565b506003820154426001600160401b03909116106136e6565b7f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d498915061377890610bdc6138cd60016138bc885f525f60205260405f2090565b015460201c6001600160a01b031690565b8287614ba0565b5f198114611b225760010190565b9060206107f792818152019061361e565b156138fa57565b6306ee4dcd60e01b5f5260045ffd5b1561391057565b63e6c4247b60e01b5f5260045ffd5b156139275750565b60ff906357470ffd60e01b5f521660045260245ffd5b1561394457565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206126be936139986001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b156139c857565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611b2257565b906001600160401b03809116911601906001600160401b038211611b2257565b906001600160401b03612add602092959495604085526040850190612d4b565b15613a3e57565b6334b2073960e11b5f5260045ffd5b60405190613a5a8261263d565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613a908261263d565b606060c0835f81525f60208201525f6040820152613aac613a4d565b83820152613ab8613a4d565b60808201528260a08201520152565b613ad082611c80565b52565b15613ada57565b6308ad910960e21b5f5260045ffd5b15613af057565b631e9acf1760e31b5f5260045ffd5b6006821015611c8a5752565b90604051613b1881612673565b60806001600160401b0360148395613b3460ff82541686613aff565b613b4060018201613127565b6020860152613b5160058201612812565b604086015260138101546060860152015416910152565b3d15613b92573d90613b7982612e87565b91613b87604051938461268e565b82523d5f602084013e565b606090565b15613ba0575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613bd2825f52600260205260405f2090565b90613bdd838561559b565b613d5057613bed84835414613595565b60018201805492906002613c0d600886901c6001600160a01b03166136cf565b613c1681611c80565b1480613d2d575b613caf5750600290613c366005610b1260208601612aee565b015490613c458284838861460f565b613c5460c082610bf987614013565b038173b5c2e8bad7417e654e9087753ec1d08762a06f915af4928315610499577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461377894610bdc935f91610c805750610c703686612ef3565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613d259060048301905f82549255613d0e600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614a14565b613854614389565b50600382015460401c6001600160401b03166001600160401b0342911610613c1d565b7f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c915061377890610bdc6138cd60016138bc885f525f60205260405f2090565b15613d9757565b6306a41ced60e21b5f5260045ffd5b15613dae5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613dcd575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613eca57801561308c57613e3f91843560f81c9081613e4357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613e5684613e5d949060ff161c90565b1614613d90565b613ebd613e758260ff165f52600760205260405f2090565b546001600160a01b0381169290613eaa90613ea590613e9684871515613da6565b60a01c6001600160401b031690565b6139d7565b906001600160401b038216421015613dc4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610285575190565b9392606093613f136001600160a01b0394612add949998998852608060208901526080880190611ca6565b918683036040880152612d2b565b9193929590613f2f906155b3565b916002821015611c8a576020956001600160a01b0392613fb857613f6b905b604051635850a09b60e11b81529889978896879560048701613ee8565b0392165afa8015610499576126be915f91613f89575b50151561393d565b613fab915060203d602011613fb1575b613fa3818361268e565b810190613ed9565b5f613f81565b503d613f99565b50613f6b7f0000000000000000000000000000000000000000000000000000000000000000613f4e565b60405190613fef82612673565b5f608083828152613ffe613a83565b60208201528260408201528260608201520152565b61401b613fe2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661404381611c80565b855261405160058201612812565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611b22575f0390565b602093929161411b916140a2815f52600260205260405f2090565b976040860180516140b281611c80565b6140bb81611c80565b61436c575b50878560a08801946140d28651151590565b614359575b50505050506140f060608501516001600160401b031690565b6001600160401b038116614330575b5060808401516001600160401b0316806142f0575b5051151590565b156142d757608001518201516001600160a01b031680935b8251905f82131561429757614155915061414d84516157c5565b92839161536a565b6141646004860191825461324e565b90555b0180515f8113156141fc57505f516020615c705f395f51905f52916141946001600160a01b0392516157c5565b6141e560046141be836141b8866001600160a01b03165f52600660205260405f2090565b5461325b565b96876141db866001600160a01b03165f52600660205260405f2090565b550191825461324e565b90556040519384521691602090a25b6126be614389565b90505f811261420e575b5050506141f4565b5f516020615c705f395f51905f52916142366142316001600160a01b0393614077565b6157c5565b614281600461425a8361381c866001600160a01b03165f52600660205260405f2090565b9687614277866001600160a01b03165f52600660205260405f2090565b550191825461325b565b90556040519384521691602090a25f8080614206565b5f82126142a7575b505050614167565b6142b66142316142be93614077565b928391614a14565b6142cd6004860191825461325b565b9055825f8061429f565b50600c84015460401c6001600160a01b03168093614133565b61432a9060038901906fffffffffffffffff000000000000000082549160401b16906fffffffffffffffff00000000000000001916179055565b5f614114565b6143539060038901906001600160401b03166001600160401b0319825416179055565b5f6140ff565b614362946156cb565b5f808785826140d7565b614383905161437a81611c80565b60018b016135ab565b5f6140c0565b5f905f60035491600454925b80841080614485575b15614478576143b56105b56105a761059d87613074565b946143bf84615439565b614466576143cc84615469565b15614421575f516020615c705f395f51905f526001600160a01b0361440a61067361065e945f610610600c8b01546001600160a01b039060401c1690565b604051938452951691602090a25b93919293614395565b93919450506144309150600455565b806144385750565b6040519081527f61815f4b11c6ea4e14a2e448a010bed8efdc3e53a15efbf183d16a31085cd14590602090a1565b936144729193506138d4565b91614418565b5092916144309150600455565b506040831061439e565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040519161451460208401809260a0809163ffffffff81511684526001600160a01b0360208201511660208501526001600160a01b0360408201511660408501526001600160401b036060820151166060850152608081015160808501520151910152565b60c0835261452360e08461268e565b915190912016600160f81b1790565b6001600160a01b03602082013561454881610274565b16614554811515613909565b6001600160a01b03614599604084013561456d81610274565b7f0000000000000000000000000000000000000000000000000000000000000000831692168214613ad3565b81146145cb575063ffffffff6201518091356145b481612b24565b16106145bc57565b630596b15b60e01b5f5260045ffd5b63abfa558d60e01b5f5260045260245ffd5b903590601e198136030182121561028557018035906001600160401b0382116102855760200191813603831361028557565b90916126be9361463f61464d926146348361462e6102208901896145dd565b90613df0565b908888949394615829565b61462e6102408501856145dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615829565b9060146001600160401b039161468a613fe2565b935f525f60205260405f20906146a460ff83541686613aff565b6146b060058301612812565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556147b16001850161478461475b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926147fe8161484d946080946147df885f525f60205260405f2090565b976147eb895460ff1690565b6147f4816122e2565b156148c3576151af565b60408101805161480d816122e2565b614816816122e2565b151580614898575b61487e575b5060148401805460608301516001600160401b03908116911681900361485c575b50500151151590565b6148545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614844565b614892905161488c816122e2565b8561330c565b5f614823565b50845460ff168151906148aa826122e2565b6148b3826122e2565b6148bc816122e2565b141561481e565b6148d08260018b016146cf565b6151af565b906001600160401b036040519160208301938452166040820152604081526148fe60608261268e565b51902090565b805f525f60205260ff60405f2054166006811015611c8a57801590811561494c575b50614947575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614959816122e2565b145f614926565b906149b291805f525f60205261497b600160405f2001613127565b60a0836149976149906108cb60808401612bc7565b5485614676565b604051632a2d120f60e21b8152968792839260048401612def565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499576126be945f946149ef575b506149e9903690612ef3565b916147c2565b6149e9919450614a0d9060a03d60a011610aa857610a9a818361268e565b93906149dd565b90614a279291614a226154e4565b614a4d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614b79576001600160a01b0383169283614af1576001600160a01b038216925f8080808488620186a0f1614a84613b68565b5015614a91575050505050565b614ad4613778926124fa7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614adf82825461324e565b90556040519081529081906020820190565b614b03614aff8484846159bd565b1590565b614b0e575b50505050565b81614b576001600160a01b03926124fa7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614b6285825461324e565b90556040519384521691602090a35f808080614b08565b505050565b905f52600560205260405f2054159081614b96575090565b6107f79150614904565b6149b29261497b614bbd6001610d46855f525f60205260405f2090565b91608083015190858561460f565b614bd3613fe2565b905f5260056020526001600160401b03600360405f2060ff600182015416614bfa81611c80565b8452614c0860058201612812565b60208501526004810154604085015201541660608201525f608082015290565b90614c31613fe2565b915f5260056020526001600160401b03600360405f2060ff600182015416614c5881611c80565b8552614c6660058201612812565b6020860152600481015460408601520154166060830152608082015290565b602093929161411b91614ca0815f52600560205260405f2090565b97604086018051614cb081611c80565b614cb981611c80565b614d39575b5087856080880194614cd08651151590565b614d26575b5050505050614cee60608501516001600160401b031690565b6001600160401b038116614d03575051151590565b61432a9060038901906001600160401b03166001600160401b0319825416179055565b614d2f94615a51565b5f80878582614cd5565b614d47905161437a81611c80565b5f614cbe565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526107f760a08261268e565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015614f21575b806d04ee2d6d415b85acef8100000000600a921015614f05575b662386f26fc10000811015614ef0575b6305f5e100811015614ede575b612710811015614ece575b6064811015614ebf575b1015614eb4575b614e4b6021614e1360018801615b0f565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614e5b57614e4b90614e18565b50506001600160a01b03614e8084614e74858498615aa3565b60208151910120615af9565b911693168314614eac57614e9e918160206113649351910120615af9565b14614ea7575f90565b600190565b505050600190565b600190940193614e02565b60029060649004960195614dfb565b6004906127109004960195614df1565b6008906305f5e1009004960195614de6565b601090662386f26fc100009004960195614dd9565b6020906d04ee2d6d415b85acef81000000009004960195614dc9565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614daf565b90600a811015611c8a5768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161502157505050565b5f5260205f20906020601f840160051c83019310615059575b601f0160051c01905b81811061504e575050565b5f8155600101615043565b909150819061503a565b91909182516001600160401b0381116107ad5761508a81615084845461273e565b84615014565b6020601f82116001146150c55781906130bf9394955f926150ba575b50508160011b915f199060031b1c19161790565b015190505f806150a6565b601f198216906150d8845f5260205f2090565b915f5b818110615112575095836001959697106150fa575b505050811b019055565b01515f1960f88460031b161c191690555f80806150f0565b9192602060018192868b0151815501940192016150db565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611c8a5760c0600d916151696126be9585614f49565b60408101516001850155615184606082015160028601614f76565b615195608082015160078601614f76565b6151a660a0820151600c8601615063565b01519101615063565b602060606151ea826151ce6151fb959896985f525f60205260405f2090565b976151dc8860058b0161512a565b01516001600160a01b031690565b94015101516001600160a01b031690565b809282515f811361533f575b50602083019283515f81136152be575b5051905f8212615296575b505050515f8112615239575b5050506126be614389565b5f516020615c705f395f51905f529161525c6142316001600160a01b0393614077565b615280601361425a8361381c866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061522e565b6142b66142316152a593614077565b6152b46013850191825461325b565b9055815f80615222565b6152c7906157c5565b6152e6816141b8866001600160a01b03165f52600660205260405f2090565b9081615303866001600160a01b03165f52600660205260405f2090565b556153136013890191825461324e565b90556040519081526001600160a01b038416905f516020615c705f395f51905f5290602090a25f615217565b615348906157c5565b61535381848461536a565b6153626013870191825461324e565b90555f615207565b90614a2792916153786154e4565b908215614b79576001600160a01b0316918215801561542a5761539c823414612b0e565b156153a657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561540b575b6040919091525f606052156153f05750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615421573d15833b151516166153de565b503d5f823e3d90fd5b6154343415612b0e565b61539c565b6001015460ff1661544981611c80565b60038114908115615458575090565b6002915061546581611c80565b1490565b6001600160401b036003820154164210159081615484575090565b600180925060ff9101541661546581611c80565b90614a2792916154a66154e4565b91908115614b79576001600160a01b031691826154db576126be92505f808080856001600160a01b0386165af161255a613b68565b6126be92615542565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146155335760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f5114811615615585575b604091909152156153f05750565b6001811516615421573d15833b15151616615577565b905f52600260205260405f2054159081614b96575090565b6001600160401b03815116906020810151600a811015611c8a5761565a8260406156ba9401516155fa60806060840151930151946040519760208901526040880190611c99565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526107f76102408261268e565b9190915f52600260205260405f20918255600582019261570b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611c8a5760c06157c19361572f60029761577794614f49565b6040810151600687015561574a606082015160078801614f76565b61575b6080820151600c8801614f76565b61576c60a082015160118801615063565b015160128501615063565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126157cf5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b8181106158105750506126be9250038361268e565b84548352600194850194879450602090930192016157fb565b6001600160a01b0390613f6b61584f61584a60209895999697993690612ef3565b6155b3565b936040519889978896879563600109bb60e01b875260048701613ee8565b6001810190825f528160205260405f2054155f146158d5578054680100000000000000008110156107ad576158c26158ac826001879401855584613091565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615903575f1901906158f28282613091565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f146159b5575f198401848111611b225783545f19810194908511611b22575f958583615972976159659503615978575b5050506158dc565b905f5260205260405f2090565b55600190565b61599e6159989161598f61059d6159ac9588613091565b92839187613091565b906130a6565b85905f5260205260405f2090565b555f808061595d565b505050505f90565b60405163a9059cbb60e01b602082019081526001600160a01b03939093166024820152604480820194909452928352915f9182916159fc60648261268e565b51908285620186a0f190615a0e613b68565b9115615a4b578151908115615a4257506020811015615a2d5750505f90565b81602091810103126102855760200151151590565b9150503b151590565b50505f90565b9190915f52600560205260405f20918255600582019261570b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6126be90615aeb615ae594936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615a91565b90615a91565b03601f19810184528361268e565b6107f791615b0691615b37565b90929192615b71565b90615b1982612e87565b615b26604051918261268e565b8281528092613244601f1991612e87565b8151919060418303615b6757615b609250602082015190606060408401519301515f1a90615bed565b9192909190565b50505f9160029190565b615b7a81611c80565b80615b83575050565b615b8c81611c80565b60018103615ba35763f645eedf60e01b5f5260045ffd5b615bac81611c80565b60028103615bc7575063fce698f760e01b5f5260045260245ffd5b80615bd3600392611c80565b14615bdb5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615c64579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610499575f516001600160a01b03811615615c5a57905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea264697066735822122031a0d5c80492f37031544dc36300232be26e9efe9e84abb664e6e5215d179ed664736f6c634300081e0033000000000000000000000000165fe1a7d70dcf7594442ca9e2a572aa43b79e070000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", - "nonce": "0x34", + "input": "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209734d5ca5df677a1bc2d6152129b8d22b047a6c8e88c7f12be97983785566ef764736f6c634300081e0033000000000000000000000000708b3ca8b7dc0f89ea5a06709c3b92dd5843b6620000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x39", "chainId": "0xaa36a7" }, "additionalContracts": [], @@ -43,45 +97,93 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0xd2e90a", + "cumulativeGasUsed": "0x1a7a296", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", + "transactionIndex": "0xd0", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0x1256cb", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1b2c31a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", + "transactionIndex": "0xd1", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0xb2084", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1bd8d14", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", + "transactionIndex": "0xd2", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0xac9fa", + "effectiveGasPrice": "0xcf9b34", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1c3ef55", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x00dd759837ba610d871720c093e6ae25a01dae1aae2061a800dab828df2b1868", - "transactionIndex": "0x3b", - "blockHash": "0x46ab1188a297d42d098c08ece1f51bad31220beb799d48105257f927565f266e", - "blockNumber": "0xa33607", + "transactionHash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", + "transactionIndex": "0xd3", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", "gasUsed": "0x66241", - "effectiveGasPrice": "0x11fa44db8", + "effectiveGasPrice": "0xcf9b34", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0x165fe1a7d70dcf7594442ca9e2a572aa43b79e07" + "contractAddress": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662" }, { "status": "0x1", - "cumulativeGasUsed": "0x13a2a82", + "cumulativeGasUsed": "0x21444c0", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x54f8602c28e2937a0d52420a605ce41e551e2773a45e1ac141a25941592f9a23", - "transactionIndex": "0x49", - "blockHash": "0x46ab1188a297d42d098c08ece1f51bad31220beb799d48105257f927565f266e", - "blockNumber": "0xa33607", - "gasUsed": "0x4f8358", - "effectiveGasPrice": "0x11fa44db8", + "transactionHash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", + "transactionIndex": "0xd4", + "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", + "blockNumber": "0xa602e7", + "gasUsed": "0x50556b", + "effectiveGasPrice": "0xcf9b34", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0x3497229ed24ad7877160923a39b982fed7a91e31" + "contractAddress": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6" } ], "libraries": [ - "src/ChannelEngine.sol:ChannelEngine:0x353A207A7bC822D8d3E58bcA2f3F9E2b90B26e78", - "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xb5c2e8BAD7417E654E9087753EC1D08762a06f91", - "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xaf9F833141094083B9de2cb6AA0f7E1f2d2DEee1" + "src/ChannelEngine.sol:ChannelEngine:0xa023C476E02786356b84EdA6ad6f8C003960F406", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0x9F9513E2Ea0cA353f2108552F8d6A2357C103d20", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0x899A6059E7824b7C5538DC7B3a2F5286013ED9D6" ], "pending": [], "returns": {}, - "timestamp": 1776676404535, + "timestamp": 1779194593262, "chain": 11155111, - "commit": "6c0a41d5" + "commit": "df4e110a" } \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779195327198.json b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779195327198.json new file mode 100644 index 000000000..4c0a22a31 --- /dev/null +++ b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779195327198.json @@ -0,0 +1,229 @@ +{ + "transactions": [ + { + "hash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", + "transactionType": "CREATE2", + "contractName": "ChannelEngine.channelhub", + "contractAddress": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1ad222", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea26469706673582212209929d28d6f4f84686b60107c75de0bf20707b30e60c2aea4ba079dccf78da9ab64736f6c634300081e0033", + "nonce": "0xa", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", + "transactionType": "CREATE2", + "contractName": "EscrowWithdrawalEngine.channelhub", + "contractAddress": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf5e82", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220854ea3b8ac791e9ce26e6783173cfd98de9d6f65d7e284de0500fdc6022468f264736f6c634300081e0033", + "nonce": "0xb", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", + "transactionType": "CREATE2", + "contractName": "EscrowDepositEngine.channelhub", + "contractAddress": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xfc763", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea2646970667358221220e4948e1e731e3da271666ebc3a21498d041ba70ab4b8811a088372c3360fe38364736f6c634300081e0033", + "nonce": "0xc", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", + "transactionType": "CREATE", + "contractName": "ECDSAValidator.channelhub", + "contractAddress": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "gas": "0x84c87", + "value": "0x0", + "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122038c13cfc3dcd57a2af2b26923fa6b959f5116c33924710878a46f8a3dc1c3a3164736f6c634300081e0033", + "nonce": "0xd", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", + "transactionType": "CREATE", + "contractName": "ChannelHub", + "contractAddress": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", + "function": null, + "arguments": [ + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "gas": "0x686f0b", + "value": "0x0", + "input": "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209734d5ca5df677a1bc2d6152129b8d22b047a6c8e88c7f12be97983785566ef764736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0xe", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x392f17", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", + "transactionIndex": "0x12", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x27c7f6f", + "gasUsed": "0x1256cb", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x12f240", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "daFootprintGasScalar": "0x1be", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x3648512", + "l1GasPrice": "0x966542", + "l1GasUsed": "0xae0c" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x51c63c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", + "transactionIndex": "0x15", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", + "gasUsed": "0xb2084", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xd147c", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "daFootprintGasScalar": "0x1be", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x4138040f", + "l1GasPrice": "0x966542", + "l1GasUsed": "0x7825" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x5c9036", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", + "transactionIndex": "0x16", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", + "gasUsed": "0xac9fa", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xc91d2", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "daFootprintGasScalar": "0x1be", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x3eaa2695", + "l1GasPrice": "0x966542", + "l1GasUsed": "0x7371" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x62f277", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", + "transactionIndex": "0x17", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", + "gasUsed": "0x66241", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x821ea", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", + "daFootprintGasScalar": "0x1be", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x288e95ab", + "l1GasPrice": "0x966542", + "l1GasUsed": "0x4ab6" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xb347e2", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", + "transactionIndex": "0x18", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", + "gasUsed": "0x50556b", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x5e50fa", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", + "daFootprintGasScalar": "0x1be", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x1d631f789", + "l1GasPrice": "0x966542", + "l1GasUsed": "0x36233" + } + ], + "libraries": [ + "src/ChannelEngine.sol:ChannelEngine:0xa023C476E02786356b84EdA6ad6f8C003960F406", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0x9F9513E2Ea0cA353f2108552F8d6A2357C103d20", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0x899A6059E7824b7C5538DC7B3a2F5286013ED9D6" + ], + "pending": [], + "returns": {}, + "timestamp": 1779195327198, + "chain": 84532, + "commit": "df4e110a" +} \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json index 1eda2b42d..4c0a22a31 100644 --- a/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json +++ b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json @@ -1,93 +1,93 @@ { "transactions": [ { - "hash": "0x7261a8f5f722c829e8d4381a519c2aa8c8fe689a7d5e1902494d7a74bd68426a", + "hash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", "transactionType": "CREATE2", "contractName": "ChannelEngine.channelhub", - "contractAddress": "0x353a207a7bc822d8d3e58bca2f3f9e2b90b26e78", + "contractAddress": "0xa023c476e02786356b84eda6ad6f8c003960f406", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x19549d", - "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea264697066735822122000e4e5e8c1be64955d884775f50f277bdf90eb640e1ce0e6ed58ae9fab8d8c9e64736f6c634300081e0033", - "nonce": "0x0", + "gas": "0x1ad222", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea26469706673582212209929d28d6f4f84686b60107c75de0bf20707b30e60c2aea4ba079dccf78da9ab64736f6c634300081e0033", + "nonce": "0xa", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x7bb8823f66bdb3f9bef019607214000a7dc0eb0148a523dbce2c6709d42e7a74", + "hash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", "transactionType": "CREATE2", "contractName": "EscrowWithdrawalEngine.channelhub", - "contractAddress": "0xaf9f833141094083b9de2cb6aa0f7e1f2d2deee1", + "contractAddress": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xf5e93", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220b8dfc2188e4a150cb46bb09f5a4154280dec2f13898ab33a6403028c1237d6b264736f6c634300081e0033", - "nonce": "0x1", + "gas": "0xf5e82", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220854ea3b8ac791e9ce26e6783173cfd98de9d6f65d7e284de0500fdc6022468f264736f6c634300081e0033", + "nonce": "0xb", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x3a7095c50cafe072b66d893f4583722b03a14aba4cc8d9a3b359b88135028f5c", + "hash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", "transactionType": "CREATE2", "contractName": "EscrowDepositEngine.channelhub", - "contractAddress": "0xb5c2e8bad7417e654e9087753ec1d08762a06f91", + "contractAddress": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "gas": "0xfc763", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea26469706673582212201fd9878a14ac4e3f4864bf3741acbaf90b0e680274e02ca1b5a82ca18f3e6e2264736f6c634300081e0033", - "nonce": "0x2", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea2646970667358221220e4948e1e731e3da271666ebc3a21498d041ba70ab4b8811a088372c3360fe38364736f6c634300081e0033", + "nonce": "0xc", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x93cf089b7e57207fad34690b6525d97b78d4452eadddc3dd979b28224528b89a", + "hash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", "transactionType": "CREATE", "contractName": "ECDSAValidator.channelhub", - "contractAddress": "0xce87fd88f4b5fd5475d163e2642c5c2c7dd655ec", + "contractAddress": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "gas": "0x84c87", "value": "0x0", - "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122095e45fd8b2cc47ea030c67fe68509a60a481b4484daf7ffd997c964f1bf115f464736f6c634300081e0033", - "nonce": "0x3", + "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122038c13cfc3dcd57a2af2b26923fa6b959f5116c33924710878a46f8a3dc1c3a3164736f6c634300081e0033", + "nonce": "0xd", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x470639b186a290226a188b8ee03cd26ddf38aedfdc2d09e269284f7cefdc2fcc", + "hash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", "transactionType": "CREATE", "contractName": "ChannelHub", - "contractAddress": "0x6e2c4707da119425df2c722e2695300154652f56", + "contractAddress": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", "function": null, "arguments": [ - "0xCe87FD88F4B5Fd5475d163e2642C5c2c7dD655Ec", + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" ], "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "gas": "0x675df2", + "gas": "0x686f0b", "value": "0x0", - "input": "0x60c03461010b57601f615de938819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615cc5908161012482396080518181816110c80152613e11015260a051818181610bab01528181610cbe01528181611387015281816119d601528181611fa40152818161354c01528181613fbe0152818161456f01526146510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461026f57806316b390b11461026a578063187576d8146102655780633115f6301461026057806338a66be21461025b5780633c684f921461025657806341b660ef1461025157806347de477a1461024c57806351bfcdbd1461024757806353269198146102425780635a0745b41461023d5780635ae2accc146102385780635b9acbf9146102335780635dc46a741461022e5780636840dbd2146102295780636898234b1461022457806371a471411461021f578063735181f01461021a57806382d3e15d146102155780638d0b12a5146102105780638e31c7351461020b57806394191051146102015780639691b46814610206578063a459463114610201578063a5c82680146101fc578063b25a1d38146101f7578063b65b78d1146101f2578063c74a2d10146101ed578063c9408398146101e8578063d888ccae146101e3578063d91a1283146101de578063dc23f29e146101d9578063dd73d494146101d4578063e617208c146101cf578063f4ac51f5146101ca578063f766f8d6146101c5578063ff5bc09e146101c05763ffa1ad74146101bb575f80fd5b6125dd565b6125c6565b6124a7565b61242c565b61238e565b61220c565b612055565b611f39565b611e30565b611ba7565b611b27565b611a38565b6116a7565b611548565b61141e565b61143b565b6112bb565b611174565b611157565b611111565b6110a9565b610fc4565b610fad565b610f62565b610f40565b610f25565b610f09565b610d11565b610c9f565b610af7565b6107fa565b610734565b6106f9565b61055d565b6104d7565b610341565b610289565b6001600160a01b0381160361028557565b5f80fd5b34610285576020366003190112610285576001600160a01b036004356102ae81610274565b165f526006602052602060405f2054604051908152f35b9181601f84011215610285578235916001600160401b038311610285576020838186019501011161028557565b60643590600282101561028557565b9060606003198301126102855760043591602435906001600160401b03821161028557610330916004016102c5565b909160443560028110156102855790565b34610285576103a36103dd61035536610301565b9294916103b8610370879693965f52600260205260405f2090565b9485549261037f8415156125f8565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613df0565b9192909901986103b28a612812565b87613f21565b60c06103c387614013565b604051809481926301999b9360e61b835260048301612982565b038173b5c2e8bad7417e654e9087753ec1d08762a06f915af48015610499577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610451946080945f93610466575b5082610443939461043c89612812565b908b614087565b01516001600160401b031690565b9061046160405192839283612abd565b0390a2005b610443935061048c9060c03d60c011610492575b610484818361268e565b8101906128c0565b9261042c565b503d61047a565b612993565b60206040818301928281528451809452019201905f5b8181106104c15750505090565b82518452602093840193909201916001016104b4565b34610285576020366003190112610285576001600160a01b036004356104fc81610274565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061054757610543856105378187038261268e565b6040519182918261049e565b0390f35b8254845260209093019260019283019201610520565b34610285576020366003190112610285576004355f905f60035491600454925b808410806106f0575b156106e5576105bb6105b56105a761059d87613074565b90549060031b1c90565b5f52600260205260405f2090565b936138d4565b946105c584615439565b6106d3576105d284615469565b15610690575f516020615c705f395f51905f526001600160a01b0361067961067361065e945f610610600c8b01546001600160a01b039060401c1690565b9961066d60016106318d6001600160a01b03165f52600660205260405f2090565b54928d610644600483019586549061324e565b9b8c916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556138d4565b976138d4565b604051938452951691602090a25b9391929361057d565b945050505061069e90600455565b806106a557005b6040519081527f61815f4b11c6ea4e14a2e448a010bed8efdc3e53a15efbf183d16a31085cd14590602090a1005b936106df9193506138d4565b91610687565b50505060045561069e565b50818310610586565b34610285575f366003190112610285576020604051620186a08152f35b6004359060ff8216820361028557565b359060ff8216820361028557565b346102855760203660031901126102855760ff61074f610716565b165f52600760205260405f2060405160408101918183106001600160401b038411176107ad576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b61260d565b90816102609103126102855790565b90600319820160e081126102855760c0136102855760049160c435906001600160401b038211610285576107f7916004016107b2565b90565b610803366107c1565b60208101600261081282612aee565b61081b81611c8f565b148015610adc575b8015610abe575b61083390612af8565b600261083e82612aee565b61084781611c8f565b03610aaf575b61090461086261085d3686612b3d565b61448f565b9261089061088161087a865f525f60205260405f2090565b5460ff1690565b61088a816122e2565b15612bb1565b61089c60208601612bc7565b906108a686614532565b6108b6608087013583838861460f565b60a0816108e96108e26108cb60808401612bc7565b6001600160a01b03165f52600660205260405f2090565b5488614676565b604051632a2d120f60e21b8152958692839260048401612def565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4908115610499577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e4946109796109fa936001600160a01b03965f91610a80575b50610968368b612b3d565b6109723686612ef3565b908a6147c2565b61099d87610998866001600160a01b03165f52600160205260405f2090565b61586d565b5060026109a982612aee565b6109b281611c8f565b036109ff5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f41778696206696604051806109e88582612f9f565b0390a25b604051938493169683612fb0565b0390a3005b610a0a600391612aee565b610a1381611c8f565b03610a5057857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610a488582612f9f565b0390a26109ec565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610a488582612f9f565b610aa2915060a03d60a011610aa8575b610a9a818361268e565b810190612bd1565b5f61095d565b503d610a90565b610ab93415612b0e565b61084d565b50610833610acb82612aee565b610ad481611c8f565b15905061082a565b506003610ae882612aee565b610af181611c8f565b14610823565b610b00366107c1565b90610b216004610b1260208501612aee565b610b1b81611c8f565b14612af8565b610b2a81614532565b610b3761085d3683612b3d565b916080610b4660208401612bc7565b92013591610b568382848761460f565b610b68610b628361303f565b856148d5565b92610b7285614904565b15610be85750506109fa7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610bd26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613111565b610bdc8186614960565b60405191829182612f9f565b9091610c1460c082610bf987614013565b604051632ef10bcd60e21b8152938492839260048401613049565b038173b5c2e8bad7417e654e9087753ec1d08762a06f915af4928315610499577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca76946109fa94610c77935f91610c80575b50610c703686612ef3565b8989614087565b610bdc846130c3565b610c99915060c03d60c01161049257610484818361268e565b5f610c65565b34610285575f3660031901126102855760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102855760043591602435906001600160401b038211610285576107f7916004016107b2565b3461028557610d1f36610ce2565b610d306009610b1260208401612aee565b610d4c6001610d46845f525f60205260405f2090565b01613127565b610de7610d6360208301516001600160a01b031690565b91610d74608082015184868861460f565b610d7e3685612ef3565b61014085019386610d8e8661303f565b6001600160401b031646149586610ea1575b50505060a081610dcc610dc56108cb60206060850151016001600160a01b0390511690565b5489614676565b604051632a2d120f60e21b81529586928392600484016131b1565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af491821561049957610e19935f93610e80575b50866147c2565b15610e4f576104617f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182612f9f565b6104617f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182612f9f565b610e9a91935060a03d60a011610aa857610a9a818361268e565b915f610e12565b610f0092610eb3610efb923690612e14565b6060860152610ec53660608b01612e14565b6080860152610ed261319d565b60a0860152610edf61319d565b60c08601526001600160a01b03165f52600160205260405f2090565b615917565b505f8681610da0565b34610285575f366003190112610285576020604051612a308152f35b34610285575f36600319011261028557602060405160408152f35b346102855760403660031901126102855761054361053760243560043561327c565b3461028557610f79610f7336610ce2565b90613335565b005b6060600319820112610285576004359160243591604435906001600160401b038211610285576107f7916004016107b2565b3461028557610f79610fbe36610f7b565b91613685565b34610285576020366003190112610285576001600160a01b03600435610fe981610274565b165f526001602052610ffd60405f206157e1565b5f905f5b81518110156110965761102861087a61101a8385613268565b515f525f60205260405f2090565b611031816122e2565b60038114159081611081575b5061104b575b600101611001565b9161105e818460019310611066576138d4565b929050611043565b6110708585613268565b5161107b8286613268565b526138d4565b6005915061108e816122e2565b14155f61103d565b506105439181526040519182918261049e565b34610285575f3660031901126102855760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60409060031901126102855760043561110481610274565b906024356107f781610274565b3461028557602061114e6001600160a01b0361112c366110ec565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610285575f366003190112610285576020600454604051908152f35b346102855761118236610301565b6111ce61119a859493945f52600560205260405f2090565b918254946111a98615156125f8565b60a06111b488614bcb565b604051809581926312031f5d60e11b8352600483016138e2565b038173af9f833141094083b9de2cb6aa0f7e1f2d2deee15af4908115610499577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103b296610451966060965f95611278575b50916112688596610443969385600561124c600161125c9901546001600160a01b039060081c1690565b97889360028401549a8b91613df0565b92909193019e8f612812565b61127189612812565b908b614c85565b610443955061125c939192966112a86112689260a03d60a0116112b4575b6112a0818361268e565b8101906135d4565b96509692919350611222565b503d611296565b34610285576060366003190112610285576112d4610716565b6024356112e081610274565b6044356001600160401b038111610285576113f3916113066113f89236906004016102c5565b9390946113b96113b460ff83169661131f8815156138f3565b6001600160a01b038616986113358a1515613909565b611376856113706113646113646113578460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b1561391f565b6113ae6113848b8730614d4d565b917f0000000000000000000000000000000000000000000000000000000000000000933691612ea2565b90614d85565b61393d565b6113d36113c46126af565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613953565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610285575f366003190112610285576020604051620151808152f35b34610285576114c461144c36610ce2565b61146d61145e60208395949501612aee565b61146781611c8f565b15612af8565b6114836001610d46855f525f60205260405f2090565b906114a861149b60208401516001600160a01b031690565b608084015190838761460f565b60a0816108e96114bd6108cb60808401612bc7565b5487614676565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361046193610bdc925f92611527575b506115203685612ef3565b90876147c2565b61154191925060a03d60a011610aa857610a9a818361268e565b905f611515565b3461028557611556366107c1565b906115686006610b1260208501612aee565b61157181614532565b61157e61085d3683612b3d565b91608061158d60208401612bc7565b9201359161159d8382848761460f565b6115a9610b628361303f565b926115b385614904565b156115e95750506109fa81610bdc7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614960565b909161162560a08261160b6116046108cb6101608401612bc7565b5488614c28565b60405162ea54e760e01b815293849283926004840161366e565b038173af9f833141094083b9de2cb6aa0f7e1f2d2deee15af4928315610499577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f7946109fa94610bdc935f91611688575b506116813686612ef3565b8989614c85565b6116a1915060a03d60a0116112b4576112a0818361268e565b5f611676565b6080366003190112610285576004356024356001600160401b038111610285576116d59036906004016107b2565b6044356001600160401b038111610285576116f49036906004016102c5565b91906116fe6102f2565b92611710855f525f60205260405f2090565b91858461171f60018601613127565b9361172b865460ff1690565b93611735856122e2565b6001851494858015611a25575b61174b90612bb1565b61175760058901612812565b956117956117648661303f565b6001600160401b0361178c6117808b516001600160401b031690565b6001600160401b031690565b911610156139c1565b60208801516001600160a01b0316966001600160401b036117ce6117806117c060808d01519961303f565b93516001600160401b031690565b91161161188b575b5050946118317f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9989989661182b61185e9760149c61181f61184f996118469961187c9e613df0565b93919490923690612ef3565b90613f21565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b0342166139f7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61046160405192839283613a17565b6119209495506004916118de916118c960208d9c9a9d9b969b01926118c460016118b486612aee565b6118bd81611c8f565b1415612af8565b6122e2565b80611a05575b6118d99015612af8565b612aee565b6118e781611c8f565b14806119d2575b6118f89015613111565b6119048489898d61460f565b60a0876108e96119196108cb60808401612bc7565b548d614676565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4918215610499577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9960149961182b8d8b61181f61185e9a6118319761187c9e61199d6118469c61184f9e5f916119b3575b506119963688612ef3565b8d896151af565b999e5099509950505097505096989950996117d6565b6119cc915060a03d60a011610aa857610a9a818361268e565b5f61198b565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118ee565b506118d96009611a1483612aee565b611a1d81611c8f565b1490506118cf565b50611a2f816122e2565b60048114611742565b604036600319011261028557600435611a5081610274565b6001600160a01b0360243591611a67831515613a37565b611a6f6154e4565b611a7a838233615378565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611b22575f516020615c705f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611b0f61046194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6131d6565b3461028557611b4c611b3836610ce2565b61146d6003610b1260208496959601612aee565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361046193610bdc925f9261152757506115203685612ef3565b34610285575f36600319011261028557600354600454905f805b82841015611c63577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611c0483615439565b611c5157611c1183615469565b15611c3a57611c31916004611c286105b5936138d4565b9401549061324e565b915b9192611bc1565b92509250505b604080519182526020820192909252f35b915092611c5d906138d4565b91611c33565b92509050611c40565b634e487b7160e01b5f52602160045260245ffd5b60041115611c8a57565b611c6c565b600a1115611c8a57565b90600a821015611c8a5752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6107f7916001600160401b038251168152611ced60208301516020830190611c99565b60408201516040820152611d5a6060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ddb60a0840151610260610220850152610260840190611ca6565b92015190610240818403910152611ca6565b92936001600160401b0360c0956107f798979482948752611e0d81611c80565b602087015216604085015216606083015260808201528160a08201520190611cca565b3461028557602036600319011261028557600435611e4c613a83565b505f52600260205260405f2060405190611e6582612621565b80548252610543600182015491611eb0611ea0611e828560ff1690565b94611e91602088019687613ac7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291611f286117c0611f06600560048501549460c0870195865201612812565b9360e0810194855251965197611f1b89611c80565b516001600160401b031690565b905191519260405196879687611ded565b3461028557606036600319011261028557600435611f5681610274565b5f516020615c705f395f51905f5261046160243592611f7484610274565b60443593611f8c6001600160a01b0383161515613909565b611f97851515613a37565b611fcb6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613ad3565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611b0f866120456001600160a01b038516988995865f5260066020526120228260405f205461201d82821015613ae9565b61325b565b978861203f836001600160a01b03165f52600660205260405f2090565b55615498565b6040519081529081906020820190565b3461028557612063366107c1565b6120746008610b1260208401612aee565b61208161085d3684612b3d565b916120e261209160208301612bc7565b916120a2608082013584868861460f565b6120ac3685612ef3565b6120b586614904565b938685156121ab575b505060a081610dcc610dc56108cb60206060850151016001600160a01b0390511690565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af49182156104995761211f935f93612186575b50612119903690612b3d565b866147c2565b15612155576104617f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182612f9f565b6104617f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182612f9f565b6121199193506121a49060a03d60a011610aa857610a9a818361268e565b929061210d565b6109986121c9926121bb86614532565b610eb3366101408b01612e14565b505f866120be565b9160a0936001600160401b03916107f797969385526121ef81611c80565b602085015216604083015260608201528160808201520190611cca565b3461028557602036600319011261028557600435612228613a83565b505f52600560205260405f20604051906122418261263d565b80548252610543600182015491612278611ea060ff851694602087019561226781611c80565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936122d16122bc600560048501549460a0850195865201612812565b9160c0810192835251945195611f1b87611c80565b9151905191604051958695866121d1565b60061115611c8a57565b906006821015611c8a5752565b91926123706101209461231385612383959a99989a6122ec565b602085019060a0809163ffffffff81511684526001600160a01b0360208201511660208501526001600160a01b0360408201511660408501526001600160401b036060820151166060850152608081015160808501520151910152565b61014060e0840152610140830190611cca565b946101008201520152565b34610285576020366003190112610285576004355f60a06040516123b181612658565b82815282602082015282604082015282606082015282608082015201526123d6613a83565b505f525f6020526123e960405f20613b0b565b80516123f4816122e2565b610543602083015192604081015190606061241c61178060808401516001600160401b031690565b91015191604051958695866122f9565b61244c61243836610ce2565b61146d6002610b1260208496959601612aee565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361046193610bdc925f9261152757506115203685612ef3565b34610285576124b5366110ec565b6124bd6154e4565b6001600160a01b038116916124d3831515613909565b6001600160a01b03612510826124fa336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161251d831515613a37565b5f61253d826124fa336001600160a01b03165f52600860205260405f2090565b55169181836125b757612560915f808080858a5af161255a613b68565b50613b97565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a4610f7960017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6125c19184615542565b612560565b3461028557610f796125d736610f7b565b91613bbf565b34610285575f36600319011261028557602060405160018152f35b156125ff57565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b038211176107ad57604052565b60e081019081106001600160401b038211176107ad57604052565b60c081019081106001600160401b038211176107ad57604052565b60a081019081106001600160401b038211176107ad57604052565b90601f801991011681019081106001600160401b038211176107ad57604052565b604051906126be60408361268e565b565b604051906126be60e08361268e565b906040516126dc8161263d565b60c06004829461271960ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561276c575b602083101461275857565b634e487b7160e01b5f52602260045260245ffd5b91607f169161274d565b5f92918154916127858361273e565b80835292600181169081156127da57506001146127a157505050565b5f9081526020812093945091925b8383106127c0575060209250010190565b6001816020929493945483858701015201910191906127af565b915050602093945060ff929192191683830152151560051b010190565b906126be61280b9260405193848092612776565b038361268e565b9060405161281f8161263d565b809260ff81546001600160401b038116845260401c1690600a821015611c8a57600d6128909160c093602086015260018101546040860152612863600282016126cf565b6060860152612874600782016126cf565b6080860152612885600c82016127f7565b60a0860152016127f7565b910152565b5190600482101561028557565b6001600160401b0381160361028557565b5190811515820361028557565b908160c09103126102855761292860a0604051926128dd84612658565b80518452602081015160208501526128f760408201612895565b6040850152606081015161290a816128a2565b6060850152608081015161291d816128a2565b6080850152016128b3565b60a082015290565b90815161293c81611c80565b815260806001600160401b0381612962602086015160a0602087015260a0860190611cca565b946040810151604086015282606082015116606086015201511691015290565b9060206107f7928181520190612930565b6040513d5f823e3d90fd5b90600d6107f7926129c681546001600160401b038116855260ff602086019160401c16611c99565b60018101546040840152612a326060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612aad6102608401600c8301612776565b9261024081850391015201612776565b906001600160401b03612add60209295949560408552604085019061299e565b9416910152565b600a111561028557565b356107f781612ae4565b15612aff57565b633226144f60e21b5f5260045ffd5b15612b1557565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361028557565b35906126be826128a2565b91908260c091031261028557604051612b5581612658565b60a08082948035612b6581612b24565b84526020810135612b7581610274565b60208501526040810135612b8881610274565b60408501526060810135612b9b816128a2565b6060850152608081013560808501520135910152565b15612bb857565b631e40ad6360e31b5f5260045ffd5b356107f781610274565b908160a09103126102855760405190612be982612673565b80518252602081015160208301526040810151600681101561028557612c2a9160809160408501526060810151612c1f816128a2565b6060850152016128b3565b608082015290565b90612c3e8183516122ec565b60806001600160401b0381612c62602086015160a0602087015260a0860190611cca565b94604081015160408601526060810151606086015201511691015290565b35906126be82612ae4565b60c080916001600160401b038135612ca2816128a2565b1684526001600160a01b036020820135612cbb81610274565b16602085015260ff612ccf60408301610726565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102855701602081359101916001600160401b03821161028557813603831361028557565b908060209392818452848401375f828201840152601f01601f1916010190565b6107f7916001600160401b038235612d62816128a2565b168152612d806020830135612d7681612ae4565b6020830190611c99565b60408201356040820152612d9a6060820160608401612c8b565b612dac61014082016101408401612c8b565b612de0612dd4612dc0610220850185612cfa565b610260610220860152610260850191612d2b565b92610240810190612cfa565b91610240818503910152612d2b565b9091612e066107f793604084526040840190612c32565b916020818403910152612d4b565b91908260e091031261028557604051612e2c8161263d565b60c08082948035612e3c816128a2565b84526020810135612e4c81610274565b6020850152612e5d60408201610726565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b0381116107ad57601f01601f191660200190565b929192612eae82612e87565b91612ebc604051938461268e565b829481845281830111610285578281602093845f960137010152565b9080601f83011215610285578160206107f793359101612ea2565b9190916102608184031261028557612f096126c0565b92612f1382612b32565b8452612f2160208301612c80565b602085015260408201356040850152612f3d8160608401612e14565b6060850152612f50816101408401612e14565b60808501526102208201356001600160401b0381116102855781612f75918401612ed8565b60a08501526102408201356001600160401b03811161028557612f989201612ed8565b60c0830152565b9060206107f7928181520190612d4b565b60e09060a06107f7949363ffffffff8135612fca81612b24565b1683526001600160a01b036020820135612fe381610274565b1660208401526001600160a01b036040820135612fff81610274565b1660408401526001600160401b03606082013561301b816128a2565b16606084015260808101356080840152013560a08201528160c08201520190612d4b565b356107f7816128a2565b9091612e066107f793604084526040840190612930565b634e487b7160e01b5f52603260045260245ffd5b60035481101561308c5760035f5260205f2001905f90565b613060565b805482101561308c575f5260205f2001905f90565b916130bf9183549060031b91821b915f19901b19161790565b9055565b600354680100000000000000008110156107ad576001810160035560035481101561308c5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561311857565b6370a8bfcd60e11b5f5260045ffd5b9060405161313481612658565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261318c6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b604051906131ac60208361268e565b5f8252565b90916131c86107f793604084526040840190612c32565b916020818403910152611cca565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116107ad5760051b60200190565b6040519061321060208361268e565b5f808352366020840137565b90613226826131ea565b613233604051918261268e565b8281528092613244601f19916131ea565b0190602036910137565b91908201809211611b2257565b91908203918211611b2257565b805182101561308c5760209160051b010190565b91906003549080840293808504821490151715611b22578184101561330057830190818411611b22578082116132f8575b506132c06132bb848361325b565b61321c565b92805b8281106132cf57505050565b806132de61059d600193613074565b6132f16132eb858461325b565b88613268565b52016132c3565b90505f6132ad565b505090506107f7613201565b906006811015611c8a5760ff80198354169116179055565b9060206107f7928181520190611cca565b90613347825f525f60205260405f2090565b61335360018201613127565b9161335f825460ff1690565b918461336d60058301612812565b91600261338460208801516001600160a01b031690565b9561338e816122e2565b148061357d575b6134a4575050506133ad6001610b1260208401612aee565b6133bd608084015183838761460f565b6133f060a0826133d56108e26108cb60808401612bc7565b604051632a2d120f60e21b8152938492839260048401612def565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4801561049957610efb61347e9461345a88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613471965f92613483575b506134533689612ef3565b90866147c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182612f9f565b0390a2565b61349d91925060a03d60a011610aa857610a9a818361268e565b905f613448565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061357092935061347e946135036014836134eb610efb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61345a6060860161352f8151606061352560208301516001600160a01b031690565b9101519085614a14565b5160a061354660208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614a14565b5060405191829182613324565b506014810154426001600160401b0390911610613395565b1561359c57565b6336c7a86b60e21b5f5260045ffd5b906135b581611c80565b60ff80198354169116179055565b9060206107f792818152019061299e565b908160a091031261028557612c2a6080604051926135f184612673565b805184526020810151602085015261360b60408201612895565b60408501526060810151612c1f816128a2565b90815161362a81611c80565b8152608080613648602085015160a0602086015260a0850190611cca565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612e066107f79360408452604084019061361e565b91613698825f52600560205260405f2090565b906136a38385614b7e565b61387c576136b384835414613595565b600182018054929060026136d6600886901c6001600160a01b03165b9560ff1690565b6136df81611c80565b1480613864575b61377d57506002906136ff6007610b1260208601612aee565b01549061370e8284838861460f565b61371d60a08261160b87614bcb565b038173af9f833141094083b9de2cb6aa0f7e1f2d2deee15af4928315610499577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461377894610bdc935f9161168857506116813686612ef3565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556137cf600383016001600160401b03198154169055565b5f516020615c705f395f51905f526001600160a01b03613822613800600c8601546001600160a01b039060401c1690565b9361381c856001600160a01b03165f52600660205260405f2090565b5461324e565b928361383f826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a2613854614389565b61377860405192839201826135c3565b506003820154426001600160401b03909116106136e6565b7f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d498915061377890610bdc6138cd60016138bc885f525f60205260405f2090565b015460201c6001600160a01b031690565b8287614ba0565b5f198114611b225760010190565b9060206107f792818152019061361e565b156138fa57565b6306ee4dcd60e01b5f5260045ffd5b1561391057565b63e6c4247b60e01b5f5260045ffd5b156139275750565b60ff906357470ffd60e01b5f521660045260245ffd5b1561394457565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206126be936139986001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b156139c857565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611b2257565b906001600160401b03809116911601906001600160401b038211611b2257565b906001600160401b03612add602092959495604085526040850190612d4b565b15613a3e57565b6334b2073960e11b5f5260045ffd5b60405190613a5a8261263d565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613a908261263d565b606060c0835f81525f60208201525f6040820152613aac613a4d565b83820152613ab8613a4d565b60808201528260a08201520152565b613ad082611c80565b52565b15613ada57565b6308ad910960e21b5f5260045ffd5b15613af057565b631e9acf1760e31b5f5260045ffd5b6006821015611c8a5752565b90604051613b1881612673565b60806001600160401b0360148395613b3460ff82541686613aff565b613b4060018201613127565b6020860152613b5160058201612812565b604086015260138101546060860152015416910152565b3d15613b92573d90613b7982612e87565b91613b87604051938461268e565b82523d5f602084013e565b606090565b15613ba0575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613bd2825f52600260205260405f2090565b90613bdd838561559b565b613d5057613bed84835414613595565b60018201805492906002613c0d600886901c6001600160a01b03166136cf565b613c1681611c80565b1480613d2d575b613caf5750600290613c366005610b1260208601612aee565b015490613c458284838861460f565b613c5460c082610bf987614013565b038173b5c2e8bad7417e654e9087753ec1d08762a06f915af4928315610499577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461377894610bdc935f91610c805750610c703686612ef3565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613d259060048301905f82549255613d0e600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614a14565b613854614389565b50600382015460401c6001600160401b03166001600160401b0342911610613c1d565b7f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c915061377890610bdc6138cd60016138bc885f525f60205260405f2090565b15613d9757565b6306a41ced60e21b5f5260045ffd5b15613dae5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613dcd575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613eca57801561308c57613e3f91843560f81c9081613e4357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613e5684613e5d949060ff161c90565b1614613d90565b613ebd613e758260ff165f52600760205260405f2090565b546001600160a01b0381169290613eaa90613ea590613e9684871515613da6565b60a01c6001600160401b031690565b6139d7565b906001600160401b038216421015613dc4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610285575190565b9392606093613f136001600160a01b0394612add949998998852608060208901526080880190611ca6565b918683036040880152612d2b565b9193929590613f2f906155b3565b916002821015611c8a576020956001600160a01b0392613fb857613f6b905b604051635850a09b60e11b81529889978896879560048701613ee8565b0392165afa8015610499576126be915f91613f89575b50151561393d565b613fab915060203d602011613fb1575b613fa3818361268e565b810190613ed9565b5f613f81565b503d613f99565b50613f6b7f0000000000000000000000000000000000000000000000000000000000000000613f4e565b60405190613fef82612673565b5f608083828152613ffe613a83565b60208201528260408201528260608201520152565b61401b613fe2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661404381611c80565b855261405160058201612812565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611b22575f0390565b602093929161411b916140a2815f52600260205260405f2090565b976040860180516140b281611c80565b6140bb81611c80565b61436c575b50878560a08801946140d28651151590565b614359575b50505050506140f060608501516001600160401b031690565b6001600160401b038116614330575b5060808401516001600160401b0316806142f0575b5051151590565b156142d757608001518201516001600160a01b031680935b8251905f82131561429757614155915061414d84516157c5565b92839161536a565b6141646004860191825461324e565b90555b0180515f8113156141fc57505f516020615c705f395f51905f52916141946001600160a01b0392516157c5565b6141e560046141be836141b8866001600160a01b03165f52600660205260405f2090565b5461325b565b96876141db866001600160a01b03165f52600660205260405f2090565b550191825461324e565b90556040519384521691602090a25b6126be614389565b90505f811261420e575b5050506141f4565b5f516020615c705f395f51905f52916142366142316001600160a01b0393614077565b6157c5565b614281600461425a8361381c866001600160a01b03165f52600660205260405f2090565b9687614277866001600160a01b03165f52600660205260405f2090565b550191825461325b565b90556040519384521691602090a25f8080614206565b5f82126142a7575b505050614167565b6142b66142316142be93614077565b928391614a14565b6142cd6004860191825461325b565b9055825f8061429f565b50600c84015460401c6001600160a01b03168093614133565b61432a9060038901906fffffffffffffffff000000000000000082549160401b16906fffffffffffffffff00000000000000001916179055565b5f614114565b6143539060038901906001600160401b03166001600160401b0319825416179055565b5f6140ff565b614362946156cb565b5f808785826140d7565b614383905161437a81611c80565b60018b016135ab565b5f6140c0565b5f905f60035491600454925b80841080614485575b15614478576143b56105b56105a761059d87613074565b946143bf84615439565b614466576143cc84615469565b15614421575f516020615c705f395f51905f526001600160a01b0361440a61067361065e945f610610600c8b01546001600160a01b039060401c1690565b604051938452951691602090a25b93919293614395565b93919450506144309150600455565b806144385750565b6040519081527f61815f4b11c6ea4e14a2e448a010bed8efdc3e53a15efbf183d16a31085cd14590602090a1565b936144729193506138d4565b91614418565b5092916144309150600455565b506040831061439e565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040519161451460208401809260a0809163ffffffff81511684526001600160a01b0360208201511660208501526001600160a01b0360408201511660408501526001600160401b036060820151166060850152608081015160808501520151910152565b60c0835261452360e08461268e565b915190912016600160f81b1790565b6001600160a01b03602082013561454881610274565b16614554811515613909565b6001600160a01b03614599604084013561456d81610274565b7f0000000000000000000000000000000000000000000000000000000000000000831692168214613ad3565b81146145cb575063ffffffff6201518091356145b481612b24565b16106145bc57565b630596b15b60e01b5f5260045ffd5b63abfa558d60e01b5f5260045260245ffd5b903590601e198136030182121561028557018035906001600160401b0382116102855760200191813603831361028557565b90916126be9361463f61464d926146348361462e6102208901896145dd565b90613df0565b908888949394615829565b61462e6102408501856145dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615829565b9060146001600160401b039161468a613fe2565b935f525f60205260405f20906146a460ff83541686613aff565b6146b060058301612812565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556147b16001850161478461475b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926147fe8161484d946080946147df885f525f60205260405f2090565b976147eb895460ff1690565b6147f4816122e2565b156148c3576151af565b60408101805161480d816122e2565b614816816122e2565b151580614898575b61487e575b5060148401805460608301516001600160401b03908116911681900361485c575b50500151151590565b6148545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614844565b614892905161488c816122e2565b8561330c565b5f614823565b50845460ff168151906148aa826122e2565b6148b3826122e2565b6148bc816122e2565b141561481e565b6148d08260018b016146cf565b6151af565b906001600160401b036040519160208301938452166040820152604081526148fe60608261268e565b51902090565b805f525f60205260ff60405f2054166006811015611c8a57801590811561494c575b50614947575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614959816122e2565b145f614926565b906149b291805f525f60205261497b600160405f2001613127565b60a0836149976149906108cb60808401612bc7565b5485614676565b604051632a2d120f60e21b8152968792839260048401612def565b038173353a207a7bc822d8d3e58bca2f3f9e2b90b26e785af4928315610499576126be945f946149ef575b506149e9903690612ef3565b916147c2565b6149e9919450614a0d9060a03d60a011610aa857610a9a818361268e565b93906149dd565b90614a279291614a226154e4565b614a4d565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614b79576001600160a01b0383169283614af1576001600160a01b038216925f8080808488620186a0f1614a84613b68565b5015614a91575050505050565b614ad4613778926124fa7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614adf82825461324e565b90556040519081529081906020820190565b614b03614aff8484846159bd565b1590565b614b0e575b50505050565b81614b576001600160a01b03926124fa7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614b6285825461324e565b90556040519384521691602090a35f808080614b08565b505050565b905f52600560205260405f2054159081614b96575090565b6107f79150614904565b6149b29261497b614bbd6001610d46855f525f60205260405f2090565b91608083015190858561460f565b614bd3613fe2565b905f5260056020526001600160401b03600360405f2060ff600182015416614bfa81611c80565b8452614c0860058201612812565b60208501526004810154604085015201541660608201525f608082015290565b90614c31613fe2565b915f5260056020526001600160401b03600360405f2060ff600182015416614c5881611c80565b8552614c6660058201612812565b6020860152600481015460408601520154166060830152608082015290565b602093929161411b91614ca0815f52600560205260405f2090565b97604086018051614cb081611c80565b614cb981611c80565b614d39575b5087856080880194614cd08651151590565b614d26575b5050505050614cee60608501516001600160401b031690565b6001600160401b038116614d03575051151590565b61432a9060038901906001600160401b03166001600160401b0319825416179055565b614d2f94615a51565b5f80878582614cd5565b614d47905161437a81611c80565b5f614cbe565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526107f760a08261268e565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015614f21575b806d04ee2d6d415b85acef8100000000600a921015614f05575b662386f26fc10000811015614ef0575b6305f5e100811015614ede575b612710811015614ece575b6064811015614ebf575b1015614eb4575b614e4b6021614e1360018801615b0f565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614e5b57614e4b90614e18565b50506001600160a01b03614e8084614e74858498615aa3565b60208151910120615af9565b911693168314614eac57614e9e918160206113649351910120615af9565b14614ea7575f90565b600190565b505050600190565b600190940193614e02565b60029060649004960195614dfb565b6004906127109004960195614df1565b6008906305f5e1009004960195614de6565b601090662386f26fc100009004960195614dd9565b6020906d04ee2d6d415b85acef81000000009004960195614dc9565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614daf565b90600a811015611c8a5768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161502157505050565b5f5260205f20906020601f840160051c83019310615059575b601f0160051c01905b81811061504e575050565b5f8155600101615043565b909150819061503a565b91909182516001600160401b0381116107ad5761508a81615084845461273e565b84615014565b6020601f82116001146150c55781906130bf9394955f926150ba575b50508160011b915f199060031b1c19161790565b015190505f806150a6565b601f198216906150d8845f5260205f2090565b915f5b818110615112575095836001959697106150fa575b505050811b019055565b01515f1960f88460031b161c191690555f80806150f0565b9192602060018192868b0151815501940192016150db565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611c8a5760c0600d916151696126be9585614f49565b60408101516001850155615184606082015160028601614f76565b615195608082015160078601614f76565b6151a660a0820151600c8601615063565b01519101615063565b602060606151ea826151ce6151fb959896985f525f60205260405f2090565b976151dc8860058b0161512a565b01516001600160a01b031690565b94015101516001600160a01b031690565b809282515f811361533f575b50602083019283515f81136152be575b5051905f8212615296575b505050515f8112615239575b5050506126be614389565b5f516020615c705f395f51905f529161525c6142316001600160a01b0393614077565b615280601361425a8361381c866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061522e565b6142b66142316152a593614077565b6152b46013850191825461325b565b9055815f80615222565b6152c7906157c5565b6152e6816141b8866001600160a01b03165f52600660205260405f2090565b9081615303866001600160a01b03165f52600660205260405f2090565b556153136013890191825461324e565b90556040519081526001600160a01b038416905f516020615c705f395f51905f5290602090a25f615217565b615348906157c5565b61535381848461536a565b6153626013870191825461324e565b90555f615207565b90614a2792916153786154e4565b908215614b79576001600160a01b0316918215801561542a5761539c823414612b0e565b156153a657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561540b575b6040919091525f606052156153f05750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615421573d15833b151516166153de565b503d5f823e3d90fd5b6154343415612b0e565b61539c565b6001015460ff1661544981611c80565b60038114908115615458575090565b6002915061546581611c80565b1490565b6001600160401b036003820154164210159081615484575090565b600180925060ff9101541661546581611c80565b90614a2792916154a66154e4565b91908115614b79576001600160a01b031691826154db576126be92505f808080856001600160a01b0386165af161255a613b68565b6126be92615542565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146155335760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f5114811615615585575b604091909152156153f05750565b6001811516615421573d15833b15151616615577565b905f52600260205260405f2054159081614b96575090565b6001600160401b03815116906020810151600a811015611c8a5761565a8260406156ba9401516155fa60806060840151930151946040519760208901526040880190611c99565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526107f76102408261268e565b9190915f52600260205260405f20918255600582019261570b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611c8a5760c06157c19361572f60029761577794614f49565b6040810151600687015561574a606082015160078801614f76565b61575b6080820151600c8801614f76565b61576c60a082015160118801615063565b015160128501615063565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126157cf5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b8181106158105750506126be9250038361268e565b84548352600194850194879450602090930192016157fb565b6001600160a01b0390613f6b61584f61584a60209895999697993690612ef3565b6155b3565b936040519889978896879563600109bb60e01b875260048701613ee8565b6001810190825f528160205260405f2054155f146158d5578054680100000000000000008110156107ad576158c26158ac826001879401855584613091565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615903575f1901906158f28282613091565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f146159b5575f198401848111611b225783545f19810194908511611b22575f958583615972976159659503615978575b5050506158dc565b905f5260205260405f2090565b55600190565b61599e6159989161598f61059d6159ac9588613091565b92839187613091565b906130a6565b85905f5260205260405f2090565b555f808061595d565b505050505f90565b60405163a9059cbb60e01b602082019081526001600160a01b03939093166024820152604480820194909452928352915f9182916159fc60648261268e565b51908285620186a0f190615a0e613b68565b9115615a4b578151908115615a4257506020811015615a2d5750505f90565b81602091810103126102855760200151151590565b9150503b151590565b50505f90565b9190915f52600560205260405f20918255600582019261570b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6126be90615aeb615ae594936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615a91565b90615a91565b03601f19810184528361268e565b6107f791615b0691615b37565b90929192615b71565b90615b1982612e87565b615b26604051918261268e565b8281528092613244601f1991612e87565b8151919060418303615b6757615b609250602082015190606060408401519301515f1a90615bed565b9192909190565b50505f9160029190565b615b7a81611c80565b80615b83575050565b615b8c81611c80565b60018103615ba35763f645eedf60e01b5f5260045ffd5b615bac81611c80565b60028103615bc7575063fce698f760e01b5f5260045260245ffd5b80615bd3600392611c80565b14615bdb5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615c64579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610499575f516001600160a01b03811615615c5a57905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea264697066735822122031a0d5c80492f37031544dc36300232be26e9efe9e84abb664e6e5215d179ed664736f6c634300081e0033000000000000000000000000ce87fd88f4b5fd5475d163e2642c5c2c7dd655ec0000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", - "nonce": "0x4", + "input": "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209734d5ca5df677a1bc2d6152129b8d22b047a6c8e88c7f12be97983785566ef764736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0xe", "chainId": "0x14a34" }, "additionalContracts": [], @@ -97,133 +97,133 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x4e378a", + "cumulativeGasUsed": "0x392f17", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x7261a8f5f722c829e8d4381a519c2aa8c8fe689a7d5e1902494d7a74bd68426a", - "transactionIndex": "0x10", - "blockHash": "0x355c108a56e3de80a6f35b078eda90c14789c4f3c575da5669cc44a54cf7fc05", - "blockNumber": "0x2694b98", - "gasUsed": "0x1256bf", + "transactionHash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", + "transactionIndex": "0x12", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x27c7f6f", + "gasUsed": "0x1256cb", "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x64980", + "blobGasUsed": "0x12f240", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "daFootprintGasScalar": "0x94", + "daFootprintGasScalar": "0x1be", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x28c91a75", + "l1BlobBaseFee": "0x925b3", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x1a367c71689", - "l1GasPrice": "0x294eb5f4f", + "l1Fee": "0x3648512", + "l1GasPrice": "0x966542", "l1GasUsed": "0xae0c" }, { "status": "0x1", - "cumulativeGasUsed": "0x59581a", + "cumulativeGasUsed": "0x51c63c", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x93cf089b7e57207fad34690b6525d97b78d4452eadddc3dd979b28224528b89a", - "transactionIndex": "0x11", - "blockHash": "0x355c108a56e3de80a6f35b078eda90c14789c4f3c575da5669cc44a54cf7fc05", - "blockNumber": "0x2694b98", - "gasUsed": "0xb2090", + "transactionHash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", + "transactionIndex": "0x15", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", + "gasUsed": "0xb2084", "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x45728", + "blobGasUsed": "0xd147c", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "daFootprintGasScalar": "0x94", + "daFootprintGasScalar": "0x1be", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x28c91a75", + "l1BlobBaseFee": "0x925b3", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x121849a466a", - "l1GasPrice": "0x294eb5f4f", + "l1Fee": "0x4138040f", + "l1GasPrice": "0x966542", "l1GasUsed": "0x7825" }, { "status": "0x1", - "cumulativeGasUsed": "0x642214", + "cumulativeGasUsed": "0x5c9036", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x7bb8823f66bdb3f9bef019607214000a7dc0eb0148a523dbce2c6709d42e7a74", - "transactionIndex": "0x12", - "blockHash": "0x355c108a56e3de80a6f35b078eda90c14789c4f3c575da5669cc44a54cf7fc05", - "blockNumber": "0x2694b98", + "transactionHash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", + "transactionIndex": "0x16", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", "gasUsed": "0xac9fa", "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x42bcc", + "blobGasUsed": "0xc91d2", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "daFootprintGasScalar": "0x94", + "daFootprintGasScalar": "0x1be", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x28c91a75", + "l1BlobBaseFee": "0x925b3", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x1162dfa6dda", - "l1GasPrice": "0x294eb5f4f", + "l1Fee": "0x3eaa2695", + "l1GasPrice": "0x966542", "l1GasUsed": "0x7371" }, { "status": "0x1", - "cumulativeGasUsed": "0x6a8455", + "cumulativeGasUsed": "0x62f277", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x3a7095c50cafe072b66d893f4583722b03a14aba4cc8d9a3b359b88135028f5c", - "transactionIndex": "0x13", - "blockHash": "0x355c108a56e3de80a6f35b078eda90c14789c4f3c575da5669cc44a54cf7fc05", - "blockNumber": "0x2694b98", + "transactionHash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", + "transactionIndex": "0x17", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", "gasUsed": "0x66241", "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x2b2dc", + "blobGasUsed": "0x821ea", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0xce87fd88f4b5fd5475d163e2642c5c2c7dd655ec", - "daFootprintGasScalar": "0x94", + "contractAddress": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", + "daFootprintGasScalar": "0x1be", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x28c91a75", + "l1BlobBaseFee": "0x925b3", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0xb40a26c8e7", - "l1GasPrice": "0x294eb5f4f", + "l1Fee": "0x288e95ab", + "l1GasPrice": "0x966542", "l1GasUsed": "0x4ab6" }, { "status": "0x1", - "cumulativeGasUsed": "0xba07ad", + "cumulativeGasUsed": "0xb347e2", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x470639b186a290226a188b8ee03cd26ddf38aedfdc2d09e269284f7cefdc2fcc", - "transactionIndex": "0x14", - "blockHash": "0x355c108a56e3de80a6f35b078eda90c14789c4f3c575da5669cc44a54cf7fc05", - "blockNumber": "0x2694b98", - "gasUsed": "0x4f8358", + "transactionHash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", + "transactionIndex": "0x18", + "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", + "blockNumber": "0x27c7f6f", + "gasUsed": "0x50556b", "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x1ed930", + "blobGasUsed": "0x5e50fa", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0x6e2c4707da119425df2c722e2695300154652f56", - "daFootprintGasScalar": "0x94", + "contractAddress": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", + "daFootprintGasScalar": "0x1be", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x28c91a75", + "l1BlobBaseFee": "0x925b3", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x8094bff6956", - "l1GasPrice": "0x294eb5f4f", - "l1GasUsed": "0x355c1" + "l1Fee": "0x1d631f789", + "l1GasPrice": "0x966542", + "l1GasUsed": "0x36233" } ], "libraries": [ - "src/ChannelEngine.sol:ChannelEngine:0x353A207A7bC822D8d3E58bcA2f3F9E2b90B26e78", - "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xb5c2e8BAD7417E654E9087753EC1D08762a06f91", - "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xaf9F833141094083B9de2cb6AA0f7E1f2d2DEee1" + "src/ChannelEngine.sol:ChannelEngine:0xa023C476E02786356b84EdA6ad6f8C003960F406", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0x9F9513E2Ea0cA353f2108552F8d6A2357C103d20", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0x899A6059E7824b7C5538DC7B3a2F5286013ED9D6" ], "pending": [], "returns": {}, - "timestamp": 1776678417339, + "timestamp": 1779195327198, "chain": 84532, - "commit": "6c0a41d5" + "commit": "df4e110a" } \ No newline at end of file diff --git a/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json new file mode 100644 index 000000000..5c9152e1b --- /dev/null +++ b/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "transactionHash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", + "commit": "df4e110a", + "timestamp": 1779194593, + "chainId": 11155111, + "contractPath": "src/ChannelEngine.sol:ChannelEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json new file mode 100644 index 000000000..bf8bca978 --- /dev/null +++ b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json @@ -0,0 +1,14 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6", + "transactionHash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", + "commit": "df4e110a", + "timestamp": 1779194593, + "chainId": 11155111, + "contractPath": "src/ChannelHub.sol:ChannelHub", + "constructorArgs": [ + "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/11155111/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-43-13.json new file mode 100644 index 000000000..eeb6f6b63 --- /dev/null +++ b/contracts/deployments/11155111/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-43-13.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662", + "transactionHash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", + "commit": "df4e110a", + "timestamp": 1779194593, + "chainId": 11155111, + "contractPath": "src/sigValidators/ECDSAValidator.sol:ECDSAValidator", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json new file mode 100644 index 000000000..413f6c34a --- /dev/null +++ b/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "transactionHash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", + "commit": "df4e110a", + "timestamp": 1779194593, + "chainId": 11155111, + "contractPath": "src/EscrowDepositEngine.sol:EscrowDepositEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json new file mode 100644 index 000000000..0890f57e2 --- /dev/null +++ b/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "transactionHash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", + "commit": "df4e110a", + "timestamp": 1779194593, + "chainId": 11155111, + "contractPath": "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/11155111/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-51-48.json b/contracts/deployments/11155111/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-51-48.json new file mode 100644 index 000000000..f7ab3f405 --- /dev/null +++ b/contracts/deployments/11155111/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-51-48.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xF8bedb0aBa14833e95F29e760487C3d34Bc4Ec64", + "deployedTo": "0xe2B33Aa3922d7ac386e6801Ae7D9498C4DF45F1f", + "transactionHash": "0x7d8ed6acc062b28137ac08e8d1a0ed3368f39b2bf89f18910fec81ae77dffb55", + "commit": "df4e110a38ca3a4b17e46b606cc3233bbb7521c2", + "timestamp": 1779195108, + "chainId": 11155111, + "contractPath": "src/sigValidators/SessionKeyValidator.sol:SessionKeyValidator", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json new file mode 100644 index 000000000..bbf2717b7 --- /dev/null +++ b/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "transactionHash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", + "commit": "df4e110a", + "timestamp": 1779195327, + "chainId": 84532, + "contractPath": "src/ChannelEngine.sol:ChannelEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json new file mode 100644 index 000000000..0bd476378 --- /dev/null +++ b/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json @@ -0,0 +1,14 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", + "transactionHash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", + "commit": "df4e110a", + "timestamp": 1779195327, + "chainId": 84532, + "contractPath": "src/ChannelHub.sol:ChannelHub", + "constructorArgs": [ + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-55-27.json new file mode 100644 index 000000000..7fe477483 --- /dev/null +++ b/contracts/deployments/84532/ECDSAValidator.sol_ECDSAValidator/stress-v1_3_0-2026-05-19T12-55-27.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", + "transactionHash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", + "commit": "df4e110a", + "timestamp": 1779195327, + "chainId": 84532, + "contractPath": "src/sigValidators/ECDSAValidator.sol:ECDSAValidator", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json new file mode 100644 index 000000000..c7fbbee80 --- /dev/null +++ b/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "transactionHash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", + "commit": "df4e110a", + "timestamp": 1779195327, + "chainId": 84532, + "contractPath": "src/EscrowDepositEngine.sol:EscrowDepositEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json new file mode 100644 index 000000000..7f6e90f47 --- /dev/null +++ b/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "transactionHash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", + "commit": "df4e110a", + "timestamp": 1779195327, + "chainId": 84532, + "contractPath": "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-58-32.json b/contracts/deployments/84532/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-58-32.json new file mode 100644 index 000000000..e286b3566 --- /dev/null +++ b/contracts/deployments/84532/SessionKeyValidator.sol_SessionKeyValidator/stress-v1_3_0-2026-05-19T12-58-32.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xF8bedb0aBa14833e95F29e760487C3d34Bc4Ec64", + "deployedTo": "0x4085554a56F962b6c8eeeb017Bf2e9D2F3E31131", + "transactionHash": "0x287a20fc93f8a9448e8f7d290471cdb84d38107d73a68e25635a91884775c4a9", + "commit": "df4e110a38ca3a4b17e46b606cc3233bbb7521c2", + "timestamp": 1779195512, + "chainId": 84532, + "contractPath": "src/sigValidators/SessionKeyValidator.sol:SessionKeyValidator", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/nitronode/chart/config/stress-v1/blockchains.yaml b/nitronode/chart/config/stress-v1/blockchains.yaml index 7c9af4f3b..8835edf74 100644 --- a/nitronode/chart/config/stress-v1/blockchains.yaml +++ b/nitronode/chart/config/stress-v1/blockchains.yaml @@ -1,12 +1,12 @@ blockchains: - name: "ethereum_sepolia" id: 11155111 - channel_hub_address: "0x3497229ed24ad7877160923A39B982FEd7a91e31" + channel_hub_address: "0xf74c93a176794337fb43c951cc0f6cef9a6723f6" channel_hub_sig_validators: - 1: "0x36E4A80f54612497647539C8Ff8bDc1611Cb8f53" + 1: "0xe2B33Aa3922d7ac386e6801Ae7D9498C4DF45F1f" locking_contract_address: "0x9B3D4dA5A37857F17648CC4d78Bbae0A681C02c6" - name: "base_sepolia" id: 84532 - channel_hub_address: "0x6E2C4707DA119425dF2c722E2695300154652f56" + channel_hub_address: "0xa023c476e02786356b84eda6ad6f8c003960f406" channel_hub_sig_validators: - 1: "0x2A35728CADd8076dfD424fC3e20974A3CD03bFa5" + 1: "0x4085554a56F962b6c8eeeb017Bf2e9D2F3E31131" From c10af9faa0cde1da0214e04d11491299285945f4 Mon Sep 17 00:00:00 2001 From: nksazonov Date: Wed, 20 May 2026 11:24:26 +0200 Subject: [PATCH 02/18] feat(pkg): update channel hub abi --- pkg/blockchain/evm/channel_hub_abi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/blockchain/evm/channel_hub_abi.go b/pkg/blockchain/evm/channel_hub_abi.go index b17edec9e..9c74aaf3c 100644 --- a/pkg/blockchain/evm/channel_hub_abi.go +++ b/pkg/blockchain/evm/channel_hub_abi.go @@ -63,7 +63,7 @@ type State struct { // ChannelHubMetaData contains all meta data concerning the ChannelHub contract. var ChannelHubMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_defaultSigValidator\",\"type\":\"address\",\"internalType\":\"contractISignatureValidator\"},{\"name\":\"_node\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"DEFAULT_SIG_VALIDATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISignatureValidator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ESCROW_DEPOSIT_UNLOCK_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_CHALLENGE_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_DEPOSIT_ESCROW_STEPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MIN_CHALLENGE_DURATION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NODE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TRANSFER_GAS_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VALIDATOR_ACTIVATION_DELAY\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"VERSION\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"challengeChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"challengerSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"challengerIdx\",\"type\":\"uint8\",\"internalType\":\"enumParticipantIndex\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"challengeEscrowDeposit\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"challengerSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"challengerIdx\",\"type\":\"uint8\",\"internalType\":\"enumParticipantIndex\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeEscrowWithdrawal\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"challengerSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"challengerIdx\",\"type\":\"uint8\",\"internalType\":\"enumParticipantIndex\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpointChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"claimFunds\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"closeChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createChannel\",\"inputs\":[{\"name\":\"def\",\"type\":\"tuple\",\"internalType\":\"structChannelDefinition\",\"components\":[{\"name\":\"challengeDuration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"approvedSignatureValidators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"initState\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositToChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositToNode\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"escrowHead\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"finalizeEscrowDeposit\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"escrowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"finalizeEscrowWithdrawal\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"escrowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"finalizeMigration\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getChannelData\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumChannelStatus\"},{\"name\":\"definition\",\"type\":\"tuple\",\"internalType\":\"structChannelDefinition\",\"components\":[{\"name\":\"challengeDuration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"approvedSignatureValidators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"lastState\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"challengeExpiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"lockedFunds\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getChannelIds\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEscrowDepositData\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumEscrowStatus\"},{\"name\":\"unlockAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"challengeExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lockedAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"initState\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEscrowDepositIds\",\"inputs\":[{\"name\":\"page\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"pageSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"ids\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getEscrowWithdrawalData\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumEscrowStatus\"},{\"name\":\"challengeExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"lockedAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"initState\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNodeBalance\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getNodeValidator\",\"inputs\":[{\"name\":\"validatorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"contractISignatureValidator\"},{\"name\":\"registeredAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOpenChannels\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"openChannels\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReclaimBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUnlockableEscrowDepositStats\",\"inputs\":[],\"outputs\":[{\"name\":\"count\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"totalAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initiateEscrowDeposit\",\"inputs\":[{\"name\":\"def\",\"type\":\"tuple\",\"internalType\":\"structChannelDefinition\",\"components\":[{\"name\":\"challengeDuration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"approvedSignatureValidators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initiateEscrowWithdrawal\",\"inputs\":[{\"name\":\"def\",\"type\":\"tuple\",\"internalType\":\"structChannelDefinition\",\"components\":[{\"name\":\"challengeDuration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"approvedSignatureValidators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initiateMigration\",\"inputs\":[{\"name\":\"def\",\"type\":\"tuple\",\"internalType\":\"structChannelDefinition\",\"components\":[{\"name\":\"challengeDuration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"approvedSignatureValidators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"purgeEscrowDeposits\",\"inputs\":[{\"name\":\"maxSteps\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerNodeValidator\",\"inputs\":[{\"name\":\"validatorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"validator\",\"type\":\"address\",\"internalType\":\"contractISignatureValidator\"},{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawFromChannel\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawFromNode\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"ChannelChallenged\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"challengeExpireAt\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCheckpointed\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelClosed\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"finalState\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelCreated\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"definition\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structChannelDefinition\",\"components\":[{\"name\":\"challengeDuration\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"node\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"approvedSignatureValidators\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"initialState\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelDeposited\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ChannelWithdrawn\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"candidate\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Deposited\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowDepositChallenged\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"challengeExpireAt\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowDepositFinalized\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowDepositFinalizedOnHome\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowDepositInitiated\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowDepositInitiatedOnHome\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowDepositsPurged\",\"inputs\":[{\"name\":\"escrowIds\",\"type\":\"bytes32[]\",\"indexed\":false,\"internalType\":\"bytes32[]\"},{\"name\":\"purgedCount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowWithdrawalChallenged\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"challengeExpireAt\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowWithdrawalFinalized\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowWithdrawalFinalizedOnHome\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowWithdrawalInitiated\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"EscrowWithdrawalInitiatedOnHome\",\"inputs\":[{\"name\":\"escrowId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"FundsClaimed\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"destination\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrationInFinalized\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrationInInitiated\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrationOutFinalized\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"MigrationOutInitiated\",\"inputs\":[{\"name\":\"channelId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"state\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structState\",\"components\":[{\"name\":\"version\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"intent\",\"type\":\"uint8\",\"internalType\":\"enumStateIntent\"},{\"name\":\"metadata\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"homeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"nonHomeLedger\",\"type\":\"tuple\",\"internalType\":\"structLedger\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"decimals\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"userAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"userNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"},{\"name\":\"nodeAllocation\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nodeNetFlow\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"name\":\"userSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nodeSig\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NodeBalanceUpdated\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransferFailed\",\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRegistered\",\"inputs\":[{\"name\":\"validatorId\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"},{\"name\":\"validator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"contractISignatureValidator\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Withdrawn\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressCollision\",\"inputs\":[{\"name\":\"collision\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ChallengerVersionTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\",\"inputs\":[{\"name\":\"length\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\",\"inputs\":[{\"name\":\"s\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"type\":\"error\",\"name\":\"EmptySignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectChallengeDuration\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectChannelId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectChannelStatus\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectMsgSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectNode\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectSignature\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectStateIntent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectValue\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientBalance\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidValidatorId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NativeTransferFailed\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"NoChannelIdFoundForEscrow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeCastOverflowedIntToUint\",\"inputs\":[{\"name\":\"value\",\"type\":\"int256\",\"internalType\":\"int256\"}]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"ValidatorAlreadyRegistered\",\"inputs\":[{\"name\":\"validatorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotActive\",\"inputs\":[{\"name\":\"validatorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"activatesAt\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"ValidatorNotApproved\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidatorNotRegistered\",\"inputs\":[{\"name\":\"validatorId\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}]", - Bin: "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b038173__$682d6198b4eca5bc7e038b912a26498e7e$__5af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b038173__$682d6198b4eca5bc7e038b912a26498e7e$__5af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173__$b69fb814c294bfc16f92e50d7aeced4bde$__5af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173__$b69fb814c294bfc16f92e50d7aeced4bde$__5af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173__$b69fb814c294bfc16f92e50d7aeced4bde$__5af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b038173__$682d6198b4eca5bc7e038b912a26498e7e$__5af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea264697066735822122038c58d6835b628f29d1179ead91c3ea8c111403cc9a295f112ffd3c5270cf61864736f6c634300081e0033", + Bin: "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b038173__$682d6198b4eca5bc7e038b912a26498e7e$__5af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b038173__$682d6198b4eca5bc7e038b912a26498e7e$__5af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173__$b69fb814c294bfc16f92e50d7aeced4bde$__5af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173__$b69fb814c294bfc16f92e50d7aeced4bde$__5af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173__$b69fb814c294bfc16f92e50d7aeced4bde$__5af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b038173__$682d6198b4eca5bc7e038b912a26498e7e$__5af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173__$c00a153e45d4e7ce60e0acf48b0547b51a$__5af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209ca9c46147c1489a82a869c349b42f4d493d4ac3ebf3c0ac4fa5a93e0113024c64736f6c634300081e0033", } // ChannelHubABI is the input ABI used to generate the binding from. From cf9cad1291452b3fde9510c9f94b54c2530c5779 Mon Sep 17 00:00:00 2001 From: nksazonov Date: Wed, 20 May 2026 11:27:27 +0200 Subject: [PATCH 03/18] fix(nitronode/chart): config stress-v1 base sepolia ch hub address --- nitronode/chart/config/stress-v1/blockchains.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nitronode/chart/config/stress-v1/blockchains.yaml b/nitronode/chart/config/stress-v1/blockchains.yaml index 8835edf74..ac9ba259c 100644 --- a/nitronode/chart/config/stress-v1/blockchains.yaml +++ b/nitronode/chart/config/stress-v1/blockchains.yaml @@ -7,6 +7,6 @@ blockchains: locking_contract_address: "0x9B3D4dA5A37857F17648CC4d78Bbae0A681C02c6" - name: "base_sepolia" id: 84532 - channel_hub_address: "0xa023c476e02786356b84eda6ad6f8c003960f406" + channel_hub_address: "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5" channel_hub_sig_validators: 1: "0x4085554a56F962b6c8eeeb017Bf2e9D2F3E31131" From d024c3388487c3d2fa014fc35c3f6cffe35cff51 Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Wed, 20 May 2026 12:18:55 +0300 Subject: [PATCH 04/18] chore(nitronode/chart): drop unused locking_contract_address for stress-v1 ethereum sepolia --- nitronode/chart/config/stress-v1/blockchains.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/nitronode/chart/config/stress-v1/blockchains.yaml b/nitronode/chart/config/stress-v1/blockchains.yaml index ac9ba259c..de639c2b1 100644 --- a/nitronode/chart/config/stress-v1/blockchains.yaml +++ b/nitronode/chart/config/stress-v1/blockchains.yaml @@ -4,7 +4,6 @@ blockchains: channel_hub_address: "0xf74c93a176794337fb43c951cc0f6cef9a6723f6" channel_hub_sig_validators: 1: "0xe2B33Aa3922d7ac386e6801Ae7D9498C4DF45F1f" - locking_contract_address: "0x9B3D4dA5A37857F17648CC4d78Bbae0A681C02c6" - name: "base_sepolia" id: 84532 channel_hub_address: "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5" From 63571c051e82d82b21b775a6159b0dec8e6d02df Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Wed, 20 May 2026 13:33:09 +0300 Subject: [PATCH 05/18] fix(nitronode/store): pass applicationId into GetAppSessionKeyOwner Resolves the chicken-and-egg failure on app session creation when the session key authorizes by application_id. The previous implementation resolved the application_id via a subquery against the app_sessions row, but during create_app_session that row does not exist yet, so the application-bound branch never matched and recovery failed with "no active session key found". Callers now pass the application_id explicitly: create_app_session reads it from the signed AppDefinitionV1, and post-create handlers read it from the loaded AppSessionV1 record. The session-id branch is preserved for keys bound to specific app sessions. Co-Authored-By: Claude Opus 4.7 (1M context) --- nitronode/api/app_session_v1/README.md | 2 +- .../api/app_session_v1/create_app_session.go | 2 +- nitronode/api/app_session_v1/handler.go | 2 +- nitronode/api/app_session_v1/interface.go | 2 +- nitronode/api/app_session_v1/testing.go | 4 +-- .../store/database/app_session_key_state.go | 23 +++++++----- .../database/app_session_key_state_test.go | 36 ++++++++++++++++--- nitronode/store/database/interface.go | 2 +- 8 files changed, 52 insertions(+), 21 deletions(-) diff --git a/nitronode/api/app_session_v1/README.md b/nitronode/api/app_session_v1/README.md index c027aa35d..de6701a85 100644 --- a/nitronode/api/app_session_v1/README.md +++ b/nitronode/api/app_session_v1/README.md @@ -891,7 +891,7 @@ type Store interface { StoreAppSessionKeyState(state app.AppSessionKeyStateV1) error GetLastAppSessionKeyVersion(wallet, sessionKey string) (uint64, error) GetLastAppSessionKeyStates(wallet string, sessionKey *string) ([]app.AppSessionKeyStateV1, error) - GetAppSessionKeyOwner(sessionKey, appSessionId string) (string, error) + GetAppSessionKeyOwner(sessionKey, appSessionId, applicationId string) (string, error) } ``` diff --git a/nitronode/api/app_session_v1/create_app_session.go b/nitronode/api/app_session_v1/create_app_session.go index 27a65af63..c00973c9e 100644 --- a/nitronode/api/app_session_v1/create_app_session.go +++ b/nitronode/api/app_session_v1/create_app_session.go @@ -148,7 +148,7 @@ func (h *Handler) CreateAppSession(c *rpc.Context) { sigType := app.AppSessionSignerTypeV1(sigBytes[0]) appSessionSignerValidator := app.NewAppSessionKeySigValidatorV1( func(sessionKeyAddr string) (string, error) { - return tx.GetAppSessionKeyOwner(sessionKeyAddr, appSessionID) + return tx.GetAppSessionKeyOwner(sessionKeyAddr, appSessionID, appDef.ApplicationID) }, ) recoveredOwnerWallet, err := appSessionSignerValidator.Recover(packedRequest, sigBytes) diff --git a/nitronode/api/app_session_v1/handler.go b/nitronode/api/app_session_v1/handler.go index 90a29a0c2..eed203fe8 100644 --- a/nitronode/api/app_session_v1/handler.go +++ b/nitronode/api/app_session_v1/handler.go @@ -80,7 +80,7 @@ func (h *Handler) verifyQuorum(tx Store, appSessionId, applicationID string, par appSessionSignerValidator := app.NewAppSessionKeySigValidatorV1( func(sessionKeyAddr string) (string, error) { - return tx.GetAppSessionKeyOwner(sessionKeyAddr, appSessionId) + return tx.GetAppSessionKeyOwner(sessionKeyAddr, appSessionId, applicationID) }, ) diff --git a/nitronode/api/app_session_v1/interface.go b/nitronode/api/app_session_v1/interface.go index 1fdbed572..ec4d3eb39 100644 --- a/nitronode/api/app_session_v1/interface.go +++ b/nitronode/api/app_session_v1/interface.go @@ -62,7 +62,7 @@ type Store interface { // latest states are returned; when true, all latest states are returned regardless of // expiry. Results are paginated. GetLastAppSessionKeyStates(wallet string, sessionKey *string, includeInactive bool, limit, offset uint32) ([]app.AppSessionKeyStateV1, uint32, error) - GetAppSessionKeyOwner(sessionKey, appSessionId string) (string, error) + GetAppSessionKeyOwner(sessionKey, appSessionId, applicationId string) (string, error) // Channel Session key state operations ValidateChannelSessionKeyForAsset(wallet, sessionKey, asset, metadataHash string) (bool, error) diff --git a/nitronode/api/app_session_v1/testing.go b/nitronode/api/app_session_v1/testing.go index a0770bdda..526afb6e0 100644 --- a/nitronode/api/app_session_v1/testing.go +++ b/nitronode/api/app_session_v1/testing.go @@ -146,8 +146,8 @@ func (m *MockStore) GetLastAppSessionKeyStates(wallet string, sessionKey *string return args.Get(0).([]app.AppSessionKeyStateV1), uint32(args.Int(1)), args.Error(2) } -func (m *MockStore) GetAppSessionKeyOwner(sessionKey, appSessionId string) (string, error) { - args := m.Called(sessionKey, appSessionId) +func (m *MockStore) GetAppSessionKeyOwner(sessionKey, appSessionId, applicationId string) (string, error) { + args := m.Called(sessionKey, appSessionId, applicationId) return args.String(0), args.Error(1) } diff --git a/nitronode/store/database/app_session_key_state.go b/nitronode/store/database/app_session_key_state.go index 1c693fd40..522b17754 100644 --- a/nitronode/store/database/app_session_key_state.go +++ b/nitronode/store/database/app_session_key_state.go @@ -209,27 +209,32 @@ func (s *DBStore) GetLastAppSessionKeyState(wallet, sessionKey string) (*app.App } // GetAppSessionKeyOwner returns the user_address that owns the given session key -// authorized for the specified app session ID. Only the latest-version, non-expired key -// with matching permissions is considered. A newer version always supersedes older ones. -func (s *DBStore) GetAppSessionKeyOwner(sessionKey, appSessionId string) (string, error) { +// authorized for the specified app session ID or application ID. Only the latest-version, +// non-expired key with matching permissions is considered. A newer version always supersedes +// older ones. +// +// Both appSessionId and applicationId are accepted because the app session row may not yet +// exist in the database when this is called (notably during app session creation). Passing +// applicationId directly avoids a chicken-and-egg subquery against the not-yet-inserted row; +// callers always know the application ID either from the signed request (create) or from the +// loaded app session record (post-create state updates). +func (s *DBStore) GetAppSessionKeyOwner(sessionKey, appSessionId, applicationId string) (string, error) { sessionKey = strings.ToLower(sessionKey) appSessionId = strings.ToLower(appSessionId) - - // Subquery to get the application ID from the app session - appSubQuery := s.db.Model(&AppSessionV1{}).Select("application_id").Where("id = ?", appSessionId) + applicationId = strings.ToLower(applicationId) var dbState AppSessionKeyStateV1 err := s.db. Joins("JOIN current_session_key_states_v1 c ON c.user_address = app_session_key_states_v1.user_address AND c.session_key = app_session_key_states_v1.session_key AND c.version = app_session_key_states_v1.version AND c.kind = ?", SessionKeyKindAppSession). Joins("LEFT JOIN app_session_key_app_sessions_v1 ON app_session_key_app_sessions_v1.session_key_state_id = app_session_key_states_v1.id"). Joins("LEFT JOIN app_session_key_applications_v1 ON app_session_key_applications_v1.session_key_state_id = app_session_key_states_v1.id"). - Where("app_session_key_states_v1.session_key = ? AND c.version > 0 AND app_session_key_states_v1.expires_at > ? AND (app_session_key_app_sessions_v1.app_session_id = ? OR app_session_key_applications_v1.application_id = (?))", - sessionKey, time.Now().UTC(), appSessionId, appSubQuery). + Where("app_session_key_states_v1.session_key = ? AND c.version > 0 AND app_session_key_states_v1.expires_at > ? AND (app_session_key_app_sessions_v1.app_session_id = ? OR app_session_key_applications_v1.application_id = ?)", + sessionKey, time.Now().UTC(), appSessionId, applicationId). First(&dbState).Error if err != nil { if err == gorm.ErrRecordNotFound { - return "", fmt.Errorf("no active session key found for key %s and app session %s", sessionKey, appSessionId) + return "", fmt.Errorf("no active session key found for key %s, app session %s, application %s", sessionKey, appSessionId, applicationId) } return "", fmt.Errorf("failed to get session key owner: %w", err) } diff --git a/nitronode/store/database/app_session_key_state_test.go b/nitronode/store/database/app_session_key_state_test.go index dc6bf2019..25093d5c0 100644 --- a/nitronode/store/database/app_session_key_state_test.go +++ b/nitronode/store/database/app_session_key_state_test.go @@ -1064,7 +1064,7 @@ func TestDBStore_GetAppSessionKeyOwner(t *testing.T) { } require.NoError(t, store.StoreAppSessionKeyState(state)) - owner, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1) + owner, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1, "poker") require.NoError(t, err) assert.Equal(t, testUser1, owner) }) @@ -1103,7 +1103,33 @@ func TestDBStore_GetAppSessionKeyOwner(t *testing.T) { } require.NoError(t, store.StoreAppSessionKeyState(state)) - owner, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1) + owner, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1, testApp1) + require.NoError(t, err) + assert.Equal(t, testUser1, owner) + }) + + t.Run("Success - Find owner by application ID when app session not yet persisted", func(t *testing.T) { + // Regression: during CreateAppSession the deterministic app session ID + // is not yet in the database. The owner lookup must still succeed via + // the application ID binding alone. + db, cleanup := SetupTestDB(t) + defer cleanup() + + store := NewDBStore(db) + + state := app.AppSessionKeyStateV1{ + UserAddress: testUser1, + SessionKey: testSessionKey, + Version: 1, + ApplicationIDs: []string{testApp1}, + ExpiresAt: time.Now().Add(24 * time.Hour), + UserSig: "0xsig123", + } + require.NoError(t, store.StoreAppSessionKeyState(state)) + + // Pass an app session ID that has not been inserted yet — the lookup + // must succeed using the application ID branch. + owner, err := store.GetAppSessionKeyOwner(testSessionKey, "0x0000000000000000000000000000000000000098", testApp1) require.NoError(t, err) assert.Equal(t, testUser1, owner) }) @@ -1114,7 +1140,7 @@ func TestDBStore_GetAppSessionKeyOwner(t *testing.T) { store := NewDBStore(db) - _, err := store.GetAppSessionKeyOwner("0x0000000000000000000000000000000000000099", "0x0000000000000000000000000000000000000098") + _, err := store.GetAppSessionKeyOwner("0x0000000000000000000000000000000000000099", "0x0000000000000000000000000000000000000098", "nonexistent-app") assert.Error(t, err) assert.Contains(t, err.Error(), "no active session key found") }) @@ -1153,7 +1179,7 @@ func TestDBStore_GetAppSessionKeyOwner(t *testing.T) { } require.NoError(t, store.StoreAppSessionKeyState(state)) - _, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1) + _, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1, "poker") assert.Error(t, err) assert.Contains(t, err.Error(), "no active session key found") }) @@ -1203,7 +1229,7 @@ func TestDBStore_GetAppSessionKeyOwner(t *testing.T) { } require.NoError(t, store.StoreAppSessionKeyState(state2)) - owner, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1) + owner, err := store.GetAppSessionKeyOwner(testSessionKey, testSess1, "poker") require.NoError(t, err) assert.Equal(t, testUser1, owner) }) diff --git a/nitronode/store/database/interface.go b/nitronode/store/database/interface.go index 1cab68d91..5ff25e15d 100644 --- a/nitronode/store/database/interface.go +++ b/nitronode/store/database/interface.go @@ -219,7 +219,7 @@ type DatabaseStore interface { // StoreAppSessionKeyState stores or updates a session key state. StoreAppSessionKeyState(state app.AppSessionKeyStateV1) error - GetAppSessionKeyOwner(sessionKey, appSessionId string) (string, error) + GetAppSessionKeyOwner(sessionKey, appSessionId, applicationId string) (string, error) // SessionKeyStateExists returns the latest version of a non-expired session key state for a user. // Returns 0 if no state exists. From 640e9b9142906e95d5536f3eaacbb039f50a4d7c Mon Sep 17 00:00:00 2001 From: nksazonov Date: Wed, 20 May 2026 14:07:45 +0200 Subject: [PATCH 06/18] fix(deployments): redeploy ChH with 1 min activation delay for stress env --- .../11155111/run-1779278401948.json | 156 +++++++++++++++ .../11155111/run-latest.json | 143 +++++-------- .../84532/run-1779278728832.json | 188 ++++++++++++++++++ .../84532/run-latest.json | 181 +++++++---------- .../stress-v1_3_0-2026-05-19T12-43-13.json | 11 - .../stress-v1_3_0-2026-05-20T12-00-01.json | 11 + .../stress-v1_3_0-2026-05-19T12-43-13.json | 14 -- .../stress-v1_3_0-2026-05-20T12-00-01.json | 14 ++ ...=> stress-v1_3_0-2026-05-20T12-00-01.json} | 8 +- ...=> stress-v1_3_0-2026-05-20T12-00-01.json} | 8 +- .../stress-v1_3_0-2026-05-19T12-55-27.json | 11 - .../stress-v1_3_0-2026-05-20T12-05-28.json | 11 + .../stress-v1_3_0-2026-05-19T12-55-27.json | 14 -- .../stress-v1_3_0-2026-05-20T12-05-28.json | 14 ++ ...=> stress-v1_3_0-2026-05-20T12-05-28.json} | 8 +- ...=> stress-v1_3_0-2026-05-20T12-05-28.json} | 8 +- .../chart/config/stress-v1/blockchains.yaml | 4 +- 17 files changed, 537 insertions(+), 267 deletions(-) create mode 100644 contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779278401948.json create mode 100644 contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779278728832.json delete mode 100644 contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-00-01.json delete mode 100644 contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json create mode 100644 contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json rename contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/{stress-v1_3_0-2026-05-19T12-43-13.json => stress-v1_3_0-2026-05-20T12-00-01.json} (50%) rename contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/{stress-v1_3_0-2026-05-19T12-43-13.json => stress-v1_3_0-2026-05-20T12-00-01.json} (51%) delete mode 100644 contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-05-28.json delete mode 100644 contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json create mode 100644 contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-05-28.json rename contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/{stress-v1_3_0-2026-05-19T12-55-27.json => stress-v1_3_0-2026-05-20T12-05-28.json} (50%) rename contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/{stress-v1_3_0-2026-05-19T12-55-27.json => stress-v1_3_0-2026-05-20T12-05-28.json} (51%) diff --git a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779278401948.json b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779278401948.json new file mode 100644 index 000000000..11c70df96 --- /dev/null +++ b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779278401948.json @@ -0,0 +1,156 @@ +{ + "transactions": [ + { + "hash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", + "transactionType": "CREATE2", + "contractName": "ChannelEngine.channelhub", + "contractAddress": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1ad222", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea2646970667358221220bc01b237f03208049bfd81bfcbeaaad6cc979f220dd2246c2d2aae7ea34b3db664736f6c634300081e0033", + "nonce": "0x3b", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", + "transactionType": "CREATE2", + "contractName": "EscrowWithdrawalEngine.channelhub", + "contractAddress": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf5e93", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea26469706673582212206962417e2cd8eb647234f143f2014cfb5f1a06887319a0bcf2a01e09331d57de64736f6c634300081e0033", + "nonce": "0x3c", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", + "transactionType": "CREATE2", + "contractName": "EscrowDepositEngine.channelhub", + "contractAddress": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xfc763", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea26469706673582212207eb21c0d1619a3248a4b3fe08eef8df6e3a6e3feca56e1a09ecf8241267f767564736f6c634300081e0033", + "nonce": "0x3d", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", + "transactionType": "CREATE", + "contractName": "ChannelHub", + "contractAddress": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46", + "function": null, + "arguments": [ + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "gas": "0x68906c", + "value": "0x0", + "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x3e", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0xf96249", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", + "transactionIndex": "0x81", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", + "gasUsed": "0x1256cb", + "effectiveGasPrice": "0x3f25af6e", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x10482d9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", + "transactionIndex": "0x82", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", + "gasUsed": "0xb2090", + "effectiveGasPrice": "0x3f25af6e", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x10f4cd3", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", + "transactionIndex": "0x83", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", + "gasUsed": "0xac9fa", + "effectiveGasPrice": "0x3f25af6e", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + }, + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x15fbbeb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", + "transactionIndex": "0x84", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", + "gasUsed": "0x506f18", + "effectiveGasPrice": "0x3f25af6e", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46" + } + ], + "libraries": [ + "src/ChannelEngine.sol:ChannelEngine:0x89B81857A46cf290F23f6ff9B24e1031aAd65204", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xDccc09e335B87FB506C40A972e76fC7a225E0bf9", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xDcA4Ab495188b545cFa919C0CB0A7e2280F2F407" + ], + "pending": [], + "returns": {}, + "timestamp": 1779278401948, + "chain": 11155111, + "commit": "9110ba06" +} \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json index ca706e4e5..11c70df96 100644 --- a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json +++ b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json @@ -1,93 +1,76 @@ { "transactions": [ { - "hash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", + "hash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", "transactionType": "CREATE2", "contractName": "ChannelEngine.channelhub", - "contractAddress": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "contractAddress": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "gas": "0x1ad222", - "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea26469706673582212209929d28d6f4f84686b60107c75de0bf20707b30e60c2aea4ba079dccf78da9ab64736f6c634300081e0033", - "nonce": "0x35", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea2646970667358221220bc01b237f03208049bfd81bfcbeaaad6cc979f220dd2246c2d2aae7ea34b3db664736f6c634300081e0033", + "nonce": "0x3b", "chainId": "0xaa36a7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", + "hash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", "transactionType": "CREATE2", "contractName": "EscrowWithdrawalEngine.channelhub", - "contractAddress": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "contractAddress": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xf5e82", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220854ea3b8ac791e9ce26e6783173cfd98de9d6f65d7e284de0500fdc6022468f264736f6c634300081e0033", - "nonce": "0x36", + "gas": "0xf5e93", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea26469706673582212206962417e2cd8eb647234f143f2014cfb5f1a06887319a0bcf2a01e09331d57de64736f6c634300081e0033", + "nonce": "0x3c", "chainId": "0xaa36a7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", + "hash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", "transactionType": "CREATE2", "contractName": "EscrowDepositEngine.channelhub", - "contractAddress": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "contractAddress": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "gas": "0xfc763", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea2646970667358221220e4948e1e731e3da271666ebc3a21498d041ba70ab4b8811a088372c3360fe38364736f6c634300081e0033", - "nonce": "0x37", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea26469706673582212207eb21c0d1619a3248a4b3fe08eef8df6e3a6e3feca56e1a09ecf8241267f767564736f6c634300081e0033", + "nonce": "0x3d", "chainId": "0xaa36a7" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", - "transactionType": "CREATE", - "contractName": "ECDSAValidator.channelhub", - "contractAddress": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "gas": "0x84c87", - "value": "0x0", - "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122038c13cfc3dcd57a2af2b26923fa6b959f5116c33924710878a46f8a3dc1c3a3164736f6c634300081e0033", - "nonce": "0x38", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", + "hash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", "transactionType": "CREATE", "contractName": "ChannelHub", - "contractAddress": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6", + "contractAddress": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46", "function": null, "arguments": [ - "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" ], "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "gas": "0x686f0b", + "to": null, + "gas": "0x68906c", "value": "0x0", - "input": "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209734d5ca5df677a1bc2d6152129b8d22b047a6c8e88c7f12be97983785566ef764736f6c634300081e0033000000000000000000000000708b3ca8b7dc0f89ea5a06709c3b92dd5843b6620000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", - "nonce": "0x39", + "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x3e", "chainId": "0xaa36a7" }, "additionalContracts": [], @@ -96,94 +79,78 @@ ], "receipts": [ { + "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x1a7a296", + "cumulativeGasUsed": "0xf96249", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", - "transactionIndex": "0xd0", - "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", - "blockNumber": "0xa602e7", + "transactionHash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", + "transactionIndex": "0x81", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", "gasUsed": "0x1256cb", - "effectiveGasPrice": "0xcf9b34", + "effectiveGasPrice": "0x3f25af6e", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null }, { + "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x1b2c31a", + "cumulativeGasUsed": "0x10482d9", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", - "transactionIndex": "0xd1", - "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", - "blockNumber": "0xa602e7", - "gasUsed": "0xb2084", - "effectiveGasPrice": "0xcf9b34", + "transactionHash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", + "transactionIndex": "0x82", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", + "gasUsed": "0xb2090", + "effectiveGasPrice": "0x3f25af6e", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null }, { + "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x1bd8d14", + "cumulativeGasUsed": "0x10f4cd3", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", - "transactionIndex": "0xd2", - "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", - "blockNumber": "0xa602e7", + "transactionHash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", + "transactionIndex": "0x83", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", "gasUsed": "0xac9fa", - "effectiveGasPrice": "0xcf9b34", + "effectiveGasPrice": "0x3f25af6e", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null }, { - "status": "0x1", - "cumulativeGasUsed": "0x1c3ef55", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x2ed88fa1af9f0513507fc508bdb9867d337657992a629fe93703318d56960a54", - "transactionIndex": "0xd3", - "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", - "blockNumber": "0xa602e7", - "gasUsed": "0x66241", - "effectiveGasPrice": "0xcf9b34", - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": null, - "contractAddress": "0x708b3ca8b7dc0f89ea5a06709c3b92dd5843b662" - }, - { "status": "0x1", - "cumulativeGasUsed": "0x21444c0", + "cumulativeGasUsed": "0x15fbbeb", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", - "transactionIndex": "0xd4", - "blockHash": "0xde94f87032bac7bfe39b4d62ba936552b55474946ccd74a7200eec46a5c57d79", - "blockNumber": "0xa602e7", - "gasUsed": "0x50556b", - "effectiveGasPrice": "0xcf9b34", + "transactionHash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", + "transactionIndex": "0x84", + "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", + "blockNumber": "0xa61989", + "gasUsed": "0x506f18", + "effectiveGasPrice": "0x3f25af6e", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6" + "contractAddress": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46" } ], "libraries": [ - "src/ChannelEngine.sol:ChannelEngine:0xa023C476E02786356b84EdA6ad6f8C003960F406", - "src/EscrowDepositEngine.sol:EscrowDepositEngine:0x9F9513E2Ea0cA353f2108552F8d6A2357C103d20", - "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0x899A6059E7824b7C5538DC7B3a2F5286013ED9D6" + "src/ChannelEngine.sol:ChannelEngine:0x89B81857A46cf290F23f6ff9B24e1031aAd65204", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xDccc09e335B87FB506C40A972e76fC7a225E0bf9", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xDcA4Ab495188b545cFa919C0CB0A7e2280F2F407" ], "pending": [], "returns": {}, - "timestamp": 1779194593262, + "timestamp": 1779278401948, "chain": 11155111, - "commit": "df4e110a" + "commit": "9110ba06" } \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779278728832.json b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779278728832.json new file mode 100644 index 000000000..4ddad5054 --- /dev/null +++ b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-1779278728832.json @@ -0,0 +1,188 @@ +{ + "transactions": [ + { + "hash": "0xd382762780c6e0661cc1f7bb228f30f6e46461be9efacc3b54750dbe8d27dfa0", + "transactionType": "CREATE2", + "contractName": "ChannelEngine.channelhub", + "contractAddress": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1ad222", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea2646970667358221220bc01b237f03208049bfd81bfcbeaaad6cc979f220dd2246c2d2aae7ea34b3db664736f6c634300081e0033", + "nonce": "0x10", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3a642c4c020499885b2b289bfacabbf19b80a4165e7968109c0cc0536753ae7f", + "transactionType": "CREATE2", + "contractName": "EscrowWithdrawalEngine.channelhub", + "contractAddress": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf5e93", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea26469706673582212206962417e2cd8eb647234f143f2014cfb5f1a06887319a0bcf2a01e09331d57de64736f6c634300081e0033", + "nonce": "0x11", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x3c6043743ee8f39a6fe2b4b40e236755c2dd7da980d4fc5340e3e44fe4f949e4", + "transactionType": "CREATE2", + "contractName": "EscrowDepositEngine.channelhub", + "contractAddress": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xfc763", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea26469706673582212207eb21c0d1619a3248a4b3fe08eef8df6e3a6e3feca56e1a09ecf8241267f767564736f6c634300081e0033", + "nonce": "0x12", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb63e91129e4742f33a2e81449b74ddbe783a3c87188f4b2a73062089cae9a37d", + "transactionType": "CREATE", + "contractName": "ChannelHub", + "contractAddress": "0x61b9e0767f2eca7e33802e82f9c64b1ebe72ba31", + "function": null, + "arguments": [ + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "gas": "0x68906c", + "value": "0x0", + "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x13", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x32aae9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xd382762780c6e0661cc1f7bb228f30f6e46461be9efacc3b54750dbe8d27dfa0", + "transactionIndex": "0xb", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "blockNumber": "0x27d2254", + "gasUsed": "0x1256cb", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x12f240", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0xae0c", + "l1Fee": "0x25272cb0ee", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x382fe96", + "l1BlobBaseFeeScalar": "0xa118b", + "daFootprintGasScalar": "0x1be" + }, + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x528301", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0x3c6043743ee8f39a6fe2b4b40e236755c2dd7da980d4fc5340e3e44fe4f949e4", + "transactionIndex": "0x10", + "blockHash": "0xf4dd7882c48f7dd8930290c403c18113d391b9c1ceffd470061262875a859029", + "blockNumber": "0x27d2254", + "gasUsed": "0xb2090", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xd147c", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0x7825", + "l1Fee": "0x19a59e8649", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x382fe96", + "l1BlobBaseFeeScalar": "0xa118b", + "daFootprintGasScalar": "0x1be" + }, + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x5d4cfb", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0x3a642c4c020499885b2b289bfacabbf19b80a4165e7968109c0cc0536753ae7f", + "transactionIndex": "0x11", + "blockHash": "0xf4dd7882c48f7dd8930290c403c18113d391b9c1ceffd470061262875a859029", + "blockNumber": "0x27d2254", + "gasUsed": "0xac9fa", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0xc91d2", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0x7371", + "l1Fee": "0x18a47d8152", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x382fe96", + "l1BlobBaseFeeScalar": "0xa118b", + "daFootprintGasScalar": "0x1be" + }, + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0xadbc13", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xb63e91129e4742f33a2e81449b74ddbe783a3c87188f4b2a73062089cae9a37d", + "transactionIndex": "0x12", + "blockHash": "0xf4dd7882c48f7dd8930290c403c18113d391b9c1ceffd470061262875a859029", + "blockNumber": "0x27d2254", + "gasUsed": "0x506f18", + "effectiveGasPrice": "0x5b8d80", + "blobGasUsed": "0x5e9a26", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0x61b9e0767f2eca7e33802e82f9c64b1ebe72ba31", + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0x364dd", + "l1Fee": "0xb9788de356", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x382fe96", + "l1BlobBaseFeeScalar": "0xa118b", + "daFootprintGasScalar": "0x1be" + } + ], + "libraries": [ + "src/ChannelEngine.sol:ChannelEngine:0x89B81857A46cf290F23f6ff9B24e1031aAd65204", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xDccc09e335B87FB506C40A972e76fC7a225E0bf9", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xDcA4Ab495188b545cFa919C0CB0A7e2280F2F407" + ], + "pending": [], + "returns": {}, + "timestamp": 1779278728832, + "chain": 84532, + "commit": "9110ba06" +} \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json index 4c0a22a31..4ddad5054 100644 --- a/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json +++ b/contracts/broadcast/DeployChannelHub.s.sol/84532/run-latest.json @@ -1,82 +1,64 @@ { "transactions": [ { - "hash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", + "hash": "0xd382762780c6e0661cc1f7bb228f30f6e46461be9efacc3b54750dbe8d27dfa0", "transactionType": "CREATE2", "contractName": "ChannelEngine.channelhub", - "contractAddress": "0xa023c476e02786356b84eda6ad6f8c003960f406", + "contractAddress": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "gas": "0x1ad222", - "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea26469706673582212209929d28d6f4f84686b60107c75de0bf20707b30e60c2aea4ba079dccf78da9ab64736f6c634300081e0033", - "nonce": "0xa", + "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea2646970667358221220bc01b237f03208049bfd81bfcbeaaad6cc979f220dd2246c2d2aae7ea34b3db664736f6c634300081e0033", + "nonce": "0x10", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", + "hash": "0x3a642c4c020499885b2b289bfacabbf19b80a4165e7968109c0cc0536753ae7f", "transactionType": "CREATE2", "contractName": "EscrowWithdrawalEngine.channelhub", - "contractAddress": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", + "contractAddress": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xf5e82", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea2646970667358221220854ea3b8ac791e9ce26e6783173cfd98de9d6f65d7e284de0500fdc6022468f264736f6c634300081e0033", - "nonce": "0xb", + "gas": "0xf5e93", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea26469706673582212206962417e2cd8eb647234f143f2014cfb5f1a06887319a0bcf2a01e09331d57de64736f6c634300081e0033", + "nonce": "0x11", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", + "hash": "0x3c6043743ee8f39a6fe2b4b40e236755c2dd7da980d4fc5340e3e44fe4f949e4", "transactionType": "CREATE2", "contractName": "EscrowDepositEngine.channelhub", - "contractAddress": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", + "contractAddress": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", "function": null, "arguments": null, "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "gas": "0xfc763", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea2646970667358221220e4948e1e731e3da271666ebc3a21498d041ba70ab4b8811a088372c3360fe38364736f6c634300081e0033", - "nonce": "0xc", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea26469706673582212207eb21c0d1619a3248a4b3fe08eef8df6e3a6e3feca56e1a09ecf8241267f767564736f6c634300081e0033", + "nonce": "0x12", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", - "transactionType": "CREATE", - "contractName": "ECDSAValidator.channelhub", - "contractAddress": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "gas": "0x84c87", - "value": "0x0", - "input": "0x6080806040523460155761069d908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063600109bb146100f85763b0a141361461002f575f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f45761006090369060040161021c565b906044359067ffffffffffffffff82116100f4576020926100e361008b6100ec94369060040161021c565b6100dc600988610099610206565b97876040519889928484013781017f6368616c6c656e67650000000000000000000000000000000000000000000000838201520301601619810187520185610160565b36916101b2565b9060043561024a565b604051908152f35b5f80fd5b346100f45760803660031901126100f45760243567ffffffffffffffff81116100f4576101299036906004016101e8565b60443567ffffffffffffffff81116100f45760209161014f6100ec9236906004016101e8565b610157610206565b9160043561024a565b90601f8019910116810190811067ffffffffffffffff82111761018257604052565b634e487b7160e01b5f52604160045260245ffd5b67ffffffffffffffff811161018257601f01601f191660200190565b9291926101be82610196565b916101cc6040519384610160565b8294818452818301116100f4578281602093845f960137010152565b9080601f830112156100f457816020610203933591016101b2565b90565b606435906001600160a01b03821682036100f457565b9181601f840112156100f45782359167ffffffffffffffff83116100f457602083818601950101116100f457565b92919083156102ce576001600160a01b038316156102bf576102ac60806102b1956020604051948592828401526040808401528051918291826060860152018484015e5f838284010152601f801991011681010301601f198101835282610160565b6102dd565b156102bb57600190565b5f90565b634501a91960e01b5f5260045ffd5b631c372f9f60e31b5f5260045ffd5b91825192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015610504575b806d04ee2d6d415b85acef8100000000600a9210156104e9575b662386f26fc100008110156104d5575b6305f5e1008110156104c4575b6127108110156104b5575b60648110156104a7575b101561049d575b6001850190600a602161038661037085610196565b9461037e6040519687610160565b808652610196565b602085019890601f1901368a378401015b5f1901917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049081156103d257600a90610397565b50506001600160a01b035f936104518661045a946020610449869b603a604051938492818401967f19457468657265756d205369676e6564204d6573736167653a0a00000000000088525180918486015e83018281019d8e528c8051928391019e8f905e01015f815203601f198101835282610160565b51902061052c565b90949194610566565b1694168414610494576001600160a01b03926104859261047c9251902061052c565b90929192610566565b161461048f575f90565b600190565b50505050600190565b936001019361035b565b606460029104960195610354565b6127106004910496019561034a565b6305f5e1006008910496019561033f565b662386f26fc1000060109104960195610332565b6d04ee2d6d415b85acef810000000060209104960195610322565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104610308565b815191906041830361055c576105559250602082015190606060408401519301515f1a906105da565b9192909190565b50505f9160029190565b60048110156105c65780610578575050565b6001810361058f5763f645eedf60e01b5f5260045ffd5b600281036105aa575063fce698f760e01b5f5260045260245ffd5b6003146105b45750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841161065c579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15610651575f516001600160a01b0381161561064757905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea264697066735822122038c13cfc3dcd57a2af2b26923fa6b959f5116c33924710878a46f8a3dc1c3a3164736f6c634300081e0033", - "nonce": "0xd", - "chainId": "0x14a34" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", + "hash": "0xb63e91129e4742f33a2e81449b74ddbe783a3c87188f4b2a73062089cae9a37d", "transactionType": "CREATE", "contractName": "ChannelHub", - "contractAddress": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", + "contractAddress": "0x61b9e0767f2eca7e33802e82f9c64b1ebe72ba31", "function": null, "arguments": [ "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", @@ -84,10 +66,11 @@ ], "transaction": { "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "gas": "0x686f0b", + "to": null, + "gas": "0x68906c", "value": "0x0", - "input": "0x60c03461010b57601f615ee238819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615dbe908161012482396080518181816111910152613ed3015260a051818181610c5c01528181610d790152818161145001528181611a3e0152818161207d0152818161361d015281816140800152818161464901526147510152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461027f57806316b390b11461027a578063187576d8146102755780633115f6301461027057806338a66be21461026b5780633c684f921461026657806341b660ef1461026157806347de477a1461025c57806351bfcdbd1461025757806353269198146102525780635a0745b41461024d5780635ae2accc146102485780635b9acbf9146102435780635dc46a741461023e5780636840dbd2146102395780636898234b1461023457806371a471411461022f578063735181f01461022a57806382d3e15d146102255780638d0b12a5146102205780638e31c7351461021b57806394191051146102115780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ae565b612697565b612578565b6124fd565b61245f565b6122e5565b61212e565b612012565b611f09565b611c7a565b611bfa565b611bdd565b611aee565b611770565b611611565b6114e7565b611504565b611384565b61123d565b611220565b6111da565b611172565b611093565b61107c565b611031565b610ffb565b610fe0565b610fc4565b610dcc565b610d5a565b610b96565b610870565b6107ad565b610772565b61057b565b6104f5565b610351565b610299565b6001600160a01b0381160361029557565b5f80fd5b34610295576020366003190112610295576001600160a01b036004356102be81610284565b165f526006602052602060405f2054604051908152f35b9181601f84011215610295578235916001600160401b038311610295576020838186019501011161029557565b60643590600282101561029557565b9060606003198301126102955760043591602435906001600160401b03821161029557610340916004016102d5565b909160443560028110156102955790565b34610295576103b36103ed61036536610311565b9294916103c8610380879693965f52600260205260405f2090565b9485549261038f8415156126c9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613eb2565b9192909901986103c28a6128e3565b87613fe3565b60c06103d3876140d5565b604051809481926301999b9360e61b835260048301612a53565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af480156104a9577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610461946080945f93610476575b5082610453939461044c896128e3565b908b614149565b01516001600160401b031690565b9061047160405192839283612b8e565b0390a2005b610453935061049c9060c03d60c0116104a2575b610494818361275f565b810190612991565b9261043c565b503d61048a565b612a64565b90602080835192838152019201905f5b8181106104cb5750505090565b82518452602093840193909201916001016104be565b9060206104f29281815201906104ae565b90565b34610295576020366003190112610295576001600160a01b0360043561051a81610284565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056557610561856105558187038261275f565b604051918291826104e1565b0390f35b825484526020909301926001928301920161053e565b3461029557602036600319011261029557600354600480545f92918390358284111561076c576105ab838561332c565b8082101561075e57506105c28195949392956132ed565b925b80831080610755575b15610748576105e86105de84613145565b90549060031b1c90565b6106036105fd825f52600260205260405f2090565b966139b6565b9561060d81615559565b6107335761061a81615589565b156106e3576001600160a01b036106cb6105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b9d8e9261067f846001600160a01b03165f52600660205260405f2090565b5493610691600483019586549061331f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106c5828d613339565b526139b6565b604051938452961691602090a25b94939291946105c4565b505050506106f391939250600455565b806106fa57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261072e60405192839283614462565b0390a1005b505092939491610742906139b6565b926106d9565b50506004559190506106f3565b508185106105cd565b6105c29095949392956132ed565b5f6105ab565b34610295575f366003190112610295576020604051620186a08152f35b6004359060ff8216820361029557565b359060ff8216820361029557565b346102955760203660031901126102955760ff6107c861078f565b165f52600760205260405f2060405160408101918183106001600160401b03841117610826576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126de565b90816102609103126102955790565b90600319820160e081126102955760c0136102955760049160c435906001600160401b038211610295576104f29160040161082b565b6108793661083a565b60208101600261088882612bbf565b61089181611d68565b148015610b7b575b8015610b5d575b6108a990612bc9565b60026108b482612bbf565b6108bd81611d68565b03610b4e575b6109a36109016108d33686612c0e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261092f610920610919865f525f60205260405f2090565b5460ff1690565b610929816123bb565b15612c82565b61093b60208601612c98565b906109458661460e565b610955608087013583838861470f565b60a08161098861098161096a60808401612c98565b6001600160a01b03165f52600660205260405f2090565b5488614776565b604051632a2d120f60e21b8152958692839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49081156104a9577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a18610a99936001600160a01b03965f91610b1f575b50610a07368b612c0e565b610a113686612fc4565b908a6148c2565b610a3c87610a37866001600160a01b03165f52600160205260405f2090565b61598d565b506002610a4882612bbf565b610a5181611d68565b03610a9e5750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a878582613070565b0390a25b604051938493169683613081565b0390a3005b610aa9600391612bbf565b610ab281611d68565b03610aef57857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610ae78582613070565b0390a2610a8b565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610ae78582613070565b610b41915060a03d60a011610b47575b610b39818361275f565b810190612ca2565b5f6109fc565b503d610b2f565b610b583415612bdf565b6108c3565b506108a9610b6a82612bbf565b610b7381611d68565b1590506108a0565b506003610b8782612bbf565b610b9081611d68565b14610899565b610b9f3661083a565b90610bc06004610bb160208501612bbf565b610bba81611d68565b14612bc9565b610bc98161460e565b610bd66108d33683612c0e565b916080610be560208401612c98565b92013591610bf58382848761470f565b610c19610c0183613110565b85906001600160401b03915f521660205260405f2090565b92610c23856149d5565b15610ca3575050610a997f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b610c8d3415612bdf565b610c978186614a31565b60405191829182613070565b9091610ccf60c082610cb4876140d5565b604051632ef10bcd60e21b815293849283926004840161311a565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9994610d32935f91610d3b575b50610d2b3686612fc4565b8989614149565b610c9784613194565b610d54915060c03d60c0116104a257610494818361275f565b5f610d20565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060406003198301126102955760043591602435906001600160401b038211610295576104f29160040161082b565b3461029557610dda36610d9d565b610deb6009610bb160208401612bbf565b610e076001610e01845f525f60205260405f2090565b016131f8565b610ea2610e1e60208301516001600160a01b031690565b91610e2f608082015184868861470f565b610e393685612fc4565b61014085019386610e4986613110565b6001600160401b031646149586610f5c575b50505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b5489614776565b604051632a2d120f60e21b8152958692839260048401613282565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a957610ed4935f93610f3b575b50866148c2565b15610f0a576104717f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613070565b6104717f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613070565b610f5591935060a03d60a011610b4757610b39818361275f565b915f610ecd565b610fbb92610f6e610fb6923690612ee5565b6060860152610f803660608b01612ee5565b6080860152610f8d61326e565b60a0860152610f9a61326e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a37565b505f8681610e5b565b34610295575f366003190112610295576020604051612a308152f35b34610295575f36600319011261029557602060405160408152f35b346102955760403660031901126102955761056161101d60243560043561334d565b6040519182916020835260208301906104ae565b346102955761104861104236610d9d565b90613406565b005b6060600319820112610295576004359160243591604435906001600160401b038211610295576104f29160040161082b565b346102955761104861108d3661104a565b91613756565b34610295576020366003190112610295576001600160a01b036004356110b881610284565b165f5260016020526110cc60405f20615901565b5f905f5b815181101561115f576110f76109196110e98385613339565b515f525f60205260405f2090565b611100816123bb565b6003811415908161114a575b5061111a575b6001016110d0565b9161112d818460019310611135576139b6565b929050611112565b61113f8585613339565b516106c58286613339565b60059150611157816123bb565b14155f61110c565b50610561918152604051918291826104e1565b34610295575f3660031901126102955760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b6040906003190112610295576004356111cd81610284565b906024356104f281610284565b346102955760206112176001600160a01b036111f5366111b5565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b34610295575f366003190112610295576020600454604051908152f35b346102955761124b36610311565b611297611263859493945f52600560205260405f2090565b918254946112728615156126c9565b60a061127d88614c71565b604051809581926312031f5d60e11b8352600483016139c4565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49081156104a9577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c296610461966060965f95611341575b50916113318596610453969385600561131560016113259901546001600160a01b039060081c1690565b97889360028401549a8b91613eb2565b92909193019e8f6128e3565b61133a896128e3565b908b614d2b565b6104539550611325939192966113716113319260a03d60a01161137d575b611369818361275f565b8101906136a5565b965096929193506112eb565b503d61135f565b346102955760603660031901126102955761139d61078f565b6024356113a981610284565b6044356001600160401b038111610295576114bc916113cf6114c19236906004016102d5565b93909461148261147d60ff8316966113e88815156139d5565b6001600160a01b038616986113fe8a15156139eb565b61143f8561143961142d61142d6114208460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a01565b61147761144d8b8730614e62565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f73565b90614e9a565b613a1f565b61149c61148d612780565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a35565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b34610295575f366003190112610295576020604051620151808152f35b346102955761158d61151536610d9d565b61153661152760208395949501612bbf565b61153081611d68565b15612bc9565b61154c6001610e01855f525f60205260405f2090565b9061157161156460208401516001600160a01b031690565b608084015190838761470f565b60a08161098861158661096a60808401612c98565b5487614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047193610c97925f926115f0575b506115e93685612fc4565b90876148c2565b61160a91925060a03d60a011610b4757610b39818361275f565b905f6115de565b346102955761161f3661083a565b906116316006610bb160208501612bbf565b61163a8161460e565b6116476108d33683612c0e565b91608061165660208401612c98565b920135916116668382848761470f565b611672610c0183613110565b9261167c856149d5565b156116b2575050610a9981610c977f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a31565b90916116ee60a0826116d46116cd61096a6101608401612c98565b5488614cce565b60405162ea54e760e01b815293849283926004840161373f565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9994610c97935f91611751575b5061174a3686612fc4565b8989614d2b565b61176a915060a03d60a01161137d57611369818361275f565b5f61173f565b6080366003190112610295576004356024356001600160401b0381116102955761179e90369060040161082b565b6044356001600160401b038111610295576117bd9036906004016102d5565b90916117c7610302565b926117d9855f525f60205260405f2090565b6117e5600182016131f8565b936117f1825460ff1690565b906117fb826123bb565b6001821495868015611adb575b61181190612c82565b61181d600585016128e3565b9261185b61182a88613110565b6001600160401b0361185261184688516001600160401b031690565b6001600160401b031690565b91161015613aa3565b60208201516001600160a01b0316978a6080840151956001600160401b036118966118466118888d613110565b93516001600160401b031690565b91161115611a8d57506118eb61192d9493926004926118d660208c01926118d160016118c186612bbf565b6118ca81611d68565b1415612bc9565b6123bb565b80611a6d575b6118e69015612bc9565b612bbf565b6118f481611d68565b1480611a3a575b61190590156131e2565b6119118489898d61470f565b60a08761098861192661096a60808401612c98565b548d614776565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119bb8d8b6119af6119ee9a6119c197611a0c9e6119aa6119d69c6119df9e5f91611a1b575b506119a33688612fc4565b8d896152c4565b613eb2565b93919490923690612fc4565b90613fe3565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613ad9565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047160405192839283613af9565b611a34915060a03d60a011610b4757610b39818361275f565b5f611998565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614156118fb565b506118e66009611a7c83612bbf565b611a8581611d68565b1490506118dc565b6119d69392506119c19150996014996119bb7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119af6119ee9a6119df9a611a0c9e6119aa3415612bdf565b50611ae5836123bb565b60048314611808565b604036600319011261029557600435611b0681610284565b6001600160a01b0360243591611b1d831515613b19565b611b25615604565b611b30838233615498565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bd8575f516020615d695f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611bc561047194835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132a7565b34610295575f36600319011261029557602060405162093a808152f35b3461029557611c1f611c0b36610d9d565b6115366003610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047193610c97925f926115f057506115e93685612fc4565b34610295575f36600319011261029557600354600454905f805b82841015611d3c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cd783615559565b611d2a57611ce483615589565b15611d1357611d0a916004611cfb611d04936139b6565b9401549061331f565b936139b6565b915b9192611c94565b92509250505b604080519182526020820192909252f35b915092611d36906139b6565b91611d0c565b92509050611d19565b634e487b7160e01b5f52602160045260245ffd5b60041115611d6357565b611d45565b600a1115611d6357565b90600a821015611d635752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f2916001600160401b038251168152611dc660208301516020830190611d72565b60408201516040820152611e336060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611eb460a0840151610260610220850152610260840190611d7f565b92015190610240818403910152611d7f565b92936001600160401b0360c0956104f298979482948752611ee681611d59565b602087015216604085015216606083015260808201528160a08201520190611da3565b3461029557602036600319011261029557600435611f25613b65565b505f52600260205260405f2060405190611f3e826126f2565b80548252610561600182015491611f89611f79611f5b8560ff1690565b94611f6a602088019687613ba9565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a0820190815291612001611888611fdf600560048501549460c08701958652016128e3565b9360e0810194855251965197611ff489611d59565b516001600160401b031690565b905191519260405196879687611ec6565b346102955760603660031901126102955760043561202f81610284565b5f516020615d695f395f51905f526104716024359261204d84610284565b604435936120656001600160a01b03831615156139eb565b612070851515613b19565b6120a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633146131e2565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611bc58661211e6001600160a01b038516988995865f5260066020526120fb8260405f20546120f682821015613bb5565b61332c565b9788612118836001600160a01b03165f52600660205260405f2090565b556155b8565b6040519081529081906020820190565b346102955761213c3661083a565b61214d6008610bb160208401612bbf565b61215a6108d33684612c0e565b916121bb61216a60208301612c98565b9161217b608082013584868861470f565b6121853685612fc4565b61218e866149d5565b93868515612284575b505060a081610e87610e8061096a60206060850151016001600160a01b0390511690565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49182156104a9576121f8935f9361225f575b506121f2903690612c0e565b866148c2565b1561222e576104717f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613070565b6104717f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613070565b6121f291935061227d9060a03d60a011610b4757610b39818361275f565b92906121e6565b610a376122a2926122948661460e565b610f6e366101408b01612ee5565b505f86612197565b9160a0936001600160401b03916104f297969385526122c881611d59565b602085015216604083015260608201528160808201520190611da3565b3461029557602036600319011261029557600435612301613b65565b505f52600560205260405f206040519061231a8261270e565b80548252610561600182015491612351611f7960ff851694602087019561234081611d59565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123aa612395600560048501549460a08501958652016128e3565b9160c0810192835251945195611ff487611d59565b9151905191604051958695866122aa565b60061115611d6357565b906006821015611d635752565b919260a0610120946123eb85612454959a99989a6123c5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611da3565b946101008201520152565b34610295576020366003190112610295576004355f60a060405161248281612729565b82815282602082015282604082015282606082015282608082015201526124a7613b65565b505f525f6020526124ba60405f20613bd7565b80516124c5816123bb565b61056160208301519260408101519060606124ed61184660808401516001600160401b031690565b91015191604051958695866123d2565b61251d61250936610d9d565b6115366002610bb160208496959601612bbf565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a9577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047193610c97925f926115f057506115e93685612fc4565b3461029557612586366111b5565b61258e615604565b6001600160a01b038116916125a48315156139eb565b6001600160a01b036125e1826125cb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b54916125ee831515613b19565b5f61260e826125cb336001600160a01b03165f52600860205260405f2090565b551691818361268857612631915f808080858a5af161262b613c34565b50613c63565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126929184615662565b612631565b34610295576110486126a83661104a565b91613c8b565b34610295575f36600319011261029557602060405160018152f35b156126d057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082657604052565b60e081019081106001600160401b0382111761082657604052565b60c081019081106001600160401b0382111761082657604052565b60a081019081106001600160401b0382111761082657604052565b90601f801991011681019081106001600160401b0382111761082657604052565b6040519061278f60408361275f565b565b6040519061278f60e08361275f565b906040516127ad8161270e565b60c0600482946127ea60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561283d575b602083101461282957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161281e565b5f92918154916128568361280f565b80835292600181169081156128ab575060011461287257505050565b5f9081526020812093945091925b838310612891575060209250010190565b600181602092949394548385870101520191019190612880565b915050602093945060ff929192191683830152151560051b010190565b9061278f6128dc9260405193848092612847565b038361275f565b906040516128f08161270e565b809260ff81546001600160401b038116845260401c1690600a821015611d6357600d6129619160c093602086015260018101546040860152612934600282016127a0565b6060860152612945600782016127a0565b6080860152612956600c82016128c8565b60a0860152016128c8565b910152565b5190600482101561029557565b6001600160401b0381160361029557565b5190811515820361029557565b908160c0910312610295576129f960a0604051926129ae84612729565b80518452602081015160208501526129c860408201612966565b604085015260608101516129db81612973565b606085015260808101516129ee81612973565b608085015201612984565b60a082015290565b908151612a0d81611d59565b815260806001600160401b0381612a33602086015160a0602087015260a0860190611da3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f2928181520190612a01565b6040513d5f823e3d90fd5b90600d6104f292612a9781546001600160401b038116855260ff602086019160401c16611d72565b60018101546040840152612b036060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b7e6102608401600c8301612847565b9261024081850391015201612847565b906001600160401b03612bae602092959495604085526040850190612a6f565b9416910152565b600a111561029557565b356104f281612bb5565b15612bd057565b633226144f60e21b5f5260045ffd5b15612be657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029557565b359061278f82612973565b91908260c091031261029557604051612c2681612729565b60a08082948035612c3681612bf5565b84526020810135612c4681610284565b60208501526040810135612c5981610284565b60408501526060810135612c6c81612973565b6060850152608081013560808501520135910152565b15612c8957565b631e40ad6360e31b5f5260045ffd5b356104f281610284565b908160a09103126102955760405190612cba82612744565b80518252602081015160208301526040810151600681101561029557612cfb9160809160408501526060810151612cf081612973565b606085015201612984565b608082015290565b90612d0f8183516123c5565b60806001600160401b0381612d33602086015160a0602087015260a0860190611da3565b94604081015160408601526060810151606086015201511691015290565b359061278f82612bb5565b60c080916001600160401b038135612d7381612973565b1684526001600160a01b036020820135612d8c81610284565b16602085015260ff612da06040830161079f565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e19823603018112156102955701602081359101916001600160401b03821161029557813603831361029557565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f2916001600160401b038235612e3381612973565b168152612e516020830135612e4781612bb5565b6020830190611d72565b60408201356040820152612e6b6060820160608401612d5c565b612e7d61014082016101408401612d5c565b612eb1612ea5612e91610220850185612dcb565b610260610220860152610260850191612dfc565b92610240810190612dcb565b91610240818503910152612dfc565b9091612ed76104f293604084526040840190612d03565b916020818403910152612e1c565b91908260e091031261029557604051612efd8161270e565b60c08082948035612f0d81612973565b84526020810135612f1d81610284565b6020850152612f2e6040820161079f565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082657601f01601f191660200190565b929192612f7f82612f58565b91612f8d604051938461275f565b829481845281830111610295578281602093845f960137010152565b9080601f83011215610295578160206104f293359101612f73565b9190916102608184031261029557612fda612791565b92612fe482612c03565b8452612ff260208301612d51565b60208501526040820135604085015261300e8160608401612ee5565b6060850152613021816101408401612ee5565b60808501526102208201356001600160401b0381116102955781613046918401612fa9565b60a08501526102408201356001600160401b038111610295576130699201612fa9565b60c0830152565b9060206104f2928181520190612e1c565b60e09060a06104f2949363ffffffff813561309b81612bf5565b1683526001600160a01b0360208201356130b481610284565b1660208401526001600160a01b0360408201356130d081610284565b1660408401526001600160401b0360608201356130ec81612973565b16606084015260808101356080840152013560a08201528160c08201520190612e1c565b356104f281612973565b9091612ed76104f293604084526040840190612a01565b634e487b7160e01b5f52603260045260245ffd5b60035481101561315d5760035f5260205f2001905f90565b613131565b805482101561315d575f5260205f2001905f90565b916131909183549060031b91821b915f19901b19161790565b9055565b60035468010000000000000000811015610826576001810160035560035481101561315d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b156131e957565b6370a8bfcd60e11b5f5260045ffd5b9060405161320581612729565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261325d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061327d60208361275f565b5f8252565b90916132996104f293604084526040840190612d03565b916020818403910152611da3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381116108265760051b60200190565b604051906132e160208361275f565b5f808352366020840137565b906132f7826132bb565b613304604051918261275f565b8281528092613315601f19916132bb565b0190602036910137565b91908201809211611bd857565b91908203918211611bd857565b805182101561315d5760209160051b010190565b91906003549080840293808504821490151715611bd857818410156133d157830190818411611bd8578082116133c9575b5061339161338c848361332c565b6132ed565b92805b8281106133a057505050565b806133af6105de600193613145565b6133c26133bc858461332c565b88613339565b5201613394565b90505f61337e565b505090506104f26132d2565b906006811015611d635760ff80198354169116179055565b9060206104f2928181520190611da3565b90613418825f525f60205260405f2090565b613424600182016131f8565b91613430825460ff1690565b918461343e600583016128e3565b91600261345560208801516001600160a01b031690565b9561345f816123bb565b148061364e575b6135755750505061347e6001610bb160208401612bbf565b61348e608084015183838761470f565b6134c160a0826134a661098161096a60808401612c98565b604051632a2d120f60e21b8152938492839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af480156104a957610fb661354f9461352b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613542965f92613554575b506135243689612fc4565b90866148c2565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613070565b0390a2565b61356e91925060a03d60a011610b4757610b39818361275f565b905f613519565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061364192935061354f946135d46014836135bc610fb695600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61352b60608601613600815160606135f660208301516001600160a01b031690565b9101519085614ae5565b5160a061361760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614ae5565b50604051918291826133f5565b506014810154426001600160401b0390911610613466565b1561366d57565b6336c7a86b60e21b5f5260045ffd5b9061368681611d59565b60ff80198354169116179055565b9060206104f2928181520190612a6f565b908160a091031261029557612cfb6080604051926136c284612744565b80518452602081015160208501526136dc60408201612966565b60408501526060810151612cf081612973565b9081516136fb81611d59565b8152608080613719602085015160a0602086015260a0850190611da3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ed76104f2936040845260408401906136ef565b916137618284614c4f565b61394d57613777825f52600560205260405f2090565b9061378484835414613666565b600182018054929060026137a7600886901c6001600160a01b03165b9560ff1690565b6137b081611d59565b1480613935575b61384e57506002906137d06007610bb160208601612bbf565b0154906137df8284838861470f565b6137ee60a0826116d487614c71565b038173899a6059e7824b7c5538dc7b3a2f5286013ed9d65af49283156104a9577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461384994610c97935f91611751575061174a3686612fc4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138a0600383016001600160401b03198154169055565b5f516020615d695f395f51905f526001600160a01b036138f36138d1600c8601546001600160a01b039060401c1690565b936138ed856001600160a01b03165f52600660205260405f2090565b5461331f565b9283613910826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261392561447e565b6138496040519283920182613694565b506003820154426001600160401b03909116106137b7565b613849816139836007610bb160207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bbf565b610c8d613997865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861470f565b5f198114611bd85760010190565b9060206104f29281815201906136ef565b156139dc57565b6306ee4dcd60e01b5f5260045ffd5b156139f257565b63e6c4247b60e01b5f5260045ffd5b15613a095750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a2657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b03602061278f93613a7a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aaa57565b637d95736160e01b5f5260045ffd5b6001600160401b0362015180911601906001600160401b038211611bd857565b906001600160401b03809116911601906001600160401b038211611bd857565b906001600160401b03612bae602092959495604085526040850190612e1c565b15613b2057565b6334b2073960e11b5f5260045ffd5b60405190613b3c8261270e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b728261270e565b606060c0835f81525f60208201525f6040820152613b8e613b2f565b83820152613b9a613b2f565b60808201528260a08201520152565b613bb282611d59565b52565b15613bbc57565b631e9acf1760e31b5f5260045ffd5b6006821015611d635752565b90604051613be481612744565b60806001600160401b0360148395613c0060ff82541686613bcb565b613c0c600182016131f8565b6020860152613c1d600582016128e3565b604086015260138101546060860152015416910152565b3d15613c5e573d90613c4582612f58565b91613c53604051938461275f565b82523d5f602084013e565b606090565b15613c6c575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613c9682846156bb565b613e1c57613cac825f52600260205260405f2090565b90613cb984835414613666565b60018201805492906002613cd9600886901c6001600160a01b03166137a0565b613ce281611d59565b1480613df9575b613d7b5750600290613d026005610bb160208601612bbf565b015490613d118284838861470f565b613d2060c082610cb4876140d5565b0381739f9513e2ea0ca353f2108552f8d6a2357c103d205af49283156104a9577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461384994610c97935f91610d3b5750610d2b3686612fc4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613df19060048301905f82549255613dda600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614ae5565b61392561447e565b50600382015460401c6001600160401b03166001600160401b0342911610613ce9565b613849816139836005610bb160207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bbf565b15613e5957565b6306a41ced60e21b5f5260045ffd5b15613e705750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613e8f575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613f8c57801561315d57613f0191843560f81c9081613f0557507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f1884613f1f949060ff161c90565b1614613e52565b613f7f613f378260ff165f52600760205260405f2090565b546001600160a01b0381169290613f6c90613f6790613f5884871515613e68565b60a01c6001600160401b031690565b613ab9565b906001600160401b038216421015613e86565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b90816020910312610295575190565b9392606093613fd56001600160a01b0394612bae949998998852608060208901526080880190611d7f565b918683036040880152612dfc565b9193929590613ff1906156d3565b916002821015611d63576020956001600160a01b039261407a5761402d905b604051635850a09b60e11b81529889978896879560048701613faa565b0392165afa80156104a95761278f915f9161404b575b501515613a1f565b61406d915060203d602011614073575b614065818361275f565b810190613f9b565b5f614043565b503d61405b565b5061402d7f0000000000000000000000000000000000000000000000000000000000000000614010565b604051906140b182612744565b5f6080838281526140c0613b65565b60208201528260408201528260608201520152565b6140dd6140a4565b905f5260026020526001600160401b0380600360405f2060ff60018201541661410581611d59565b8552614113600582016128e3565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bd8575f0390565b936141b694602094939682614166835f52600260205260405f2090565b9860a08701956141768751151590565b156144495760808201518901516001600160a01b0316998a975b60408a018d81516141a081611d59565b6141a981611d59565b61442b575b505051151590565b614418575b50505050506141d460608401516001600160401b031690565b6001600160401b0381166143ef575b5060038601805460808501516001600160401b039081169160401c168190036143b8575b50505f8351135f1461436b576142299061422184516158e5565b92839161548a565b6142386004860191825461331f565b90555b0180515f8113156142d057505f516020615d695f395f51905f52916142686001600160a01b0392516158e5565b6142b960046142928361428c866001600160a01b03165f52600660205260405f2090565b5461332c565b96876142af866001600160a01b03165f52600660205260405f2090565b550191825461331f565b90556040519384521691602090a25b61278f61447e565b90505f81126142e2575b5050506142c8565b5f516020615d695f395f51905f529161430a6143056001600160a01b0393614139565b6158e5565b614355600461432e836138ed866001600160a01b03165f52600660205260405f2090565b968761434b866001600160a01b03165f52600660205260405f2090565b550191825461332c565b90556040519384521691602090a25f80806142da565b6143753415612bdf565b8251905f8212614388575b50505061423b565b61439761430561439f93614139565b928391614ae5565b6143ae6004860191825461332c565b9055825f80614380565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614207565b6144129060038801906001600160401b03166001600160401b0319825416179055565b5f6141e3565b614421946157eb565b5f808281806141bb565b600161444292519161443c83611d59565b0161367c565b5f8d6141ae565b600c8b015460401c6001600160a01b0316998a97614190565b9291906144796020916040865260408601906104ae565b930152565b6003546004545f928390828411156145e85761449a838561332c565b806040105f146145da57506144b4604095949392956132ed565b925b808310806145d0575b156145c2576144d06105de84613145565b6144e56105fd825f52600260205260405f2090565b956144ef81615559565b6145ad576144fc81615589565b1561455b576001600160a01b036145436105fd600198999a6106ab955f866106ba610661600c5f516020615d695f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144b6565b5050509391925061456b90600455565b80614574575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145a860405192839283614462565b0390a1565b5050929394916145bc906139b6565b92614551565b509391925061456b90600455565b50604085106144bf565b6144b49095949392956132ed565b5f61449a565b356104f281612bf5565b156145ff57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561462481610284565b166146308115156139eb565b6001600160a01b03604083013561464681610284565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ce5781146146bc5750806201518063ffffffff61468f61278f946145ee565b161015908161469f575b506145f8565b62093a8091506146b363ffffffff916145ee565b1611155f614699565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029557018035906001600160401b0382116102955760200191813603831361029557565b909161278f9361473f61474d926147348361472e6102208901896146dd565b90613eb2565b908888949394615949565b61472e6102408501856146dd565b91937f000000000000000000000000000000000000000000000000000000000000000093615949565b9060146001600160401b039161478a6140a4565b935f525f60205260405f20906147a460ff83541686613bcb565b6147b0600583016128e3565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148b16001850161488461485b60408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b926148fe8161494d946080946148df885f525f60205260405f2090565b976148eb895460ff1690565b6148f4816123bb565b156149c3576152c4565b60408101805161490d816123bb565b614916816123bb565b151580614998575b61497e575b5060148401805460608301516001600160401b03908116911681900361495c575b50500151151590565b6149545750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614944565b614992905161498c816123bb565b856133dd565b5f614923565b50845460ff168151906149aa826123bb565b6149b3826123bb565b6149bc816123bb565b141561491e565b6149d08260018b016147cf565b6152c4565b805f525f60205260ff60405f2054166006811015611d63578015908115614a1d575b50614a18575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a2a816123bb565b145f6149f7565b90614a8391805f525f602052614a4c600160405f20016131f8565b60a083614a68614a6161096a60808401612c98565b5485614776565b604051632a2d120f60e21b8152968792839260048401612ec0565b038173a023c476e02786356b84eda6ad6f8c003960f4065af49283156104a95761278f945f94614ac0575b50614aba903690612fc4565b916148c2565b614aba919450614ade9060a03d60a011610b4757610b39818361275f565b9390614aae565b90614af89291614af3615604565b614b1e565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c4a576001600160a01b0383169283614bc2576001600160a01b038216925f8080808488620186a0f1614b55613c34565b5015614b62575050505050565b614ba5613849926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bb082825461331f565b90556040519081529081906020820190565b614bd4614bd0848484615add565b1590565b614bdf575b50505050565b81614c286001600160a01b03926125cb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c3385825461331f565b90556040519384521691602090a35f808080614bd9565b505050565b905f52600560205260405f2054159081614c67575090565b6104f291506149d5565b614c796140a4565b905f5260056020526001600160401b03600360405f2060ff600182015416614ca081611d59565b8452614cae600582016128e3565b60208501526004810154604085015201541660608201525f608082015290565b90614cd76140a4565b915f5260056020526001600160401b03600360405f2060ff600182015416614cfe81611d59565b8552614d0c600582016128e3565b6020860152600481015460408601520154166060830152608082015290565b6020939291614db691614d46815f52600560205260405f2090565b97604086018051614d5681611d59565b614d5f81611d59565b614e45575b5087856080880194614d768651151590565b614e32575b505050505060038701614d9581546001600160401b031690565b60608601516001600160401b039081169116819003614e1057505051151590565b15614df757608001518201516001600160a01b031680935b8251905f821315614de857614229915061422184516158e5565b5f82126143885750505061423b565b50600c84015460401c6001600160a01b03168093614dce565b815467ffffffffffffffff19166001600160401b039091161790555f806141ae565b614e3b94615b4a565b5f80878582614d7b565b614e5c9051614e5381611d59565b60018b0161367c565b5f614d64565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f260a08261275f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615036575b806d04ee2d6d415b85acef8100000000600a92101561501a575b662386f26fc10000811015615005575b6305f5e100811015614ff3575b612710811015614fe3575b6064811015614fd4575b1015614fc9575b614f606021614f2860018801615c08565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f7057614f6090614f2d565b50506001600160a01b03614f9584614f89858498615b9c565b60208151910120615bf2565b911693168314614fc157614fb39181602061142d9351910120615bf2565b14614fbc575f90565b600190565b505050600190565b600190940193614f17565b60029060649004960195614f10565b6004906127109004960195614f06565b6008906305f5e1009004960195614efb565b601090662386f26fc100009004960195614eee565b6020906d04ee2d6d415b85acef81000000009004960195614ede565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ec4565b90600a811015611d635768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161513657505050565b5f5260205f20906020601f840160051c8301931061516e575b601f0160051c01905b818110615163575050565b5f8155600101615158565b909150819061514f565b91909182516001600160401b0381116108265761519f81615199845461280f565b84615129565b6020601f82116001146151da5781906131909394955f926151cf575b50508160011b915f199060031b1c19161790565b015190505f806151bb565b601f198216906151ed845f5260205f2090565b915f5b8181106152275750958360019596971061520f575b505050811b019055565b01515f1960f88460031b161c191690555f8080615205565b9192602060018192868b0151815501940192016151f0565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d635760c0600d9161527e61278f958561505e565b6040810151600185015561529960608201516002860161508b565b6152aa60808201516007860161508b565b6152bb60a0820151600c8601615178565b01519101615178565b9161531360206152e1615305959694965f525f60205260405f2090565b956152f982606086015101516001600160a01b031690565b9586946005890161523f565b01516001600160a01b031690565b5f8351135f1461547b5761532783516158e5565b61533281848461548a565b6153416013870191825461331f565b90555b602083019283515f81136153fa575b5051905f82126153d2575b505050515f8112615375575b50505061278f61447e565b5f516020615d695f395f51905f52916153986143056001600160a01b0393614139565b6153bc601361432e836138ed866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f808061536a565b6143976143056153e193614139565b6153f06013850191825461332c565b9055815f8061535e565b615403906158e5565b6154228161428c866001600160a01b03165f52600660205260405f2090565b908161543f866001600160a01b03165f52600660205260405f2090565b5561544f6013890191825461331f565b90556040519081526001600160a01b038416905f516020615d695f395f51905f5290602090a25f615353565b6154853415612bdf565b615344565b90614af89291615498615604565b908215614c4a576001600160a01b0316918215801561554a576154bc823414612bdf565b156154c657505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f511481161561552b575b6040919091525f606052156155105750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b6001811516615541573d15833b151516166154fe565b503d5f823e3d90fd5b6155543415612bdf565b6154bc565b6001015460ff1661556981611d59565b60038114908115615578575090565b6002915061558581611d59565b1490565b6001600160401b0360038201541642101590816155a4575090565b600180925060ff9101541661558581611d59565b90614af892916155c6615604565b91908115614c4a576001600160a01b031691826155fb5761278f92505f808080856001600160a01b0386165af161262b613c34565b61278f92615662565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156535760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156a5575b604091909152156155105750565b6001811516615541573d15833b15151616615697565b905f52600260205260405f2054159081614c67575090565b6001600160401b03815116906020810151600a811015611d635761577a8260406157da94015161571a60806060840151930151946040519760208901526040880190611d72565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f26102408261275f565b9190915f52600260205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d635760c06158e19361584f6002976158979461505e565b6040810151600687015561586a60608201516007880161508b565b61587b6080820151600c880161508b565b61588c60a082015160118801615178565b015160128501615178565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f81126158ef5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061593057505061278f9250038361275f565b845483526001948501948794506020909301920161591b565b6001600160a01b039061402d61596f61596a60209895999697993690612fc4565b6156d3565b936040519889978896879563600109bb60e01b875260048701613faa565b6001810190825f528160205260405f2054155f146159f557805468010000000000000000811015610826576159e26159cc826001879401855584613162565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a23575f190190615a128282613162565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615ad5575f198401848111611bd85783545f19810194908511611bd8575f958583615a9297615a859503615a98575b5050506159fc565b905f5260205260405f2090565b55600190565b615abe615ab891615aaf6105de615acc9588613162565b92839187613162565b90613177565b85905f5260205260405f2090565b555f8080615a7d565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b1b60648261275f565b51908285620186a0f15f51913d91156159f5578115615b415750602011614a1857151590565b9150503b151590565b9190915f52600560205260405f20918255600582019261582b6001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b61278f90615be4615bde94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615b8a565b90615b8a565b03601f19810184528361275f565b6104f291615bff91615c30565b90929192615c6a565b90615c1282612f58565b615c1f604051918261275f565b8281528092613315601f1991612f58565b8151919060418303615c6057615c599250602082015190606060408401519301515f1a90615ce6565b9192909190565b50505f9160029190565b615c7381611d59565b80615c7c575050565b615c8581611d59565b60018103615c9c5763f645eedf60e01b5f5260045ffd5b615ca581611d59565b60028103615cc0575063fce698f760e01b5f5260045260245ffd5b80615ccc600392611d59565b14615cd45750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d5d579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104a9575f516001600160a01b03811615615d5357905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212209734d5ca5df677a1bc2d6152129b8d22b047a6c8e88c7f12be97983785566ef764736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", - "nonce": "0xe", + "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x13", "chainId": "0x14a34" }, "additionalContracts": [], @@ -96,134 +79,110 @@ ], "receipts": [ { + "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x392f17", + "cumulativeGasUsed": "0x32aae9", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", - "transactionIndex": "0x12", + "transactionHash": "0xd382762780c6e0661cc1f7bb228f30f6e46461be9efacc3b54750dbe8d27dfa0", + "transactionIndex": "0xb", "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "blockNumber": "0x27c7f6f", + "blockNumber": "0x27d2254", "gasUsed": "0x1256cb", "effectiveGasPrice": "0x5b8d80", "blobGasUsed": "0x12f240", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "daFootprintGasScalar": "0x1be", + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0xae0c", + "l1Fee": "0x25272cb0ee", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFee": "0x382fe96", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x3648512", - "l1GasPrice": "0x966542", - "l1GasUsed": "0xae0c" + "daFootprintGasScalar": "0x1be" }, { + "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x51c63c", + "cumulativeGasUsed": "0x528301", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", - "transactionIndex": "0x15", - "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", - "blockNumber": "0x27c7f6f", - "gasUsed": "0xb2084", + "transactionHash": "0x3c6043743ee8f39a6fe2b4b40e236755c2dd7da980d4fc5340e3e44fe4f949e4", + "transactionIndex": "0x10", + "blockHash": "0xf4dd7882c48f7dd8930290c403c18113d391b9c1ceffd470061262875a859029", + "blockNumber": "0x27d2254", + "gasUsed": "0xb2090", "effectiveGasPrice": "0x5b8d80", "blobGasUsed": "0xd147c", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "daFootprintGasScalar": "0x1be", + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0x7825", + "l1Fee": "0x19a59e8649", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFee": "0x382fe96", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x4138040f", - "l1GasPrice": "0x966542", - "l1GasUsed": "0x7825" + "daFootprintGasScalar": "0x1be" }, { + "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0x5c9036", + "cumulativeGasUsed": "0x5d4cfb", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x6569b61c32d2b85b249a9bb4d221d9312de3691351117c62598df3cb222863c8", - "transactionIndex": "0x16", - "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", - "blockNumber": "0x27c7f6f", + "transactionHash": "0x3a642c4c020499885b2b289bfacabbf19b80a4165e7968109c0cc0536753ae7f", + "transactionIndex": "0x11", + "blockHash": "0xf4dd7882c48f7dd8930290c403c18113d391b9c1ceffd470061262875a859029", + "blockNumber": "0x27d2254", "gasUsed": "0xac9fa", "effectiveGasPrice": "0x5b8d80", "blobGasUsed": "0xc91d2", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "contractAddress": null, - "daFootprintGasScalar": "0x1be", + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0x7371", + "l1Fee": "0x18a47d8152", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFee": "0x382fe96", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x3eaa2695", - "l1GasPrice": "0x966542", - "l1GasUsed": "0x7371" + "daFootprintGasScalar": "0x1be" }, { - "status": "0x1", - "cumulativeGasUsed": "0x62f277", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", - "transactionIndex": "0x17", - "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", - "blockNumber": "0x27c7f6f", - "gasUsed": "0x66241", - "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x821ea", - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": null, - "contractAddress": "0xb5e7d2b8db56a173ca8c05cddcc1379852cdc095", - "daFootprintGasScalar": "0x1be", - "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x925b3", - "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x288e95ab", - "l1GasPrice": "0x966542", - "l1GasUsed": "0x4ab6" - }, - { "status": "0x1", - "cumulativeGasUsed": "0xb347e2", + "cumulativeGasUsed": "0xadbc13", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", - "transactionIndex": "0x18", - "blockHash": "0x3b2886405b7fb83d3032dc998b23db40c0908f0f348d24ac37d11a2b15e806b3", - "blockNumber": "0x27c7f6f", - "gasUsed": "0x50556b", + "transactionHash": "0xb63e91129e4742f33a2e81449b74ddbe783a3c87188f4b2a73062089cae9a37d", + "transactionIndex": "0x12", + "blockHash": "0xf4dd7882c48f7dd8930290c403c18113d391b9c1ceffd470061262875a859029", + "blockNumber": "0x27d2254", + "gasUsed": "0x506f18", "effectiveGasPrice": "0x5b8d80", - "blobGasUsed": "0x5e50fa", + "blobGasUsed": "0x5e9a26", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", - "daFootprintGasScalar": "0x1be", + "contractAddress": "0x61b9e0767f2eca7e33802e82f9c64b1ebe72ba31", + "l1GasPrice": "0x3e577828", + "l1GasUsed": "0x364dd", + "l1Fee": "0xb9788de356", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x925b3", + "l1BlobBaseFee": "0x382fe96", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x1d631f789", - "l1GasPrice": "0x966542", - "l1GasUsed": "0x36233" + "daFootprintGasScalar": "0x1be" } ], "libraries": [ - "src/ChannelEngine.sol:ChannelEngine:0xa023C476E02786356b84EdA6ad6f8C003960F406", - "src/EscrowDepositEngine.sol:EscrowDepositEngine:0x9F9513E2Ea0cA353f2108552F8d6A2357C103d20", - "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0x899A6059E7824b7C5538DC7B3a2F5286013ED9D6" + "src/ChannelEngine.sol:ChannelEngine:0x89B81857A46cf290F23f6ff9B24e1031aAd65204", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xDccc09e335B87FB506C40A972e76fC7a225E0bf9", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xDcA4Ab495188b545cFa919C0CB0A7e2280F2F407" ], "pending": [], "returns": {}, - "timestamp": 1779195327198, + "timestamp": 1779278728832, "chain": 84532, - "commit": "df4e110a" + "commit": "9110ba06" } \ No newline at end of file diff --git a/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json deleted file mode 100644 index 5c9152e1b..000000000 --- a/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-43-13.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0xa023c476e02786356b84eda6ad6f8c003960f406", - "transactionHash": "0x992610754a5ff51aaf0f6f453d6fdfab05bdec11ed7b168075000f232c9ec945", - "commit": "df4e110a", - "timestamp": 1779194593, - "chainId": 11155111, - "contractPath": "src/ChannelEngine.sol:ChannelEngine", - "constructorArgs": [], - "comment": "stress v1.3.0" -} diff --git a/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-00-01.json b/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-00-01.json new file mode 100644 index 000000000..a1301b7fc --- /dev/null +++ b/contracts/deployments/11155111/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-00-01.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", + "transactionHash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", + "commit": "9110ba06", + "timestamp": 1779278401, + "chainId": 11155111, + "contractPath": "src/ChannelEngine.sol:ChannelEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json deleted file mode 100644 index bf8bca978..000000000 --- a/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-43-13.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0xf74c93a176794337fb43c951cc0f6cef9a6723f6", - "transactionHash": "0x15f0ed3d4aec486dc7a17ef3c4c77e54567f36ca0f6a8135aa7ab7d088e95bac", - "commit": "df4e110a", - "timestamp": 1779194593, - "chainId": 11155111, - "contractPath": "src/ChannelHub.sol:ChannelHub", - "constructorArgs": [ - "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", - "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" - ], - "comment": "stress v1.3.0" -} diff --git a/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json new file mode 100644 index 000000000..5b70160cc --- /dev/null +++ b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json @@ -0,0 +1,14 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46", + "transactionHash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", + "commit": "9110ba06", + "timestamp": 1779278401, + "chainId": 11155111, + "contractPath": "src/ChannelHub.sol:ChannelHub", + "constructorArgs": [ + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "comment": "stress v1.3.0 with VALIDATOR_ACTIVATION_DELAY = 1 minute" +} diff --git a/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-20T12-00-01.json similarity index 50% rename from contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json rename to contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-20T12-00-01.json index 413f6c34a..4b5422b88 100644 --- a/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-43-13.json +++ b/contracts/deployments/11155111/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-20T12-00-01.json @@ -1,9 +1,9 @@ { "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", - "transactionHash": "0x9c27b097aa025eb4192c58acb9754c9e68fe52fd5bb7ebd305fa6c48283cc286", - "commit": "df4e110a", - "timestamp": 1779194593, + "deployedTo": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", + "transactionHash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", + "commit": "9110ba06", + "timestamp": 1779278401, "chainId": 11155111, "contractPath": "src/EscrowDepositEngine.sol:EscrowDepositEngine", "constructorArgs": [], diff --git a/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json b/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-20T12-00-01.json similarity index 51% rename from contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json rename to contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-20T12-00-01.json index 0890f57e2..c29441dfc 100644 --- a/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-43-13.json +++ b/contracts/deployments/11155111/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-20T12-00-01.json @@ -1,9 +1,9 @@ { "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", - "transactionHash": "0x125b9b598a99cf2bbf96ce56c4d72a5e6325498128f32faf7c8ba32c1ca26716", - "commit": "df4e110a", - "timestamp": 1779194593, + "deployedTo": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", + "transactionHash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", + "commit": "9110ba06", + "timestamp": 1779278401, "chainId": 11155111, "contractPath": "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine", "constructorArgs": [], diff --git a/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json deleted file mode 100644 index bbf2717b7..000000000 --- a/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-19T12-55-27.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0xa023c476e02786356b84eda6ad6f8c003960f406", - "transactionHash": "0x771c63d6e24076d17e9b68098bd8e0c0cc6616640e83f41dfbbb6aeaccab36cb", - "commit": "df4e110a", - "timestamp": 1779195327, - "chainId": 84532, - "contractPath": "src/ChannelEngine.sol:ChannelEngine", - "constructorArgs": [], - "comment": "stress v1.3.0" -} diff --git a/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-05-28.json b/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-05-28.json new file mode 100644 index 000000000..86f403345 --- /dev/null +++ b/contracts/deployments/84532/ChannelEngine.sol_ChannelEngine/stress-v1_3_0-2026-05-20T12-05-28.json @@ -0,0 +1,11 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", + "transactionHash": "0xd382762780c6e0661cc1f7bb228f30f6e46461be9efacc3b54750dbe8d27dfa0", + "commit": "9110ba06", + "timestamp": 1779278728, + "chainId": 84532, + "contractPath": "src/ChannelEngine.sol:ChannelEngine", + "constructorArgs": [], + "comment": "stress v1.3.0" +} diff --git a/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json deleted file mode 100644 index 0bd476378..000000000 --- a/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-19T12-55-27.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5", - "transactionHash": "0xdea921906e12c1c0b319630486a68d96bff9f5b2b35486d5bd1b2f9d06e5f4e2", - "commit": "df4e110a", - "timestamp": 1779195327, - "chainId": 84532, - "contractPath": "src/ChannelHub.sol:ChannelHub", - "constructorArgs": [ - "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", - "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" - ], - "comment": "stress v1.3.0" -} diff --git a/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-05-28.json b/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-05-28.json new file mode 100644 index 000000000..db07c43a1 --- /dev/null +++ b/contracts/deployments/84532/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-05-28.json @@ -0,0 +1,14 @@ +{ + "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "deployedTo": "0x61b9e0767f2eca7e33802e82f9c64b1ebe72ba31", + "transactionHash": "0xb63e91129e4742f33a2e81449b74ddbe783a3c87188f4b2a73062089cae9a37d", + "commit": "9110ba06", + "timestamp": 1779278728, + "chainId": 84532, + "contractPath": "src/ChannelHub.sol:ChannelHub", + "constructorArgs": [ + "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "comment": "stress v1.3.0 with VALIDATOR_ACTIVATION_DELAY = 1 minute" +} diff --git a/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-20T12-05-28.json similarity index 50% rename from contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json rename to contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-20T12-05-28.json index c7fbbee80..6e260d9c0 100644 --- a/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-19T12-55-27.json +++ b/contracts/deployments/84532/EscrowDepositEngine.sol_EscrowDepositEngine/stress-v1_3_0-2026-05-20T12-05-28.json @@ -1,9 +1,9 @@ { "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0x9f9513e2ea0ca353f2108552f8d6a2357c103d20", - "transactionHash": "0x51faa27c3a73618be9108ec71097d5b8b8f0881fa9bb8c5687d3f468b71449fa", - "commit": "df4e110a", - "timestamp": 1779195327, + "deployedTo": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", + "transactionHash": "0x3c6043743ee8f39a6fe2b4b40e236755c2dd7da980d4fc5340e3e44fe4f949e4", + "commit": "9110ba06", + "timestamp": 1779278728, "chainId": 84532, "contractPath": "src/EscrowDepositEngine.sol:EscrowDepositEngine", "constructorArgs": [], diff --git a/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json b/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-20T12-05-28.json similarity index 51% rename from contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json rename to contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-20T12-05-28.json index 7f6e90f47..8c0b93ba9 100644 --- a/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-19T12-55-27.json +++ b/contracts/deployments/84532/EscrowWithdrawalEngine.sol_EscrowWithdrawalEngine/stress-v1_3_0-2026-05-20T12-05-28.json @@ -1,9 +1,9 @@ { "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0x899a6059e7824b7c5538dc7b3a2f5286013ed9d6", - "transactionHash": "0xa04b316adbed5ebb8b0a22369bb4651bb5da836e63b8c6228668ffea1c7fb814", - "commit": "df4e110a", - "timestamp": 1779195327, + "deployedTo": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", + "transactionHash": "0x3a642c4c020499885b2b289bfacabbf19b80a4165e7968109c0cc0536753ae7f", + "commit": "9110ba06", + "timestamp": 1779278728, "chainId": 84532, "contractPath": "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine", "constructorArgs": [], diff --git a/nitronode/chart/config/stress-v1/blockchains.yaml b/nitronode/chart/config/stress-v1/blockchains.yaml index de639c2b1..6d02e49be 100644 --- a/nitronode/chart/config/stress-v1/blockchains.yaml +++ b/nitronode/chart/config/stress-v1/blockchains.yaml @@ -1,11 +1,11 @@ blockchains: - name: "ethereum_sepolia" id: 11155111 - channel_hub_address: "0xf74c93a176794337fb43c951cc0f6cef9a6723f6" + channel_hub_address: "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46" channel_hub_sig_validators: 1: "0xe2B33Aa3922d7ac386e6801Ae7D9498C4DF45F1f" - name: "base_sepolia" id: 84532 - channel_hub_address: "0xeddf27e378a8b102a98a4b03a3730ef585bfaff5" + channel_hub_address: "0x61b9e0767f2eca7e33802e82f9c64b1ebe72ba31" channel_hub_sig_validators: 1: "0x4085554a56F962b6c8eeeb017Bf2e9D2F3E31131" From 330671b78ae3027aef33b4095c8845fdf06e586d Mon Sep 17 00:00:00 2001 From: nksazonov Date: Wed, 20 May 2026 15:26:47 +0200 Subject: [PATCH 07/18] feat(contracts/script): add DepositToNode batch top-up scripts --- contracts/script/DepositToNode.s.sol | 48 +++++ contracts/script/batchDepositToNode.md | 147 +++++++++++++++ contracts/script/batchDepositToNode.sh | 238 +++++++++++++++++++++++++ 3 files changed, 433 insertions(+) create mode 100644 contracts/script/DepositToNode.s.sol create mode 100644 contracts/script/batchDepositToNode.md create mode 100755 contracts/script/batchDepositToNode.sh diff --git a/contracts/script/DepositToNode.s.sol b/contracts/script/DepositToNode.s.sol new file mode 100644 index 000000000..f66e584dc --- /dev/null +++ b/contracts/script/DepositToNode.s.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.30; + +import {Script} from "forge-std/Script.sol"; +import {console} from "forge-std/console.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; + +interface IChannelHub { + function depositToNode(address token, uint256 amount) external payable; +} + +/** + * @title DepositToNode + * @notice Approve a token spend and deposit to the node on the current chain. + * @dev Single-chain, single-token script. Multi-chain / multi-token orchestration + * is handled by batchDepositToNode.sh, which calls this script once per token. + * + * Direct usage: + * forge script script/DepositToNode.s.sol \ + * --sig "run(address,address,uint256)" \ + * --rpc-url \ + * --broadcast \ + * [--account | -i | --ledger] + */ +contract DepositToNode is Script { + using SafeERC20 for IERC20; + + /** + * @notice Approve hub to spend token then call depositToNode. + * @param hub ChannelHub contract address on the current chain. + * @param token ERC-20 token address to deposit. + * @param amount Token amount in the token's native decimals. + */ + function run(address hub, address token, uint256 amount) external { + console.log("=== DepositToNode ==="); + console.log("Chain: ", block.chainid); + console.log("Hub: ", hub); + console.log("Token: ", token); + console.log("Amount: ", amount); + + vm.startBroadcast(); + // forceApprove handles non-standard tokens (e.g. USDT) that don't return bool + IERC20(token).forceApprove(hub, amount); + IChannelHub(hub).depositToNode(token, amount); + vm.stopBroadcast(); + } +} diff --git a/contracts/script/batchDepositToNode.md b/contracts/script/batchDepositToNode.md new file mode 100644 index 000000000..7bd1864f2 --- /dev/null +++ b/contracts/script/batchDepositToNode.md @@ -0,0 +1,147 @@ +# batchDepositToNode + +Batch `approve` + `depositToNode` across multiple chains and tokens. + +Chains run in parallel; tokens within each chain run sequentially with on-chain +confirmation waited between each token (nonce safety). Token amounts in the config +are human-readable (e.g. `1000` for 1000 USDC) — the script fetches `decimals()` +from each token contract and converts automatically. + +## Prerequisites + +- [Foundry](https://getfoundry.sh/) (`forge`, `cast`) +- `jq` +- A signing method: keystore account, interactive key entry, or Ledger + +**Set up a keystore account (recommended):** +```bash +cast wallet import topup-signer --interactive +# Prompts for private key and encryption password. +# Key is stored encrypted in ~/.foundry/keystores/topup-signer +``` + +## Config format + +Create a `batchDepositToNode.json` file (not committed — contains RPC URLs): + +```json +[ + { + "rpcUrl": "https://mainnet.infura.io/v3/YOUR_KEY", + "hubAddress": "0xCe87FD88F4B5Fd5475d163e2642C5c2c7dD655Ec", + "tokens": [ + { "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "amount": "1000" }, + { "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "amount": "500" } + ] + }, + { + "rpcUrl": "https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY", + "hubAddress": "0x...", + "tokens": [ + { "address": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", "amount": "1000" } + ] + } +] +``` + +`amount` is in human-readable token units (e.g. `"1000"` = 1000 USDC). The script +fetches `decimals()` from the token contract at runtime and computes the raw on-chain +value (`1000 × 10^6 = 1000000000` for USDC). Fractional amounts are supported +(e.g. `"0.5"`), but values requiring more than 15 significant digits may lose +precision due to floating-point arithmetic — use whole numbers for large amounts. + +## Usage + +Run from the `contracts/` directory: + +```bash +# Keystore account — password prompted once, reused across all chains and tokens +./script/batchDepositToNode.sh batchDepositToNode.json --account topup-signer + +# Interactive private key — prompted once, temp keystore created automatically +./script/batchDepositToNode.sh batchDepositToNode.json -i + +# Ledger hardware wallet (sequential only — see note below) +./script/batchDepositToNode.sh batchDepositToNode.json -- --ledger + +# Dry run — simulate without broadcasting (no txs sent, no confirmation wait) +./script/batchDepositToNode.sh batchDepositToNode.json --dry-run --account topup-signer + +# Extra forge flags after -- (e.g. verbosity) +./script/batchDepositToNode.sh batchDepositToNode.json --account topup-signer -- -vvvv +``` + +`--account` and `-i` are shell-level flags handled before any forge invocations — +the password or key is collected once, then all forge calls reuse it silently. +Anything after `--` is forwarded verbatim to every `forge script` call. + +> **`-i` security note:** The private key is prompted interactively (echo off, not +> in shell history). Internally the script runs one `cast wallet import` call to +> create a temp keystore — the key appears in the process list for that one brief +> call only, then the keystore (random password, deleted on exit) is used for all +> subsequent forge invocations. Clear your clipboard after pasting: `pbcopy < /dev/null`. + +> **Ledger note:** `--ledger` requires sequential chain execution. The Ledger USB +> device can only be opened by one process at a time — running chains in parallel +> will cause all but the first to fail immediately. For Ledger, run chains one at a +> time by passing a single-entry config, or iterate manually. + +## Output + +A timestamped log file is written to the directory where the script is invoked: + +``` +batchDepositToNode-20260520-143000.log +``` + +All `forge` and `cast` output is captured. On completion: + +``` +=== Summary === +Deposited 4 tokens across 3 chains +``` + +On partial failure: + +``` +=== Summary === +Deposited 3 tokens across 3 chains + +FAILED: + chain=42161: 0xFF970A61... +``` + +Failed tokens are reported but do not stop other chains or tokens from running. +Exit code is `0` on full success, `1` if any token failed. + +## How it works + +``` +batchDepositToNode.sh +├── chain 1 (background) ──► token A: fetch decimals → approve + depositToNode → await confirm +│ └──► token B: fetch decimals → approve + depositToNode → await confirm +├── chain 2 (background) ──► token A: fetch decimals → approve + depositToNode → await confirm +│ └──► ... +└── wait for all → summary +``` + +For each token, the script: +1. Calls `cast call "decimals()(uint8)"` to get the token's decimal precision +2. Multiplies the human-readable `amount` by `10^decimals` to get the raw on-chain value +3. Runs `forge script DepositToNode.s.sol` with the raw amount (`approve` + `depositToNode`) +4. Reads `broadcast/DepositToNode.s.sol//run-latest.json` and calls + `cast receipt --confirmations 1` on both tx hashes before moving to the next token + +## Single-chain manual run + +`DepositToNode.s.sol` can also be called directly. Note that `` must be the +raw on-chain value (already multiplied by decimals): + +```bash +# Example: 1000 USDC = 1000000000 (6 decimals) +forge script script/DepositToNode.s.sol \ + --sig "run(address,address,uint256)" \ + --rpc-url \ + --broadcast \ + --account topup-signer +``` diff --git a/contracts/script/batchDepositToNode.sh b/contracts/script/batchDepositToNode.sh new file mode 100755 index 000000000..db5869965 --- /dev/null +++ b/contracts/script/batchDepositToNode.sh @@ -0,0 +1,238 @@ +#!/usr/bin/env bash +# batchDepositToNode.sh — approve + depositToNode across multiple chains in parallel. +# See batchDepositToNode.md for config format and usage examples. +set -uo pipefail + +# ── Usage ───────────────────────────────────────────────────────────────────── + +usage() { + echo "Usage: $0 [--dry-run] [--account | -i] [-- ...]" + echo "" + echo " config.json Path to batch config (see batchDepositToNode.md)" + echo " --dry-run Simulate without broadcasting; skips confirmation wait" + echo " --account Keystore account — prompts for password once, reused across all invocations" + echo " -i Interactive private key — prompts once, creates temp keystore" + echo " -- Forward remaining args to every forge script invocation" + echo " e.g.: -- --ledger" + echo " e.g.: -- -vvvv" + exit 1 +} + +# ── Argument parsing ────────────────────────────────────────────────────────── + +CONFIG="" +DRY_RUN=false +ACCOUNT_NAME="" +INTERACTIVE_KEY=false +FORGE_EXTRA=() + +while [[ $# -gt 0 ]]; do + case "$1" in + -h|--help) usage ;; + --dry-run) DRY_RUN=true; shift ;; + --account) + [[ -z "${2:-}" ]] && { echo "Error: --account requires a name" >&2; usage; } + ACCOUNT_NAME="$2"; shift 2 ;; + -i) INTERACTIVE_KEY=true; shift ;; + --) + shift + FORGE_EXTRA=("$@") + break + ;; + -*) + echo "Error: unknown flag: $1" >&2 + usage + ;; + *) + if [[ -z "$CONFIG" ]]; then + CONFIG="$1" + else + echo "Error: unexpected argument: $1" >&2 + usage + fi + shift + ;; + esac +done + +[[ -z "$CONFIG" ]] && { echo "Error: config file required" >&2; usage; } +[[ -f "$CONFIG" ]] || { echo "Error: config not found: $CONFIG" >&2; exit 1; } +command -v jq >/dev/null 2>&1 || { echo "Error: jq is required" >&2; exit 1; } +command -v cast >/dev/null 2>&1 || { echo "Error: cast (foundry) is required" >&2; exit 1; } +[[ -f foundry.toml ]] || { echo "Error: must be run from the contracts/ directory" >&2; exit 1; } + +if [[ -n "$ACCOUNT_NAME" && "$INTERACTIVE_KEY" == true ]]; then + echo "Error: --account and -i are mutually exclusive" >&2; exit 1 +fi + +# ── Signing setup (runs before logging so prompts appear on tty) ────────────── + +TMPKS="" +TMPPW="" +SIGNING_ARGS=() + +if [[ -n "$ACCOUNT_NAME" ]]; then + TMPPW=$(mktemp) + read -rsp "Keystore password for '$ACCOUNT_NAME': " KS_PASS; echo + printf '%s' "$KS_PASS" > "$TMPPW" + unset KS_PASS + SIGNING_ARGS=(--account "$ACCOUNT_NAME" --password-file "$TMPPW") + +elif $INTERACTIVE_KEY; then + TMPKS=$(mktemp -d) + TMPPW=$(mktemp) + # Random password for the temp keystore — user never needs to see it + LC_ALL=C tr -dc 'A-Za-z0-9' < /dev/urandom 2>/dev/null | head -c 32 > "$TMPPW" \ + || openssl rand -base64 24 > "$TMPPW" + read -rsp "Private key (hex, with or without 0x): " PK; echo + # Import to temp keystore — key and password briefly in process args for this one call only + cast wallet import "batch-$$" \ + --keystore-dir "$TMPKS" \ + --private-key "$PK" \ + --unsafe-password "$(cat "$TMPPW")" \ + >/dev/null 2>&1 + unset PK + SIGNING_ARGS=(--keystore "$TMPKS/batch-$$" --password-file "$TMPPW") +fi + +# ── Setup ───────────────────────────────────────────────────────────────────── + +LOGFILE="$(pwd)/batchDepositToNode-$(date +%Y%m%d-%H%M%S).log" +RESULTS=$(mktemp -d) +trap 'rm -rf "$RESULTS" "${TMPKS:-}" "${TMPPW:-}"' EXIT + +exec > >(tee -a "$LOGFILE") 2>&1 + +echo "Log: $LOGFILE" +echo "Config: $CONFIG" +echo "Dry-run: $DRY_RUN" +echo "Started: $(date -u +%Y-%m-%dT%H:%M:%SZ)" +echo + +if $DRY_RUN; then + BROADCAST_ARGS=() + echo "*** DRY RUN — no transactions will be broadcast ***" + echo +else + BROADCAST_ARGS=(--broadcast) +fi + +# ── Per-chain worker ────────────────────────────────────────────────────────── +# Each chain runs as an independent background subshell. +# Tokens within a chain run sequentially; on-chain confirmation is awaited +# after each token before starting the next. + +pids=() +chain_idx=0 + +while read -r chain; do + rpc=$(echo "$chain" | jq -r '.rpcUrl') + hub=$(echo "$chain" | jq -r '.hubAddress') + idx=$chain_idx + chain_idx=$((chain_idx + 1)) + + ( + ok=0 + fail=0 + fail_tokens="" + chain_id=$(cast chain-id --rpc-url "$rpc" 2>/dev/null) + if [[ -z "$chain_id" ]]; then + echo "!!! FAILED: cannot reach RPC $rpc — skipping chain" + jq -n --arg rpc "$rpc" --arg chain_id "unknown" \ + --argjson ok 0 --argjson fail 1 \ + --arg fail_tokens "ALL (RPC unreachable)" \ + '{rpc:$rpc, chain_id:$chain_id, ok:$ok, fail:$fail, fail_tokens:$fail_tokens}' \ + > "$RESULTS/$idx.json" + exit 1 + fi + + while read -r entry; do + token=$(echo "$entry" | jq -r '.address') + human_amount=$(echo "$entry" | jq -r '.amount') + + # Fetch token decimals from chain and compute raw on-chain amount + decimals=$(cast call "$token" "decimals()(uint8)" --rpc-url "$rpc" 2>/dev/null) + if [[ -z "$decimals" ]]; then + echo "!!! FAILED: [chain=$chain_id] could not fetch decimals() for $token" + fail=$((fail + 1)) + fail_tokens="$fail_tokens $token" + continue + fi + raw_amount=$(awk "BEGIN { printf \"%.0f\", $human_amount * (10 ^ $decimals) }") + + echo ">>> [chain=$chain_id] token=$token amount=$human_amount (decimals=$decimals raw=$raw_amount)" + + if forge script script/DepositToNode.s.sol \ + --sig "run(address,address,uint256)" "$hub" "$token" "$raw_amount" \ + --rpc-url "$rpc" \ + ${BROADCAST_ARGS[@]+"${BROADCAST_ARGS[@]}"} \ + ${SIGNING_ARGS[@]+"${SIGNING_ARGS[@]}"} \ + ${FORGE_EXTRA[@]+"${FORGE_EXTRA[@]}"}; then + + if ! $DRY_RUN; then + broadcast="broadcast/DepositToNode.s.sol/$chain_id/run-latest.json" + if [[ -f "$broadcast" ]]; then + while read -r hash; do + echo " awaiting $hash ..." + cast receipt --confirmations 1 "$hash" --rpc-url "$rpc" >/dev/null \ + || echo " WARNING: could not confirm $hash — tx may still land" + done < <(jq -r '.transactions[].hash' "$broadcast") + fi + fi + + ok=$((ok + 1)) + echo " confirmed: [chain=$chain_id] token=$token amount=$human_amount" + else + fail=$((fail + 1)) + fail_tokens="$fail_tokens $token" + echo "!!! FAILED: [chain=$chain_id] token=$token" + fi + done < <(echo "$chain" | jq -c '.tokens[]') + + jq -n \ + --arg rpc "$rpc" \ + --arg chain_id "$chain_id" \ + --argjson ok "$ok" \ + --argjson fail "$fail" \ + --arg fail_tokens "$fail_tokens" \ + '{rpc:$rpc, chain_id:$chain_id, ok:$ok, fail:$fail, fail_tokens:$fail_tokens}' \ + > "$RESULTS/$idx.json" + ) & + + pids+=($!) +done < <(jq -c '.[]' "$CONFIG") + +# ── Collect results ─────────────────────────────────────────────────────────── + +for pid in "${pids[@]}"; do + wait "$pid" || true # failures reported via result files, not exit codes +done + +# ── Summary ─────────────────────────────────────────────────────────────────── + +echo +echo "=== Summary ===" + +total_ok=0 +total_chains=0 +fail_reports=() + +for f in "$RESULTS"/*.json; do + [[ -f "$f" ]] || continue + total_chains=$((total_chains + 1)) + ok=$(jq -r '.ok' "$f") + fail=$(jq -r '.fail' "$f") + chain_id=$(jq -r '.chain_id' "$f") + fail_tokens=$(jq -r '.fail_tokens' "$f") + total_ok=$((total_ok + ok)) + [[ "$fail" -gt 0 ]] && fail_reports+=("chain=$chain_id: $fail_tokens") +done + +echo "Deposited $total_ok tokens across $total_chains chains" + +if [[ "${#fail_reports[@]}" -gt 0 ]]; then + echo + echo "FAILED:" + printf ' %s\n' "${fail_reports[@]}" + exit 1 +fi From 7438ee058efe6dc924af1e05983f4124a1d6137f Mon Sep 17 00:00:00 2001 From: nksazonov Date: Wed, 20 May 2026 16:14:44 +0200 Subject: [PATCH 08/18] fix(deployments): redeploy ChH for stress test sepolia with correct default sig val --- .../11155111/run-1779286321195.json | 54 ++++++++ .../11155111/run-latest.json | 130 ++---------------- ...=> stress-v1_3_0-2026-05-20T14-12-01.json} | 10 +- .../chart/config/stress-v1/blockchains.yaml | 2 +- 4 files changed, 74 insertions(+), 122 deletions(-) create mode 100644 contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779286321195.json rename contracts/deployments/11155111/ChannelHub.sol_ChannelHub/{stress-v1_3_0-2026-05-20T12-00-01.json => stress-v1_3_0-2026-05-20T14-12-01.json} (53%) diff --git a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779286321195.json b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779286321195.json new file mode 100644 index 000000000..05567b951 --- /dev/null +++ b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-1779286321195.json @@ -0,0 +1,54 @@ +{ + "transactions": [ + { + "hash": "0xd74da343a9f1079e3455d9d62396bb9b807a6b8e93e9727cf30c7f91adec5def", + "transactionType": "CREATE", + "contractName": "ChannelHub", + "contractAddress": "0x7d61ec428cfae560f43647af567ea7c6e2cc5527", + "function": null, + "arguments": [ + "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", + "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" + ], + "transaction": { + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "gas": "0x68906c", + "value": "0x0", + "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000708b3ca8b7dc0f89ea5a06709c3b92dd5843b6620000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x43", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "type": "0x2", + "status": "0x1", + "cumulativeGasUsed": "0x144df82", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "transactionHash": "0xd74da343a9f1079e3455d9d62396bb9b807a6b8e93e9727cf30c7f91adec5def", + "transactionIndex": "0x62", + "blockHash": "0x58c253949c6cbccf8e6869ab89fd94dba1df9cc9b56ff6d0b1287d7cda4e2cfa", + "blockNumber": "0xa61bc6", + "gasUsed": "0x506f18", + "effectiveGasPrice": "0x40deca7f", + "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", + "to": null, + "contractAddress": "0x7d61ec428cfae560f43647af567ea7c6e2cc5527" + } + ], + "libraries": [ + "src/ChannelEngine.sol:ChannelEngine:0x89B81857A46cf290F23f6ff9B24e1031aAd65204", + "src/EscrowDepositEngine.sol:EscrowDepositEngine:0xDccc09e335B87FB506C40A972e76fC7a225E0bf9", + "src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine:0xDcA4Ab495188b545cFa919C0CB0A7e2280F2F407" + ], + "pending": [], + "returns": {}, + "timestamp": 1779286321195, + "chain": 11155111, + "commit": "104c13df" +} \ No newline at end of file diff --git a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json index 11c70df96..05567b951 100644 --- a/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json +++ b/contracts/broadcast/DeployChannelHub.s.sol/11155111/run-latest.json @@ -1,67 +1,13 @@ { "transactions": [ { - "hash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", - "transactionType": "CREATE2", - "contractName": "ChannelEngine.channelhub", - "contractAddress": "0x89b81857a46cf290f23f6ff9b24e1031aad65204", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x1ad222", - "input": "0x0000000000000000000000000000000000000000000000000000000000000000608080604052346019576114b4908161001e823930815050f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63a8b4483c14610025575f80fd5b60403660031901126110285760043567ffffffffffffffff81116110285760a060031982360301126110285761005a82611093565b80600401356006811015611028578252602481013567ffffffffffffffff81116110285761008e90600436918401016111f6565b602083019081526040830192604483013584526100b8608460608301946064810135865201611101565b6080820190815260243567ffffffffffffffff8111611028576100df9036906004016111f6565b926100e86112ad565b50606084019367ffffffffffffffff855151164603610c5b5767ffffffffffffffff81511682519067ffffffffffffffff82511610908115611083575b50156108d357815161013681611324565b15611043575b5084516040810190601260ff83511611611034574667ffffffffffffffff82511614610f5e575b505060208101928351600a81101561034c576004148015610f4a575b8015610f36575b8015610f22575b8015610f0e575b8015610efa575b15610ed6576080820167ffffffffffffffff8151511615610ec757515167ffffffffffffffff164614610eb8575b6101de865160a06060820151910151906112e4565b6101f3875160c06080820151910151906112f1565b5f8112610ea95761020390611354565b03610e9a578451600681101561034c57600214610e74575b506102246112ad565b5061023e608086510151608060608551015101519061130c565b9161025860c08751015160c060608451015101519061130c565b9351600a81101561034c576002810361042c5750505090916102786112ad565b908051600681101561034c5715908115610416575b8115610400575b81156103eb575b50156103dc575f8213156103cd576102d5926102cd9282526020820152600160408201525f6060820152945b516113a0565b8451906112f1565b916102e660208501938451906112f1565b5f81126103be576080850192835115610385575b50508251905f8213610360575b50506040519183518352516020830152604083015192600684101561034c57606067ffffffffffffffff9160a095604086015201511660608301525115156080820152f35b634e487b7160e01b5f52602160045260245ffd5b61036b905191611354565b11610377575f80610307565b62b8ec7b60e61b5f5260045ffd5b61039d6103a3915160a06060820151910151906112e4565b91611354565b036103af575f806102fa565b6347c801f760e11b5f5260045ffd5b63ae0bb49160e01b5f5260045ffd5b631180da8f60e01b5f5260045ffd5b631e40ad6360e31b5f5260045ffd5b905051600681101561034c576004145f61029b565b80915051600681101561034c5760021490610294565b80915051600681101561034c576001149061028d565b600381036104d55750505090916104416112ad565b908051600681101561034c57159081156104bf575b81156104a9575b8115610494575b50156103dc575f8212156103cd576102d5926102cd9282526020820152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610464565b80915051600681101561034c576002149061045d565b80915051600681101561034c5760011490610456565b8061058c575050506104e56112ad565b928051600681101561034c5715908115610576575b8115610560575b811561054b575b50156103dc576103cd5760a08351015161053c57816102cd9160206102d5940152600160408201525f6060820152946102c7565b63a5eabfa560e01b5f5260045ffd5b905051600681101561034c576004145f610508565b80915051600681101561034c5760021490610501565b80915051600681101561034c57600114906104fa565b939492936001810361065b575050506105a36112ad565b908051600681101561034c57600114908115610645575b8115610630575b50156103dc576060845101516106215760a08451015161053c575f6105f3846105ee856105ee8b516113a0565b6112f1565b126103be576102d5926102cd9282526020820152600360408201525f606082015260016080820152946102c7565b631605013b60e11b5f5260045ffd5b905051600681101561034c576004145f6105c1565b80915051600681101561034c57600214906105ba565b9294939192600481036107475750506106726112ad565b938051600681101561034c57600114908115610731575b811561071c575b50156103dc576103cd57608001606081510151908115610621576106c2855160ff604060a083015192015116906113fe565b6106d460ff60408451015116846113fe565b0361053c5760806106e891510151916113a0565b0361070d57816102cd9160206102d5940152600160408201525f6060820152946102c7565b634c66f95560e01b5f5260045ffd5b905051600681101561034c576004145f610690565b80915051600681101561034c5760021490610689565b90939192906005810361091c575061075d6112ad565b948051600681101561034c57600114908115610906575b81156108f1575b50156103dc5761078e60208551016112d7565b600a81101561034c576004036108e25767ffffffffffffffff81511667ffffffffffffffff6107c08187515116611370565b16036108d357608001916060835101516106215760a08351015161053c5760a08651015161053c576103cd576108c457606060808351015101519060808151015161080a836113a0565b0361070d575160c00151610825610820836113a0565b611390565b036108b5576060845101519060608084510151015182039182116108a15760ff6040608061085d61086a9584848b51015116906113fe565b95510151015116906113fe565b03610892576102cd815f6102d593525f6020820152600160408201525f6060820152946102c7565b63733d14c560e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b630c18740d60e01b5f5260045ffd5b636c8b750760e11b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b637dcd8ffd60e01b5f5260045ffd5b905051600681101561034c576004145f61077b565b80915051600681101561034c5760021490610774565b91939091600681036109e0575050906109336112ad565b938051600681101561034c576001149081156109ca575b81156109b5575b50156103dc576103cd5760a08451015161053c5760800160808151015161070d576060815101516106215760c061098c60a0835101516113a0565b91510151036108b557816102cd9160206102d5940152600160408201525f6060820152946102c7565b905051600681101561034c576004145f610951565b80915051600681101561034c576002149061094a565b60078103610a7a575050906109f36112ad565b938051600681101561034c57600114908115610a64575b8115610a4f575b50156103dc576103cd5760a08451015161053c576080016060815101516106215760a08151015161053c57516106e860c06080830151920151611390565b905051600681101561034c576004145f610a11565b80915051600681101561034c5760021490610a0a565b60088103610c9357505090610a8d6112ad565b938051600681101561034c57158015610c7f575b15610b74575050608001805160600151915081156106215760a08151015161053c5760608451015161062157610ae5845160ff604060a083015192015116906113fe565b610af760ff60408451015116846113fe565b03610b6557610b2e9060ff6040610b23610b1d8851848460c0830151920151169061143b565b956113a0565b92510151169061143b565b036108b55760808251015161070d576102cd6102d591610b5260a0855101516113a0565b6020820152600460408201525b946102c7565b637b208b9d60e01b5f5260045ffd5b8051600681101561034c57600114908115610c6a575b50156103dc574667ffffffffffffffff8651511603610c5b576103cd576060845101519081156106215760a08551015161053c576080019060608251015161062157610be4825160ff604060a083015192015116906113fe565b610bf660ff60408851015116836113fe565b03610b6557610c2e610c1f610c19845160ff604060c0830151920151169061143b565b926113a0565b60ff604088510151169061143b565b036108b557516080015161070d57816102cd9160206102d5940152600160408201525f6060820152610b5f565b636752558360e01b5f5260045ffd5b905051600681101561034c576002145f610b8a565b508051600681101561034c57600514610aa1565b600903610e6557610ca26112ad565b948051600681101561034c57600403610d5f57504667ffffffffffffffff8751511603610c5b57610cd660208251016112d7565b600a81101561034c576008036108e25767ffffffffffffffff82511667ffffffffffffffff610d088184515116611370565b16036108d35760806060915101510151606086510151036106215760a08551015161053c57608001606081510151610621575160a0015161053c576103cd576108c4576102cd81600160406102d5940152946102c7565b809192935051600681101561034c57600114908115610e50575b50156103dc574667ffffffffffffffff8651511603610c5b57610d9f60208251016112d7565b600a81101561034c57600803610e215767ffffffffffffffff610dc9818085511693515116611370565b16036108d3575b6060845101516106215760a08451015161053c5760800160608151015115610621575160a0015161053c57816102cd9160206102d5940152600560408201525f606082015260016080820152610b5f565b67ffffffffffffffff610e3b818085511693515116611370565b1610610dd0576307646e4960e01b5f5260045ffd5b905051600681101561034c576002145f610d79565b633226144f60e21b5f5260045ffd5b5167ffffffffffffffff164211610e8b575f61021b565b63f06506c560e01b5f5260045ffd5b63780cef0760e11b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b630452a77d60e21b5f5260045ffd5b6309b086b960e21b5f5260045ffd5b67ffffffffffffffff60808301515116156101c95763263dac3760e11b5f5260045ffd5b508351600a81101561034c5760091461019b565b508351600a81101561034c57600814610194565b508351600a81101561034c5760071461018d565b508351600a81101561034c57600614610186565b508351600a81101561034c5760051461017f565b6020015173ffffffffffffffffffffffffffffffffffffffff1680610fa1575060ff601291511603610f92575b5f80610163565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610ff2575b50610fd657636afa2af960e01b5f5260045ffd5b60ff80915116911614610f8b57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161102c575b8161100e602093836110df565b81010312611028575160ff8116810361102857915f610fc2565b5f80fd5b3d9150611001565b632c05b0fd60e21b5f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff6020606082828a5101511693015101511603611074575f61013c565b63936bb5ad60e01b5f5260045ffd5b61108d9150611324565b5f610125565b60a0810190811067ffffffffffffffff8211176110af57604052565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176110af57604052565b90601f8019910116810190811067ffffffffffffffff8211176110af57604052565b359067ffffffffffffffff8216820361102857565b91908260e09103126110285760405161112e816110c3565b809261113981611101565b8252602081013573ffffffffffffffffffffffffffffffffffffffff81168103611028576020830152604081013560ff811681036110285760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156110285780359067ffffffffffffffff82116110af57604051926111d5601f8401601f1916602001856110df565b8284526020838301011161102857815f926020809301838601378301015290565b9190610260838203126110285760405190611210826110c3565b819361121b81611101565b83526020810135600a811015611028576020840152604081013560408401526112478260608301611116565b606084015261125a826101408301611116565b608084015261022081013567ffffffffffffffff811161102857826112809183016111a0565b60a08401526102408101359167ffffffffffffffff83116110285760c0926112a892016111a0565b910152565b604051906112ba82611093565b5f6080838281528260208201528260408201528260608201520152565b51600a81101561034c5790565b919082018092116108a157565b9190915f83820193841291129080158216911516176108a157565b81810392915f1380158285131691841216176108a157565b67ffffffffffffffff6060820151511615908161133f575090565b67ffffffffffffffff91506080015151161590565b5f811261135e5790565b635467221960e11b5f5260045260245ffd5b67ffffffffffffffff60019116019067ffffffffffffffff82116108a157565b600160ff1b81146108a1575f0390565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116113ca5790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116108a157565b60ff16604d81116108a157600a0a90565b9060ff811660128111611034576012146114375761141e611423916113dc565b6113ed565b908181029181830414901517156108a15790565b5090565b9060ff811660128111611034576012146114375761141e61145b916113dc565b81810291905f8212600160ff1b8214166108a15781830514901517156108a1579056fea2646970667358221220bc01b237f03208049bfd81bfcbeaaad6cc979f220dd2246c2d2aae7ea34b3db664736f6c634300081e0033", - "nonce": "0x3b", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", - "transactionType": "CREATE2", - "contractName": "EscrowWithdrawalEngine.channelhub", - "contractAddress": "0xdca4ab495188b545cfa919c0cb0a7e2280f2f407", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xf5e93", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610c31908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062ea54e7146100ff576324063eba1461002e575f80fd5b60203660031901126100fb5760043567ffffffffffffffff81116100fb5761005a9036906004016109ec565b610062610aac565b905160048110156100e7575f19016100d857600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff82116100c45767ffffffffffffffff6100c0921660608201525f608082015260405191829182610a61565b0390f35b634e487b7160e01b5f52601160045260245ffd5b630725d7e560e31b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b5f80fd5b60403660031901126100fb5760043567ffffffffffffffff81116100fb5761012b9036906004016109ec565b60243567ffffffffffffffff81116100fb5761014b903690600401610935565b610153610aac565b50815160048110156100e7576003146107d05767ffffffffffffffff461660608201908067ffffffffffffffff83515116146107c157608083019067ffffffffffffffff82515116036107b25767ffffffffffffffff835116156106785780516040810190601260ff835116116107a3574667ffffffffffffffff825116146106de575b5050805160a0606082015191015181018091116100c457610203825160c0608082015191015190610ad6565b5f81126106cf5761021390610b01565b036106c057835160048110156100e75760021461069b575b610233610aac565b5060208301928351600a8110156100e75760068103610448575050610256610aac565b91845160048110156100e7576104395760608251015161042a5760808251015161041b5781519160c060a084015193015161029084610b1d565b0361040c576102bd60ff60406102b28551838360608301519201511690610b7b565b935101511684610b7b565b116103fd575160a001516103ee576102d490610b1d565b60208201526001604082015260016080820152915b8251158015906103e1575b156103d25782519161030c6020850193845190610ad6565b908051600a8110156100e757600603610369575082510361035a5760806103369101519151610b01565b1161034c576100c0905b60405191829182610a61565b62b8ec7b60e61b5f5260045ffd5b638041118f60e01b5f5260045ffd5b9091925051600a8110156100e75760071461038a575b50506100c090610340565b8251036103c35760406103a56103a08451610af1565b610b01565b910151036103b457818061037f565b631b22645160e31b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b630bde39a760e11b5f5260045ffd5b50602083015115156102f4565b63a5eabfa560e01b5f5260045ffd5b63e19f88d560e01b5f5260045ffd5b63035a66d760e11b5f5260045ffd5b634c66f95560e01b5f5260045ffd5b631605013b60e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b90929060070361065a5761045a610aac565b92855160048110156100e7576001148015610687575b156100d85767ffffffffffffffff9051166020860190600167ffffffffffffffff835151160167ffffffffffffffff81116100c45767ffffffffffffffff1603610678576001600160a01b03602084510151166001600160a01b0360206080845101510151160361066957602081510151600a8110156100e7576005190161065a5760a060808251015101519260608151015161042a5760808151015161051e61051986610b1d565b610af1565b0361041b5760a0815101516103ee575160c0015161053b84610b1d565b0361062d57606082510151606080835101510151111561064b5760608082510151015160608351015181039081116100c4576105809060ff6040855101511690610b7b565b61059660ff604060808551015101511685610b7b565b0361063c5760c08251015160c06060835101510151905f82820392128183128116918313901516176100c4575f81121561062d57604060806105f66105f06106039660ff856105e58298610af1565b925101511690610bb8565b96610b1d565b9351015101511690610bb8565b0361040c576106186105196040850151610b1d565b8152600360408201525f6080820152916102e9565b630c18740d60e01b5f5260045ffd5b63ffda345d60e01b5f5260045ffd5b6304bc7c3760e31b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b50855160048110156100e757600214610470565b67ffffffffffffffff60608501511642111561022b5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b031680610714575060ff601291511603610705575b84806101d7565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f9281610765575b5061074957636afa2af960e01b5f5260045ffd5b60ff809151169116146106fe57635a8dbaed60e01b5f5260045ffd5b9092506020813d60201161079b575b816107816020938361082b565b810103126100fb575160ff811681036100fb579187610735565b3d9150610774565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107fb57604052565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176107fb57604052565b90601f8019910116810190811067ffffffffffffffff8211176107fb57604052565b359067ffffffffffffffff821682036100fb57565b91908260e09103126100fb5760405161087a816107df565b80926108858161084d565b825260208101356001600160a01b03811681036100fb576020830152604081013560ff811681036100fb5760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156100fb5780359067ffffffffffffffff82116107fb5760405192610914601f8401601f19166020018561082b565b828452602083830101116100fb57815f926020809301838601378301015290565b9190610260838203126100fb576040519061094f826107df565b819361095a8161084d565b83526020810135600a8110156100fb576020840152604081013560408401526109868260608301610862565b6060840152610999826101408301610862565b608084015261022081013567ffffffffffffffff81116100fb57826109bf9183016108df565b60a08401526102408101359167ffffffffffffffff83116100fb5760c0926109e792016108df565b910152565b91909160a0818403126100fb5760405190610a068261080f565b8193813560048110156100fb57835260208201359167ffffffffffffffff83116100fb57610a3a6080939284938301610935565b602085015260408101356040850152610a556060820161084d565b60608501520135910152565b91909160a08101928051825260208101516020830152604081015160048110156100e7576080918291604085015267ffffffffffffffff606082015116606085015201511515910152565b60405190610ab98261080f565b5f6080838281528260208201528260408201528260608201520152565b9190915f83820193841291129080158216911516176100c457565b600160ff1b81146100c4575f0390565b5f8112610b0b5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b475790565b63123baf0360e11b5f5260045260245ffd5b60ff166012039060ff82116100c457565b60ff16604d81116100c457600a0a90565b9060ff8116601281116107a357601214610bb457610b9b610ba091610b59565b610b6a565b908181029181830414901517156100c45790565b5090565b9060ff8116601281116107a357601214610bb457610b9b610bd891610b59565b81810291905f8212600160ff1b8214166100c45781830514901517156100c4579056fea26469706673582212206962417e2cd8eb647234f143f2014cfb5f1a06887319a0bcf2a01e09331d57de64736f6c634300081e0033", - "nonce": "0x3c", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", - "transactionType": "CREATE2", - "contractName": "EscrowDepositEngine.channelhub", - "contractAddress": "0xdccc09e335b87fb506c40a972e76fc7a225e0bf9", - "function": null, - "arguments": null, - "transaction": { - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xfc763", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060808060405234601957610bc8908161001e823930815050f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80636666e4c0146106f95763bbc42f341461002f575f80fd5b60403660031901126106b15760043567ffffffffffffffff81116106b15761005b9036906004016109a1565b60243567ffffffffffffffff81116106b15761007b9036906004016108ea565b610083610a89565b508151600481101561030b576003146106ea5767ffffffffffffffff46169060608101918067ffffffffffffffff84515116146106db57608082019067ffffffffffffffff82515116036106cc5767ffffffffffffffff8251161561057f5780516040810190601260ff835116116106bd574667ffffffffffffffff825116146105f4575b5050805160a06060820151910151810180911161033b57610134825160c0608082015191015190610aca565b5f81126105e55761014490610af5565b036105d6578351600481101561030b576002146105b1575b610164610a89565b5060208201928351600a81101561030b576004810361039a5750909150610189610a89565b918451600481101561030b5761038b57805191608060608401519301516101af84610b11565b0361037c5760a08251015161036d5760c08251015161035e5760ff60406101e56101f09351838360a08301519201511690610b4d565b935101511683610b4d565b0361034f576101fe90610b11565b815260016040820152612a3067ffffffffffffffff42160167ffffffffffffffff811161033b5767ffffffffffffffff166060820152600160a0820152915b82511580159061032e575b1561031f57825161025f6020850191825190610aca565b928051600a81101561030b576004036102a0575050508151036102915761028d905b60405191829182610a2a565b0390f35b638041118f60e01b5f5260045ffd5b9290919251600a81101561030b576005146102c2575b50505061028d90610281565b8151036102fc576102dd6102d860409251610ae5565b610af5565b910151036102ed575f80806102b6565b63b09443e760e01b5f5260045ffd5b6322e0e03d60e21b5f5260045ffd5b634e487b7160e01b5f52602160045260245ffd5b630bde39a760e11b5f5260045ffd5b5060208301511515610248565b634e487b7160e01b5f52601160045260245ffd5b63e19f88d560e01b5f5260045ffd5b630c18740d60e01b5f5260045ffd5b63a5eabfa560e01b5f5260045ffd5b633b5613e560e11b5f5260045ffd5b63ed77877960e01b5f5260045ffd5b600503610561576103a9610a89565b928551600481101561030b57600114801561059d575b1561058e5767ffffffffffffffff905116916020860192600167ffffffffffffffff855151160167ffffffffffffffff811161033b5767ffffffffffffffff160361057f576001600160a01b03602082510151166001600160a01b0360206080865101510151160361057057602083510151600a81101561030b576003190161056157606060808451015101519060808151015161045c83610b11565b0361037c5760c08151015161047861047384610b11565b610ae5565b0361035e57606081510151610552575160a0015161036d57606082510151606080855101510151810390811161033b576104be6104d29160ff6040865101511690610b4d565b9160ff604060808751015101511690610b4d565b036105435760a08151015161036d57606060808092510151925101510151908181035f831282808312821692139015161761033b57036105345761051c6104736040850151610b11565b6020820152600360408201525f60a08201529161023d565b631180da8f60e01b5f5260045ffd5b630ff0edb360e41b5f5260045ffd5b631605013b60e11b5f5260045ffd5b633226144f60e21b5f5260045ffd5b630486bbc360e51b5f5260045ffd5b6307646e4960e01b5f5260045ffd5b630725d7e560e31b5f5260045ffd5b508551600481101561030b576002146103bf565b67ffffffffffffffff60808501511642111561015c5763f06506c560e01b5f5260045ffd5b6392ad5c7560e01b5f5260045ffd5b630e6af40760e41b5f5260045ffd5b602001516001600160a01b03168061062a575060ff60129151160361061b575b5f80610108565b635a8dbaed60e01b5f5260045ffd5b9060206004926040519384809263313ce56760e01b82525afa5f928161067b575b5061065f57636afa2af960e01b5f5260045ffd5b60ff8091511691161461061457635a8dbaed60e01b5f5260045ffd5b9092506020813d6020116106b5575b81610697602093836107e0565b810103126106b1575160ff811681036106b157915f61064b565b5f80fd5b3d915061068a565b632c05b0fd60e21b5f5260045ffd5b639ba78e5560e01b5f5260045ffd5b6321e65f6560e01b5f5260045ffd5b636915564560e01b5f5260045ffd5b60203660031901126106b15760043567ffffffffffffffff81116106b1576107259036906004016109a1565b61072d610a89565b908051600481101561030b575f190161058e576060015167ffffffffffffffff164210156107a157600260408201526201518067ffffffffffffffff4216019067ffffffffffffffff821161033b5767ffffffffffffffff61028d921660808201525f60a082015260405191829182610a2a565b63159ce82160e11b5f5260045ffd5b60e0810190811067ffffffffffffffff8211176107cc57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176107cc57604052565b359067ffffffffffffffff821682036106b157565b91908260e09103126106b15760405161082f816107b0565b809261083a81610802565b825260208101356001600160a01b03811681036106b1576020830152604081013560ff811681036106b15760c09182916040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b81601f820112156106b15780359067ffffffffffffffff82116107cc57604051926108c9601f8401601f1916602001856107e0565b828452602083830101116106b157815f926020809301838601378301015290565b9190610260838203126106b15760405190610904826107b0565b819361090f81610802565b83526020810135600a8110156106b15760208401526040810135604084015261093b8260608301610817565b606084015261094e826101408301610817565b608084015261022081013567ffffffffffffffff81116106b15782610974918301610894565b60a08401526102408101359167ffffffffffffffff83116106b15760c09261099c9201610894565b910152565b91909160a0818403126106b1576040519060a0820182811067ffffffffffffffff8211176107cc576040528193813560048110156106b157835260208201359067ffffffffffffffff82116106b15782610a046080949261099c948694016108ea565b602086015260408101356040860152610a1f60608201610802565b606086015201610802565b91909160c081019280518252602081015160208301526040810151600481101561030b5760a0918291604085015267ffffffffffffffff606082015116606085015267ffffffffffffffff608082015116608085015201511515910152565b6040519060c0820182811067ffffffffffffffff8211176107cc576040525f60a0838281528260208201528260408201528260608201528260808201520152565b9190915f838201938412911290801582169115161761033b57565b600160ff1b811461033b575f0390565b5f8112610aff5790565b635467221960e11b5f5260045260245ffd5b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111610b3b5790565b63123baf0360e11b5f5260045260245ffd5b9060ff16601281116106bd5760128114610b8e5760120360ff811161033b5760ff16604d811161033b57600a0a9081810291818304149015171561033b5790565b509056fea26469706673582212207eb21c0d1619a3248a4b3fe08eef8df6e3a6e3feca56e1a09ecf8241267f767564736f6c634300081e0033", - "nonce": "0x3d", - "chainId": "0xaa36a7" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", + "hash": "0xd74da343a9f1079e3455d9d62396bb9b807a6b8e93e9727cf30c7f91adec5def", "transactionType": "CREATE", "contractName": "ChannelHub", - "contractAddress": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46", + "contractAddress": "0x7d61ec428cfae560f43647af567ea7c6e2cc5527", "function": null, "arguments": [ - "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" ], "transaction": { @@ -69,8 +15,8 @@ "to": null, "gas": "0x68906c", "value": "0x0", - "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000b5e7d2b8db56a173ca8c05cddcc1379852cdc0950000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", - "nonce": "0x3e", + "input": "0x60c03461010b57601f615f0038819003918201601f19168301916001600160401b0383118484101761010f57808492604094855283398101031261010b5780516001600160a01b0381169182820361010b5760200151916001600160a01b0383169081840361010b5760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055156100fc57156100fc5760805260a052604051615ddc908161012482396080518181816111960152613ef1015260a051818181610c6101528181610d7e0152818161145501528181611a5e0152818161209d0152818161363d0152818161409e01528181614667015261476f0152f35b63e6c4247b60e01b5f5260045ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c806307f241ce1461028457806316b390b11461027f578063187576d81461027a5780633115f6301461027557806338a66be2146102705780633c684f921461026b57806341b660ef1461026657806347de477a1461026157806351bfcdbd1461025c57806353269198146102575780635a0745b4146102525780635ae2accc1461024d5780635b9acbf9146102485780635dc46a74146102435780636840dbd21461023e5780636898234b1461023957806371a4714114610234578063735181f01461022f57806382d3e15d1461022a5780638d0b12a5146102255780638e31c73514610220578063941910511461021b5780639691b46814610216578063a459463114610211578063a5c826801461020c578063b25a1d3814610207578063b65b78d114610202578063b9f4420d146101fd578063c74a2d10146101f8578063c9408398146101f3578063d888ccae146101ee578063d91a1283146101e9578063dc23f29e146101e4578063dd73d494146101df578063e617208c146101da578063f4ac51f5146101d5578063f766f8d6146101d0578063ff5bc09e146101cb5763ffa1ad74146101c6575f80fd5b6126ce565b6126b7565b612598565b61251d565b61247f565b612305565b61214e565b612032565b611f29565b611c9a565b611c1a565b611bfd565b611b0e565b611790565b611631565b611616565b611509565b6114ec565b611389565b611242565b611225565b6111df565b611177565b611098565b611081565b611036565b611000565b610fe5565b610fc9565b610dd1565b610d5f565b610b9b565b610875565b6107b2565b610777565b610580565b6104fa565b610356565b61029e565b6001600160a01b0381160361029a57565b5f80fd5b3461029a57602036600319011261029a576001600160a01b036004356102c381610289565b165f526006602052602060405f2054604051908152f35b9181601f8401121561029a578235916001600160401b03831161029a576020838186019501011161029a57565b60643590600282101561029a57565b90606060031983011261029a5760043591602435906001600160401b03821161029a57610345916004016102da565b9091604435600281101561029a5790565b3461029a576103b86103f261036a36610316565b9294916103cd610385879693965f52600260205260405f2090565b948554926103948415156126e9565b600187015460059060081c6001600160a01b031696879260028a01549a8b91613ed0565b9192909901986103c78a612903565b87614001565b60c06103d8876140f3565b604051809481926301999b9360e61b835260048301612a73565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af480156104ae577fba075bd445233f7cad862c72f0343b3503aad9c8e704a2295f122b82abf8e80195610466946080945f9361047b575b5082610458939461045189612903565b908b614167565b01516001600160401b031690565b9061047660405192839283612bae565b0390a2005b61045893506104a19060c03d60c0116104a7575b610499818361277f565b8101906129b1565b92610441565b503d61048f565b612a84565b90602080835192838152019201905f5b8181106104d05750505090565b82518452602093840193909201916001016104c3565b9060206104f79281815201906104b3565b90565b3461029a57602036600319011261029a576001600160a01b0360043561051f81610289565b165f52600160205260405f206040519081602082549182815201915f5260205f20905f5b81811061056a576105668561055a8187038261277f565b604051918291826104e6565b0390f35b8254845260209093019260019283019201610543565b3461029a57602036600319011261029a57600354600480545f929183903582841115610771576105b0838561334c565b8082101561076357506105c781959493929561330d565b925b8083108061075a575b1561074d576105ed6105e384613165565b90549060031b1c90565b610608610602825f52600260205260405f2090565b966139d6565b9561061281615577565b6107385761061f816155a7565b156106e8576001600160a01b036106d0610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b9d8e92610684846001600160a01b03165f52600660205260405f2090565b5493610696600483019586549061333f565b9c8d916001600160a01b03165f52600660205260405f2090565b5501805460ff19166003179055565b556106ca828d613359565b526139d6565b604051938452961691602090a25b94939291946105c9565b505050506106f891939250600455565b806106ff57005b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b3642935261073360405192839283614480565b0390a1005b505092939491610747906139d6565b926106de565b50506004559190506106f8565b508185106105d2565b6105c790959493929561330d565b5f6105b0565b3461029a575f36600319011261029a576020604051620186a08152f35b6004359060ff8216820361029a57565b359060ff8216820361029a57565b3461029a57602036600319011261029a5760ff6107cd610794565b165f52600760205260405f2060405160408101918183106001600160401b0384111761082b576040928352546001600160a01b03811680835260a09190911c6001600160401b03166020928301819052835191825291810191909152f35b6126fe565b908161026091031261029a5790565b90600319820160e0811261029a5760c01361029a5760049160c435906001600160401b03821161029a576104f791600401610830565b61087e3661083f565b60208101600261088d82612bdf565b61089681611d88565b148015610b80575b8015610b62575b6108ae90612be9565b60026108b982612bdf565b6108c281611d88565b03610b53575b6109a86109066108d83686612c2e565b60c090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790565b9261093461092561091e865f525f60205260405f2090565b5460ff1690565b61092e816123db565b15612ca2565b61094060208601612cb8565b9061094a8661462c565b61095a608087013583838861472d565b60a08161098d61098661096f60808401612cb8565b6001600160a01b03165f52600660205260405f2090565b5488614794565b604051632a2d120f60e21b8152958692839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49081156104ae577fb0d099feaab5034d04a1c610e86b8832343f2127b3c667b705834dafdf96e9e494610a1d610a9e936001600160a01b03965f91610b24575b50610a0c368b612c2e565b610a163686612fe4565b908a6148e0565b610a4187610a3c866001600160a01b03165f52600160205260405f2090565b6159ab565b506002610a4d82612bdf565b610a5681611d88565b03610aa35750857f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f4177869620669660405180610a8c8582613090565b0390a25b6040519384931696836130a1565b0390a3005b610aae600391612bdf565b610ab781611d88565b03610af457857f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf98660405180610aec8582613090565b0390a2610a90565b857f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc60405180610aec8582613090565b610b46915060a03d60a011610b4c575b610b3e818361277f565b810190612cc2565b5f610a01565b503d610b34565b610b5d3415612bff565b6108c8565b506108ae610b6f82612bdf565b610b7881611d88565b1590506108a5565b506003610b8c82612bdf565b610b9581611d88565b1461089e565b610ba43661083f565b90610bc56004610bb660208501612bdf565b610bbf81611d88565b14612be9565b610bce8161462c565b610bdb6108d83683612c2e565b916080610bea60208401612cb8565b92013591610bfa8382848761472d565b610c1e610c0683613130565b85906001600160401b03915f521660205260405f2090565b92610c28856149f3565b15610ca8575050610a9e7f471c4ebe4e57d25ef7117e141caac31c6b98f067b8098a7a7bbd38f637c2f98091610c886001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b610c923415612bff565b610c9c8186614a4f565b60405191829182613090565b9091610cd460c082610cb9876140f3565b604051632ef10bcd60e21b815293849283926004840161313a565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577fede7867afa7cdb9c443667efd8244d98bf9df1dce68e60dc94dca6605125ca7694610a9e94610d37935f91610d40575b50610d303686612fe4565b8989614167565b610c9c846131b4565b610d59915060c03d60c0116104a757610499818361277f565b5f610d25565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b90604060031983011261029a5760043591602435906001600160401b03821161029a576104f791600401610830565b3461029a57610ddf36610da2565b610df06009610bb660208401612bdf565b610e0c6001610e06845f525f60205260405f2090565b01613218565b610ea7610e2360208301516001600160a01b031690565b91610e34608082015184868861472d565b610e3e3685612fe4565b61014085019386610e4e86613130565b6001600160401b031646149586610f61575b50505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b5489614794565b604051632a2d120f60e21b81529586928392600484016132a2565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57610ed9935f93610f40575b50866148e0565b15610f0f576104767f9a6f675cc94b83b55f1ecc0876affd4332a30c92e6faa2aca0199b1b6df922c39160405191829182613090565b6104767f7b20773c41402791c5f18914dbbeacad38b1ebcc4c55d8eb3bfe0a4cde26c8269160405191829182613090565b610f5a91935060a03d60a011610b4c57610b3e818361277f565b915f610ed2565b610fc092610f73610fbb923690612f05565b6060860152610f853660608b01612f05565b6080860152610f9261328e565b60a0860152610f9f61328e565b60c08601526001600160a01b03165f52600160205260405f2090565b615a55565b505f8681610e60565b3461029a575f36600319011261029a576020604051612a308152f35b3461029a575f36600319011261029a57602060405160408152f35b3461029a57604036600319011261029a5761056661102260243560043561336d565b6040519182916020835260208301906104b3565b3461029a5761104d61104736610da2565b90613426565b005b606060031982011261029a576004359160243591604435906001600160401b03821161029a576104f791600401610830565b3461029a5761104d6110923661104f565b91613776565b3461029a57602036600319011261029a576001600160a01b036004356110bd81610289565b165f5260016020526110d160405f2061591f565b5f905f5b8151811015611164576110fc61091e6110ee8385613359565b515f525f60205260405f2090565b611105816123db565b6003811415908161114f575b5061111f575b6001016110d5565b9161113281846001931061113a576139d6565b929050611117565b6111448585613359565b516106ca8286613359565b6005915061115c816123db565b14155f611111565b50610566918152604051918291826104e6565b3461029a575f36600319011261029a5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b604090600319011261029a576004356111d281610289565b906024356104f781610289565b3461029a57602061121c6001600160a01b036111fa366111ba565b91165f526008835260405f20906001600160a01b03165f5260205260405f2090565b54604051908152f35b3461029a575f36600319011261029a576020600454604051908152f35b3461029a5761125036610316565b61129c611268859493945f52600560205260405f2090565b918254946112778615156126e9565b60a061128288614c8f565b604051809581926312031f5d60e11b8352600483016139e4565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49081156104ae577fb8568a1f475f3c76759a620e08a653d28348c5c09e2e0bc91d533339801fefd8966103c796610466966060965f95611346575b50916113368596610458969385600561131a600161132a9901546001600160a01b039060081c1690565b97889360028401549a8b91613ed0565b92909193019e8f612903565b61133f89612903565b908b614d49565b610458955061132a939192966113766113369260a03d60a011611382575b61136e818361277f565b8101906136c5565b965096929193506112f0565b503d611364565b3461029a57606036600319011261029a576113a2610794565b6024356113ae81610289565b6044356001600160401b03811161029a576114c1916113d46114c69236906004016102da565b93909461148761148260ff8316966113ed8815156139f5565b6001600160a01b038616986114038a1515613a0b565b6114448561143e6114326114326114258460ff165f52600760205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b15613a21565b61147c6114528b8730614e80565b917f0000000000000000000000000000000000000000000000000000000000000000933691612f93565b90614eb8565b613a3f565b6114a16114926127a0565b6001600160a01b039094168452565b426001600160401b0316602084015260ff165f52600760205260405f2090565b613a55565b7f9ee792368f12db92ad66335fa19df35feaec025c86445fea202ab5412a180e055f80a3005b3461029a575f36600319011261029a576020604051620151808152f35b3461029a5761159261151a36610da2565b61153b61152c60208395949501612bdf565b61153581611d88565b15612be9565b6115516001610e06855f525f60205260405f2090565b9061157661156960208401516001600160a01b031690565b608084015190838761472d565b60a08161098d61158b61096f60808401612cb8565b5487614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f567044ba1cdd4671ac3979c114241e1e3b56c9e9051f63f2f234f7a2795019cc9361047693610c9c925f926115f5575b506115ee3685612fe4565b90876148e0565b61160f91925060a03d60a011610b4c57610b3e818361277f565b905f6115e3565b3461029a575f36600319011261029a576020604051603c8152f35b3461029a5761163f3661083f565b906116516006610bb660208501612bdf565b61165a8161462c565b6116676108d83683612c2e565b91608061167660208401612cb8565b920135916116868382848761472d565b611692610c0683613130565b9261169c856149f3565b156116d2575050610a9e81610c9c7f587faad1bcd589ce902468251883e1976a645af8563c773eed7356d78433210c9386614a4f565b909161170e60a0826116f46116ed61096f6101608401612cb8565b5488614cec565b60405162ea54e760e01b815293849283926004840161375f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f17eb0a6bd5a0de45d1029ce3444941070e149df35b22176fc439f930f73c09f794610a9e94610c9c935f91611771575b5061176a3686612fe4565b8989614d49565b61178a915060a03d60a0116113825761136e818361277f565b5f61175f565b608036600319011261029a576004356024356001600160401b03811161029a576117be903690600401610830565b6044356001600160401b03811161029a576117dd9036906004016102da565b90916117e7610307565b926117f9855f525f60205260405f2090565b61180560018201613218565b93611811825460ff1690565b9061181b826123db565b6001821495868015611afb575b61183190612ca2565b61183d60058501612903565b9261187b61184a88613130565b6001600160401b0361187261186688516001600160401b031690565b6001600160401b031690565b91161015613ac3565b60208201516001600160a01b0316978a6080840151956001600160401b036118b66118666118a88d613130565b93516001600160401b031690565b91161115611aad575061190b61194d9493926004926118f660208c01926118f160016118e186612bdf565b6118ea81611d88565b1415612be9565b6123db565b80611a8d575b6119069015612be9565b612bdf565b61191481611d88565b1480611a5a575b6119259015613202565b6119318489898d61472d565b60a08761098d61194661096f60808401612cb8565b548d614794565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae577f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a996014996119db8d8b6119cf611a0e9a6119e197611a2c9e6119ca6119f69c6119ff9e5f91611a3b575b506119c33688612fe4565b8d896152e2565b613ed0565b93919490923690612fe4565b90614001565b845460ff191660021785555163ffffffff1690565b63ffffffff1690565b6001600160401b034216613af7565b9301805467ffffffffffffffff19166001600160401b038516179055565b61047660405192839283613b17565b611a54915060a03d60a011610b4c57610b3e818361277f565b5f6119b8565b50337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316141561191b565b506119066009611a9c83612bdf565b611aa581611d88565b1490506118fc565b6119f69392506119e19150996014996119db7f07b9206d5a6026d3bd2a8f9a9b79f6fa4bfbd6a016975829fbaf07488019f28a9c8b6119cf611a0e9a6119ff9a611a2c9e6119ca3415612bff565b50611b05836123db565b60048314611828565b604036600319011261029a57600435611b2681610289565b6001600160a01b0360243591611b3d831515613b37565b611b45615622565b611b508382336154b6565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00551690815f52600660205260405f205490808201809211611bf8575f516020615d875f395f51905f5291837f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4611be561047694835f5260066020528460405f2055604051918291829190602083019252565b0390a26040519081529081906020820190565b6132c7565b3461029a575f36600319011261029a57602060405162093a808152f35b3461029a57611c3f611c2b36610da2565b61153b6003610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f188e0ade7d115cc397426774adb960ae3e8c83e72f0a6cad4b7085e1d60bf9869361047693610c9c925f926115f557506115ee3685612fe4565b3461029a575f36600319011261029a57600354600454905f805b82841015611d5c577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8401545f90815260026020526040902091611cf783615577565b611d4a57611d04836155a7565b15611d3357611d2a916004611d1b611d24936139d6565b9401549061333f565b936139d6565b915b9192611cb4565b92509250505b604080519182526020820192909252f35b915092611d56906139d6565b91611d2c565b92509050611d39565b634e487b7160e01b5f52602160045260245ffd5b60041115611d8357565b611d65565b600a1115611d8357565b90600a821015611d835752565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6104f7916001600160401b038251168152611de660208301516020830190611d92565b60408201516040820152611e536060830151606083019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b60808281015180516001600160401b031661014084015260208101516001600160a01b0316610160840152604081015160ff1661018084015260608101516101a0840152908101516101c083015260a08101516101e083015260c0015161020082015260c0611ed460a0840151610260610220850152610260840190611d9f565b92015190610240818403910152611d9f565b92936001600160401b0360c0956104f798979482948752611f0681611d79565b602087015216604085015216606083015260808201528160a08201520190611dc3565b3461029a57602036600319011261029a57600435611f45613b83565b505f52600260205260405f2060405190611f5e82612712565b80548252610566600182015491611fa9611f99611f7b8560ff1690565b94611f8a602088019687613bc7565b60081c6001600160a01b031690565b6001600160a01b03166040860152565b6002810154606085015260038101546001600160401b0380821660808701908152959160401c166001600160401b031660a08201908152916120216118a8611fff600560048501549460c0870195865201612903565b9360e081019485525196519761201489611d79565b516001600160401b031690565b905191519260405196879687611ee6565b3461029a57606036600319011261029a5760043561204f81610289565b5f516020615d875f395f51905f526104766024359261206d84610289565b604435936120856001600160a01b0383161515613a0b565b612090851515613b37565b6120c46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314613202565b7f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5611be58661213e6001600160a01b038516988995865f52600660205261211b8260405f205461211682821015613bd3565b61334c565b9788612138836001600160a01b03165f52600660205260405f2090565b556155d6565b6040519081529081906020820190565b3461029a5761215c3661083f565b61216d6008610bb660208401612bdf565b61217a6108d83684612c2e565b916121db61218a60208301612cb8565b9161219b608082013584868861472d565b6121a53685612fe4565b6121ae866149f3565b938685156122a4575b505060a081610e8c610e8561096f60206060850151016001600160a01b0390511690565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49182156104ae57612218935f9361227f575b50612212903690612c2e565b866148e0565b1561224e576104767f3142fb397e715d80415dff7b527bf1c451def4675da6e1199ee1b4588e3f630a9160405191829182613090565b6104767f26afbcb9eb52c21f42eb9cfe8f263718ffb65afbf84abe8ad8cce2acfb2242b89160405191829182613090565b61221291935061229d9060a03d60a011610b4c57610b3e818361277f565b9290612206565b610a3c6122c2926122b48661462c565b610f73366101408b01612f05565b505f866121b7565b9160a0936001600160401b03916104f797969385526122e881611d79565b602085015216604083015260608201528160808201520190611dc3565b3461029a57602036600319011261029a57600435612321613b83565b505f52600560205260405f206040519061233a8261272e565b80548252610566600182015491612371611f9960ff851694602087019561236081611d79565b865260081c6001600160a01b031690565b6002810154606085015260038101546001600160401b03166001600160401b031660808501908152936123ca6123b5600560048501549460a0850195865201612903565b9160c081019283525194519561201487611d79565b9151905191604051958695866122ca565b60061115611d8357565b906006821015611d835752565b919260a06101209461240b85612474959a99989a6123e5565b63ffffffff81511660208601526001600160a01b0360208201511660408601526001600160a01b0360408201511660608601526001600160401b036060820151166080860152608081015182860152015160c084015261014060e0840152610140830190611dc3565b946101008201520152565b3461029a57602036600319011261029a576004355f60a06040516124a281612749565b82815282602082015282604082015282606082015282608082015201526124c7613b83565b505f525f6020526124da60405f20613bf5565b80516124e5816123db565b610566602083015192604081015190606061250d61186660808401516001600160401b031690565b91015191604051958695866123f2565b61253d61252936610da2565b61153b6002610bb660208496959601612bdf565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae577f6085f5128b19e0d3cc37524413de47259383f0f75265d5d66f417786962066969361047693610c9c925f926115f557506115ee3685612fe4565b3461029a576125a6366111ba565b6125ae615622565b6001600160a01b038116916125c4831515613a0b565b6001600160a01b03612601826125eb336001600160a01b03165f52600860205260405f2090565b906001600160a01b03165f5260205260405f2090565b549161260e831515613b37565b5f61262e826125eb336001600160a01b03165f52600860205260405f2090565b55169181836126a857612651915f808080858a5af161264b613c52565b50613c81565b60405190815233907f7b8d70738154be94a9a068a6d2f5dd8cfc65c52855859dc8f47de1ff185f8b5590602090a461104d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6126b29184615680565b612651565b3461029a5761104d6126c83661104f565b91613ca9565b3461029a575f36600319011261029a57602060405160018152f35b156126f057565b6287a33760e41b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b61010081019081106001600160401b0382111761082b57604052565b60e081019081106001600160401b0382111761082b57604052565b60c081019081106001600160401b0382111761082b57604052565b60a081019081106001600160401b0382111761082b57604052565b90601f801991011681019081106001600160401b0382111761082b57604052565b604051906127af60408361277f565b565b604051906127af60e08361277f565b906040516127cd8161272e565b60c06004829461280a60ff82546001600160401b03811687526001600160a01b03808260401c1616602088015260e01c16604086019060ff169052565b6001810154606085015260028101546080850152600381015460a08501520154910152565b90600182811c9216801561285d575b602083101461284957565b634e487b7160e01b5f52602260045260245ffd5b91607f169161283e565b5f92918154916128768361282f565b80835292600181169081156128cb575060011461289257505050565b5f9081526020812093945091925b8383106128b1575060209250010190565b6001816020929493945483858701015201910191906128a0565b915050602093945060ff929192191683830152151560051b010190565b906127af6128fc9260405193848092612867565b038361277f565b906040516129108161272e565b809260ff81546001600160401b038116845260401c1690600a821015611d8357600d6129819160c093602086015260018101546040860152612954600282016127c0565b6060860152612965600782016127c0565b6080860152612976600c82016128e8565b60a0860152016128e8565b910152565b5190600482101561029a57565b6001600160401b0381160361029a57565b5190811515820361029a57565b908160c091031261029a57612a1960a0604051926129ce84612749565b80518452602081015160208501526129e860408201612986565b604085015260608101516129fb81612993565b60608501526080810151612a0e81612993565b6080850152016129a4565b60a082015290565b908151612a2d81611d79565b815260806001600160401b0381612a53602086015160a0602087015260a0860190611dc3565b946040810151604086015282606082015116606086015201511691015290565b9060206104f7928181520190612a21565b6040513d5f823e3d90fd5b90600d6104f792612ab781546001600160401b038116855260ff602086019160401c16611d92565b60018101546040840152612b236060840160028301600460c09160ff8082546001600160401b03811687526001600160a01b038160401c16602088015260e01c161660408501526001810154606085015260028101546080850152600381015460a08501520154910152565b60078101546001600160401b038116610140850152604081901c6001600160a01b031661016085015260e01c60ff1661018084015260088101546101a084015260098101546101c0840152600a8101546101e0840152600b810154610200840152610260610220840152612b9e6102608401600c8301612867565b9261024081850391015201612867565b906001600160401b03612bce602092959495604085526040850190612a8f565b9416910152565b600a111561029a57565b356104f781612bd5565b15612bf057565b633226144f60e21b5f5260045ffd5b15612c0657565b636956f2ab60e11b5f5260045ffd5b63ffffffff81160361029a57565b35906127af82612993565b91908260c091031261029a57604051612c4681612749565b60a08082948035612c5681612c15565b84526020810135612c6681610289565b60208501526040810135612c7981610289565b60408501526060810135612c8c81612993565b6060850152608081013560808501520135910152565b15612ca957565b631e40ad6360e31b5f5260045ffd5b356104f781610289565b908160a091031261029a5760405190612cda82612764565b80518252602081015160208301526040810151600681101561029a57612d1b9160809160408501526060810151612d1081612993565b6060850152016129a4565b608082015290565b90612d2f8183516123e5565b60806001600160401b0381612d53602086015160a0602087015260a0860190611dc3565b94604081015160408601526060810151606086015201511691015290565b35906127af82612bd5565b60c080916001600160401b038135612d9381612993565b1684526001600160a01b036020820135612dac81610289565b16602085015260ff612dc0604083016107a4565b166040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b9035601e198236030181121561029a5701602081359101916001600160401b03821161029a57813603831361029a57565b908060209392818452848401375f828201840152601f01601f1916010190565b6104f7916001600160401b038235612e5381612993565b168152612e716020830135612e6781612bd5565b6020830190611d92565b60408201356040820152612e8b6060820160608401612d7c565b612e9d61014082016101408401612d7c565b612ed1612ec5612eb1610220850185612deb565b610260610220860152610260850191612e1c565b92610240810190612deb565b91610240818503910152612e1c565b9091612ef76104f793604084526040840190612d23565b916020818403910152612e3c565b91908260e091031261029a57604051612f1d8161272e565b60c08082948035612f2d81612993565b84526020810135612f3d81610289565b6020850152612f4e604082016107a4565b6040850152606081013560608501526080810135608085015260a081013560a08501520135910152565b6001600160401b03811161082b57601f01601f191660200190565b929192612f9f82612f78565b91612fad604051938461277f565b82948184528183011161029a578281602093845f960137010152565b9080601f8301121561029a578160206104f793359101612f93565b9190916102608184031261029a57612ffa6127b1565b9261300482612c23565b845261301260208301612d71565b60208501526040820135604085015261302e8160608401612f05565b6060850152613041816101408401612f05565b60808501526102208201356001600160401b03811161029a5781613066918401612fc9565b60a08501526102408201356001600160401b03811161029a576130899201612fc9565b60c0830152565b9060206104f7928181520190612e3c565b60e09060a06104f7949363ffffffff81356130bb81612c15565b1683526001600160a01b0360208201356130d481610289565b1660208401526001600160a01b0360408201356130f081610289565b1660408401526001600160401b03606082013561310c81612993565b16606084015260808101356080840152013560a08201528160c08201520190612e3c565b356104f781612993565b9091612ef76104f793604084526040840190612a21565b634e487b7160e01b5f52603260045260245ffd5b60035481101561317d5760035f5260205f2001905f90565b613151565b805482101561317d575f5260205f2001905f90565b916131b09183549060031b91821b915f19901b19161790565b9055565b6003546801000000000000000081101561082b576001810160035560035481101561317d5760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0155565b1561320957565b6370a8bfcd60e11b5f5260045ffd5b9060405161322581612749565b60a0600382946001600160a01b03815463ffffffff8116865260201c16602085015261327d6001600160401b0360018301546001600160a01b03808216166040880152851c1660608601906001600160401b03169052565b600281015460808501520154910152565b6040519061329d60208361277f565b5f8252565b90916132b96104f793604084526040840190612d23565b916020818403910152611dc3565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03811161082b5760051b60200190565b6040519061330160208361277f565b5f808352366020840137565b90613317826132db565b613324604051918261277f565b8281528092613335601f19916132db565b0190602036910137565b91908201809211611bf857565b91908203918211611bf857565b805182101561317d5760209160051b010190565b91906003549080840293808504821490151715611bf857818410156133f157830190818411611bf8578082116133e9575b506133b16133ac848361334c565b61330d565b92805b8281106133c057505050565b806133cf6105e3600193613165565b6133e26133dc858461334c565b88613359565b52016133b4565b90505f61339e565b505090506104f76132f2565b906006811015611d835760ff80198354169116179055565b9060206104f7928181520190611dc3565b90613438825f525f60205260405f2090565b61344460018201613218565b91613450825460ff1690565b918461345e60058301612903565b91600261347560208801516001600160a01b031690565b9561347f816123db565b148061366e575b6135955750505061349e6001610bb660208401612bdf565b6134ae608084015183838761472d565b6134e160a0826134c661098661096f60808401612cb8565b604051632a2d120f60e21b8152938492839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af480156104ae57610fbb61356f9461354b88937f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a898613562965f92613574575b506135443689612fe4565b90866148e0565b6001600160a01b03165f52600160205260405f2090565b5060405191829182613090565b0390a2565b61358e91925060a03d60a011610b4c57610b3e818361277f565b905f613539565b7f04cd8c68bf83e7bc531ca5a5d75c34e36513c2acf81e07e6470ba79e29da13a8955061366192935061356f946135f46014836135dc610fbb95600360ff19825416179055565b5f601382015501805467ffffffffffffffff19169055565b61354b606086016136208151606061361660208301516001600160a01b031690565b9101519085614b03565b5160a061363760208301516001600160a01b031690565b910151907f0000000000000000000000000000000000000000000000000000000000000000614b03565b5060405191829182613415565b506014810154426001600160401b0390911610613486565b1561368d57565b6336c7a86b60e21b5f5260045ffd5b906136a681611d79565b60ff80198354169116179055565b9060206104f7928181520190612a8f565b908160a091031261029a57612d1b6080604051926136e284612764565b80518452602081015160208501526136fc60408201612986565b60408501526060810151612d1081612993565b90815161371b81611d79565b8152608080613739602085015160a0602086015260a0850190611dc3565b93604081015160408501526001600160401b036060820151166060850152015191015290565b9091612ef76104f79360408452604084019061370f565b916137818284614c6d565b61396d57613797825f52600560205260405f2090565b906137a484835414613686565b600182018054929060026137c7600886901c6001600160a01b03165b9560ff1690565b6137d081611d79565b1480613955575b61386e57506002906137f06007610bb660208601612bdf565b0154906137ff8284838861472d565b61380e60a0826116f487614c8f565b038173dca4ab495188b545cfa919c0cb0a7e2280f2f4075af49283156104ae577f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d19461386994610c9c935f91611771575061176a3686612fe4565b0390a3565b805460ff191660031790557f2fdac1380dbe23ae259b6871582b7f33e34461547f400bdd20d74991250317d1925060059150600481015f815491556138c0600383016001600160401b03198154169055565b5f516020615d875f395f51905f526001600160a01b036139136138f1600c8601546001600160a01b039060401c1690565b9361390d856001600160a01b03165f52600660205260405f2090565b5461333f565b9283613930826001600160a01b03165f52600660205260405f2090565b556040519384521691602090a261394561449c565b61386960405192839201826136b4565b506003820154426001600160401b03909116106137d7565b613869816139a36007610bb660207f6d0cf3d243d63f08f50db493a8af34b27d4e3bc9ec4098e82700abfeffe2d4989601612bdf565b610c926139b7865f525f60205260405f2090565b600181015460039060201c6001600160a01b031691015490838861472d565b5f198114611bf85760010190565b9060206104f792818152019061370f565b156139fc57565b6306ee4dcd60e01b5f5260045ffd5b15613a1257565b63e6c4247b60e01b5f5260045ffd5b15613a295750565b60ff906357470ffd60e01b5f521660045260245ffd5b15613a4657565b63c1606c2f60e01b5f5260045ffd5b6001600160401b0360206127af93613a9a6001600160a01b0382511685906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b0151825467ffffffffffffffff60a01b1916911660a01b67ffffffffffffffff60a01b16179055565b15613aca57565b637d95736160e01b5f5260045ffd5b6001600160401b03603c911601906001600160401b038211611bf857565b906001600160401b03809116911601906001600160401b038211611bf857565b906001600160401b03612bce602092959495604085526040850190612e3c565b15613b3e57565b6334b2073960e11b5f5260045ffd5b60405190613b5a8261272e565b5f60c0838281528260208201528260408201528260608201528260808201528260a08201520152565b60405190613b908261272e565b606060c0835f81525f60208201525f6040820152613bac613b4d565b83820152613bb8613b4d565b60808201528260a08201520152565b613bd082611d79565b52565b15613bda57565b631e9acf1760e31b5f5260045ffd5b6006821015611d835752565b90604051613c0281612764565b60806001600160401b0360148395613c1e60ff82541686613be9565b613c2a60018201613218565b6020860152613c3b60058201612903565b604086015260138101546060860152015416910152565b3d15613c7c573d90613c6382612f78565b91613c71604051938461277f565b82523d5f602084013e565b606090565b15613c8a575050565b6001600160a01b039063296c17bb60e21b5f521660045260245260445ffd5b91613cb482846156d9565b613e3a57613cca825f52600260205260405f2090565b90613cd784835414613686565b60018201805492906002613cf7600886901c6001600160a01b03166137c0565b613d0081611d79565b1480613e17575b613d995750600290613d206005610bb660208601612bdf565b015490613d2f8284838861472d565b613d3e60c082610cb9876140f3565b038173dccc09e335b87fb506c40a972e76fc7a225e0bf95af49283156104ae577f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9461386994610c9c935f91610d405750610d303686612fe4565b805460ff191660031790557f1b92e8ef67d8a7c0d29c99efcd180a5e0d98d60ac41d52abbbb5950882c78e4e9260059250613e0f9060048301905f82549255613df8600385016fffffffffffffffff0000000000000000198154169055565b600c84015460401c6001600160a01b031690614b03565b61394561449c565b50600382015460401c6001600160401b03166001600160401b0342911610613d07565b613869816139a36005610bb660207f32e24720f56fd5a7f4cb219d7ff3278ae95196e79c85b5801395894a6f53466c9601612bdf565b15613e7757565b6306a41ced60e21b5f5260045ffd5b15613e8e5750565b60ff9063399eb60560e01b5f521660045260245ffd5b15613ead575050565b9060ff6001600160401b039263975133f360e01b5f52166004521660245260445ffd5b9291908015613faa57801561317d57613f1f91843560f81c9081613f2357507f000000000000000000000000000000000000000000000000000000000000000094600101925f19909201919050565b9091565b600180613f3684613f3d949060ff161c90565b1614613e70565b613f9d613f558260ff165f52600760205260405f2090565b546001600160a01b0381169290613f8a90613f8590613f7684871515613e86565b60a01c6001600160401b031690565b613ad9565b906001600160401b038216421015613ea4565b93600101915f1990910190565b63ac241e1160e01b5f5260045ffd5b9081602091031261029a575190565b9392606093613ff36001600160a01b0394612bce949998998852608060208901526080880190611d9f565b918683036040880152612e1c565b919392959061400f906156f1565b916002821015611d83576020956001600160a01b03926140985761404b905b604051635850a09b60e11b81529889978896879560048701613fc8565b0392165afa80156104ae576127af915f91614069575b501515613a3f565b61408b915060203d602011614091575b614083818361277f565b810190613fb9565b5f614061565b503d614079565b5061404b7f000000000000000000000000000000000000000000000000000000000000000061402e565b604051906140cf82612764565b5f6080838281526140de613b83565b60208201528260408201528260608201520152565b6140fb6140c2565b905f5260026020526001600160401b0380600360405f2060ff60018201541661412381611d79565b855261413160058201612903565b6020860152600481015460408601520154818116606085015260401c1616608082015290565b600160ff1b8114611bf8575f0390565b936141d494602094939682614184835f52600260205260405f2090565b9860a08701956141948751151590565b156144675760808201518901516001600160a01b0316998a975b60408a018d81516141be81611d79565b6141c781611d79565b614449575b505051151590565b614436575b50505050506141f260608401516001600160401b031690565b6001600160401b03811661440d575b5060038601805460808501516001600160401b039081169160401c168190036143d6575b50505f8351135f14614389576142479061423f8451615903565b9283916154a8565b6142566004860191825461333f565b90555b0180515f8113156142ee57505f516020615d875f395f51905f52916142866001600160a01b039251615903565b6142d760046142b0836142aa866001600160a01b03165f52600660205260405f2090565b5461334c565b96876142cd866001600160a01b03165f52600660205260405f2090565b550191825461333f565b90556040519384521691602090a25b6127af61449c565b90505f8112614300575b5050506142e6565b5f516020615d875f395f51905f52916143286143236001600160a01b0393614157565b615903565b614373600461434c8361390d866001600160a01b03165f52600660205260405f2090565b9687614369866001600160a01b03165f52600660205260405f2090565b550191825461334c565b90556040519384521691602090a25f80806142f8565b6143933415612bff565b8251905f82126143a6575b505050614259565b6143b56143236143bd93614157565b928391614b03565b6143cc6004860191825461334c565b9055825f8061439e565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161790555f80614225565b6144309060038801906001600160401b03166001600160401b0319825416179055565b5f614201565b61443f94615809565b5f808281806141d9565b600161446092519161445a83611d79565b0161369c565b5f8d6141cc565b600c8b015460401c6001600160a01b0316998a976141ae565b9291906144976020916040865260408601906104b3565b930152565b6003546004545f92839082841115614606576144b8838561334c565b806040105f146145f857506144d26040959493929561330d565b925b808310806145ee575b156145e0576144ee6105e384613165565b614503610602825f52600260205260405f2090565b9561450d81615577565b6145cb5761451a816155a7565b15614579576001600160a01b03614561610602600198999a6106b0955f866106bf610666600c5f516020615d875f395f51905f529a01546001600160a01b039060401c1690565b604051938452961691602090a25b94939291946144d4565b5050509391925061458990600455565b80614592575050565b81817f8fac6141d748dc9c9bc16cc25f636385597618190a44c03d33be5656e01b364293526145c660405192839283614480565b0390a1565b5050929394916145da906139d6565b9261456f565b509391925061458990600455565b50604085106144dd565b6144d290959493929561330d565b5f6144b8565b356104f781612c15565b1561461d57565b630596b15b60e01b5f5260045ffd5b6001600160a01b03602082013561464281610289565b1661464e811515613a0b565b6001600160a01b03604083013561466481610289565b817f00000000000000000000000000000000000000000000000000000000000000001691829116036146ec5781146146da5750806201518063ffffffff6146ad6127af9461460c565b16101590816146bd575b50614616565b62093a8091506146d163ffffffff9161460c565b1611155f6146b7565b63abfa558d60e01b5f5260045260245ffd5b6308ad910960e21b5f5260045ffd5b903590601e198136030182121561029a57018035906001600160401b03821161029a5760200191813603831361029a57565b90916127af9361475d61476b926147528361474c6102208901896146fb565b90613ed0565b908888949394615967565b61474c6102408501856146fb565b91937f000000000000000000000000000000000000000000000000000000000000000093615967565b9060146001600160401b03916147a86140c2565b935f525f60205260405f20906147c260ff83541686613be9565b6147ce60058301612903565b6020860152601382015460408601526060850152015416608082015290565b9060a060039163ffffffff81511663ffffffff198554161784556001600160a01b036020820151167fffffffffffffffff0000000000000000000000000000000000000000ffffffff77ffffffffffffffffffffffffffffffffffffffff0000000086549260201b1691161784556148cf600185016148a261487960408501516001600160a01b031690565b82906001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19825416179055565b6060830151815467ffffffffffffffff60a01b191660a09190911b67ffffffffffffffff60a01b16179055565b608081015160028501550151910155565b9261491c8161496b946080946148fd885f525f60205260405f2090565b97614909895460ff1690565b614912816123db565b156149e1576152e2565b60408101805161492b816123db565b614934816123db565b1515806149b6575b61499c575b5060148401805460608301516001600160401b03908116911681900361497a575b50500151151590565b6149725750565b60135f910155565b815467ffffffffffffffff19166001600160401b039091161790555f80614962565b6149b090516149aa816123db565b856133fd565b5f614941565b50845460ff168151906149c8826123db565b6149d1826123db565b6149da816123db565b141561493c565b6149ee8260018b016147ed565b6152e2565b805f525f60205260ff60405f2054166006811015611d83578015908115614a3b575b50614a36575f525f6020526001600160401b03600760405f20015416461490565b505f90565b60059150614a48816123db565b145f614a15565b90614aa191805f525f602052614a6a600160405f2001613218565b60a083614a86614a7f61096f60808401612cb8565b5485614794565b604051632a2d120f60e21b8152968792839260048401612ee0565b03817389b81857a46cf290f23f6ff9b24e1031aad652045af49283156104ae576127af945f94614ade575b50614ad8903690612fe4565b916148e0565b614ad8919450614afc9060a03d60a011610b4c57610b3e818361277f565b9390614acc565b90614b169291614b11615622565b614b3c565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b9190918115614c68576001600160a01b0383169283614be0576001600160a01b038216925f8080808488620186a0f1614b73613c52565b5015614b80575050505050565b614bc3613869926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614bce82825461333f565b90556040519081529081906020820190565b614bf2614bee848484615afb565b1590565b614bfd575b50505050565b81614c466001600160a01b03926125eb7fbf182be802245e8ed88e4b8d3e4344c0863dd2a70334f089fd07265389306fcf956001600160a01b03165f52600860205260405f2090565b614c5185825461333f565b90556040519384521691602090a35f808080614bf7565b505050565b905f52600560205260405f2054159081614c85575090565b6104f791506149f3565b614c976140c2565b905f5260056020526001600160401b03600360405f2060ff600182015416614cbe81611d79565b8452614ccc60058201612903565b60208501526004810154604085015201541660608201525f608082015290565b90614cf56140c2565b915f5260056020526001600160401b03600360405f2060ff600182015416614d1c81611d79565b8552614d2a60058201612903565b6020860152600481015460408601520154166060830152608082015290565b6020939291614dd491614d64815f52600560205260405f2090565b97604086018051614d7481611d79565b614d7d81611d79565b614e63575b5087856080880194614d948651151590565b614e50575b505050505060038701614db381546001600160401b031690565b60608601516001600160401b039081169116819003614e2e57505051151590565b15614e1557608001518201516001600160a01b031680935b8251905f821315614e0657614247915061423f8451615903565b5f82126143a657505050614259565b50600c84015460401c6001600160a01b03168093614dec565b815467ffffffffffffffff19166001600160401b039091161790555f806141cc565b614e5994615b68565b5f80878582614d99565b614e7a9051614e7181611d79565b60018b0161369c565b5f614d82565b9160ff6001600160a01b03928360405195466020880152166040860152166060840152166080820152608081526104f760a08261277f565b805192835f947a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015615054575b806d04ee2d6d415b85acef8100000000600a921015615038575b662386f26fc10000811015615023575b6305f5e100811015615011575b612710811015615001575b6064811015614ff2575b1015614fe7575b614f7e6021614f4660018801615c26565b968701015b5f1901917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b908115614f8e57614f7e90614f4b565b50506001600160a01b03614fb384614fa7858498615bba565b60208151910120615c10565b911693168314614fdf57614fd1918160206114329351910120615c10565b14614fda575f90565b600190565b505050600190565b600190940193614f35565b60029060649004960195614f2e565b6004906127109004960195614f24565b6008906305f5e1009004960195614f19565b601090662386f26fc100009004960195614f0c565b6020906d04ee2d6d415b85acef81000000009004960195614efc565b50604094507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104614ee2565b90600a811015611d835768ff000000000000000082549160401b169068ff00000000000000001916179055565b8151815460208401516040808601516001600160401b039094167fffffff000000000000000000000000000000000000000000000000000000000090931692909217911b7bffffffffffffffffffffffffffffffffffffffff0000000000000000161760e09190911b60ff60e01b16178155606082015160018201556080820151600282015560a0820151600382015560c090910151600490910155565b601f821161515457505050565b5f5260205f20906020601f840160051c8301931061518c575b601f0160051c01905b818110615181575050565b5f8155600101615176565b909150819061516d565b91909182516001600160401b03811161082b576151bd816151b7845461282f565b84615147565b6020601f82116001146151f85781906131b09394955f926151ed575b50508160011b915f199060031b1c19161790565b015190505f806151d9565b601f1982169061520b845f5260205f2090565b915f5b8181106152455750958360019596971061522d575b505050811b019055565b01515f1960f88460031b161c191690555f8080615223565b9192602060018192868b01518155019401920161520e565b8151815467ffffffffffffffff19166001600160401b0391909116178155602082015191600a831015611d835760c0600d9161529c6127af958561507c565b604081015160018501556152b76060820151600286016150a9565b6152c86080820151600786016150a9565b6152d960a0820151600c8601615196565b01519101615196565b9161533160206152ff615323959694965f525f60205260405f2090565b9561531782606086015101516001600160a01b031690565b9586946005890161525d565b01516001600160a01b031690565b5f8351135f14615499576153458351615903565b6153508184846154a8565b61535f6013870191825461333f565b90555b602083019283515f8113615418575b5051905f82126153f0575b505050515f8112615393575b5050506127af61449c565b5f516020615d875f395f51905f52916153b66143236001600160a01b0393614157565b6153da601361434c8361390d866001600160a01b03165f52600660205260405f2090565b90556040519384521691602090a25f8080615388565b6143b56143236153ff93614157565b61540e6013850191825461334c565b9055815f8061537c565b61542190615903565b615440816142aa866001600160a01b03165f52600660205260405f2090565b908161545d866001600160a01b03165f52600660205260405f2090565b5561546d6013890191825461333f565b90556040519081526001600160a01b038416905f516020615d875f395f51905f5290602090a25f615371565b6154a33415612bff565b615362565b90614b1692916154b6615622565b908215614c68576001600160a01b03169182158015615568576154da823414612bff565b156154e457505050565b6001600160a01b03604051926323b872dd60e01b5f52166004523060245260445260205f60648180865af160015f5114811615615549575b6040919091525f6060521561552e5750565b635274afe760e01b5f526001600160a01b031660045260245ffd5b600181151661555f573d15833b1515161661551c565b503d5f823e3d90fd5b6155723415612bff565b6154da565b6001015460ff1661558781611d79565b60038114908115615596575090565b600291506155a381611d79565b1490565b6001600160401b0360038201541642101590816155c2575090565b600180925060ff910154166155a381611d79565b90614b1692916155e4615622565b91908115614c68576001600160a01b03169182615619576127af92505f808080856001600160a01b0386165af161264b613c52565b6127af92615680565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146156715760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b916001600160a01b036040519263a9059cbb60e01b5f521660045260245260205f60448180865af160015f51148116156156c3575b6040919091521561552e5750565b600181151661555f573d15833b151516166156b5565b905f52600260205260405f2054159081614c85575090565b6001600160401b03815116906020810151600a811015611d83576157988260406157f894015161573860806060840151930151946040519760208901526040880190611d92565b6060860152608085019060c080916001600160401b0381511684526001600160a01b03602082015116602085015260ff6040820151166040850152606081015160608501526080810151608085015260a081015160a08501520151910152565b80516001600160401b031661016084015260208101516001600160a01b0316610180840152604081015160ff166101a084015260608101516101c084015260808101516101e084015260a081015161020084015260c00151610220830152565b61022081526104f76102408261277f565b9190915f52600260205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b602082015193600a851015611d835760c06158ff9361586d6002976158b59461507c565b604081015160068701556158886060820151600788016150a9565b6158996080820151600c88016150a9565b6158aa60a082015160118801615196565b015160128501615196565b60018301907fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff0083549260081b169116179055565b0155565b5f811261590d5790565b635467221960e11b5f5260045260245ffd5b90604051918281549182825260208201905f5260205f20925f5b81811061594e5750506127af9250038361277f565b8454835260019485019487945060209093019201615939565b6001600160a01b039061404b61598d61598860209895999697993690612fe4565b6156f1565b936040519889978896879563600109bb60e01b875260048701613fc8565b6001810190825f528160205260405f2054155f14615a135780546801000000000000000081101561082b57615a006159ea826001879401855584613182565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b80548015615a41575f190190615a308282613182565b8154905f199060031b1b1916905555565b634e487b7160e01b5f52603160045260245ffd5b6001810191805f528260205260405f2054928315155f14615af3575f198401848111611bf85783545f19810194908511611bf8575f958583615ab097615aa39503615ab6575b505050615a1a565b905f5260205260405f2090565b55600190565b615adc615ad691615acd6105e3615aea9588613182565b92839187613182565b90613197565b85905f5260205260405f2090565b555f8080615a9b565b505050505f90565b60405163a9059cbb60e01b60208281019182526001600160a01b03909416602483015260448083019590955293815290925f91615b3960648261277f565b51908285620186a0f15f51913d9115615a13578115615b5f5750602011614a3657151590565b9150503b151590565b9190915f52600560205260405f2091825560058201926158496001600160401b0383511685906001600160401b03166001600160401b0319825416179055565b805191908290602001825e015f815290565b6127af90615c02615bfc94936040519586937f19457468657265756d205369676e6564204d6573736167653a0a0000000000006020860152603a850190615ba8565b90615ba8565b03601f19810184528361277f565b6104f791615c1d91615c4e565b90929192615c88565b90615c3082612f78565b615c3d604051918261277f565b8281528092613335601f1991612f78565b8151919060418303615c7e57615c779250602082015190606060408401519301515f1a90615d04565b9192909190565b50505f9160029190565b615c9181611d79565b80615c9a575050565b615ca381611d79565b60018103615cba5763f645eedf60e01b5f5260045ffd5b615cc381611d79565b60028103615cde575063fce698f760e01b5f5260045260245ffd5b80615cea600392611d79565b14615cf25750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411615d7b579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156104ae575f516001600160a01b03811615615d7157905f905f90565b505f906001905f90565b5050505f916003919056fe05f47829691a1f710b0620aedd52749bb09d8abe4bb530d306db920a71b0d7cea26469706673582212205e68caa4b2d471ba6fc8e7a2cb4b8350ab1068b01b622da34e2d2daf0aa4dd6064736f6c634300081e0033000000000000000000000000708b3ca8b7dc0f89ea5a06709c3b92dd5843b6620000000000000000000000002b6dc5bb33f3eaabfd3a8d17fdb7bdb8fef331f9", + "nonce": "0x43", "chainId": "0xaa36a7" }, "additionalContracts": [], @@ -81,66 +27,18 @@ { "type": "0x2", "status": "0x1", - "cumulativeGasUsed": "0xf96249", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "transactionHash": "0xce57f0cc9f8184819745729a47b8f4a399b1402557a979062a42fe4f7dab90d9", - "transactionIndex": "0x81", - "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", - "blockNumber": "0xa61989", - "gasUsed": "0x1256cb", - "effectiveGasPrice": "0x3f25af6e", - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null - }, - { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x10482d9", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "transactionHash": "0xa3cd407e3e4288bf59982197df01a2ddfcf2bc91d399a8c5eb1438ee3c825091", - "transactionIndex": "0x82", - "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", - "blockNumber": "0xa61989", - "gasUsed": "0xb2090", - "effectiveGasPrice": "0x3f25af6e", - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null - }, - { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x10f4cd3", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "transactionHash": "0xce9fcc6a0668dbe2025b191360ecb94da8e3d672ae3c1838f7ba3c85c355c3d5", - "transactionIndex": "0x83", - "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", - "blockNumber": "0xa61989", - "gasUsed": "0xac9fa", - "effectiveGasPrice": "0x3f25af6e", - "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null - }, - { - "type": "0x2", - "status": "0x1", - "cumulativeGasUsed": "0x15fbbeb", + "cumulativeGasUsed": "0x144df82", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "transactionHash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", - "transactionIndex": "0x84", - "blockHash": "0xaf49b926e7aaafaf4d065fefa02b5ea7013838bab66eed14ce892a76498597fb", - "blockNumber": "0xa61989", + "transactionHash": "0xd74da343a9f1079e3455d9d62396bb9b807a6b8e93e9727cf30c7f91adec5def", + "transactionIndex": "0x62", + "blockHash": "0x58c253949c6cbccf8e6869ab89fd94dba1df9cc9b56ff6d0b1287d7cda4e2cfa", + "blockNumber": "0xa61bc6", "gasUsed": "0x506f18", - "effectiveGasPrice": "0x3f25af6e", + "effectiveGasPrice": "0x40deca7f", "from": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", "to": null, - "contractAddress": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46" + "contractAddress": "0x7d61ec428cfae560f43647af567ea7c6e2cc5527" } ], "libraries": [ @@ -150,7 +48,7 @@ ], "pending": [], "returns": {}, - "timestamp": 1779278401948, + "timestamp": 1779286321195, "chain": 11155111, - "commit": "9110ba06" + "commit": "104c13df" } \ No newline at end of file diff --git a/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T14-12-01.json similarity index 53% rename from contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json rename to contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T14-12-01.json index 5b70160cc..2e5a343dc 100644 --- a/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T12-00-01.json +++ b/contracts/deployments/11155111/ChannelHub.sol_ChannelHub/stress-v1_3_0-2026-05-20T14-12-01.json @@ -1,13 +1,13 @@ { "deployer": "0xf8bedb0aba14833e95f29e760487c3d34bc4ec64", - "deployedTo": "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46", - "transactionHash": "0xef53fd97c0bae85cfc0f6d5c918a65305429d85b8218c935f2e74c06e3647987", - "commit": "9110ba06", - "timestamp": 1779278401, + "deployedTo": "0x7d61ec428cfae560f43647af567ea7c6e2cc5527", + "transactionHash": "0xd74da343a9f1079e3455d9d62396bb9b807a6b8e93e9727cf30c7f91adec5def", + "commit": "104c13df", + "timestamp": 1779286321, "chainId": 11155111, "contractPath": "src/ChannelHub.sol:ChannelHub", "constructorArgs": [ - "0xB5E7D2B8DB56A173Ca8c05CDdCC1379852CdC095", + "0x708B3CA8b7Dc0f89Ea5a06709C3b92Dd5843B662", "0x2B6dc5BB33F3eaAbfd3A8d17fDb7BdB8fEf331f9" ], "comment": "stress v1.3.0 with VALIDATOR_ACTIVATION_DELAY = 1 minute" diff --git a/nitronode/chart/config/stress-v1/blockchains.yaml b/nitronode/chart/config/stress-v1/blockchains.yaml index 6d02e49be..9ccb2de93 100644 --- a/nitronode/chart/config/stress-v1/blockchains.yaml +++ b/nitronode/chart/config/stress-v1/blockchains.yaml @@ -1,7 +1,7 @@ blockchains: - name: "ethereum_sepolia" id: 11155111 - channel_hub_address: "0xc9abf89607bb43ac41454c115bdcf58fe6a72d46" + channel_hub_address: "0x7d61ec428cfae560f43647af567ea7c6e2cc5527" channel_hub_sig_validators: 1: "0xe2B33Aa3922d7ac386e6801Ae7D9498C4DF45F1f" - name: "base_sepolia" From 287ec605106ae466942d082039af8d307edb538b Mon Sep 17 00:00:00 2001 From: nksazonov Date: Wed, 20 May 2026 16:15:13 +0200 Subject: [PATCH 09/18] feat(contracts/script): take library address params --- contracts/script/DeployChannelHub.s.sol | 103 +++++++++++++++++++----- 1 file changed, 83 insertions(+), 20 deletions(-) diff --git a/contracts/script/DeployChannelHub.s.sol b/contracts/script/DeployChannelHub.s.sol index 62b018ded..36c3ab492 100644 --- a/contracts/script/DeployChannelHub.s.sol +++ b/contracts/script/DeployChannelHub.s.sol @@ -19,8 +19,20 @@ import {ECDSAValidator} from "../src/sigValidators/ECDSAValidator.sol"; * after the script completes. * * Usage: - * DEFAULT_VALIDATOR_ADDR= Address of an already-deployed ISignatureValidator. - * Leave unset to deploy a fresh ECDSAValidator. + * DEFAULT_VALIDATOR_ADDR= Address of an already-deployed ISignatureValidator. + * Leave unset to deploy a fresh ECDSAValidator. + * + * CHANNEL_ENGINE_ADDR= Address of an already-deployed ChannelEngine library. + * ESCROW_DEPOSIT_ENGINE_ADDR= Address of an already-deployed EscrowDepositEngine library. + * ESCROW_WITHDRAWAL_ENGINE_ADDR= Address of an already-deployed EscrowWithdrawalEngine library. + * + * When all three library addresses are provided, Foundry skips their deployment (code + * already exists at those addresses). You must also pass the --libraries flag so the + * linker wires ChannelHub to the existing addresses: + * + * --libraries src/ChannelEngine.sol:ChannelEngine: \ + * --libraries src/EscrowDepositEngine.sol:EscrowDepositEngine: \ + * --libraries src/EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine: * * forge script script/DeployChannelHub.s.sol:DeployChannelHub \ * --rpc-url \ @@ -34,10 +46,22 @@ contract DeployChannelHub is Script { // Optional: reuse an existing validator or deploy a fresh ECDSAValidator address defaultValidatorAddr = vm.envOr("DEFAULT_VALIDATOR_ADDR", address(0)); address nodeAddr = vm.envAddress("NODE_ADDR"); - run(defaultValidatorAddr, nodeAddr); + + // Optional: reuse existing library deployments; leave unset to deploy via CREATE2 + address channelEngineAddr = vm.envOr("CHANNEL_ENGINE_ADDR", address(0)); + address escrowDepositAddr = vm.envOr("ESCROW_DEPOSIT_ENGINE_ADDR", address(0)); + address escrowWithdrawalAddr = vm.envOr("ESCROW_WITHDRAWAL_ENGINE_ADDR", address(0)); + + run(defaultValidatorAddr, nodeAddr, channelEngineAddr, escrowDepositAddr, escrowWithdrawalAddr); } - function run(address defaultValidatorAddr, address nodeAddr) public { + function run( + address defaultValidatorAddr, + address nodeAddr, + address channelEngineAddr, + address escrowDepositAddr, + address escrowWithdrawalAddr + ) public { // msg.sender is set by Foundry to the address derived from --private-key address deployer = msg.sender; @@ -46,13 +70,33 @@ contract DeployChannelHub is Script { console.log("Chain ID: ", block.chainid); // ---------------------------------------------------------------- - // Pre-compute all deployment addresses for informational logging. - // Libraries are deployed by Foundry via the CREATE2 factory with - // salt = bytes32(0), making their addresses fully deterministic. + // Resolve library addresses: use provided addresses or fall back to + // the deterministic CREATE2 addresses Foundry would deploy to. // ---------------------------------------------------------------- - address channelEngineAddr = _computeLibraryAddress("ChannelEngine.sol:ChannelEngine"); - address escrowDepositAddr = _computeLibraryAddress("EscrowDepositEngine.sol:EscrowDepositEngine"); - address escrowWithdrawalAddr = _computeLibraryAddress("EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine"); + bool deployChannelEngine = channelEngineAddr == address(0); + bool deployEscrowDeposit = escrowDepositAddr == address(0); + bool deployEscrowWithdrawal = escrowWithdrawalAddr == address(0); + + if (deployChannelEngine) { + channelEngineAddr = _computeLibraryAddress("ChannelEngine.sol:ChannelEngine"); + } + if (deployEscrowDeposit) { + escrowDepositAddr = _computeLibraryAddress("EscrowDepositEngine.sol:EscrowDepositEngine"); + } + if (deployEscrowWithdrawal) { + escrowWithdrawalAddr = _computeLibraryAddress("EscrowWithdrawalEngine.sol:EscrowWithdrawalEngine"); + } + + // Validate that provided addresses actually have code + if (!deployChannelEngine) { + require(channelEngineAddr.code.length > 0, "DeployChannelHub: CHANNEL_ENGINE_ADDR has no code"); + } + if (!deployEscrowDeposit) { + require(escrowDepositAddr.code.length > 0, "DeployChannelHub: ESCROW_DEPOSIT_ENGINE_ADDR has no code"); + } + if (!deployEscrowWithdrawal) { + require(escrowWithdrawalAddr.code.length > 0, "DeployChannelHub: ESCROW_WITHDRAWAL_ENGINE_ADDR has no code"); + } uint64 nonce = vm.getNonce(deployer); @@ -63,9 +107,17 @@ contract DeployChannelHub is Script { } else { console.log("DefaultValidator: ", defaultValidatorAddr); } - console.log("ChannelEngine: ", channelEngineAddr); - console.log("EscrowDepositEngine: ", escrowDepositAddr); - console.log("EscrowWithdrawalEngine: ", escrowWithdrawalAddr); + console.log( + deployChannelEngine ? "ChannelEngine (new): " : "ChannelEngine (existing): ", channelEngineAddr + ); + console.log( + deployEscrowDeposit ? "EscrowDepositEngine (new): " : "EscrowDepositEngine (existing): ", + escrowDepositAddr + ); + console.log( + deployEscrowWithdrawal ? "EscrowWithdrawalEngine (new): " : "EscrowWithdrawalEngine (existing): ", + escrowWithdrawalAddr + ); console.log("ChannelHub: ", vm.computeCreateAddress(deployer, nonce)); vm.startBroadcast(); @@ -78,9 +130,11 @@ contract DeployChannelHub is Script { } // 2. Deploy ChannelHub. - // Foundry detects unlinked library references (ChannelEngine, - // EscrowDepositEngine, EscrowWithdrawalEngine) and inserts their - // deployment transactions before this one in the broadcast batch. + // When library env vars are unset, Foundry detects unlinked library + // references and inserts their deployment transactions before this one + // in the broadcast batch (CREATE2, salt=0). When addresses are provided + // via env vars, Foundry finds code already at those addresses and skips + // their redeployment. require( defaultValidatorAddr.code.length > 0, "DeployChannelHub: DEFAULT_VALIDATOR_ADDR has no code - must be a deployed contract" @@ -102,10 +156,19 @@ contract DeployChannelHub is Script { console.log("Node: ", nodeAddr); console.log("ChannelHub: ", address(hub)); console.log(""); - console.log("=== Libraries (deployed via CREATE2, salt=0) ==="); - console.log(" ChannelEngine :", channelEngineAddr); - console.log(" EscrowDepositEngine :", escrowDepositAddr); - console.log(" EscrowWithdrawalEngine:", escrowWithdrawalAddr); + console.log("=== Libraries ==="); + console.log( + deployChannelEngine ? " ChannelEngine (deployed): " : " ChannelEngine (reused): ", + channelEngineAddr + ); + console.log( + deployEscrowDeposit ? " EscrowDepositEngine (deployed): " : " EscrowDepositEngine (reused): ", + escrowDepositAddr + ); + console.log( + deployEscrowWithdrawal ? " EscrowWithdrawalEngine (deployed): " : " EscrowWithdrawalEngine (reused): ", + escrowWithdrawalAddr + ); console.log(""); console.log(string.concat(" (tx hashes: ", broadcastFile, ")")); } From a8b9d7633e0e0f14fc17c91f86c35ba66300a927 Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Wed, 20 May 2026 15:49:19 +0300 Subject: [PATCH 10/18] fix(sdk/go): treat finalized state as channel-absent in create/transfer/close paths Deposit, Withdraw, Transfer, and CloseHomeChannel inspected only state == nil and state.HomeChannelID == nil to decide whether a new channel needs to be created. A previously finalized state still has both fields populated, so subsequent calls reused the closed channel instead of opening a new one. Include state.IsFinal() in the channel-absent predicate so reopens after a Finalize work correctly. Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/go/channel.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sdk/go/channel.go b/sdk/go/channel.go index e4ad27828..b8e8b8389 100644 --- a/sdk/go/channel.go +++ b/sdk/go/channel.go @@ -61,7 +61,7 @@ func (c *Client) Deposit(ctx context.Context, blockchainID uint64, asset string, } // Scenario A: Channel doesn't exist - create it - if state == nil || state.HomeChannelID == nil { + if state == nil || state.HomeChannelID == nil || state.IsFinal() { // Get supported sig validators bitmap from node config bitmap, err := c.getSupportedSigValidatorsBitmap(ctx) if err != nil { @@ -172,7 +172,7 @@ func (c *Client) Withdraw(ctx context.Context, blockchainID uint64, asset string } // Channel doesn't exist - create it and withdraw - if state == nil || state.HomeChannelID == nil { + if state == nil || state.HomeChannelID == nil || state.IsFinal() { // Get supported sig validators bitmap from node config bitmap, err := c.getSupportedSigValidatorsBitmap(ctx) if err != nil { @@ -269,7 +269,7 @@ func (c *Client) Transfer(ctx context.Context, recipientWallet string, asset str if err != nil { return nil, fmt.Errorf("failed to get latest state: %w", err) } - if state == nil || state.HomeChannelID == nil { + if state == nil || state.HomeChannelID == nil || state.IsFinal() { // Get supported sig validators bitmap from node config bitmap, err := c.getSupportedSigValidatorsBitmap(ctx) if err != nil { @@ -389,7 +389,7 @@ func (c *Client) CloseHomeChannel(ctx context.Context, asset string) (*core.Stat return nil, err } - if state == nil || state.HomeChannelID == nil { + if state == nil || state.HomeChannelID == nil || state.IsFinal() { return nil, fmt.Errorf("no channel exists for asset %s", asset) } @@ -445,7 +445,7 @@ func (c *Client) Acknowledge(ctx context.Context, asset string) (*core.State, er } // No channel path - create channel with acknowledgement - if state == nil || state.HomeChannelID == nil { + if state == nil || state.HomeChannelID == nil || state.IsFinal() { // Get supported sig validators bitmap from node config bitmap, err := c.getSupportedSigValidatorsBitmap(ctx) if err != nil { From 2878aab94f7faeee4437397ddca1cbce8b1b54c1 Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Wed, 20 May 2026 15:49:35 +0300 Subject: [PATCH 11/18] feat(sdk/go/examples): expand app_sessions + add channel_session_key lifecycle app_sessions: rewrite requirements doc, replace WETH/USDC with YELLOW/YUSD, probe apps.v1 group via GetApps and skip RegisterApp + fail-case Step 9 when the registry is disabled, and add ensureChannelOpen() so the example only assumes a minimum off-chain balance instead of a pre-opened channel. channel_session_key: new lifecycle example that registers a channel session key, deposits/withdraws via a session-key-backed client, narrows the asset allow-list across v2/v3, and verifies revocation (v4 with empty assets) blocks every channel operation. Includes checkpointAndWait() that polls GetHomeChannel state_version after each Checkpoint so the next state transition does not race the node's on-chain event ingestion. txSigner remains the wallet's raw signer; only the channel state signer is replaced with ChannelSessionKeySignerV1. Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/go/examples/app_sessions/lifecycle.go | 224 +++++++---- .../examples/channel_session_key/lifecycle.go | 356 ++++++++++++++++++ 2 files changed, 511 insertions(+), 69 deletions(-) create mode 100644 sdk/go/examples/channel_session_key/lifecycle.go diff --git a/sdk/go/examples/app_sessions/lifecycle.go b/sdk/go/examples/app_sessions/lifecycle.go index 3cb586df2..e9c0ca48a 100644 --- a/sdk/go/examples/app_sessions/lifecycle.go +++ b/sdk/go/examples/app_sessions/lifecycle.go @@ -2,27 +2,51 @@ package main // Example: Complete App Session Lifecycle // -// Prerequisites (minimum channel balances): -// - Wallet 1: 0.0001 USDC -// - Wallet 2: 0.00015 WETH -// - Wallet 3: no balance required (receives funds via redistribution) +// Requirements to run this example: +// +// 1. A reachable nitronode WebSocket endpoint (set via wsURL below). +// The default points at the public sandbox. +// +// 2. Three EVM wallets with hex private keys (replace the placeholders below). +// Wallet 3 may be a fresh key — it only receives funds via redistribution. +// +// 3. Minimum off-chain (channel) balances on the node: +// - Wallet 1: 0.0001 YUSD (deposited into Session 1) +// - Wallet 2: 0.00015 YELLOW (deposited into Session 2) +// - Wallet 3: none required (receives funds via redistribution) +// +// An open channel is NOT a hard prerequisite. If a wallet already has +// funds on the node but no acknowledged channel for the asset yet, the +// example calls Acknowledge first to open one. Wallet 3 also needs no +// pre-existing channel; the withdraw step will open/credit its ledger +// automatically. +// +// 4. App registry: if the node was started with the app registry disabled +// (apps.v1 group disabled), the registration step is skipped at runtime +// and app sessions are created against unregistered app IDs. No action +// is required from the operator — the example detects this via a probe +// call to GetApps. // // This example demonstrates: -// 1. Register apps in the app registry (required before creating app sessions) -// 2. Create first app session for wallet 1 -// 3. Deposit USDC into first app session by wallet 1 -// 4. Create second app session for wallet 2 with wallet 3 as a participant -// 5. Deposit WETH into second app session by wallet 2 -// 6. Redistribute app state within app session so that participant with wallet 3 also has some allocation -// 7. Wallet 3 withdraws from his app session -// 8. Close both app sessions -// 9. Fail case: attempt to create app session for unregistered app (expected to fail) +// 1. Register apps in the app registry (skipped if apps.v1 group is disabled) +// 2. Create first app session for wallet 1 +// 3. Deposit YUSD into first app session by wallet 1 +// (auto-opens wallet 1's YUSD channel via Acknowledge if missing) +// 4. Create second app session for wallet 2 with wallet 3 as a participant +// 5. Deposit YELLOW into second app session by wallet 2 +// (auto-opens wallet 2's YELLOW channel via Acknowledge if missing) +// 6. Redistribute app state within app session so that participant with wallet 3 also has some allocation +// 7. Wallet 3 withdraws from his app session +// 8. Close both app sessions +// 9. Fail case: attempt to create app session for unregistered app (expected to fail). +// Skipped entirely when the app registry is disabled. import ( "context" "fmt" "log" "math/rand" + "strings" "time" "github.com/ethereum/go-ethereum/common/hexutil" @@ -35,15 +59,20 @@ import ( sdk "github.com/layer-3/nitrolite/sdk/go" ) +// appRegistryDisabledMsg is the error fragment returned by the node when the +// apps.v1 RPC group is disabled by configuration. The example uses this to +// decide whether to skip the registration step. +const appRegistryDisabledMsg = "apps.v1 group is disabled" + func main() { ctx := context.Background() - wsURL := "wss://nitronode-sandbox.yellow.org/v1/ws" + wsURL := "wss://nitronode-stress.yellow.org/v1/ws" // --- 0. Setup Wallets --- // Replace these strings with your actual hex private keys - wallet1PrivateKey := "0x7d607..." - wallet2PrivateKey := "0x9b652..." - wallet3PrivateKey := "0xf6369..." + wallet1PrivateKey := "0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843" + wallet2PrivateKey := "0x9b6521133af49807e72b8ecc68ef79706fe374685214130079c375810ec47fe3" + wallet3PrivateKey := "0xf636952f9d68984a78ef45ea82480723b8a2c40127111cf83d384f8dcd3b77f8" // Create raw signers from private keys wallet1RawSigner, err := sign.NewEthereumRawSigner(wallet1PrivateKey) @@ -120,6 +149,15 @@ func main() { log.Fatal(err) } + // --- Ensure Required Channels Are Open --- + // App session deposits require an acknowledged channel for the asset. + // If the wallet has funds on the node but no channel yet, Acknowledge + // opens it on the fly so the example only assumes a minimum balance. + fmt.Println("=== Ensuring Channels Are Open ===") + ensureChannelOpen(ctx, "Wallet 1", wallet1Client, "yusd") + ensureChannelOpen(ctx, "Wallet 2", wallet2Client, "yellow") + fmt.Println() + // --- 1. Register Apps --- fmt.Println("=== Step 1: Registering Apps ===") @@ -127,15 +165,31 @@ func main() { app1ID := "test-app-" + suffix app2ID := "multi-party-app-" + suffix - if err := wallet1Client.RegisterApp(ctx, app1ID, "{}", true); err != nil { - log.Fatalf("Failed to register %s: %v", app1ID, err) + // Probe the apps.v1 group via GetApps. If the node has the app registry + // disabled, the probe returns an error containing appRegistryDisabledMsg + // and we skip registration entirely — app sessions can still be created + // against unregistered IDs in that mode. + appRegistryEnabled := true + if _, _, err := wallet1Client.GetApps(ctx, nil); err != nil { + if strings.Contains(err.Error(), appRegistryDisabledMsg) { + appRegistryEnabled = false + fmt.Println("ℹ App registry is disabled on the node — skipping app registration") + } else { + log.Fatalf("Failed to query app registry: %v", err) + } } - fmt.Printf("✓ Registered app: %s\n", app1ID) - if err := wallet1Client.RegisterApp(ctx, app2ID, "{}", false); err != nil { - log.Fatalf("Failed to register %s: %v", app2ID, err) + if appRegistryEnabled { + if err := wallet1Client.RegisterApp(ctx, app1ID, "{}", true); err != nil { + log.Fatalf("Failed to register %s: %v", app1ID, err) + } + fmt.Printf("✓ Registered app: %s\n", app1ID) + + if err := wallet1Client.RegisterApp(ctx, app2ID, "{}", false); err != nil { + log.Fatalf("Failed to register %s: %v", app2ID, err) + } + fmt.Printf("✓ Registered app: %s (owner approval required)\n\n", app2ID) } - fmt.Printf("✓ Registered app: %s (owner approval required)\n\n", app2ID) // --- 2. Create App Session 1 (Single Participant: Wallet 1) --- fmt.Println("=== Step 2: Creating App Session 1 (Wallet 1 only) ===") @@ -161,15 +215,15 @@ func main() { } fmt.Printf("✓ Created App Session 1: %s\n\n", session1ID) - // --- 3. Deposit USDC into Session 1 --- - fmt.Println("=== Step 3: Depositing USDC into Session 1 ===") + // --- 3. Deposit YUSD into Session 1 --- + fmt.Println("=== Step 3: Depositing YUSD into Session 1 ===") session1DepositAmount := decimal.NewFromFloat(0.0001) session1DepositUpdate := app.AppStateUpdateV1{ AppSessionID: session1ID, Intent: app.AppStateUpdateIntentDeposit, Version: 2, - Allocations: []app.AppAllocationV1{{Participant: wallet1Address, Asset: "usdc", Amount: session1DepositAmount}}, + Allocations: []app.AppAllocationV1{{Participant: wallet1Address, Asset: "yusd", Amount: session1DepositAmount}}, } session1DepositRequest, err := app.PackAppStateUpdateV1(session1DepositUpdate) @@ -179,11 +233,11 @@ func main() { appSession1DepositSig, _ := appSession1Signer.Sign(session1DepositRequest) - _, err = wallet1Client.SubmitAppSessionDeposit(ctx, session1DepositUpdate, []string{appSession1DepositSig.String()}, "usdc", session1DepositAmount) + _, err = wallet1Client.SubmitAppSessionDeposit(ctx, session1DepositUpdate, []string{appSession1DepositSig.String()}, "yusd", session1DepositAmount) if err != nil { log.Printf("⚠ Deposit warning: %v", err) } - fmt.Printf("✓ Deposited %s USDC into Session 1\n\n", session1DepositAmount) + fmt.Printf("✓ Deposited %s YUSD into Session 1\n\n", session1DepositAmount) // --- 4. Create App Session 2 (Multi-Party: Wallet 2 & 3) --- fmt.Println("=== Step 4: Creating App Session 2 (Wallet 2 & 3) ===") @@ -261,15 +315,15 @@ func main() { } fmt.Printf("✓ Created App Session 2: %s\n\n", session2ID) - // --- 5. Deposit WETH into Session 2 by Wallet 2 --- - fmt.Println("=== Step 5: Depositing WETH into Session 2 ===") + // --- 5. Deposit YELLOW into Session 2 by Wallet 2 --- + fmt.Println("=== Step 5: Depositing YELLOW into Session 2 ===") session2DepositAmount := decimal.NewFromFloat(0.00015) session2DepositUpdate := app.AppStateUpdateV1{ AppSessionID: session2ID, Intent: app.AppStateUpdateIntentDeposit, Version: 2, - Allocations: []app.AppAllocationV1{{Participant: wallet2Address, Asset: "weth", Amount: session2DepositAmount}}, + Allocations: []app.AppAllocationV1{{Participant: wallet2Address, Asset: "yellow", Amount: session2DepositAmount}}, } session2DepositRequest, err := app.PackAppStateUpdateV1(session2DepositUpdate) @@ -280,11 +334,11 @@ func main() { appSession2DepositSig, _ := appSession2Signer.Sign(session2DepositRequest) appSession3DepositSig, _ := appSession3Signer.Sign(session2DepositRequest) - nodeSig, err := wallet2Client.SubmitAppSessionDeposit(ctx, session2DepositUpdate, []string{appSession2DepositSig.String(), appSession3DepositSig.String()}, "weth", session2DepositAmount) + nodeSig, err := wallet2Client.SubmitAppSessionDeposit(ctx, session2DepositUpdate, []string{appSession2DepositSig.String(), appSession3DepositSig.String()}, "yellow", session2DepositAmount) if err != nil { log.Fatal(err) } - fmt.Printf("✓ Deposited %s WETH into Session 2 (Node Sig: %s)\n\n", session2DepositAmount, nodeSig) + fmt.Printf("✓ Deposited %s YELLOW into Session 2 (Node Sig: %s)\n\n", session2DepositAmount, nodeSig) // Check Session 2 state before redistribution session2InfoBeforeRedist, _, err := wallet2Client.GetAppSessions(ctx, &sdk.GetAppSessionsOptions{AppSessionID: &session2ID}) @@ -303,8 +357,8 @@ func main() { Intent: app.AppStateUpdateIntentOperate, Version: 3, Allocations: []app.AppAllocationV1{ - {Participant: wallet2Address, Asset: "weth", Amount: decimal.NewFromFloat(0.0001)}, - {Participant: wallet3Address, Asset: "weth", Amount: decimal.NewFromFloat(0.00005)}, + {Participant: wallet2Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.0001)}, + {Participant: wallet3Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.00005)}, }, } @@ -321,7 +375,7 @@ func main() { if err != nil { log.Fatalf("Redistribution failed: %v", err) } - fmt.Println("✓ Redistributed WETH: Wallet 2 (0.0001) -> Wallet 3 (0.00005)") + fmt.Println("✓ Redistributed YELLOW: Wallet 2 (0.0001) -> Wallet 3 (0.00005)") // NOTE: Rebalance step is disabled. // // --- 7. Rebalance Both App Sessions Atomically --- @@ -350,8 +404,8 @@ func main() { // Intent: app.AppStateUpdateIntentRebalance, // Version: 3, // Allocations: []app.AppAllocationV1{ - // {Participant: wallet1Address, Asset: "weth", Amount: decimal.NewFromFloat(0.005)}, - // {Participant: wallet1Address, Asset: "usdc", Amount: decimal.NewFromFloat(0.00005)}, + // {Participant: wallet1Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.005)}, + // {Participant: wallet1Address, Asset: "yusd", Amount: decimal.NewFromFloat(0.00005)}, // }, // } @@ -367,9 +421,9 @@ func main() { // Intent: app.AppStateUpdateIntentRebalance, // Version: 4, // Allocations: []app.AppAllocationV1{ - // {Participant: wallet2Address, Asset: "usdc", Amount: decimal.NewFromFloat(0.00005)}, - // {Participant: wallet2Address, Asset: "weth", Amount: decimal.NewFromFloat(0.005)}, - // {Participant: wallet3Address, Asset: "weth", Amount: decimal.NewFromFloat(0.005)}, + // {Participant: wallet2Address, Asset: "yusd", Amount: decimal.NewFromFloat(0.00005)}, + // {Participant: wallet2Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.005)}, + // {Participant: wallet3Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.005)}, // }, // } @@ -408,8 +462,8 @@ func main() { Intent: app.AppStateUpdateIntentWithdraw, Version: 4, Allocations: []app.AppAllocationV1{ - {Participant: wallet2Address, Asset: "weth", Amount: decimal.NewFromFloat(0.00005)}, - {Participant: wallet3Address, Asset: "weth", Amount: decimal.NewFromFloat(0.00001)}, + {Participant: wallet2Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.00005)}, + {Participant: wallet3Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.00001)}, }, } @@ -425,7 +479,7 @@ func main() { if err != nil { log.Printf("⚠ Withdraw Error: %v", err) } else { - fmt.Println("✓ Wallet 3 successfully withdrew WETH back to channel") + fmt.Println("✓ Wallet 3 successfully withdrew YELLOW back to channel") } // --- 8. Close Both App Sessions --- @@ -437,7 +491,7 @@ func main() { Intent: app.AppStateUpdateIntentClose, Version: 3, Allocations: []app.AppAllocationV1{ - {Participant: wallet1Address, Asset: "usdc", Amount: decimal.NewFromFloat(0.0001)}, + {Participant: wallet1Address, Asset: "yusd", Amount: decimal.NewFromFloat(0.0001)}, }, } @@ -461,8 +515,8 @@ func main() { Intent: app.AppStateUpdateIntentClose, Version: 5, Allocations: []app.AppAllocationV1{ - {Participant: wallet2Address, Asset: "weth", Amount: decimal.NewFromFloat(0.00005)}, - {Participant: wallet3Address, Asset: "weth", Amount: decimal.NewFromFloat(0.00001)}, + {Participant: wallet2Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.00005)}, + {Participant: wallet3Address, Asset: "yellow", Amount: decimal.NewFromFloat(0.00001)}, }, } @@ -482,28 +536,33 @@ func main() { } // --- 9. Fail Case: Create App Session for Unregistered App --- - fmt.Println("\n=== Step 9: Creating App Session for Unregistered App (expected to fail) ===") - - unregisteredDefinition := app.AppDefinitionV1{ - ApplicationID: "unregistered-app-" + suffix, - Participants: []app.AppParticipantV1{ - {WalletAddress: wallet1Address, SignatureWeight: 100}, - }, - Quorum: 100, - Nonce: uint64(time.Now().UnixNano()), - } - - unregisteredCreateRequest, err := app.PackCreateAppSessionRequestV1(unregisteredDefinition, "{}") - if err != nil { - log.Fatal(err) - } - - unregisteredSig, _ := appSession1Signer.Sign(unregisteredCreateRequest) - _, _, _, err = wallet1Client.CreateAppSession(ctx, unregisteredDefinition, "{}", []string{unregisteredSig.String()}) - if err != nil { - fmt.Printf("✓ Expected error: %v\n", err) - } else { - fmt.Println("✗ Unexpected success: app session was created for unregistered app") + // Only meaningful when the app registry is enabled — with apps.v1 disabled + // every app ID is "unregistered" from the registry's perspective and the + // node accepts the create call, so the fail-case has nothing to assert. + if appRegistryEnabled { + fmt.Println("\n=== Step 9: Creating App Session for Unregistered App (expected to fail) ===") + + unregisteredDefinition := app.AppDefinitionV1{ + ApplicationID: "unregistered-app-" + suffix, + Participants: []app.AppParticipantV1{ + {WalletAddress: wallet1Address, SignatureWeight: 100}, + }, + Quorum: 100, + Nonce: uint64(time.Now().UnixNano()), + } + + unregisteredCreateRequest, err := app.PackCreateAppSessionRequestV1(unregisteredDefinition, "{}") + if err != nil { + log.Fatal(err) + } + + unregisteredSig, _ := appSession1Signer.Sign(unregisteredCreateRequest) + _, _, _, err = wallet1Client.CreateAppSession(ctx, unregisteredDefinition, "{}", []string{unregisteredSig.String()}) + if err != nil { + fmt.Printf("✓ Expected error: %v\n", err) + } else { + fmt.Println("✗ Unexpected success: app session was created for unregistered app") + } } fmt.Println("\n=== Example Complete ===") @@ -520,3 +579,30 @@ func generateMsgSigner() (sign.Signer, error) { return sign.NewEthereumMsgSigner(hexutil.Encode(privateKeyBytes)) } + +// ensureChannelOpen guarantees that the given wallet has an acknowledged +// channel open for asset. If the node holds no state for the wallet/asset +// pair, or the latest state is still awaiting the user's signature (or has +// been finalized), Acknowledge is invoked to create or progress the channel. +// Already-acknowledged channels are left untouched. +func ensureChannelOpen(ctx context.Context, label string, client *sdk.Client, asset string) { + wallet := client.GetUserAddress() + state, err := client.GetLatestState(ctx, wallet, asset, false) + if err != nil { + log.Fatalf("[%s] failed to get latest %s state: %v", label, asset, err) + } + + hasOpenChannel := state != nil && + state.HomeChannelID != nil && + !state.IsFinal() && + state.UserSig != nil + if hasOpenChannel { + fmt.Printf("✓ %s already has an open %s channel\n", label, asset) + return + } + + if _, err := client.Acknowledge(ctx, asset); err != nil { + log.Fatalf("[%s] failed to acknowledge %s channel: %v", label, asset, err) + } + fmt.Printf("✓ %s acknowledged %s channel\n", label, asset) +} diff --git a/sdk/go/examples/channel_session_key/lifecycle.go b/sdk/go/examples/channel_session_key/lifecycle.go new file mode 100644 index 000000000..3d2a4d074 --- /dev/null +++ b/sdk/go/examples/channel_session_key/lifecycle.go @@ -0,0 +1,356 @@ +package main + +// Example: Channel Session Key Lifecycle +// +// Requirements to run this example: +// +// 1. A reachable nitronode WebSocket endpoint (set via wsURL below). +// The default points at the stress environment. +// +// 2. One EVM wallet with a hex private key (replace the placeholder below). +// +// 3. Minimum off-chain (channel) balances on the node: +// - 0.00005 YUSD (one deposit + one withdraw via session key) +// - 0.00005 YELLOW (one deposit + one withdraw via session key) +// +// An open channel is NOT a hard prerequisite. If the wallet already has +// funds on the node but no acknowledged channel yet, Acknowledge is run +// first to open one. +// +// 4. chainID below must match the asset's home blockchain for your target +// nitronode deployment, and rpcURL must point at a JSON-RPC endpoint for +// that chain. Both Deposit and Withdraw are followed by an on-chain +// Checkpoint; the example then polls GetHomeChannel until the node has +// observed the checkpoint event before moving on. Without a working RPC +// these calls fail. +// +// This example demonstrates: +// 1. Open YUSD and YELLOW channels for the wallet (Acknowledge) +// 2. Generate a fresh session key +// 3. Register session key v1 with both assets allowed +// 4. Deposit YUSD and YELLOW via a session-key-backed client (success) +// 5. Update session key v2 -> [YELLOW] only +// 6. Withdraw YELLOW (success); attempt YUSD withdraw via session key (expected fail) +// 7. Update session key v3 -> [YUSD] only +// 8. Withdraw YUSD (success); attempt YELLOW deposit via session key (expected fail) +// 9. Revoke session key v4 -> [] +// 10. Attempt YUSD deposit, YELLOW deposit, and channel closure via session key +// (all expected to fail) + +import ( + "context" + "fmt" + "log" + "time" + + "github.com/ethereum/go-ethereum/common/hexutil" + "github.com/ethereum/go-ethereum/crypto" + "github.com/shopspring/decimal" + + "github.com/layer-3/nitrolite/pkg/core" + "github.com/layer-3/nitrolite/pkg/sign" + sdk "github.com/layer-3/nitrolite/sdk/go" +) + +func main() { + ctx := context.Background() + wsURL := "wss://nitronode-stress.yellow.org/v1/ws" + + // Replace with your hex private key. The wallet must have minimum off-chain + // balance for YUSD and YELLOW; channels are auto-opened below if missing. + walletPrivateKey := "0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843" + + // chainID is the home blockchain ID used for Deposit / Withdraw calls. Set + // it to the asset's home chain on the target nitronode deployment. 11155111 + // is Ethereum Sepolia (the stress environment). + chainID := uint64(11155111) + + // rpcURL is a JSON-RPC endpoint for chainID. Replace with your own provider + // if the public endpoint is rate-limited. + rpcURL := "https://sepolia.drpc.org" + + // --- Setup wallet signers + wallet-backed SDK client --- + walletRawSigner, err := sign.NewEthereumRawSigner(walletPrivateKey) + if err != nil { + log.Fatalf("Invalid wallet private key: %v", err) + } + walletMsgSigner, err := sign.NewEthereumMsgSignerFromRaw(walletRawSigner) + if err != nil { + log.Fatalf("Failed to create wallet msg signer: %v", err) + } + walletChannelSigner, err := core.NewChannelDefaultSigner(walletMsgSigner) + if err != nil { + log.Fatalf("Failed to create wallet channel signer: %v", err) + } + walletAddress := walletRawSigner.PublicKey().Address().String() + fmt.Printf("Wallet: %s\n\n", walletAddress) + + walletClient, err := sdk.NewClient(wsURL, walletChannelSigner, walletRawSigner, sdk.WithBlockchainRPC(chainID, rpcURL)) + if err != nil { + log.Fatalf("Failed to create wallet client: %v", err) + } + defer walletClient.Close() + + // --- Step 1: ensure YUSD and YELLOW channels are open --- + fmt.Println("=== Step 1: Ensuring channels are open ===") + ensureChannelOpen(ctx, walletClient, "yusd") + ensureChannelOpen(ctx, walletClient, "yellow") + fmt.Println() + + // --- Step 2: generate a fresh session key --- + fmt.Println("=== Step 2: Generating session key ===") + sessionKeyRawSigner, sessionKeyMsgSigner := generateSessionKey() + sessionKeyAddress := sessionKeyRawSigner.PublicKey().Address().String() + fmt.Printf("Session key: %s\n\n", sessionKeyAddress) + + // --- Step 3: register session key v1 with both assets allowed --- + fmt.Println("=== Step 3: Registering session key v1 ([yusd, yellow]) ===") + stateV1 := submitSessionKey(ctx, walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 1, []string{"yusd", "yellow"}) + fmt.Println("✓ v1 registered") + fmt.Println() + + // --- Step 4: deposit YUSD and YELLOW via session-key client --- + fmt.Println("=== Step 4: Depositing via session-key client (v1) ===") + skClient1 := newSessionKeyClient(wsURL, walletRawSigner, sessionKeyMsgSigner, stateV1, sdk.WithBlockchainRPC(chainID, rpcURL)) + yusdDepositState, err := skClient1.Deposit(ctx, chainID, "yusd", decimal.NewFromFloat(0.00001)) + if err != nil { + log.Fatalf("YUSD deposit via v1 failed: %v", err) + } + fmt.Println("✓ YUSD deposited via session key") + checkpointAndWait(ctx, skClient1, "yusd", yusdDepositState.Version) + + yellowDepositState, err := skClient1.Deposit(ctx, chainID, "yellow", decimal.NewFromFloat(0.00001)) + if err != nil { + log.Fatalf("YELLOW deposit via v1 failed: %v", err) + } + fmt.Println("✓ YELLOW deposited via session key") + checkpointAndWait(ctx, skClient1, "yellow", yellowDepositState.Version) + skClient1.Close() + fmt.Println() + + // --- Step 5: update session key v2 -> [yellow] --- + fmt.Println("=== Step 5: Updating session key v2 ([yellow]) ===") + stateV2 := submitSessionKey(ctx, walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 2, []string{"yellow"}) + skClient2 := newSessionKeyClient(wsURL, walletRawSigner, sessionKeyMsgSigner, stateV2, sdk.WithBlockchainRPC(chainID, rpcURL)) + fmt.Println("✓ v2 registered") + fmt.Println() + + // --- Step 6: withdraw YELLOW (ok); attempt YUSD withdraw (fail) --- + fmt.Println("=== Step 6: Withdraw via v2 (yellow only) ===") + yellowWithdrawState, err := skClient2.Withdraw(ctx, chainID, "yellow", decimal.NewFromFloat(0.000005)) + if err != nil { + log.Fatalf("YELLOW withdraw via v2 failed: %v", err) + } + fmt.Println("✓ YELLOW withdrawn via session key") + checkpointAndWait(ctx, skClient2, "yellow", yellowWithdrawState.Version) + if _, err := skClient2.Withdraw(ctx, chainID, "yusd", decimal.NewFromFloat(0.000005)); err != nil { + fmt.Printf("✓ Expected: YUSD withdraw rejected by node: %v\n", err) + } else { + fmt.Println("✗ Unexpected: YUSD withdraw succeeded under v2") + } + skClient2.Close() + fmt.Println() + + // --- Step 7: update session key v3 -> [yusd] --- + fmt.Println("=== Step 7: Updating session key v3 ([yusd]) ===") + stateV3 := submitSessionKey(ctx, walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 3, []string{"yusd"}) + skClient3 := newSessionKeyClient(wsURL, walletRawSigner, sessionKeyMsgSigner, stateV3, sdk.WithBlockchainRPC(chainID, rpcURL)) + fmt.Println("✓ v3 registered") + fmt.Println() + + // --- Step 8: withdraw YUSD (ok); attempt YELLOW deposit (fail) --- + fmt.Println("=== Step 8: Withdraw via v3 (yusd only) ===") + yusdWithdrawState, err := skClient3.Withdraw(ctx, chainID, "yusd", decimal.NewFromFloat(0.000005)) + if err != nil { + log.Fatalf("YUSD withdraw via v3 failed: %v", err) + } + fmt.Println("✓ YUSD withdrawn via session key") + checkpointAndWait(ctx, skClient3, "yusd", yusdWithdrawState.Version) + if _, err := skClient3.Deposit(ctx, chainID, "yellow", decimal.NewFromFloat(0.000005)); err != nil { + fmt.Printf("✓ Expected: YELLOW deposit rejected by node: %v\n", err) + } else { + fmt.Println("✗ Unexpected: YELLOW deposit succeeded under v3") + } + skClient3.Close() + fmt.Println() + + // --- Step 9: revoke session key v4 -> [] --- + // Empty assets disables every per-asset check on the node, so the next + // version of the key cannot authorize any channel operation. + fmt.Println("=== Step 9: Revoking session key v4 (empty assets) ===") + stateV4 := submitSessionKey(ctx, walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 4, []string{}) + skClient4 := newSessionKeyClient(wsURL, walletRawSigner, sessionKeyMsgSigner, stateV4, sdk.WithBlockchainRPC(chainID, rpcURL)) + fmt.Println("✓ v4 registered (revoked)") + fmt.Println() + + // --- Step 10: every session-key operation must fail --- + fmt.Println("=== Step 10: Verifying revoked session key cannot operate ===") + if _, err := skClient4.Deposit(ctx, chainID, "yusd", decimal.NewFromFloat(0.000005)); err != nil { + fmt.Printf("✓ Expected: YUSD deposit rejected by node: %v\n", err) + } else { + fmt.Println("✗ Unexpected: YUSD deposit succeeded under v4") + } + if _, err := skClient4.Deposit(ctx, chainID, "yellow", decimal.NewFromFloat(0.000005)); err != nil { + fmt.Printf("✓ Expected: YELLOW deposit rejected by node: %v\n", err) + } else { + fmt.Println("✗ Unexpected: YELLOW deposit succeeded under v4") + } + if _, err := skClient4.CloseHomeChannel(ctx, "yusd"); err != nil { + fmt.Printf("✓ Expected: YUSD channel close rejected by node: %v\n", err) + } else { + fmt.Println("✗ Unexpected: YUSD channel close succeeded under v4") + } + skClient4.Close() + + fmt.Println("\n=== Example Complete ===") +} + +// ensureChannelOpen guarantees that the wallet has an acknowledged channel +// open for asset. If the node holds no state for the wallet/asset pair, or +// the latest state is still awaiting the user's signature (or has been +// finalized), Acknowledge is invoked to create or progress the channel. +func ensureChannelOpen(ctx context.Context, client *sdk.Client, asset string) { + wallet := client.GetUserAddress() + state, err := client.GetLatestState(ctx, wallet, asset, false) + if err != nil { + log.Fatalf("failed to get latest %s state: %v", asset, err) + } + + hasOpenChannel := state != nil && + state.HomeChannelID != nil && + !state.IsFinal() && + state.UserSig != nil + if hasOpenChannel { + fmt.Printf("✓ channel already open for %s\n", asset) + return + } + + if _, err := client.Acknowledge(ctx, asset); err != nil { + log.Fatalf("failed to acknowledge %s channel: %v", asset, err) + } + fmt.Printf("✓ acknowledged channel for %s\n", asset) +} + +// generateSessionKey produces a fresh keypair and returns both the raw signer +// (used as the SDK client's tx signer) and the EIP-191 msg signer (used to +// sign channel session-key authorization payloads and channel states). +func generateSessionKey() (sign.Signer, *sign.EthereumMsgSigner) { + privateKey, err := crypto.GenerateKey() + if err != nil { + log.Fatalf("failed to generate session key: %v", err) + } + privateKeyHex := hexutil.Encode(crypto.FromECDSA(privateKey)) + + rawSigner, err := sign.NewEthereumRawSigner(privateKeyHex) + if err != nil { + log.Fatalf("failed to create session key raw signer: %v", err) + } + msgSigner, err := sign.NewEthereumMsgSigner(privateKeyHex) + if err != nil { + log.Fatalf("failed to create session key msg signer: %v", err) + } + return rawSigner, msgSigner +} + +// submitSessionKey signs and submits a (version, assets) update for the +// channel session key using the wallet client. Returns the registered state +// (including UserSig + SessionKeySig) so the caller can derive the matching +// session-key channel signer for subsequent operations. +func submitSessionKey( + ctx context.Context, + walletClient *sdk.Client, + walletAddress, sessionKeyAddress string, + sessionKeyMsgSigner *sign.EthereumMsgSigner, + version uint64, + assets []string, +) core.ChannelSessionKeyStateV1 { + state := core.ChannelSessionKeyStateV1{ + UserAddress: walletAddress, + SessionKey: sessionKeyAddress, + Version: version, + Assets: assets, + ExpiresAt: time.Now().Add(24 * time.Hour), + } + + userSig, err := walletClient.SignChannelSessionKeyState(state) + if err != nil { + log.Fatalf("failed to sign session key v%d state: %v", version, err) + } + state.UserSig = userSig + + sessionKeySig, err := sdk.SignChannelSessionKeyOwnership(state, sessionKeyMsgSigner) + if err != nil { + log.Fatalf("failed to sign session key v%d ownership: %v", version, err) + } + state.SessionKeySig = sessionKeySig + + if err := walletClient.SubmitChannelSessionKeyState(ctx, state); err != nil { + log.Fatalf("failed to submit session key v%d: %v", version, err) + } + return state +} + +// newSessionKeyClient builds an SDK client whose state signer is the channel +// session key derived from the registered state. All channel state operations +// (Deposit, Withdraw, CloseHomeChannel, ...) issued through this client are +// signed with the session key, and the node validates them against the latest +// registered (user, session_key, version) tuple — including the asset +// allow-list and expiry. +// +// rawSigner must remain the wallet's raw signer: the SDK uses it to derive +// the user address (GetUserAddress) and to look up state for the correct +// owner. Substituting the session key here would point the client at the +// session key's address — channels would be queried/created for the wrong +// owner. +func newSessionKeyClient( + wsURL string, + walletRawSigner sign.Signer, + sessionKeyMsgSigner *sign.EthereumMsgSigner, + state core.ChannelSessionKeyStateV1, + opts ...sdk.Option, +) *sdk.Client { + metadataHash, err := core.GetChannelSessionKeyAuthMetadataHashV1(state.UserAddress, state.Version, state.Assets, state.ExpiresAt.Unix()) + if err != nil { + log.Fatalf("failed to compute metadata hash for v%d: %v", state.Version, err) + } + + channelSigner, err := core.NewChannelSessionKeySignerV1(sessionKeyMsgSigner, metadataHash.Hex(), state.UserSig) + if err != nil { + log.Fatalf("failed to build session-key channel signer for v%d: %v", state.Version, err) + } + + client, err := sdk.NewClient(wsURL, channelSigner, walletRawSigner, opts...) + if err != nil { + log.Fatalf("failed to create session-key client for v%d: %v", state.Version, err) + } + return client +} + +// checkpointAndWait runs Checkpoint for asset and polls GetHomeChannel until +// the node's observed on-chain state_version catches up to expectedVersion. +// Without this barrier the next deposit/withdraw can race the node's event +// ingestion and be rejected with "home deposit is still ongoing". +func checkpointAndWait(ctx context.Context, client *sdk.Client, asset string, expectedVersion uint64) { + txHash, err := client.Checkpoint(ctx, asset) + if err != nil { + log.Fatalf("checkpoint %s failed: %v", asset, err) + } + fmt.Printf(" ↳ checkpoint %s tx %s submitted; waiting for node to observe state_version=%d...\n", asset, txHash, expectedVersion) + + wallet := client.GetUserAddress() + deadline := time.Now().Add(2 * time.Minute) + for { + channel, err := client.GetHomeChannel(ctx, wallet, asset) + if err != nil { + log.Fatalf("failed to get home channel for %s: %v", asset, err) + } + if channel != nil && channel.StateVersion >= expectedVersion { + fmt.Printf(" ↳ node observed state_version=%d for %s\n", channel.StateVersion, asset) + return + } + if time.Now().After(deadline) { + log.Fatalf("timed out waiting for %s to reach state_version=%d", asset, expectedVersion) + } + time.Sleep(2 * time.Second) + } +} From a115b5a38a5a6ddfa5b7ff47440bc1f697d9ab0b Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Wed, 20 May 2026 15:49:56 +0300 Subject: [PATCH 12/18] feat(sdk/ts/examples): expand app_sessions + add channel_session_key lifecycle app_sessions: mirror the Go example changes. Rewrite requirements doc, replace WETH/USDC with YELLOW/YUSD, probe apps.v1 via getApps() and skip registerApp + fail-case Step 9 when the registry is disabled, add an ensureChannelOpen() helper that calls acknowledge() on demand, and polyfill globalThis.WebSocket from the ws package because Node <22 does not expose a stable global WebSocket and the SDK dialer uses `new WebSocket(url)` directly. Add ws + @types/ws as deps. channel_session_key: new lifecycle example mirroring the Go counterpart. Registers a channel session key, deposits/withdraws via a session-key- backed client built with ChannelSessionKeyStateSigner, narrows the asset allow-list across v2/v3, and verifies revocation (v4 with empty assets) blocks every channel operation. Includes checkpointAndWait() that polls getHomeChannel state_version after each checkpoint so the next state transition does not race the node's on-chain event ingestion. txSigner remains an EthereumRawSigner over the wallet key; only the state signer is swapped to the session key. Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/ts/examples/app_sessions/lifecycle.ts | 217 +++-- .../examples/app_sessions/package-lock.json | 60 +- sdk/ts/examples/app_sessions/package.json | 4 +- .../examples/channel_session_key/lifecycle.ts | 347 ++++++++ .../channel_session_key/package-lock.json | 834 ++++++++++++++++++ .../examples/channel_session_key/package.json | 21 + .../channel_session_key/tsconfig.json | 16 + 7 files changed, 1414 insertions(+), 85 deletions(-) create mode 100644 sdk/ts/examples/channel_session_key/lifecycle.ts create mode 100644 sdk/ts/examples/channel_session_key/package-lock.json create mode 100644 sdk/ts/examples/channel_session_key/package.json create mode 100644 sdk/ts/examples/channel_session_key/tsconfig.json diff --git a/sdk/ts/examples/app_sessions/lifecycle.ts b/sdk/ts/examples/app_sessions/lifecycle.ts index 777e020f1..4f058cb3e 100644 --- a/sdk/ts/examples/app_sessions/lifecycle.ts +++ b/sdk/ts/examples/app_sessions/lifecycle.ts @@ -1,23 +1,54 @@ /** * Example: Complete App Session Lifecycle * - * Prerequisites (minimum channel balances): - * - Wallet 1: 0.0001 USDC - * - Wallet 2: 0.00015 WETH - * - Wallet 3: no balance required (receives funds via redistribution) + * Requirements to run this example: + * + * 1. A reachable nitronode WebSocket endpoint (set via wsURL below). + * The default points at the public sandbox. + * + * 2. Three EVM wallets with hex private keys (replace the placeholders below). + * Wallet 3 may be a fresh key — it only receives funds via redistribution. + * + * 3. Minimum off-chain (channel) balances on the node: + * - Wallet 1: 0.0001 YUSD (deposited into Session 1) + * - Wallet 2: 0.00015 YELLOW (deposited into Session 2) + * - Wallet 3: none required (receives funds via redistribution) + * + * An open channel is NOT a hard prerequisite. If a wallet already has + * funds on the node but no acknowledged channel for the asset yet, the + * example calls acknowledge() first to open one. Wallet 3 also needs no + * pre-existing channel; the withdraw step will open/credit its ledger + * automatically. + * + * 4. App registry: if the node was started with the app registry disabled + * (apps.v1 group disabled), the registration step is skipped at runtime + * and app sessions are created against unregistered app IDs. No action + * is required from the operator — the example detects this via a probe + * call to getApps(). * * This example demonstrates: - * 1. Register apps in the app registry (required before creating app sessions) - * 2. Create first app session for wallet 1 - * 3. Deposit USDC into first app session by wallet 1 - * 4. Create second app session for wallet 2 with wallet 3 as a participant - * 5. Deposit WETH into second app session by wallet 2 - * 6. Redistribute app state within app session so that participant with wallet 3 also has some allocation - * 7. Wallet 3 withdraws from his app session - * 8. Close both app sessions - * 9. Fail case: attempt to create app session for unregistered app (expected to fail) + * 1. Register apps in the app registry (skipped if apps.v1 group is disabled) + * 2. Create first app session for wallet 1 + * 3. Deposit YUSD into first app session by wallet 1 + * (auto-opens wallet 1's YUSD channel via acknowledge() if missing) + * 4. Create second app session for wallet 2 with wallet 3 as a participant + * 5. Deposit YELLOW into second app session by wallet 2 + * (auto-opens wallet 2's YELLOW channel via acknowledge() if missing) + * 6. Redistribute app state within app session so that participant with wallet 3 also has some allocation + * 7. Wallet 3 withdraws from his app session + * 8. Close both app sessions + * 9. Fail case: attempt to create app session for unregistered app (expected to fail). + * Skipped entirely when the app registry is disabled. */ +// Node <22 does not expose a stable global WebSocket. The SDK dialer uses +// `new WebSocket(url)` directly, so we polyfill the global from the `ws` +// package before any client is constructed. +import WebSocket from 'ws'; +if (typeof (globalThis as { WebSocket?: unknown }).WebSocket === 'undefined') { + (globalThis as { WebSocket: unknown }).WebSocket = WebSocket; +} + import Decimal from 'decimal.js'; import { Hex } from 'viem'; import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts'; @@ -35,16 +66,47 @@ import { AppSessionKeyStateV1, } from '../../src/app/types'; import { packCreateAppSessionRequestV1, packAppStateUpdateV1, packAppSessionKeyStateV1 } from '../../src/app/packing'; +import { isFinal } from '../../src/core/state'; + +// appRegistryDisabledMsg is the error fragment returned by the node when the +// apps.v1 RPC group is disabled by configuration. The example uses this to +// decide whether to skip the registration step. +const APP_REGISTRY_DISABLED_MSG = 'apps.v1 group is disabled'; + +/** + * ensureChannelOpen guarantees that the given wallet has an acknowledged + * channel open for asset. If the node holds no state for the wallet/asset + * pair, or the latest state is still awaiting the user's signature (or has + * been finalized), acknowledge() is invoked to create or progress the channel. + * Already-acknowledged channels are left untouched. + */ +async function ensureChannelOpen(label: string, client: Client, asset: string): Promise { + const wallet = client.getUserAddress(); + const state = await client.getLatestState(wallet, asset, false); + + const hasOpenChannel = + state !== null && + state.homeChannelId !== undefined && + !isFinal(state) && + !!state.userSig; + if (hasOpenChannel) { + console.log(`✓ ${label} already has an open ${asset} channel`); + return; + } + + await client.acknowledge(asset); + console.log(`✓ ${label} acknowledged ${asset} channel`); +} async function main() { // Replace with a real deployment url - const wsURL = 'wss://nitronode-sandbox.yellow.org/v1/ws'; + const wsURL = 'wss://nitronode-stress.yellow.org/v1/ws'; // --- 0. Setup Wallets --- // Replace these strings with your actual hex private keys - const wallet1PrivateKey = '0x7d607...' as Hex; - const wallet2PrivateKey = '0x9b652...' as Hex; - const wallet3PrivateKey = '0xf6369...' as Hex; + const wallet1PrivateKey = '0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843' as Hex; + const wallet2PrivateKey = '0x9b6521133af49807e72b8ecc68ef79706fe374685214130079c375810ec47fe3' as Hex; + const wallet3PrivateKey = '0xf636952f9d68984a78ef45ea82480723b8a2c40127111cf83d384f8dcd3b77f8' as Hex; // Create signers from private keys const wallet1Signers = createSigners(wallet1PrivateKey); @@ -85,6 +147,15 @@ async function main() { wallet3Signers.txSigner ); + // --- Ensure Required Channels Are Open --- + // App session deposits require an acknowledged channel for the asset. + // If the wallet has funds on the node but no channel yet, acknowledge() + // opens it on the fly so the example only assumes a minimum balance. + console.log('=== Ensuring Channels Are Open ==='); + await ensureChannelOpen('Wallet 1', wallet1Client, 'yusd'); + await ensureChannelOpen('Wallet 2', wallet2Client, 'yellow'); + console.log(); + // --- 1. Register Apps --- console.log('=== Step 1: Registering Apps ==='); @@ -92,11 +163,30 @@ async function main() { const app1ID = `test-app-${suffix}`; const app2ID = `multi-party-app-${suffix}`; - await wallet1Client.registerApp(app1ID, '{}', true); - console.log(`✓ Registered app: ${app1ID}`); + // Probe the apps.v1 group via getApps. If the node has the app registry + // disabled, the probe throws an error containing APP_REGISTRY_DISABLED_MSG + // and we skip registration entirely — app sessions can still be created + // against unregistered IDs in that mode. + let appRegistryEnabled = true; + try { + await wallet1Client.getApps(); + } catch (err) { + const msg = err instanceof Error ? err.message : String(err); + if (msg.includes(APP_REGISTRY_DISABLED_MSG)) { + appRegistryEnabled = false; + console.log('ℹ App registry is disabled on the node — skipping app registration'); + } else { + throw err; + } + } + + if (appRegistryEnabled) { + await wallet1Client.registerApp(app1ID, '{}', true); + console.log(`✓ Registered app: ${app1ID}`); - await wallet1Client.registerApp(app2ID, '{}', false); - console.log(`✓ Registered app: ${app2ID} (owner approval required)\n`); + await wallet1Client.registerApp(app2ID, '{}', false); + console.log(`✓ Registered app: ${app2ID} (owner approval required)\n`); + } // --- 2. Create App Session 1 (Single Participant: Wallet 1) --- console.log('=== Step 2: Creating App Session 1 (Wallet 1 only) ==='); @@ -118,8 +208,8 @@ async function main() { ); console.log(`✓ Created App Session 1: ${session1ID}\n`); - // --- 3. Deposit USDC into Session 1 --- - console.log('=== Step 3: Depositing USDC into Session 1 ==='); + // --- 3. Deposit YUSD into Session 1 --- + console.log('=== Step 3: Depositing YUSD into Session 1 ==='); const session1DepositAmount = new Decimal(0.0001); const session1DepositUpdate: AppStateUpdateV1 = { @@ -127,7 +217,7 @@ async function main() { intent: AppStateUpdateIntent.Deposit, version: 2n, allocations: [ - { participant: wallet1Address, asset: 'usdc', amount: session1DepositAmount }, + { participant: wallet1Address, asset: 'yusd', amount: session1DepositAmount }, ], sessionData: '{}', }; @@ -139,10 +229,10 @@ async function main() { await wallet1Client.submitAppSessionDeposit( session1DepositUpdate, [appSession1DepositSig], - 'usdc', + 'yusd', session1DepositAmount ); - console.log(`✓ Deposited ${session1DepositAmount} USDC into Session 1\n`); + console.log(`✓ Deposited ${session1DepositAmount} YUSD into Session 1\n`); } catch (err) { console.log(`⚠ Deposit warning: ${err}`); } @@ -209,8 +299,8 @@ async function main() { ); console.log(`✓ Created App Session 2: ${session2ID}\n`); - // --- 5. Deposit WETH into Session 2 by Wallet 2 --- - console.log('=== Step 5: Depositing WETH into Session 2 ==='); + // --- 5. Deposit YELLOW into Session 2 by Wallet 2 --- + console.log('=== Step 5: Depositing YELLOW into Session 2 ==='); const session2DepositAmount = new Decimal(0.00015); const session2DepositUpdate: AppStateUpdateV1 = { @@ -218,7 +308,7 @@ async function main() { intent: AppStateUpdateIntent.Deposit, version: 2n, allocations: [ - { participant: wallet2Address, asset: 'weth', amount: session2DepositAmount }, + { participant: wallet2Address, asset: 'yellow', amount: session2DepositAmount }, ], sessionData: '{}', }; @@ -230,10 +320,10 @@ async function main() { const nodeSig = await wallet2Client.submitAppSessionDeposit( session2DepositUpdate, [appSession2DepositSig, appSession3DepositSig], - 'weth', + 'yellow', session2DepositAmount ); - console.log(`✓ Deposited ${session2DepositAmount} WETH into Session 2 (Node Sig: ${nodeSig})\n`); + console.log(`✓ Deposited ${session2DepositAmount} YELLOW into Session 2 (Node Sig: ${nodeSig})\n`); // Check Session 2 state before redistribution const { sessions: session2InfoBeforeRedist } = await wallet2Client.getAppSessions({ @@ -253,8 +343,8 @@ async function main() { intent: AppStateUpdateIntent.Operate, version: 3n, allocations: [ - { participant: wallet2Address, asset: 'weth', amount: new Decimal(0.0001) }, - { participant: wallet3Address, asset: 'weth', amount: new Decimal(0.00005) }, + { participant: wallet2Address, asset: 'yellow', amount: new Decimal(0.0001) }, + { participant: wallet3Address, asset: 'yellow', amount: new Decimal(0.00005) }, ], sessionData: '{}', }; @@ -273,7 +363,7 @@ async function main() { appSession2RedistributeSig, appSession3RedistributeSig, ]); - console.log('✓ Redistributed WETH: Wallet 2 (0.0001) -> Wallet 3 (0.00005)\n'); + console.log('✓ Redistributed YELLOW: Wallet 2 (0.0001) -> Wallet 3 (0.00005)\n'); } catch (err) { console.error(`Redistribution failed: ${err}`); throw err; @@ -291,8 +381,8 @@ async function main() { intent: AppStateUpdateIntent.Withdraw, version: 4n, allocations: [ - { participant: wallet2Address, asset: 'weth', amount: new Decimal(0.00005) }, - { participant: wallet3Address, asset: 'weth', amount: new Decimal(0.00001) }, + { participant: wallet2Address, asset: 'yellow', amount: new Decimal(0.00005) }, + { participant: wallet3Address, asset: 'yellow', amount: new Decimal(0.00001) }, ], sessionData: '{}', }; @@ -310,7 +400,7 @@ async function main() { appSession2WithdrawSig, appSession3WithdrawSig, ]); - console.log('✓ Wallet 3 successfully withdrew WETH back to channel\n'); + console.log('✓ Wallet 3 successfully withdrew YELLOW back to channel\n'); } catch (err) { console.log(`⚠ Withdraw Error: ${err}\n`); } @@ -324,7 +414,7 @@ async function main() { intent: AppStateUpdateIntent.Close, version: 3n, allocations: [ - { participant: wallet1Address, asset: 'usdc', amount: new Decimal(0.0001) }, + { participant: wallet1Address, asset: 'yusd', amount: new Decimal(0.0001) }, ], sessionData: '{}', }; @@ -345,8 +435,8 @@ async function main() { intent: AppStateUpdateIntent.Close, version: 5n, allocations: [ - { participant: wallet2Address, asset: 'weth', amount: new Decimal(0.00005) }, - { participant: wallet3Address, asset: 'weth', amount: new Decimal(0.00001) }, + { participant: wallet2Address, asset: 'yellow', amount: new Decimal(0.00005) }, + { participant: wallet3Address, asset: 'yellow', amount: new Decimal(0.00001) }, ], sessionData: '{}', }; @@ -366,27 +456,32 @@ async function main() { } // --- 9. Fail Case: Create App Session for Unregistered App --- - console.log('\n=== Step 9: Creating App Session for Unregistered App (expected to fail) ==='); - - const unregisteredDefinition: AppDefinitionV1 = { - applicationId: `unregistered-app-${suffix}`, - participants: [{ walletAddress: wallet1Address, signatureWeight: 100 }], - quorum: 100, - nonce: BigInt(Date.now() * 1000000), - }; - - const unregisteredCreateRequest = packCreateAppSessionRequestV1(unregisteredDefinition, '{}'); - const unregisteredSig = await appSession1Signer.signMessage(unregisteredCreateRequest); - - try { - await wallet1Client.createAppSession( - unregisteredDefinition, - '{}', - [unregisteredSig] - ); - console.log('✗ Unexpected success: app session was created for unregistered app'); - } catch (err) { - console.log(`✓ Expected error: ${err}`); + // Only meaningful when the app registry is enabled — with apps.v1 disabled + // every app ID is "unregistered" from the registry's perspective and the + // node accepts the create call, so the fail-case has nothing to assert. + if (appRegistryEnabled) { + console.log('\n=== Step 9: Creating App Session for Unregistered App (expected to fail) ==='); + + const unregisteredDefinition: AppDefinitionV1 = { + applicationId: `unregistered-app-${suffix}`, + participants: [{ walletAddress: wallet1Address, signatureWeight: 100 }], + quorum: 100, + nonce: BigInt(Date.now() * 1000000), + }; + + const unregisteredCreateRequest = packCreateAppSessionRequestV1(unregisteredDefinition, '{}'); + const unregisteredSig = await appSession1Signer.signMessage(unregisteredCreateRequest); + + try { + await wallet1Client.createAppSession( + unregisteredDefinition, + '{}', + [unregisteredSig] + ); + console.log('✗ Unexpected success: app session was created for unregistered app'); + } catch (err) { + console.log(`✓ Expected error: ${err}`); + } } console.log('\n=== Example Complete ==='); diff --git a/sdk/ts/examples/app_sessions/package-lock.json b/sdk/ts/examples/app_sessions/package-lock.json index 1e0eef30d..e95d202c7 100644 --- a/sdk/ts/examples/app_sessions/package-lock.json +++ b/sdk/ts/examples/app_sessions/package-lock.json @@ -1,30 +1,33 @@ { - "name": "@nitrolite/example-app-sessions", + "name": "@yellow-org/example-app-sessions", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@nitrolite/example-app-sessions", + "name": "@yellow-org/example-app-sessions", "version": "1.0.0", "dependencies": { - "@nitrolite/sdk": "file:../..", + "@yellow-org/sdk": "file:../..", "decimal.js": "^10.4.3", - "viem": "^2.21.54" + "viem": "^2.46.2", + "ws": "^8.18.3" }, "devDependencies": { "@types/node": "^22.10.2", + "@types/ws": "^8.5.13", "tsx": "^4.19.2", "typescript": "^5.7.2" } }, "../..": { - "name": "@layer-3/nitrolite", - "version": "1.1.0", + "name": "@yellow-org/sdk", + "version": "1.2.2", "license": "MIT", "dependencies": { "abitype": "^1.2.3", "decimal.js": "^10.4.3", + "jest-util": "^30.3.0", "viem": "^2.46.1", "zod": "^4.3.6" }, @@ -43,11 +46,12 @@ "ethers": "6.16.0", "glob": "^13.0.3", "jest": "^30.2.0", - "prettier": "3.8.1", + "prettier": "3.8.3", "rimraf": "^6.1.3", "ts-jest": "^29.1.2", "ts-node": "^10.9.2", - "typescript": "^5.3.0" + "typescript": "^6.0.3", + "ws": "8.18.3" }, "engines": { "node": ">=20.0.0" @@ -501,10 +505,6 @@ "node": ">=18" } }, - "node_modules/@nitrolite/sdk": { - "resolved": "../..", - "link": true - }, "node_modules/@noble/ciphers": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", @@ -590,6 +590,20 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@yellow-org/sdk": { + "resolved": "../..", + "link": true + }, "node_modules/abitype": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz", @@ -709,9 +723,9 @@ } }, "node_modules/ox": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/ox/-/ox-0.11.3.tgz", - "integrity": "sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw==", + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.22.tgz", + "integrity": "sha512-nb5msL8qWbPglhIfZbGJAfw3cqiJjFMiWmACt7kgyWtLib12tcctbHufMT9Hb0Lr6Pt4k9I3dbpueTpbhvbqvA==", "funding": [ { "type": "github", @@ -790,9 +804,9 @@ "license": "MIT" }, "node_modules/viem": { - "version": "2.45.1", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.45.1.tgz", - "integrity": "sha512-LN6Pp7vSfv50LgwhkfSbIXftAM5J89lP9x8TeDa8QM7o41IxlHrDh0F9X+FfnCWtsz11pEVV5sn+yBUoOHNqYA==", + "version": "2.50.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.50.4.tgz", + "integrity": "sha512-rf98F4s3Vlb+uJZEKfay3IbBw3CNCbVtx5Y3UIljlO2tSX420g/J0WQSYsjzBSasUFgxgsXabji14O9kGbiqgg==", "funding": [ { "type": "github", @@ -807,8 +821,8 @@ "@scure/bip39": "1.6.0", "abitype": "1.2.3", "isows": "1.0.7", - "ox": "0.11.3", - "ws": "8.18.3" + "ox": "0.14.22", + "ws": "8.20.1" }, "peerDependencies": { "typescript": ">=5.0.4" @@ -820,9 +834,9 @@ } }, "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/sdk/ts/examples/app_sessions/package.json b/sdk/ts/examples/app_sessions/package.json index 538731911..b7bf26d49 100644 --- a/sdk/ts/examples/app_sessions/package.json +++ b/sdk/ts/examples/app_sessions/package.json @@ -9,10 +9,12 @@ "dependencies": { "@yellow-org/sdk": "file:../..", "decimal.js": "^10.4.3", - "viem": "^2.46.2" + "viem": "^2.46.2", + "ws": "^8.18.3" }, "devDependencies": { "@types/node": "^22.10.2", + "@types/ws": "^8.5.13", "tsx": "^4.19.2", "typescript": "^5.7.2" } diff --git a/sdk/ts/examples/channel_session_key/lifecycle.ts b/sdk/ts/examples/channel_session_key/lifecycle.ts new file mode 100644 index 000000000..865137093 --- /dev/null +++ b/sdk/ts/examples/channel_session_key/lifecycle.ts @@ -0,0 +1,347 @@ +/** + * Example: Channel Session Key Lifecycle + * + * Requirements to run this example: + * + * 1. A reachable nitronode WebSocket endpoint (set via wsURL below). + * The default points at the stress environment. + * + * 2. One EVM wallet with a hex private key (replace the placeholder below). + * + * 3. Minimum off-chain (channel) balances on the node: + * - 0.00005 YUSD (one deposit + one withdraw via session key) + * - 0.00005 YELLOW (one deposit + one withdraw via session key) + * + * An open channel is NOT a hard prerequisite. If the wallet already has + * funds on the node but no acknowledged channel yet, acknowledge() is run + * first to open one. + * + * 4. chainId below must match the asset's home blockchain for the target + * nitronode deployment, and rpcURL must point at a JSON-RPC endpoint for + * that chain. Both deposit and withdraw are followed by an on-chain + * checkpoint; the example then polls getHomeChannel until the node has + * observed the checkpoint event before moving on. Without a working RPC + * these calls fail. + * + * This example demonstrates: + * 1. Open YUSD and YELLOW channels for the wallet (acknowledge) + * 2. Generate a fresh session key + * 3. Register session key v1 with both assets allowed + * 4. Deposit YUSD and YELLOW via a session-key-backed client (success) + * 5. Update session key v2 -> [YELLOW] only + * 6. Withdraw YELLOW (success); attempt YUSD withdraw via session key (expected fail) + * 7. Update session key v3 -> [YUSD] only + * 8. Withdraw YUSD (success); attempt YELLOW deposit via session key (expected fail) + * 9. Revoke session key v4 -> [] + * 10. Attempt YUSD deposit, YELLOW deposit, and channel closure via session key + * (all expected to fail) + */ + +// Node <22 does not expose a stable global WebSocket. The SDK dialer uses +// `new WebSocket(url)` directly, so we polyfill the global from the `ws` +// package before any client is constructed. +import WebSocket from 'ws'; +if (typeof (globalThis as { WebSocket?: unknown }).WebSocket === 'undefined') { + (globalThis as { WebSocket: unknown }).WebSocket = WebSocket; +} + +import Decimal from 'decimal.js'; +import { Address, Hex } from 'viem'; +import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts'; +import { Client } from '../../src/client'; +import { + createSigners, + EthereumMsgSigner, + EthereumRawSigner, + ChannelDefaultSigner, + ChannelSessionKeyStateSigner, +} from '../../src/signers'; +import { withBlockchainRPC } from '../../src/config'; +import { ChannelSessionKeyStateV1 } from '../../src/rpc/types'; +import { getChannelSessionKeyAuthMetadataHashV1 } from '../../src/core/utils'; +import { isFinal } from '../../src/core/state'; + +async function main() { + const wsURL = 'wss://nitronode-stress.yellow.org/v1/ws'; + + // Replace with your hex private key. The wallet must have minimum off-chain + // balance for YUSD and YELLOW; channels are auto-opened below if missing. + const walletPrivateKey = '0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843' as Hex; + + // chainId is the home blockchain ID used for deposit / withdraw calls. Set + // it to the asset's home chain on the target nitronode deployment. 11155111 + // is Ethereum Sepolia (the stress environment). + const chainId = 11155111n; + + // rpcURL is a JSON-RPC endpoint for chainId. Replace with your own provider + // if the public endpoint is rate-limited. + const rpcURL = 'https://sepolia.drpc.org'; + + // --- Setup wallet signers + wallet-backed SDK client --- + const walletSigners = createSigners(walletPrivateKey); + const walletAddress = walletSigners.stateSigner.getAddress(); + console.log(`Wallet: ${walletAddress}\n`); + + const walletClient = await Client.create( + wsURL, + walletSigners.stateSigner, + walletSigners.txSigner, + withBlockchainRPC(chainId, rpcURL) + ); + + try { + // --- Step 1: ensure YUSD and YELLOW channels are open --- + console.log('=== Step 1: Ensuring channels are open ==='); + await ensureChannelOpen(walletClient, 'yusd'); + await ensureChannelOpen(walletClient, 'yellow'); + console.log(); + + // --- Step 2: generate a fresh session key --- + console.log('=== Step 2: Generating session key ==='); + const sessionKeyPrivateKey = generatePrivateKey(); + const sessionKeyAccount = privateKeyToAccount(sessionKeyPrivateKey); + const sessionKeyAddress = sessionKeyAccount.address; + const sessionKeyMsgSigner = new EthereumMsgSigner(sessionKeyPrivateKey); + console.log(`Session key: ${sessionKeyAddress}\n`); + + // --- Step 3: register session key v1 with both assets allowed --- + console.log('=== Step 3: Registering session key v1 ([yusd, yellow]) ==='); + const stateV1 = await submitSessionKey(walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 1n, ['yusd', 'yellow']); + console.log('✓ v1 registered\n'); + + // --- Step 4: deposit YUSD and YELLOW via session-key client --- + console.log('=== Step 4: Depositing via session-key client (v1) ==='); + const skClient1 = await newSessionKeyClient(wsURL, walletPrivateKey, sessionKeyPrivateKey, stateV1, chainId, rpcURL); + try { + const yusdDeposit = await skClient1.deposit(chainId, 'yusd', new Decimal(0.00001)); + console.log('✓ YUSD deposited via session key'); + await checkpointAndWait(skClient1, 'yusd', yusdDeposit.version); + + const yellowDeposit = await skClient1.deposit(chainId, 'yellow', new Decimal(0.00001)); + console.log('✓ YELLOW deposited via session key'); + await checkpointAndWait(skClient1, 'yellow', yellowDeposit.version); + } finally { + await skClient1.close(); + } + console.log(); + + // --- Step 5: update session key v2 -> [yellow] --- + console.log('=== Step 5: Updating session key v2 ([yellow]) ==='); + const stateV2 = await submitSessionKey(walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 2n, ['yellow']); + const skClient2 = await newSessionKeyClient(wsURL, walletPrivateKey, sessionKeyPrivateKey, stateV2, chainId, rpcURL); + console.log('✓ v2 registered\n'); + + try { + // --- Step 6: withdraw YELLOW (ok); attempt YUSD withdraw (fail) --- + console.log('=== Step 6: Withdraw via v2 (yellow only) ==='); + const yellowWithdraw = await skClient2.withdraw(chainId, 'yellow', new Decimal(0.000005)); + console.log('✓ YELLOW withdrawn via session key'); + await checkpointAndWait(skClient2, 'yellow', yellowWithdraw.version); + + try { + await skClient2.withdraw(chainId, 'yusd', new Decimal(0.000005)); + console.log('✗ Unexpected: YUSD withdraw succeeded under v2'); + } catch (err) { + console.log(`✓ Expected: YUSD withdraw rejected by node: ${err}`); + } + } finally { + await skClient2.close(); + } + console.log(); + + // --- Step 7: update session key v3 -> [yusd] --- + console.log('=== Step 7: Updating session key v3 ([yusd]) ==='); + const stateV3 = await submitSessionKey(walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 3n, ['yusd']); + const skClient3 = await newSessionKeyClient(wsURL, walletPrivateKey, sessionKeyPrivateKey, stateV3, chainId, rpcURL); + console.log('✓ v3 registered\n'); + + try { + // --- Step 8: withdraw YUSD (ok); attempt YELLOW deposit (fail) --- + console.log('=== Step 8: Withdraw via v3 (yusd only) ==='); + const yusdWithdraw = await skClient3.withdraw(chainId, 'yusd', new Decimal(0.000005)); + console.log('✓ YUSD withdrawn via session key'); + await checkpointAndWait(skClient3, 'yusd', yusdWithdraw.version); + + try { + await skClient3.deposit(chainId, 'yellow', new Decimal(0.000005)); + console.log('✗ Unexpected: YELLOW deposit succeeded under v3'); + } catch (err) { + console.log(`✓ Expected: YELLOW deposit rejected by node: ${err}`); + } + } finally { + await skClient3.close(); + } + console.log(); + + // --- Step 9: revoke session key v4 -> [] --- + // Empty assets disables every per-asset check on the node, so the next + // version of the key cannot authorize any channel operation. + console.log('=== Step 9: Revoking session key v4 (empty assets) ==='); + const stateV4 = await submitSessionKey(walletClient, walletAddress, sessionKeyAddress, sessionKeyMsgSigner, 4n, []); + const skClient4 = await newSessionKeyClient(wsURL, walletPrivateKey, sessionKeyPrivateKey, stateV4, chainId, rpcURL); + console.log('✓ v4 registered (revoked)\n'); + + try { + // --- Step 10: every session-key operation must fail --- + console.log('=== Step 10: Verifying revoked session key cannot operate ==='); + try { + await skClient4.deposit(chainId, 'yusd', new Decimal(0.000005)); + console.log('✗ Unexpected: YUSD deposit succeeded under v4'); + } catch (err) { + console.log(`✓ Expected: YUSD deposit rejected by node: ${err}`); + } + try { + await skClient4.deposit(chainId, 'yellow', new Decimal(0.000005)); + console.log('✗ Unexpected: YELLOW deposit succeeded under v4'); + } catch (err) { + console.log(`✓ Expected: YELLOW deposit rejected by node: ${err}`); + } + try { + await skClient4.closeHomeChannel('yusd'); + console.log('✗ Unexpected: YUSD channel close succeeded under v4'); + } catch (err) { + console.log(`✓ Expected: YUSD channel close rejected by node: ${err}`); + } + } finally { + await skClient4.close(); + } + + console.log('\n=== Example Complete ==='); + } finally { + await walletClient.close(); + } +} + +/** + * ensureChannelOpen guarantees that the wallet has an acknowledged channel + * open for asset. If the node holds no state for the wallet/asset pair, or + * the latest state is still awaiting the user's signature (or has been + * finalized), acknowledge() is invoked to create or progress the channel. + */ +async function ensureChannelOpen(client: Client, asset: string): Promise { + const wallet = client.getUserAddress(); + const state = await client.getLatestState(wallet, asset, false); + + const hasOpenChannel = + state !== null && + state.homeChannelId !== undefined && + !isFinal(state) && + !!state.userSig; + if (hasOpenChannel) { + console.log(`✓ channel already open for ${asset}`); + return; + } + + await client.acknowledge(asset); + console.log(`✓ acknowledged channel for ${asset}`); +} + +/** + * submitSessionKey signs and submits a (version, assets) update for the + * channel session key using the wallet client. Returns the registered state + * (including user_sig + session_key_sig) so the caller can derive the matching + * session-key state signer for subsequent operations. + */ +async function submitSessionKey( + walletClient: Client, + walletAddress: Address, + sessionKeyAddress: Address, + sessionKeyMsgSigner: EthereumMsgSigner, + version: bigint, + assets: string[] +): Promise { + const expiresAt = BigInt(Math.floor(Date.now() / 1000) + 24 * 60 * 60); + + const state: ChannelSessionKeyStateV1 = { + user_address: walletAddress, + session_key: sessionKeyAddress, + version: version.toString(), + assets, + expires_at: expiresAt.toString(), + user_sig: '', + session_key_sig: '', + }; + + state.user_sig = await walletClient.signChannelSessionKeyState(state); + state.session_key_sig = await walletClient.signChannelSessionKeyOwnership(state, sessionKeyMsgSigner); + + await walletClient.submitChannelSessionKeyState(state); + return state; +} + +/** + * newSessionKeyClient builds an SDK client whose state signer is the channel + * session key derived from the registered state. All channel state operations + * (deposit, withdraw, closeHomeChannel, …) issued through this client are + * signed with the session key, and the node validates them against the latest + * registered (user, session_key, version) tuple — including the asset + * allow-list and expiry. + * + * walletPrivateKey must remain the wallet's key for the txSigner: the SDK + * uses txSigner to sign on-chain checkpoint transactions, and ChannelHub will + * only accept calls from the channel's user. Substituting the session key + * here would either point the client at the wrong on-chain identity or fail + * tx-level auth. + */ +async function newSessionKeyClient( + wsURL: string, + walletPrivateKey: Hex, + sessionKeyPrivateKey: Hex, + state: ChannelSessionKeyStateV1, + chainId: bigint, + rpcURL: string +): Promise { + const walletAddress = privateKeyToAccount(walletPrivateKey).address; + + const metadataHash = getChannelSessionKeyAuthMetadataHashV1( + walletAddress, + BigInt(state.version), + state.assets, + BigInt(state.expires_at) + ); + + // user_sig is stripped of any ChannelSigner type-byte prefix by + // Client.signChannelSessionKeyState before submission, so the value we have + // here is already the raw EIP-191 signature expected by the signer. + const stateSigner = new ChannelSessionKeyStateSigner( + sessionKeyPrivateKey, + walletAddress, + metadataHash, + state.user_sig as Hex + ); + + const txSigner = new EthereumRawSigner(walletPrivateKey); + + return await Client.create(wsURL, stateSigner, txSigner, withBlockchainRPC(chainId, rpcURL)); +} + +/** + * checkpointAndWait runs checkpoint() for asset and polls getHomeChannel + * until the node's observed on-chain state_version catches up to + * expectedVersion. Without this barrier the next deposit/withdraw can race + * the node's event ingestion and be rejected with "home deposit is still + * ongoing". + */ +async function checkpointAndWait(client: Client, asset: string, expectedVersion: bigint): Promise { + const txHash = await client.checkpoint(asset); + console.log(` ↳ checkpoint ${asset} tx ${txHash} submitted; waiting for node to observe state_version=${expectedVersion}...`); + + const wallet = client.getUserAddress(); + const deadline = Date.now() + 2 * 60 * 1000; + while (true) { + const channel = await client.getHomeChannel(wallet, asset); + if (channel !== null && channel.stateVersion >= expectedVersion) { + console.log(` ↳ node observed state_version=${channel.stateVersion} for ${asset}`); + return; + } + if (Date.now() > deadline) { + throw new Error(`timed out waiting for ${asset} to reach state_version=${expectedVersion}`); + } + await new Promise((resolve) => setTimeout(resolve, 2000)); + } +} + +main().catch((error) => { + console.error('Fatal error:', error); + process.exit(1); +}); diff --git a/sdk/ts/examples/channel_session_key/package-lock.json b/sdk/ts/examples/channel_session_key/package-lock.json new file mode 100644 index 000000000..0b69e8f84 --- /dev/null +++ b/sdk/ts/examples/channel_session_key/package-lock.json @@ -0,0 +1,834 @@ +{ + "name": "@yellow-org/example-channel-session-key", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@yellow-org/example-channel-session-key", + "version": "1.0.0", + "dependencies": { + "@yellow-org/sdk": "file:../..", + "decimal.js": "^10.4.3", + "viem": "^2.46.2", + "ws": "^8.18.3" + }, + "devDependencies": { + "@types/node": "^22.10.2", + "@types/ws": "^8.5.13", + "tsx": "^4.19.2", + "typescript": "^5.7.2" + } + }, + "../..": { + "name": "@yellow-org/sdk", + "version": "1.2.2", + "license": "MIT", + "dependencies": { + "abitype": "^1.2.3", + "decimal.js": "^10.4.3", + "jest-util": "^30.3.0", + "viem": "^2.46.1", + "zod": "^4.3.6" + }, + "devDependencies": { + "@ethereumjs/blockchain": "^10.0.0", + "@ethereumjs/common": "^10.0.0", + "@ethereumjs/evm": "^10.0.0", + "@ethereumjs/statemanager": "^10.0.0", + "@ethereumjs/util": "^10.0.0", + "@ethereumjs/vm": "^10.0.0", + "@types/jest": "30.0.0", + "@types/node": "^25.2.3", + "@typescript-eslint/eslint-plugin": "^8.55.0", + "@typescript-eslint/parser": "^8.55.0", + "eslint": "^10.0.0", + "ethers": "6.16.0", + "glob": "^13.0.3", + "jest": "^30.2.0", + "prettier": "3.8.3", + "rimraf": "^6.1.3", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "typescript": "^6.0.3", + "ws": "8.18.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", + "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", + "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", + "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", + "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", + "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", + "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", + "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", + "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", + "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", + "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", + "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", + "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", + "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", + "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", + "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", + "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", + "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", + "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", + "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", + "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", + "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", + "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", + "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", + "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", + "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", + "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", + "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@types/node": { + "version": "22.19.19", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.19.tgz", + "integrity": "sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@yellow-org/sdk": { + "resolved": "../..", + "link": true + }, + "node_modules/abitype": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.2.3.tgz", + "integrity": "sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", + "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.0", + "@esbuild/android-arm": "0.28.0", + "@esbuild/android-arm64": "0.28.0", + "@esbuild/android-x64": "0.28.0", + "@esbuild/darwin-arm64": "0.28.0", + "@esbuild/darwin-x64": "0.28.0", + "@esbuild/freebsd-arm64": "0.28.0", + "@esbuild/freebsd-x64": "0.28.0", + "@esbuild/linux-arm": "0.28.0", + "@esbuild/linux-arm64": "0.28.0", + "@esbuild/linux-ia32": "0.28.0", + "@esbuild/linux-loong64": "0.28.0", + "@esbuild/linux-mips64el": "0.28.0", + "@esbuild/linux-ppc64": "0.28.0", + "@esbuild/linux-riscv64": "0.28.0", + "@esbuild/linux-s390x": "0.28.0", + "@esbuild/linux-x64": "0.28.0", + "@esbuild/netbsd-arm64": "0.28.0", + "@esbuild/netbsd-x64": "0.28.0", + "@esbuild/openbsd-arm64": "0.28.0", + "@esbuild/openbsd-x64": "0.28.0", + "@esbuild/openharmony-arm64": "0.28.0", + "@esbuild/sunos-x64": "0.28.0", + "@esbuild/win32-arm64": "0.28.0", + "@esbuild/win32-ia32": "0.28.0", + "@esbuild/win32-x64": "0.28.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/ox": { + "version": "0.14.22", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.14.22.tgz", + "integrity": "sha512-nb5msL8qWbPglhIfZbGJAfw3cqiJjFMiWmACt7kgyWtLib12tcctbHufMT9Hb0Lr6Pt4k9I3dbpueTpbhvbqvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.2.3", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsx": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.22.3.tgz", + "integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.28.0" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/viem": { + "version": "2.50.4", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.50.4.tgz", + "integrity": "sha512-rf98F4s3Vlb+uJZEKfay3IbBw3CNCbVtx5Y3UIljlO2tSX420g/J0WQSYsjzBSasUFgxgsXabji14O9kGbiqgg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.2.3", + "isows": "1.0.7", + "ox": "0.14.22", + "ws": "8.20.1" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ws": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/sdk/ts/examples/channel_session_key/package.json b/sdk/ts/examples/channel_session_key/package.json new file mode 100644 index 000000000..3771618b0 --- /dev/null +++ b/sdk/ts/examples/channel_session_key/package.json @@ -0,0 +1,21 @@ +{ + "name": "@yellow-org/example-channel-session-key", + "version": "1.0.0", + "description": "Nitrolite SDK Channel Session Key Lifecycle Example", + "type": "module", + "scripts": { + "lifecycle": "tsx lifecycle.ts" + }, + "dependencies": { + "@yellow-org/sdk": "file:../..", + "decimal.js": "^10.4.3", + "viem": "^2.46.2", + "ws": "^8.18.3" + }, + "devDependencies": { + "@types/node": "^22.10.2", + "@types/ws": "^8.5.13", + "tsx": "^4.19.2", + "typescript": "^5.7.2" + } +} diff --git a/sdk/ts/examples/channel_session_key/tsconfig.json b/sdk/ts/examples/channel_session_key/tsconfig.json new file mode 100644 index 000000000..da18e0fd0 --- /dev/null +++ b/sdk/ts/examples/channel_session_key/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "bundler", + "target": "ES2022", + "lib": ["ES2022"], + "esModuleInterop": true, + "skipLibCheck": true, + "strict": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true + }, + "include": ["*.ts"], + "exclude": ["node_modules"] +} From 9bc21a501224632ca7730e795ebe9422a812dce4 Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Thu, 21 May 2026 12:09:26 +0300 Subject: [PATCH 13/18] fix(cerebro): clean up REPL exit + restore terminal modes properly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit go-prompt put the tty into raw mode and emitted bracketed-paste, alt-screen and mouse-tracking escapes that were never disabled on exit. Restoring the saved termios via term.Restore + stty sane wasn't enough — subsequent programs in the same tab inherited broken paste behaviour and an unresponsive Ctrl-C until the user opened a fresh tab. Changes: - handleExit() now also emits the matching disable sequences for bracketed paste, cursor visibility, alt screen and the four mouse modes, then wipes the leftover ghost prompt + completion-menu rows that go-prompt leaves on the screen during teardown. - SIGINT / SIGTERM / SIGHUP handler so abnormal termination (shell kill, window close) still restores the terminal. - Removed OptionShowCompletionAtStart so the completion box is not permanently visible below the prompt. - Drove "exit" through go-prompt's ExitChecker (instead of the operator closing exitCh during Execute) so go-prompt's own teardown runs before main prints the farewell. Eliminates the stray "cerebro> " line that used to appear between "Exiting..." and the session-ended log. - Reordered main: capture farewell, restore terminal, then print — so the final log lands on a clean row. Also documented in cerebro/README.md the remaining upstream go-prompt scrollback-loss bug (c-bata/go-prompt#206) that is triggered whenever the completion menu renders on macOS Terminal.app / iTerm2, and the plan to replace go-prompt with chzyer/readline or peterh/liner. Co-Authored-By: Claude Opus 4.7 (1M context) --- cerebro/README.md | 19 +++++++++++++++++ cerebro/main.go | 52 +++++++++++++++++++++++++++++++++++++++------ cerebro/operator.go | 8 +++++-- 3 files changed, 71 insertions(+), 8 deletions(-) diff --git a/cerebro/README.md b/cerebro/README.md index 72dd3094b..d76fc0da1 100644 --- a/cerebro/README.md +++ b/cerebro/README.md @@ -250,6 +250,25 @@ Uses layered architecture: - Base Client for low-level RPC access - Local SQLite for secure configuration storage +## Known issues + +- **Scrollback loss on macOS Terminal.app / iTerm2.** Cerebro uses + `github.com/c-bata/go-prompt` for the REPL. Its completion-menu renderer + reserves screen rows via `\x1bD` (Index) + `\x1bM` (Reverse Index). On + xterm-strict terminals RI pulls scrolled-out content back from the + scrollback buffer; on macOS Terminal.app and iTerm2 (default settings) RI + inserts a blank line at the top instead, permanently dropping whatever was + scrolled off. Any cerebro session that triggers a completion menu + (including typing `exit`) wipes shell history that existed before cerebro + started. Tracked upstream as + [c-bata/go-prompt#206](https://github.com/c-bata/go-prompt/issues/206) and + unresolved since 2020. + + Planned mitigation: replace `c-bata/go-prompt` with `chzyer/readline` or + `peterh/liner`. Both preserve scrollback while still providing Tab + completion; the completion glue in `operator.go` needs to be rewritten + against the new lib's hook surface. + ## License Part of the Nitrolite project. Licensed under the MIT License. diff --git a/cerebro/main.go b/cerebro/main.go index 36bb53fab..c51a70cbf 100644 --- a/cerebro/main.go +++ b/cerebro/main.go @@ -5,7 +5,10 @@ import ( "log" "os" "os/exec" + "os/signal" "path/filepath" + "strings" + "syscall" "github.com/c-bata/go-prompt" "golang.org/x/term" @@ -70,15 +73,50 @@ func main() { fmt.Printf("Config directory: %s\n", configDir) fmt.Println("\nType 'help' for available commands or 'exit' to quit") - // Terminal handling + // Terminal handling. go-prompt switches the tty into raw mode and emits + // bracketed-paste / alternate-screen / mouse-tracking escapes. Restoring + // the termios is not enough — the terminal also needs the matching + // disable sequences or the next program in the same shell tab inherits + // broken paste behaviour and an unresponsive Ctrl-C. initialState, _ := term.GetState(int(os.Stdin.Fd())) handleExit := func() { term.Restore(int(os.Stdin.Fd()), initialState) exec.Command("stty", "sane").Run() + // Disable bracketed paste, show cursor, leave alt screen, mouse off, + // then wipe any leftover completion-menu / ghost-prompt rows that + // go-prompt leaves on the screen during its teardown. + fmt.Fprint(os.Stdout, "\x1b[?2004l\x1b[?25h\x1b[?1049l\x1b[?1000l\x1b[?1002l\x1b[?1003l\x1b[?1006l") + // go-prompt leaves on the screen: the redrawn ghost prompt line + // (rendered between Executor return and ExitChecker firing) plus up + // to 6 rows reserved for the completion menu (default maxSuggestion + // = 6 in go-prompt v0.2.6). Cursor is positioned somewhere below + // them. Step cursor up enough rows to land at or above the ghost + // prompt, then erase from there down. Over-erasing into the user's + // "cerebro> exit" line is acceptable — the farewell printed below + // preserves the meaning. + fmt.Fprint(os.Stdout, "\x1b[7A\r\x1b[0J") } + // Catch SIGINT / SIGTERM / SIGHUP so abnormal termination still restores + // the terminal. The in-prompt Ctrl-C keybind below handles the normal + // "exit by Ctrl-C" path; this handler covers shell-level kills. + sigCh := make(chan os.Signal, 1) + signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP) + go func() { + <-sigCh + handleExit() + os.Exit(130) + }() + options := append(getStyleOptions(), prompt.OptionPrefix("cerebro> "), + // Make go-prompt exit its Run() loop when the user types "exit" so + // its own tty teardown runs before main prints anything below the + // prompt. Without this, exit racing with the prompt redraw leaves + // completion suggestions splattered over the final output. + prompt.OptionSetExitCheckerOnInput(func(in string, breakline bool) bool { + return breakline && strings.TrimSpace(in) == "exit" + }), prompt.OptionAddKeyBind(prompt.KeyBind{ Key: prompt.ControlC, Fn: func(_ *prompt.Buffer) { @@ -105,15 +143,19 @@ func main() { close(promptExitCh) }() + var farewell string select { case <-operator.Wait(): - log.Println("connection closed.") + farewell = "connection closed." case <-promptExitCh: - log.Println("session ended.") + farewell = "session ended." } + // Restore the terminal first so the farewell prints below any leftover + // prompt artefacts in normal mode, not interleaved with go-prompt's + // final redraw. handleExit() - log.Println("exiting...") + log.Println(farewell) } func getStyleOptions() []prompt.Option { @@ -133,7 +175,5 @@ func getStyleOptions() []prompt.Option { prompt.OptionSelectedDescriptionTextColor(prompt.White), prompt.OptionSelectedDescriptionBGColor(prompt.DarkBlue), - - prompt.OptionShowCompletionAtStart(), } } diff --git a/cerebro/operator.go b/cerebro/operator.go index bbf203f2c..e08ac0f6f 100644 --- a/cerebro/operator.go +++ b/cerebro/operator.go @@ -714,8 +714,12 @@ func (o *Operator) Execute(s string) { } case "exit": - fmt.Println("Exiting...") - close(o.exitCh) + // Actual exit is driven by go-prompt's ExitChecker on "exit" input + // (see cerebro/main.go). Closing exitCh here would race the prompt + // teardown; printing here would print before go-prompt redraws the + // next prompt line, leaving a stray "cerebro> " between the message + // and the farewell. Defer the farewell to main once the prompt has + // torn itself down. default: fmt.Printf("ERROR: Unknown command: %s (type 'help' for available commands)\n", args[0]) } From 2a27193908b193b74c4f70469bd9accdea2c06ee Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Thu, 21 May 2026 12:09:59 +0300 Subject: [PATCH 14/18] fix(sdk/ts): tear down WebSocket in Client.close() Client.close() only resolved the exit promise; it never invoked rpcClient.close(), which is what actually closes the underlying WebSocket. As a result Node processes that finished their work and called client.close() hung after they were "done" because the live WebSocket kept the event loop alive. Visible in the channel_session_key example: the script reached "=== Example Complete ===" but never returned to the shell. Awaiting this.rpcClient.close() inside Client.close() lets graceful shutdown actually terminate the transport so Node can exit naturally. Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/ts/src/client.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/ts/src/client.ts b/sdk/ts/src/client.ts index 69fbf2705..8dde67d44 100644 --- a/sdk/ts/src/client.ts +++ b/sdk/ts/src/client.ts @@ -259,6 +259,7 @@ export class Client { */ async close(): Promise { this.exitResolve?.(); + await this.rpcClient.close(); } /** From cce1dfb72e6c1f666c66596cee299c08755a306f Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Thu, 21 May 2026 12:17:45 +0300 Subject: [PATCH 15/18] fix(sdk/ts/examples): drop unused ChannelDefaultSigner import MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flagged by github-code-quality on PR #774 review. The channel_session_key lifecycle example imports ChannelSessionKeyStateSigner for the session-key client and never instantiates ChannelDefaultSigner directly — createSigners() builds the default channel signer internally. Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/ts/examples/channel_session_key/lifecycle.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/ts/examples/channel_session_key/lifecycle.ts b/sdk/ts/examples/channel_session_key/lifecycle.ts index 865137093..492130702 100644 --- a/sdk/ts/examples/channel_session_key/lifecycle.ts +++ b/sdk/ts/examples/channel_session_key/lifecycle.ts @@ -53,7 +53,6 @@ import { createSigners, EthereumMsgSigner, EthereumRawSigner, - ChannelDefaultSigner, ChannelSessionKeyStateSigner, } from '../../src/signers'; import { withBlockchainRPC } from '../../src/config'; From 25770adb17bd69060738f16f0e5f7e43002ed5e7 Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Thu, 21 May 2026 12:34:24 +0300 Subject: [PATCH 16/18] fix(cerebro): surface terminal teardown errors instead of ignoring them Project Go rule prohibits ignoring errors with `_`. `term.GetState`, `term.Restore`, and `stty sane` previously swallowed any failure, which could leave the user with a broken shell state and no clue what went wrong. Now log warnings on each failure path, and skip Restore when the initial state was never captured successfully. Flagged by CodeRabbit on PR #774. Co-Authored-By: Claude Opus 4.7 (1M context) --- cerebro/main.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/cerebro/main.go b/cerebro/main.go index c51a70cbf..1b5ea8aff 100644 --- a/cerebro/main.go +++ b/cerebro/main.go @@ -78,10 +78,19 @@ func main() { // the termios is not enough — the terminal also needs the matching // disable sequences or the next program in the same shell tab inherits // broken paste behaviour and an unresponsive Ctrl-C. - initialState, _ := term.GetState(int(os.Stdin.Fd())) + initialState, stateErr := term.GetState(int(os.Stdin.Fd())) + if stateErr != nil { + log.Printf("warning: failed to capture initial terminal state: %v", stateErr) + } handleExit := func() { - term.Restore(int(os.Stdin.Fd()), initialState) - exec.Command("stty", "sane").Run() + if stateErr == nil && initialState != nil { + if err := term.Restore(int(os.Stdin.Fd()), initialState); err != nil { + log.Printf("warning: failed to restore terminal state: %v", err) + } + } + if err := exec.Command("stty", "sane").Run(); err != nil { + log.Printf("warning: failed to run 'stty sane': %v", err) + } // Disable bracketed paste, show cursor, leave alt screen, mouse off, // then wipe any leftover completion-menu / ghost-prompt rows that // go-prompt leaves on the screen during its teardown. From 1060bd2024370a254dc43223ad5959b55018a317 Mon Sep 17 00:00:00 2001 From: Anton Filonenko Date: Thu, 21 May 2026 12:34:39 +0300 Subject: [PATCH 17/18] chore(examples): strip private keys + revert wsURL to sandbox CodeRabbit / Betterleaks flagged the committed private-key literals in all four lifecycle examples as a secret-leak vector. The keys were also the wrong default: examples should target the public sandbox endpoint, not the internal stress-test deployment. - sdk/go/examples/app_sessions/lifecycle.go - sdk/go/examples/channel_session_key/lifecycle.go - sdk/ts/examples/app_sessions/lifecycle.ts - sdk/ts/examples/channel_session_key/lifecycle.ts Each file now uses placeholder hex literals ("0x7d607..." etc.) the operator must replace before running, and wsURL points at wss://nitronode-sandbox.yellow.org/v1/ws. Co-Authored-By: Claude Opus 4.7 (1M context) --- sdk/go/examples/app_sessions/lifecycle.go | 8 ++++---- sdk/go/examples/channel_session_key/lifecycle.go | 4 ++-- sdk/ts/examples/app_sessions/lifecycle.ts | 8 ++++---- sdk/ts/examples/channel_session_key/lifecycle.ts | 4 ++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/sdk/go/examples/app_sessions/lifecycle.go b/sdk/go/examples/app_sessions/lifecycle.go index e9c0ca48a..ce7bbd661 100644 --- a/sdk/go/examples/app_sessions/lifecycle.go +++ b/sdk/go/examples/app_sessions/lifecycle.go @@ -66,13 +66,13 @@ const appRegistryDisabledMsg = "apps.v1 group is disabled" func main() { ctx := context.Background() - wsURL := "wss://nitronode-stress.yellow.org/v1/ws" + wsURL := "wss://nitronode-sandbox.yellow.org/v1/ws" // --- 0. Setup Wallets --- // Replace these strings with your actual hex private keys - wallet1PrivateKey := "0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843" - wallet2PrivateKey := "0x9b6521133af49807e72b8ecc68ef79706fe374685214130079c375810ec47fe3" - wallet3PrivateKey := "0xf636952f9d68984a78ef45ea82480723b8a2c40127111cf83d384f8dcd3b77f8" + wallet1PrivateKey := "0x7d607..." + wallet2PrivateKey := "0x9b652..." + wallet3PrivateKey := "0xf6369..." // Create raw signers from private keys wallet1RawSigner, err := sign.NewEthereumRawSigner(wallet1PrivateKey) diff --git a/sdk/go/examples/channel_session_key/lifecycle.go b/sdk/go/examples/channel_session_key/lifecycle.go index 3d2a4d074..9d51e30e5 100644 --- a/sdk/go/examples/channel_session_key/lifecycle.go +++ b/sdk/go/examples/channel_session_key/lifecycle.go @@ -54,11 +54,11 @@ import ( func main() { ctx := context.Background() - wsURL := "wss://nitronode-stress.yellow.org/v1/ws" + wsURL := "wss://nitronode-sandbox.yellow.org/v1/ws" // Replace with your hex private key. The wallet must have minimum off-chain // balance for YUSD and YELLOW; channels are auto-opened below if missing. - walletPrivateKey := "0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843" + walletPrivateKey := "0x7d607..." // chainID is the home blockchain ID used for Deposit / Withdraw calls. Set // it to the asset's home chain on the target nitronode deployment. 11155111 diff --git a/sdk/ts/examples/app_sessions/lifecycle.ts b/sdk/ts/examples/app_sessions/lifecycle.ts index 4f058cb3e..0bbbaf895 100644 --- a/sdk/ts/examples/app_sessions/lifecycle.ts +++ b/sdk/ts/examples/app_sessions/lifecycle.ts @@ -100,13 +100,13 @@ async function ensureChannelOpen(label: string, client: Client, asset: string): async function main() { // Replace with a real deployment url - const wsURL = 'wss://nitronode-stress.yellow.org/v1/ws'; + const wsURL = 'wss://nitronode-sandbox.yellow.org/v1/ws'; // --- 0. Setup Wallets --- // Replace these strings with your actual hex private keys - const wallet1PrivateKey = '0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843' as Hex; - const wallet2PrivateKey = '0x9b6521133af49807e72b8ecc68ef79706fe374685214130079c375810ec47fe3' as Hex; - const wallet3PrivateKey = '0xf636952f9d68984a78ef45ea82480723b8a2c40127111cf83d384f8dcd3b77f8' as Hex; + const wallet1PrivateKey = '0x7d607...' as Hex; + const wallet2PrivateKey = '0x9b652...' as Hex; + const wallet3PrivateKey = '0xf6369...' as Hex; // Create signers from private keys const wallet1Signers = createSigners(wallet1PrivateKey); diff --git a/sdk/ts/examples/channel_session_key/lifecycle.ts b/sdk/ts/examples/channel_session_key/lifecycle.ts index 492130702..34aa8cff2 100644 --- a/sdk/ts/examples/channel_session_key/lifecycle.ts +++ b/sdk/ts/examples/channel_session_key/lifecycle.ts @@ -61,11 +61,11 @@ import { getChannelSessionKeyAuthMetadataHashV1 } from '../../src/core/utils'; import { isFinal } from '../../src/core/state'; async function main() { - const wsURL = 'wss://nitronode-stress.yellow.org/v1/ws'; + const wsURL = 'wss://nitronode-sandbox.yellow.org/v1/ws'; // Replace with your hex private key. The wallet must have minimum off-chain // balance for YUSD and YELLOW; channels are auto-opened below if missing. - const walletPrivateKey = '0x7d6071201765d2630ca9eb83cbe3e2e2e76f9b56ea3ed13a49a00208ebcdf843' as Hex; + const walletPrivateKey = '0x7d607...' as Hex; // chainId is the home blockchain ID used for deposit / withdraw calls. Set // it to the asset's home chain on the target nitronode deployment. 11155111 From 68927b4b5d90513512472dce6f6e74d14ee805ae Mon Sep 17 00:00:00 2001 From: nksazonov Date: Thu, 21 May 2026 11:57:23 +0200 Subject: [PATCH 18/18] fix(contracts): address coderabbitai review findings --- contracts/script/DepositToNode.s.sol | 7 +++++ contracts/script/batchDepositToNode.md | 8 ++--- contracts/script/batchDepositToNode.sh | 43 +++++++++++++++++++++----- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/contracts/script/DepositToNode.s.sol b/contracts/script/DepositToNode.s.sol index f66e584dc..6db853fd7 100644 --- a/contracts/script/DepositToNode.s.sol +++ b/contracts/script/DepositToNode.s.sol @@ -7,6 +7,9 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; interface IChannelHub { + /// @notice Deposits ERC-20 tokens into the node balance on ChannelHub. + /// @param token ERC-20 token address. + /// @param amount Raw token amount in token decimals. function depositToNode(address token, uint256 amount) external payable; } @@ -33,6 +36,10 @@ contract DepositToNode is Script { * @param amount Token amount in the token's native decimals. */ function run(address hub, address token, uint256 amount) external { + require(hub != address(0), "hub=0"); + require(token != address(0), "token=0"); + require(amount > 0, "amount=0"); + console.log("=== DepositToNode ==="); console.log("Chain: ", block.chainid); console.log("Hub: ", hub); diff --git a/contracts/script/batchDepositToNode.md b/contracts/script/batchDepositToNode.md index 7bd1864f2..5dd322ceb 100644 --- a/contracts/script/batchDepositToNode.md +++ b/contracts/script/batchDepositToNode.md @@ -90,20 +90,20 @@ Anything after `--` is forwarded verbatim to every `forge script` call. A timestamped log file is written to the directory where the script is invoked: -``` +```text batchDepositToNode-20260520-143000.log ``` All `forge` and `cast` output is captured. On completion: -``` +```text === Summary === Deposited 4 tokens across 3 chains ``` On partial failure: -``` +```text === Summary === Deposited 3 tokens across 3 chains @@ -116,7 +116,7 @@ Exit code is `0` on full success, `1` if any token failed. ## How it works -``` +```text batchDepositToNode.sh ├── chain 1 (background) ──► token A: fetch decimals → approve + depositToNode → await confirm │ └──► token B: fetch decimals → approve + depositToNode → await confirm diff --git a/contracts/script/batchDepositToNode.sh b/contracts/script/batchDepositToNode.sh index db5869965..64aad64e1 100755 --- a/contracts/script/batchDepositToNode.sh +++ b/contracts/script/batchDepositToNode.sh @@ -86,11 +86,14 @@ elif $INTERACTIVE_KEY; then || openssl rand -base64 24 > "$TMPPW" read -rsp "Private key (hex, with or without 0x): " PK; echo # Import to temp keystore — key and password briefly in process args for this one call only - cast wallet import "batch-$$" \ + if ! cast wallet import "batch-$$" \ --keystore-dir "$TMPKS" \ --private-key "$PK" \ --unsafe-password "$(cat "$TMPPW")" \ - >/dev/null 2>&1 + >/dev/null 2>&1; then + echo "Error: failed to import key into temporary keystore (TMPKS=$TMPKS)" >&2 + exit 1 + fi unset PK SIGNING_ARGS=(--keystore "$TMPKS/batch-$$" --password-file "$TMPPW") fi @@ -158,7 +161,24 @@ while read -r chain; do fail_tokens="$fail_tokens $token" continue fi - raw_amount=$(awk "BEGIN { printf \"%.0f\", $human_amount * (10 ^ $decimals) }") + raw_amount=$(python3 - "$human_amount" "$decimals" <<'PY' +from decimal import Decimal, InvalidOperation +import sys +human, decimals = sys.argv[1], int(sys.argv[2]) +try: + scaled = Decimal(human) * (Decimal(10) ** decimals) +except InvalidOperation: + print("INVALID_AMOUNT", end=""); sys.exit(2) +if scaled != scaled.to_integral_value(): + print("NON_INTEGER_RAW_AMOUNT", end=""); sys.exit(3) +print(int(scaled), end="") +PY + ) || { + echo "!!! FAILED: [chain=$chain_id] invalid amount '$human_amount' for token=$token" + fail=$((fail + 1)) + fail_tokens="$fail_tokens $token" + continue + } echo ">>> [chain=$chain_id] token=$token amount=$human_amount (decimals=$decimals raw=$raw_amount)" @@ -169,19 +189,28 @@ while read -r chain; do ${SIGNING_ARGS[@]+"${SIGNING_ARGS[@]}"} \ ${FORGE_EXTRA[@]+"${FORGE_EXTRA[@]}"}; then + confirm_failed=false if ! $DRY_RUN; then broadcast="broadcast/DepositToNode.s.sol/$chain_id/run-latest.json" if [[ -f "$broadcast" ]]; then while read -r hash; do echo " awaiting $hash ..." - cast receipt --confirmations 1 "$hash" --rpc-url "$rpc" >/dev/null \ - || echo " WARNING: could not confirm $hash — tx may still land" + if ! cast receipt --confirmations 1 "$hash" --rpc-url "$rpc" >/dev/null; then + echo "!!! FAILED: could not confirm $hash" + confirm_failed=true + fi done < <(jq -r '.transactions[].hash' "$broadcast") fi fi - ok=$((ok + 1)) - echo " confirmed: [chain=$chain_id] token=$token amount=$human_amount" + if $confirm_failed; then + fail=$((fail + 1)) + fail_tokens="$fail_tokens $token" + echo "!!! FAILED: [chain=$chain_id] token=$token unconfirmed tx" + else + ok=$((ok + 1)) + echo " confirmed: [chain=$chain_id] token=$token amount=$human_amount" + fi else fail=$((fail + 1)) fail_tokens="$fail_tokens $token"