0 txs
3 calls
constructor
No constructor.
functions
getCompatibleVersions
purefunction getCompatibleVersions() pure returns (tuple[])
getSelfConsensusState
purefunction getSelfConsensusState(tuple, bytes hostConsensusStateProof) pure returns (bytes)
validateSelfClient
purefunction validateSelfClient(bytes) pure returns (bool)
connectionOpenAck
nonpayablefunction connectionOpenAck(tuple msg_)
connectionOpenConfirm
nonpayablefunction connectionOpenConfirm(tuple msg_)
connectionOpenInit
nonpayablefunction connectionOpenInit(tuple msg_) returns (string)
connectionOpenTry
nonpayablefunction connectionOpenTry(tuple msg_) returns (string)
events
GeneratedConnectionIdentifier
event GeneratedConnectionIdentifier(string connectionId)
errors
IBCClientClientNotFound
error IBCClientClientNotFound(string clientId)
IBCConnectionAlreadyConnectionExists
error IBCConnectionAlreadyConnectionExists()
IBCConnectionEmptyConnectionCounterpartyVersions
error IBCConnectionEmptyConnectionCounterpartyVersions()
IBCConnectionFailedVerifyClientConsensusState
error IBCConnectionFailedVerifyClientConsensusState(string clientId, bytes path, bytes value, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCConnectionFailedVerifyClientState
error IBCConnectionFailedVerifyClientState(string clientId, bytes path, bytes value, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCConnectionFailedVerifyConnectionState
error IBCConnectionFailedVerifyConnectionState(string clientId, bytes path, bytes value, bytes proof, (uint64 revision_number, uint64 revision_height) height)
IBCConnectionIBCVersionNotSupported
error IBCConnectionIBCVersionNotSupported()
IBCConnectionInvalidCounterpartyConnectionIdentifier
error IBCConnectionInvalidCounterpartyConnectionIdentifier(string counterpartyConnectionId)
IBCConnectionInvalidHostConsensusStateProof
error IBCConnectionInvalidHostConsensusStateProof()
IBCConnectionInvalidSelfClientState
error IBCConnectionInvalidSelfClientState()
IBCConnectionNoMatchingVersionFound
error IBCConnectionNoMatchingVersionFound()
IBCConnectionUnexpectedConnectionState
error IBCConnectionUnexpectedConnectionState(uint8 state)
IBCConnectionVersionIdentifierNotEmpty
error IBCConnectionVersionIdentifierNotEmpty()
IBCConnectionVersionsAlreadySet
error IBCConnectionVersionsAlreadySet()
IBCHostChannelCapabilityAlreadyClaimed
error IBCHostChannelCapabilityAlreadyClaimed(string portId, string channelId)
IBCHostClientTypeAlreadyExists
error IBCHostClientTypeAlreadyExists(string clientType)
IBCHostFailedAuthenticateChannelCapability
error IBCHostFailedAuthenticateChannelCapability(string portId, string channelId, address caller)
IBCHostInvalidClientType
error IBCHostInvalidClientType(string clientType)
IBCHostInvalidLightClientAddress
error IBCHostInvalidLightClientAddress(address lcAddress)
IBCHostInvalidModuleAddress
error IBCHostInvalidModuleAddress(address moduleAddress)
IBCHostInvalidPortIdentifier
error IBCHostInvalidPortIdentifier(string portId)
IBCHostModuleChannelNotFound
error IBCHostModuleChannelNotFound(string portId, string channelId)
IBCHostModuleDoesNotSupportERC165
error IBCHostModuleDoesNotSupportERC165()
IBCHostModuleDoesNotSupportIIBCModule
error IBCHostModuleDoesNotSupportIIBCModule(address module, bytes4 interfaceId)
IBCHostModuleDoesNotSupportIIBCModuleInitializer
error IBCHostModuleDoesNotSupportIIBCModuleInitializer(address module, bytes4 interfaceId)
IBCHostModuleDoesNotSupportIIBCModuleUpgrade
error IBCHostModuleDoesNotSupportIIBCModuleUpgrade(address module)
IBCHostModulePortNotFound
error IBCHostModulePortNotFound(string portId)
IBCHostPortCapabilityAlreadyClaimed
error IBCHostPortCapabilityAlreadyClaimed(string portId)
creation bytecode
0x60808060405234601557613dac908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c80633135940314610084578063314d55c31461007f5780636a728f2c1461007a5780638c145a9314610075578063c8e4bcb914610070578063d08d84231461006b5763d3c68ba014610066575f80fd5b610c66565b610c0a565b610aca565b61078d565b6105eb565b610188565b346100ff577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601606081126100ff576040136100ff5760443567ffffffffffffffff81116100ff576100e76100e16100fb923690600401610103565b90611063565b604051918291602083526020830190610131565b0390f35b5f80fd5b9181601f840112156100ff5782359167ffffffffffffffff83116100ff57602083818601950101116100ff57565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b906020610185928181520190610131565b90565b346100ff5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ff5760043567ffffffffffffffff81116100ff57806004016101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83360301126100ff576084820191610209838361109c565b15159050610239577fc1f9be8c000000000000000000000000000000000000000000000000000000005f5260045ffd5b61024660648201836110f0565b50506102596100e16101848301846110f0565b906102626121d2565b9361026c85611153565b93600285019161027d835460ff1690565b6102868161118f565b61057657604484019261029984846110f0565b36906102a49261102d565b6102ad906122e9565b506102b6611dcf565b6102c0838561109c565b36906102cb926112ca565b6102d491612382565b6102e1906001890161164c565b6102eb84846110f0565b6102f591896116d0565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055602484019261032c846117fa565b6006880190610369919067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b6103738380611804565b916003880192610383908461194b565b61038d8480611804565b80610397916110f0565b9590916103a4908661109c565b90916103af906117fa565b936103ba90876110f0565b93906103c4612422565b906103cd610fb5565b9182526103d8610fc6565b9536906103e49261102d565b85526103ee611ab2565b60208601526040850152610400610fd5565b97369061040c9261102d565b87523690610419926112ca565b602086015260016040860152606085015267ffffffffffffffff16608084015261010484019261044c60a48601846110f0565b91906104588580611804565b60208101610465916110f0565b916104703689611ad2565b94369061047c9261102d565b9136906104889261102d565b90610493938a61257c565b61049c90611bac565b6104a59061269d565b6104b260c48501836110f0565b91906104c160648701856110f0565b916104cc3688611ad2565b9436906104d89261102d565b9136906104e49261102d565b916104ef938961272c565b60e483016104fc916110f0565b913661050791611ad2565b9261051790369061014401611ad2565b9136906105239261102d565b9161052d94612802565b61053681612943565b604051806105448382610174565b037fbcf8ae1e9272e040280c9adfc8033bb831043a9959e37ef4af1f7e8ded16321b91a16040516100fb819282610174565b7fc212cede000000000000000000000000000000000000000000000000000000005f5260045ffd5b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126100ff5760043567ffffffffffffffff81116100ff57608090600401809203126100ff5790565b346100ff576105f93661059e565b61060c61060682806110f0565b90611bc7565b600281019061061c825460ff1690565b6106258161118f565b6002810361075e5761075c6107576107508661074a8761071f88610654600682015467ffffffffffffffff1690565b906106e561066287806110f0565b939061069661066f612422565b91610678610fb5565b928352610683610fc6565b9661068d87611bac565b8852369161102d565b602086015260408501526106a8610fd5565b936106b560038501611bac565b85526106c360018501611c11565b602086015260036040860152606085015267ffffffffffffffff166080840152565b61070c6106f560208801886110f0565b91906107043660408b01611ad2565b92369161102d565b9061071960048401611bac565b9261257c565b60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b806110f0565b369161102d565b612943565b005b61078a907ff318749f000000000000000000000000000000000000000000000000000000005f52611bff565b5ffd5b346100ff5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ff5760043567ffffffffffffffff81116100ff5780600401906101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82360301126100ff5761080d61060683806110f0565b600281019061081d825460ff1690565b6108268161118f565b6001810361075e5750600181019260448101926108676108636108498689611ce9565b61085d61085589611c11565b9136906111f9565b90612a99565b1590565b610aa2578160248793019461087c86856110f0565b5050610164820161088d90856110f0565b61089691611063565b9060038601906108a69086611ce9565b6108af90611d1c565b6108b890612aba565b9660068701546108cf9067ffffffffffffffff1690565b916108da87806110f0565b93906108e4612422565b906108ed610fb5565b9182526108f8610fc6565b956109028c611bac565b8752369061090f9261102d565b60208601526040850152610921610fd5565b9361092b83611bac565b8552602085019a8b5260026040860152606085015267ffffffffffffffff16608084015260e485019261096160848701896110f0565b919060648801998a610972916110f0565b9161097d3689611ad2565b9436906109899261102d565b9136906109959261102d565b906109a0938c61257c565b6109a990611bac565b6109b29061269d565b6109bf60a486018c6110f0565b926109ca908d6110f0565b916109d53687611ad2565b9436906109e19261102d565b9136906109ed9261102d565b916109f8938a61272c565b610a0560c484018a6110f0565b9136610a1091611ad2565b93610a2090369061012401611ad2565b913690610a2c9261102d565b90610a379387612802565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166003179055610a6a90856110f0565b909160040191610a79926116d0565b5190610a8491612b8a565b80610a8e916110f0565b3690610a999261102d565b61075c90612943565b7f12fe7ecb000000000000000000000000000000000000000000000000000000005f5260045ffd5b346100ff575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ff57610b00611dcf565b6040518091602082016020835281518091526040830190602060408260051b8601019301915f905b828210610b3757505050500390f35b91939092947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090820301825284516020610b7a8251604085526040850190610131565b910151916020818303910152815180825260208201906020808260051b8501019401925f5b828110610bc15750505050506020806001929601920192018594939192610b28565b9091929394602080610bfd837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe087600196030189528951610131565b9701950193929101610b9f565b346100ff5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100ff5760043567ffffffffffffffff81116100ff57610c59903690600401610103565b5050602060405160018152f35b346100ff57610c743661059e565b610c7c6121d2565b610c8581611153565b916002830192610c96845460ff1690565b610c9f8161118f565b61057657610cb8610cb361075084806110f0565b6122e9565b506020820193610cd5610ccb8685611804565b60208101906110f0565b9050610e8b57610cef610ce884806110f0565b90846116d0565b6040830190610d0b610d018386611ce9565b602081019061109c565b159050610e2257610d32610863610d20611dcf565b61085d610d2d8689611ce9565b611d1c565b610aa2576100fb9584610d88610dd493610d5d610d54600397610ddb9a611ce9565b60018901612060565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055565b610dcf610d97606083016117fa565b600687019067ffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000825416179055565b611804565b910161194b565b610de481612943565b7fbcf8ae1e9272e040280c9adfc8033bb831043a9959e37ef4af1f7e8ded16321b60405180610e138482610174565b0390a160405191829182610174565b94929061074a610e329183611ce9565b9050610e6357610dd4610ddb93600392610d886100fb98610e5e610e54611dcf565b6001890190612d6a565b610d5d565b7f9cb30f0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b610e98610ccb8685611804565b90610ece6040519283927f95a2f63100000000000000000000000000000000000000000000000000000000845260048401611eb8565b0390fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040810190811067ffffffffffffffff821117610f1b57604052565b610ed2565b60a0810190811067ffffffffffffffff821117610f1b57604052565b6060810190811067ffffffffffffffff821117610f1b57604052565b6020810190811067ffffffffffffffff821117610f1b57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610f1b57604052565b60405190610fc4602083610f74565b565b60405190610fc4606083610f74565b60405190610fc460a083610f74565b60405190610fc4604083610f74565b67ffffffffffffffff8111610f1b57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261103982610ff3565b916110476040519384610f74565b8294818452818301116100ff578281602093845f960137010152565b81156110745761018591369161102d565b7faeecec49000000000000000000000000000000000000000000000000000000005f5260045ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100ff570180359067ffffffffffffffff82116100ff57602001918160051b360383136100ff57565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100ff570180359067ffffffffffffffff82116100ff576020019181360383136100ff57565b805191908290602001825e015f815290565b60206111659160405192838092611141565b7f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb5500040879380081520301902090565b6004111561119957565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b67ffffffffffffffff8111610f1b5760051b60200190565b9080601f830112156100ff578160206101859335910161102d565b91906040838203126100ff5760405161121181610eff565b8093803567ffffffffffffffff81116100ff57836112309183016111de565b825260208101359067ffffffffffffffff82116100ff57019180601f840112156100ff57823561125f816111c6565b9361126d6040519586610f74565b81855260208086019260051b820101918383116100ff5760208201905b83821061129c57505050505060200152565b813567ffffffffffffffff81116100ff576020916112bf878480948801016111de565b81520191019061128a565b9291906112d6816111c6565b936112e46040519586610f74565b602085838152019160051b8101918383116100ff5781905b83821061130a575050505050565b813567ffffffffffffffff81116100ff5760209161132b87849387016111f9565b8152019101906112fc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b805482101561137c575f5260205f209060011b01905f90565b611336565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b90600182811c921680156113f4575b60208310146113c757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916113bc565b818110611409575050565b5f81556001016113fe565b9190601f811161142357505050565b610fc4925f5260205f20906020601f840160051c8301931061144d575b601f0160051c01906113fe565b9091508190611440565b919091825167ffffffffffffffff8111610f1b5761147f8161147984546113ad565b84611414565b6020601f82116001146114dc5781906114cd9394955f926114d1575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b9055565b015190505f8061149b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082169061150d845f5260205f2090565b915f5b8181106115665750958360019596971061152f575b505050811b019055565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690555f8080611525565b9192602060018192868b015181550194019201611510565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6115b581546113ad565b90816115bf575050565b601f82116001146115d0575f905550565b6115f0610fc492825f526001601f60205f20920160051c820191016113fe565b5f81815260208120918190559055565b90680100000000000000008111610f1b5781549181815582821061162357505050565b5f5260205f2091820191015b81811061163a575050565b806116466001926115ab565b0161162f565b805468010000000000000000811015610f1b5761166e91600182018155611363565b6116cb576001602091611682845182611457565b019101519060208251926116968484611600565b01905f5260205f205f915b8383106116ae5750505050565b60016020826116bf83945186611457565b019201920191906116a1565b611381565b90929167ffffffffffffffff8111610f1b576116f08161147984546113ad565b5f601f82116001146117475781906114cd9394955f9261173c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b013590505f8061149b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821694611778845f5260205f2090565b915f5b8781106117d057508360019596971061179857505050811b019055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f8080611525565b9092602060018192868601358155019401910161177b565b67ffffffffffffffff8116036100ff57565b35610185816117e8565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1813603018212156100ff570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156100ff570190565b919061187690806110f0565b67ffffffffffffffff8194929411610f1b576118968161147984546113ad565b5f601f82116001146118e25781906114cd9394955f9261173c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821694611913845f5260205f2090565b915f5b87811061193357508360019596971061179857505050811b019055565b90926020600181928686013581550194019101611916565b91909161195883806110f0565b67ffffffffffffffff8195929511610f1b5761197e8161197885546113ad565b85611414565b5f601f8211600114611a0157916119d3826119fa93600295610fc498995f9261173c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b84555b6119f06119e660208301836110f0565b90600187016116d0565b6040810190611837565b910161186a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821690611a32855f5260205f2090565b915f5b818110611a9a57509260029492610fc49798600193836119fa9710611a62575b505050811b0184556119d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f8080611a55565b9192602060018192868c013581550194019201611a35565b60405190611ac1602083610f74565b5f8252565b60048210156111995752565b91908260409103126100ff57604051611aea81610eff565b60208082948035611afa816117e8565b8452013591611b08836117e8565b0152565b5f9291815491611b1b836113ad565b8083529260018116908115611b705750600114611b3757505050565b5f9081526020812093945091925b838310611b56575060209250010190565b600181602092949394548385870101520191019190611b45565b905060209495507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091509291921683830152151560051b010190565b90610fc4611bc09260405193848092611b0c565b0383610f74565b60209082604051938492833781017f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb5500040879380081520301902090565b90602491600481101561119957600452565b908154611c1d816111c6565b92611c2b6040519485610f74565b81845260208401905f5260205f205f915b838310611c495750505050565b604051611c5581610eff565b604051611c6d81611c668187611b0c565b0382610f74565b8152600183018054611c7e816111c6565b91611c8c6040519384610f74565b81835260208301905f5260205f20905f905b838210611cc4575050505060019282602092836002950152815201920192019190611c3c565b600160208192604051611cdb81611c66818a611b0c565b815201930191019091611c9e565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1813603018212156100ff570190565b6101859036906111f9565b60405190611d3482610eff565b60606020838281520152565b60408051909190611d518382610f74565b60018152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110611d8757505050565b602090611d92611d27565b82828501015201611d7b565b80511561137c5760200190565b80516001101561137c5760400190565b805182101561137c5760209160051b010190565b611dd7611d40565b611ddf611d27565b506040611ea0815191611df28184610f74565b600183527f31000000000000000000000000000000000000000000000000000000000000006020840152611e85611e27612c71565b91805194611e3486610eff565b855260208501928352611e4981519182610f74565b600d81527f4f524445525f4f524445524544000000000000000000000000000000000000006020820152825190611e7f82611d9e565b52611d9e565b50611e8e612d2f565b905190611e9a82611dab565b52611dab565b50611eaa82611d9e565b52611eb481611d9e565b5090565b90601f836040947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09360208652816020870152868601375f8582860101520116010190565b919091611f0a8282611600565b5f9081526020812092805b838310611f23575050505050565b611f2d81836110f0565b9067ffffffffffffffff8211610f1b57611f5182611f4b89546113ad565b89611414565b5f90601f8311600114611fb35792611fa4836001959460209487965f9261173c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b88555b01950192019193611f15565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691611fe4895f5260205f2090565b925f5b8181106120485750936020936001969387969383889510612010575b505050811b018855611fa7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f8080612003565b91936020600181928787013581550195019201611fe7565b805468010000000000000000811015610f1b5761208291600182018155611363565b9190916116cb5761209381806110f0565b9067ffffffffffffffff8211610f1b576120b7826120b186546113ad565b86611414565b5f90601f8311600114612122579261210d83610fc49694612119946001975f9261173c5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790565b8355602081019061109c565b92909101611efd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0831691612153865f5260205f2090565b925f5b8181106121ba5750936121199360019693879383610fc49a9810612182575b505050811b018355610d01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c199101351690555f8080612175565b91936020600181928787013581550195019201612156565b6122477f74277c96171a830beeb656543654929b9b37cec88976b4c319247999515505035467ffffffffffffffff8160401c1661227361221182612e18565b6040519485917f636f6e6e656374696f6e2d0000000000000000000000000000000000000000006020840152602b830190611141565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284610f74565b67ffffffffffffffff81146122e4576fffffffffffffffff000000000000000060017fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff920160401b169116177f74277c96171a830beeb656543654929b9b37cec88976b4c319247999515505035590565b61157e565b73ffffffffffffffffffffffffffffffffffffffff60016040516020816123108187611141565b7f521e6acb905d37b69880078e1a941104ad5d8bcb8c5cf52f1d5f47d31739d500815203019020015416908115612345575090565b610ece906040519182917f8beef4740000000000000000000000000000000000000000000000000000000083526020600484018181520190610131565b9061238b611d27565b505f5b82518110156123fa576123a18184611dbb565b516123ac8382612fc5565b156123f0576020828101519101516123c391613094565b9081516123d65750506001905b0161238e565b925092505051906123e5610fe4565b918252602082015290565b50506001906123d0565b7ff5c7201c000000000000000000000000000000000000000000000000000000005f5260045ffd5b60405190612431604083610f74565b600382527f69626300000000000000000000000000000000000000000000000000000000006020830152565b908160209103126100ff575180151581036100ff5790565b9491936124d861018597956124f4956124bf61249e6124e6966101208c526101208c0190611b0c565b9260208b019067ffffffffffffffff60208092828151168552015116910152565b5f60608a01525f60808a015288820360a08a0152610131565b9086820360c0880152611b0c565b9084820360e0860152610131565b91610100818403910152610131565b6040513d5f823e3d90fd5b95949293612550610fc49561254260809561253461255e9660c08d5260c08d0190611b0c565b908b820360208d0152610131565b9089820360408b0152610131565b908782036060890152610131565b94019067ffffffffffffffff60208092828151168552015116910152565b9394929092856020866125ad612594610cb383611bac565b73ffffffffffffffffffffffffffffffffffffffff1690565b865f896126006125c56125bf8b61314e565b9861318b565b604051988997889687957ff9bb5a51000000000000000000000000000000000000000000000000000000008752600583019260048801612475565b03925af1908115612698575f91612669575b5061266157509061262f612629610ece949361314e565b9561318b565b6040519586957f9ebcb9b80000000000000000000000000000000000000000000000000000000087526004870161250e565b945050505050565b61268b915060203d602011612691575b6126838183610f74565b81019061245d565b5f612612565b503d612679565b612503565b610185600c6126dc926040519384917f636c69656e74732f00000000000000000000000000000000000000000000000060208401526028830190611141565b7f2f636c69656e74537461746500000000000000000000000000000000000000008152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec810184520182610f74565b929091938460208561274b612594604051610cb381611c668187611b0c565b855f8861278d88604051988997889687957ff9bb5a51000000000000000000000000000000000000000000000000000000008752600583019260048801612475565b03925af1908115612698575f916127e3575b506127dc5790610ece92916040519586957f622cc4a60000000000000000000000000000000000000000000000000000000087526004870161250e565b5050505050565b6127fc915060203d602011612691576126838183610f74565b5f61279f565b93949092916128579061281a612594610cb388611bac565b92876020886003810196885f8b61289e6128628c8b61285d8a612845835167ffffffffffffffff1690565b92019e8f5167ffffffffffffffff1690565b92611bac565b613269565b97604051988997889687957ff9bb5a51000000000000000000000000000000000000000000000000000000008752600583019260048801612475565b03925af1908115612698575f91612924575b5061291a5750916128e79161285d6128576128d8610ece9897965167ffffffffffffffff1690565b925167ffffffffffffffff1690565b946040519586957f66994df00000000000000000000000000000000000000000000000000000000087526004870161250e565b9650505050505050565b61293d915060203d602011612691576126838183610f74565b5f6128b0565b612a96612a69612a5c60405160208161295c8188611141565b7f9ef02a9acd7179d999aa130fa65a34ac06dd2f1bae667ae0fb55000408793800815203019020612a57612a4660066040519361299885610f20565b6040516129a981611c668185611b0c565b85526129b760018201611c11565b60208601526129d060ff60028301541660408701611ac6565b6040516129dc81610f3c565b6040516129f081611c668160038701611b0c565b8152604051612a0681611c668160048701611b0c565b6020820152604051612a1781610f58565b604051612a2b81611c668160058801611b0c565b815260408201526060860152015467ffffffffffffffff1690565b67ffffffffffffffff166080830152565b61318b565b6020815191012092613323565b5f527f1ee222554989dda120e26ecacf756fe1235cd8d726706b57517715dde4f0c90060205260405f2090565b55565b612aa39082612fc5565b91909115612ab45761018591613336565b50505f90565b90612ac3611d40565b9182511561137c57602083015281511561137c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b80548015612b85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b3b8282611363565b6116cb5780612b4b6001926115ab565b018054905f815581612b5c57505055565b5f5260205f20908101905b818110612b7357505055565b80612b7f6001926115ab565b01612b67565b612ad9565b9081519181548084145f14612bd157505f5b838110612ba95750505050565b80612bcb612bb960019385611dbb565b51612bc48387611363565b5090613497565b01612b9c565b80841115612c2f575f5b818110612c0e57505b838110612bf15750505050565b80612c08612c0160019385611dbb565b518561164c565b01612be4565b80612c29612c1e60019386611dbb565b51612bc48388611363565b01612bdb565b92905f5b828110612c5b5750505b828110612c4957505050565b600190612c5583612b06565b01612c3d565b80612c6b612c1e60019385611dbb565b01612c33565b60405160609190612c828382610f74565b60028152917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001825f5b828110612cb857505050565b806060602080938501015201612cac565b90612cd3826111c6565b612ce06040519182610f74565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612d0e82946111c6565b01905f5b828110612d1e57505050565b806060602080938501015201612d12565b60405190612d3e604083610f74565b600f82527f4f524445525f554e4f52444552454400000000000000000000000000000000006020830152565b9190918254612da1575f5b8151811015612d9b5780612d95612d8e60019385611dbb565b518661164c565b01612d75565b50509050565b7fd599a6d3000000000000000000000000000000000000000000000000000000005f5260045ffd5b90612dd382610ff3565b612de06040519182610f74565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0612e0e8294610ff3565b0190602036910137565b805f917a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000821015612f9d575b806d04ee2d6d415b85acef8100000000600a921015612f81575b662386f26fc10000811015612f6c575b6305f5e100811015612f5a575b612710811015612f4a575b6064811015612f3b575b1015612f30575b612efa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6021612ec460018601612dc9565b948501015b01917f3031323334353637383961626364656600000000000000000000000000000000600a82061a8353600a900490565b8015612f2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612efa9192612ec9565b505090565b600190910190612e92565b60029060649004930192612e8b565b6004906127109004930192612e81565b6008906305f5e1009004930192612e76565b601090662386f26fc100009004930192612e69565b6020906d04ee2d6d415b85acef81000000009004930192612e59565b50604091507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008104612e3f565b612fcd611d27565b915f925b815184101561305e5750612fe58382611dbb565b5192835160405161302a81612ffe602082018095611141565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610f74565b519020835160405161304481612ffe602082018095611141565b519020146130555760010192612fd1565b50505090600190565b92505050905f90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146122e45760010190565b9190916130a18151612cc9565b905f905f5b8151811015613105576130c3866130bd8385611dbb565b51613594565b6130d0575b6001016130a6565b916130fd6001916130e18585611dbb565b516130ec8288611dbb565b526130f78187611dbb565b50613067565b9290506130c8565b50509091925061311481612cc9565b915f5b8281106131245750505090565b8061313160019284611dbb565b5161313c8287611dbb565b526131478186611dbb565b5001613117565b610185612ffe916040519283917f636f6e6e656374696f6e732f00000000000000000000000000000000000000006020840152602c830190611141565b9061319f61319a8351516137d5565b6135ce565b60208301915f915b835180518410156131e4576001916131d661319a6131d16131cb886131dc96611dbb565b516137ea565b6137d5565b906135f8565b9201916131a7565b5061325d919493506132649250613238613225613258926131d661319a61322061321a60408b01516132158161118f565b613851565b60030b90565b6138ad565b6131d661319a6131d160608901516138d2565b6131d661319a613253608088015167ffffffffffffffff1690565b6138bf565b612dc9565b809261367a565b815290565b612ffe6132cf9360016132f961329667ffffffffffffffff61328f816101859916612e18565b9416612e18565b9260116040519889977f636c69656e74732f00000000000000000000000000000000000000000000000060208a01526028890190611141565b7f2f636f6e73656e7375735374617465732f00000000000000000000000000000081520190611141565b7f2d0000000000000000000000000000000000000000000000000000000000000081520190611141565b61332c9061314e565b6020815191012090565b90805160405161334e81612ffe602082018095611141565b519020825160405161336881612ffe602082018095611141565b51902003612ab4576020019081515115612ab4575f5b825180518210156133b857610863613399836133a593611dbb565b51602085015190613594565b6133b15760010161337e565b5050505f90565b50505050600190565b805482101561137c575f5260205f2001905f90565b91906116cb57610fc491611457565b80548015612b85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019061341a82826133c1565b6116cb5761342881546113ad565b908161343357505055565b601f8211600114613445575f90555055565b6115f0612a9692825f526001601f60205f20920160051c820191016113fe565b805468010000000000000000811015610f1b57613487916001820181556133c1565b9190916116cb57610fc491611457565b6020906134a5815184611457565b01600181515192019081548084145f146134f157505f5b8381106134c95750505050565b806134eb6134da6001938551611dbb565b516134e583876133c1565b906133d6565b016134bc565b80841115613551575f5b81811061352f57505b8381106135115750505050565b806135296135226001938551611dbb565b5185613465565b01613504565b8061354b6135406001938651611dbb565b516134e583886133c1565b016134fb565b92905f5b82811061357d5750505b82811061356b57505050565b600190613577836133e5565b0161355f565b8061358e6135406001938551611dbb565b01613555565b602081519101205f5b82518110156133b157816135b18285611dbb565b5160208151910120146135c65760010161359d565b505050600190565b60010190816001116122e457565b60200190816020116122e457565b90602082018092116122e457565b919082018092116122e457565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082019182116122e457565b60200390602082116122e457565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82019182116122e457565b919082039182116122e457565b9060208251516137b3575b60208301805151613767575b50918160806136da6136cb610185966020966040870180516136b28161118f565b6136bb8161118f565b61373a575b506131d69082613b80565b6131d684826060880151613a47565b920167ffffffffffffffff6136f7825167ffffffffffffffff1690565b16613704575b505061366d565b816131d69161371d856131d661372e9661373398613b8d565b9384915167ffffffffffffffff1690565b613a32565b5f806136fd565b816131d691613753856131d661372e9661376098613b73565b938491516132158161118f565b845f6136c0565b90935f945b8251518610156137a75761379f613789826131d687600195613b66565b6131d686826137998b8951611dbb565b5161393c565b95019461376c565b90945090506020613691565b6137c4816131d6846137d094613b2b565b6131d683828651613be6565b613685565b6137de81613af3565b81018091116122e45790565b6137f58151516137d5565b600101806001116122e457915f925b6020830151805185101561384a5761381f8561382692611dbb565b51516137d5565b806001016001116122e4576001908201018091116122e45760019390930192613804565b5092509050565b61385a8161118f565b80156138a8576138698161118f565b600181146138a25761387a8161118f565b6002811461389c578061388e60039261118f565b14613897575f80fd5b600390565b50600290565b50600190565b505f90565b5f8160070b125f146138bf5750600a90565b67ffffffffffffffff6101859116613af3565b6138dd8151516137d5565b908160010191826001116122e4576138f96020830151516137d5565b90816001016001116122e4570190600282018093116122e4576131d16040613922920151613b12565b90816001016001116122e457016003019081106122e45790565b909161394a613258836137ea565b91602090805151613a06575b6020018051516139b2575b5061399c6139a861018595946139ad9461397d6139a295613605565b94859261399461398e848b87613bb6565b8a6135f8565b9586916135ea565b926135f8565b90613c3e565b6135f8565b61366d565b92949091935f925b8451518410156139f5576139ed6139d7826131d68a600195613b66565b6131d689826139e7898b51611dbb565b51613be6565b9301926139ba565b91959094909350915061399c613961565b90506020613a2a613a1e613a1986613b9a565b6135dc565b6131d686828651613be6565b919050613956565b9067ffffffffffffffff610185939216613bb6565b91613a54613258846138d2565b906020845151613acc575b6139a8836139a29361397d613aa360406131d66139ad998c613a9961399c9a6101859f60200184815151613aa8575b6131d6915082613ba9565b9384910151613cc9565b613605565b80613abd846131d66131d694613ac597613b66565b809351613be6565b5f84613a8e565b50613ad9613a1983613b9a565b613ae583828751613be6565b81018091116122e457613a5f565b60019060071c805b613b03575090565b60019091019060071c80613afb565b613b1d9051516137d5565b600101806001116122e45790565b5f9291600a9101815b60071c918215613b5a576001918291608017815301930190607f81169093909193613b34565b90600193949250530190565b5f92918391016012613b5a565b5f92918391016018613b5a565b5f92918391016022613b5a565b5f92918391016028613b5a565b5f91908290602001600a613b5a565b5f9291839101601a613b5a565b5f9392607f821692019060071c918215613b5a576001918291608017815301930190607f81169093909193613b34565b908151916020613bf7858486613bb6565b94855f9401019101905b838310613c18575050905081018091116122e45790565b600180809284515f1a815301920192019190613c01565b601f81116122e4576101000a90565b90918015613cc4575b60208111613c7657613c63613c5e613c6892613632565b613c2f565b613640565b905182518216911916179052565b909182518152602081018091116122e45791602081018091116122e457907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810190811115613c475761157e565b505050565b613cd561325882613b12565b90602090805151613d46575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019081116122e457613d17848483613bb6565b8301918284116122e457613d2a906135ea565b918085018095116122e4576139a882610185966139ad95613c3e565b90613d5083613b9a565b808201928383116122e4578484613d679251613be6565b01018091116122e4575f613ce156fea264697066735822122057172b05b1d9916b7f6cb72baff9954902dcc0a86f7199e9cf1803b1ce93b42264736f6c634300081c0033