{"abi":[{"type":"constructor","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"fieldLayout","type":"bytes32","internalType":"FieldLayout"},{"name":"keySchema","type":"bytes32","internalType":"Schema"},{"name":"valueSchema","type":"bytes32","internalType":"Schema"},{"name":"keyNames","type":"string[]","internalType":"string[]"},{"name":"fieldNames","type":"string[]","internalType":"string[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"_tableId","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"onAfterDeleteRecord","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"fieldLayout","type":"bytes32","internalType":"FieldLayout"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onAfterSetRecord","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"staticData","type":"bytes","internalType":"bytes"},{"name":"encodedLengths","type":"bytes32","internalType":"EncodedLengths"},{"name":"dynamicData","type":"bytes","internalType":"bytes"},{"name":"fieldLayout","type":"bytes32","internalType":"FieldLayout"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onAfterSpliceDynamicData","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"dynamicFieldIndex","type":"uint8","internalType":"uint8"},{"name":"startWithinField","type":"uint40","internalType":"uint40"},{"name":"deleteCount","type":"uint40","internalType":"uint40"},{"name":"encodedLengths","type":"bytes32","internalType":"EncodedLengths"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onAfterSpliceStaticData","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"start","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onBeforeDeleteRecord","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"","type":"bytes32","internalType":"FieldLayout"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onBeforeSetRecord","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"staticData","type":"bytes","internalType":"bytes"},{"name":"encodedLengths","type":"bytes32","internalType":"EncodedLengths"},{"name":"dynamicData","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes32","internalType":"FieldLayout"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onBeforeSpliceDynamicData","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"dynamicFieldIndex","type":"uint8","internalType":"uint8"},{"name":"startWithinField","type":"uint40","internalType":"uint40"},{"name":"deleteCount","type":"uint40","internalType":"uint40"},{"name":"","type":"bytes32","internalType":"EncodedLengths"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"onBeforeSpliceStaticData","inputs":[{"name":"tableId","type":"bytes32","internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","internalType":"bytes32[]"},{"name":"start","type":"uint48","internalType":"uint48"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"event","name":"Store_DeleteRecord","inputs":[{"name":"tableId","type":"bytes32","indexed":true,"internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"}],"anonymous":false},{"type":"event","name":"Store_SetRecord","inputs":[{"name":"tableId","type":"bytes32","indexed":true,"internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"},{"name":"staticData","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"encodedLengths","type":"bytes32","indexed":false,"internalType":"EncodedLengths"},{"name":"dynamicData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Store_SpliceDynamicData","inputs":[{"name":"tableId","type":"bytes32","indexed":true,"internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"},{"name":"dynamicFieldIndex","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"start","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"deleteCount","type":"uint40","indexed":false,"internalType":"uint40"},{"name":"encodedLengths","type":"bytes32","indexed":false,"internalType":"EncodedLengths"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Store_SpliceStaticData","inputs":[{"name":"tableId","type":"bytes32","indexed":true,"internalType":"ResourceId"},{"name":"keyTuple","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"},{"name":"start","type":"uint48","indexed":false,"internalType":"uint48"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"error","name":"EncodedLengths_InvalidLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Slice_OutOfBounds","inputs":[{"name":"data","type":"bytes","internalType":"bytes"},{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"StoreHook_NotImplemented","inputs":[]},{"type":"error","name":"Store_IndexOutOfBounds","inputs":[{"name":"length","type":"uint256","internalType":"uint256"},{"name":"accessedIndex","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Store_InvalidResourceType","inputs":[{"name":"expected","type":"bytes2","internalType":"bytes2"},{"name":"resourceId","type":"bytes32","internalType":"ResourceId"},{"name":"resourceIdString","type":"string","internalType":"string"}]},{"type":"error","name":"Store_InvalidSplice","inputs":[{"name":"startWithinField","type":"uint40","internalType":"uint40"},{"name":"deleteCount","type":"uint40","internalType":"uint40"},{"name":"fieldLength","type":"uint40","internalType":"uint40"}]}],"bytecode":{"object":"0x608060405234801562000010575f80fd5b50604051620028fc380380620028fc833981016040819052620000339162000253565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201526634b73232bc32b960c91b60308201523391630ba51f4991016040516020818303038152906040526200008490620002de565b87878787876040518763ffffffff1660e01b8152600401620000ac9695949392919062000377565b5f604051808303815f87803b158015620000c4575f80fd5b505af1158015620000d7573d5f803e3d5ffd5b5050505f9690965550620003b7945050505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156200012b576200012b620000ec565b604052919050565b5f5b838110156200014f57818101518382015260200162000135565b50505f910152565b5f601f83601f84011262000169575f80fd5b825160206001600160401b0380831115620001885762000188620000ec565b8260051b6200019983820162000100565b9384528681018301938381019089861115620001b3575f80fd5b84890192505b858310156200024657825184811115620001d1575f80fd5b8901603f81018b13620001e2575f80fd5b85810151604086821115620001fb57620001fb620000ec565b6200020e828b01601f1916890162000100565b8281528d8284860101111562000222575f80fd5b62000233838a830184870162000133565b85525050509184019190840190620001b9565b9998505050505050505050565b5f805f805f8060c0878903121562000269575f80fd5b86516020880151604089015160608a015160808b0151939950919750955093506001600160401b03808211156200029e575f80fd5b620002ac8a838b0162000157565b935060a0890151915080821115620002c2575f80fd5b50620002d189828a0162000157565b9150509295509295509295565b80516020808301519190811015620002ff575f198160200360031b1b821691505b50919050565b5f82825180855260208086019550808260051b8401018186015f5b848110156200036a57601f1980878503018a52825180518086526200034b8188880189850162000133565b9a86019a601f0190911693909301840192509083019060010162000320565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201525f620003a360c083018562000305565b82810360a084015262000246818562000305565b61253780620003c55f395ff3fe608060405234801561000f575f80fd5b50600436106100b9575f3560e01c80636358453311610072578063964f667d11610058578063964f667d146101525780639faeaf4514610165578063a8ba872114610178575f80fd5b8063635845331461013657806383b5c95b14610144575f80fd5b806355eb5a28116100a257806355eb5a28146100fb57806357066c9c146101105780635b28cdaf14610123575f80fd5b806301ffc9a7146100bd57806317c9a24c146100e5575b5f80fd5b6100d06100cb366004611cda565b610186565b60405190151581526020015b60405180910390f35b6100ed5f5481565b6040519081526020016100dc565b61010e610109366004611e5b565b61021e565b005b61010e61011e366004611f07565b6102e7565b61010e610131366004611f07565b6103a9565b61010e610131366004611e5b565b61010e610131366004611fa4565b61010e610160366004611ff0565b6103db565b61010e610173366004611fa4565b61049a565b61010e610131366004611ff0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1873396a00000000000000000000000000000000000000000000000000000000148061021857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f5487146102735760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964207461626c654964000000000000000000000000000000000060448201526064015b60405180910390fd5b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e64657865720000000000000000000000000000000000000000000000000060308201526102de91016040516020818303038152906040526102d490612077565b8787878786610556565b50505050505050565b5f5486146103375760405162461bcd60e51b815260206004820152600d60248201527f696e76616c6964207461626c6500000000000000000000000000000000000000604482015260640161026a565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e64657865720000000000000000000000000000000000000000000000000060308201526103a1910160405160208183030381529060405261039890612077565b86868686610623565b505050505050565b6040517fcfd7320c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54841461042b5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964207461626c6549640000000000000000000000000000000000604482015260640161026a565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e6465786572000000000000000000000000000000000000000000000000006030820152610494910160405160208183030381529060405261048c90612077565b8484846106ec565b50505050565b5f5483146104ea5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964207461626c6549640000000000000000000000000000000000604482015260640161026a565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e6465786572000000000000000000000000000000000000000000000000006030820152610551910160405160208183030381529060405261054b90612077565b836107b2565b505050565b5f61055f610861565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105915761058c8787878787876108ac565b6102de565b6040517fc0a2895a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c0a2895a906105ed908a908a908a908a908a908a9060040161211a565b5f604051808303815f87803b158015610604575f80fd5b505af1158015610616573d5f803e3d5ffd5b5050505050505050505050565b5f61062c610861565b90503073ffffffffffffffffffffffffffffffffffffffff82160361065d5761065886868686866108c4565b6103a1565b6040517f298314fb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063298314fb906106b7908990899089908990899060040161216f565b5f604051808303815f87803b1580156106ce575f80fd5b505af11580156106e0573d5f803e3d5ffd5b50505050505050505050565b5f6106f5610861565b90503073ffffffffffffffffffffffffffffffffffffffff82160361072557610720858585856108da565b6107ab565b6040517fb047c1eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063b047c1eb9061077d9088908890889088906004016121bf565b5f604051808303815f87803b158015610794575f80fd5b505af11580156107a6573d5f803e3d5ffd5b505050505b5050505050565b5f6107bb610861565b90503073ffffffffffffffffffffffffffffffffffffffff8216036107e4576105518383610b65565b6040517f505a181d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063505a181d9061083890869086906004016121f7565b5f604051808303815f87803b15801561084f575f80fd5b505af11580156102de573d5f803e3d5ffd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175545f9073ffffffffffffffffffffffffffffffffffffffff16806108a7573391505090565b919050565b6103a18686868686866108bf8d8d610b7c565b610b95565b6107ab85858585856108d58b610f9e565b611021565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361096457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516109579392919061220f565b60405180910390a2610494565b5f61096f8585611343565b90505f61097b86611398565b90505f5b8151811015610a49575f82828151811061099b5761099b61224b565b602002602001015190506109c76004826affffffffffffffffffffff191661142590919063ffffffff16565b15610a40576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610a12908b908b908b908b906004016121bf565b5f604051808303815f87803b158015610a29575f80fd5b505af1158015610a3b573d5f803e3d5ffd5b505050505b5060010161097f565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610a7e9392919061220f565b60405180910390a2610a99828565ffffffffffff1685611442565b5f5b81518110156102de575f828281518110610ab757610ab761224b565b60200260200101519050610ae36008826affffffffffffffffffffff191661142590919063ffffffff16565b15610b5c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610b2e908b908b908b908b906004016121bf565b5f604051808303815f87803b158015610b45575f80fd5b505af1158015610b57573d5f803e3d5ffd5b505050505b50600101610a9b565b610b788282610b7385610f9e565b611458565b5050565b5f610b8e610b8a8484611744565b5490565b9392505050565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614610c1f57613a3160f11b8788604051602001610bdd91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261026a93929160040161225f565b5f610c39828760ff166028026038011c64ffffffffff1690565b90505f83518564ffffffffff1683610c5191906122bc565b610c5b91906122cf565b9050808214158015610c7d575081610c7386886122e2565b64ffffffffff1614155b15610ccd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff808816600483015280871660248301528316604482015260640161026a565b818664ffffffffff161115610d1e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff8716602482015260440161026a565b5f610d2a848984611799565b90505f610d368b611398565b90505f5b8151811015610e07575f828281518110610d5657610d5661224b565b60200260200101519050610d826010826affffffffffffffffffffff191661142590919063ffffffff16565b15610dfe57606081901c73ffffffffffffffffffffffffffffffffffffffff166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401610dd09796959493929190612307565b5f604051808303815f87803b158015610de7575f80fd5b505af1158015610df9573d5f803e3d5ffd5b505050505b50600101610d3a565b5064ffffffffff88165f5b8a60ff168160ff161015610e4557610e39878260ff166028026038011c64ffffffffff1690565b90910190600101610e12565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d604051610e8096959493929190612364565b60405180910390a250828414610ea0575f610e9b8c8c611744565b839055505b5f610eac8c8c8c611866565b9050610ec0818a64ffffffffff1689611442565b505f5b8151811015610f90575f828281518110610edf57610edf61224b565b60200260200101519050610f0b6020826affffffffffffffffffffff191661142590919063ffffffff16565b15610f8757606081901c73ffffffffffffffffffffffffffffffffffffffff1663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401610f599796959493929190612307565b5f604051808303815f87803b158015610f70575f80fd5b505af1158015610f82573d5f803e3d5ffd5b505050505b50600101610ec3565b505050505050505050505050565b5f7f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201610fec57507e60030220202000000000000000000000000000000000000000000000000000919050565b6102186110197f746273746f72650000000000000000005461626c657300000000000000000000846118e4565b60205f6118ff565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036110ad57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516110a094939291906123b2565b60405180910390a26103a1565b5f6110b787611398565b90505f5b8151811015611189575f8282815181106110d7576110d761224b565b602002602001015190506111036001826affffffffffffffffffffff191661142590919063ffffffff16565b15611180576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611152908c908c908c908c908c908c906004016123f0565b5f604051808303815f87803b158015611169575f80fd5b505af115801561117b573d5f803e3d5ffd5b505050505b506001016110bb565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516111c094939291906123b2565b60405180910390a25f6111d38888611343565b90505f6020870190506111e9825f895184611950565b5f6111f385611a0b565b1115611273575f6112048a8a611744565b87815590506020860191505f805f5b61121c88611a0b565b8160ff16101561126e576112318d8d83611866565b925061124c8a8260ff166028026038011c64ffffffffff1690565b915061125a835f8488611950565b61126482866122cf565b9450600101611213565b505050505b5f5b83518110156106e0575f8482815181106112915761129161224b565b602002602001015190506112bd6002826affffffffffffffffffffff191661142590919063ffffffff16565b1561133a576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061130c908e908e908e908e908e908e906004016123f0565b5f604051808303815f87803b158015611323575f80fd5b505af1158015611335573d5f803e3d5ffd5b505050505b50600101611275565b5f8282604051602001611357929190612448565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106113d0576113d061224b565b60209081029190910101525f6114077f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611a47565b905061141d611418825f8451611a80565b611b0c565b949350505050565b5f8160ff16826114358560581c90565b1660ff1614905092915050565b610551838383516114538560200190565b611950565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff00000000000000000000000000000000000000000000000000000000000016036114de57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516114d19190612482565b60405180910390a2505050565b5f6114e884611398565b90505f5b81518110156115b4575f8282815181106115085761150861224b565b602002602001015190506115346040826affffffffffffffffffffff191661142590919063ffffffff16565b156115ab576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf459061157d90899089908990600401612494565b5f604051808303815f87803b158015611594575f80fd5b505af11580156115a6573d5f803e3d5ffd5b505050505b506001016114ec565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516115e59190612482565b60405180910390a25f6115f88585611343565b9050611650815f61160886611b1b565b67ffffffffffffffff81111561162057611620611d19565b6040519080825280601f01601f19166020018201604052801561164a576020820181803683370190505b50611442565b5f61165a84611a0b565b111561167a575f61166b8686611744565b9050611678816020611b3d565b505b5f5b82518110156103a1575f8382815181106116985761169861224b565b602002602001015190506116c46080826affffffffffffffffffffff191661142590919063ffffffff16565b1561173b576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061170d908a908a908a90600401612494565b5f604051808303815f87803b158015611724575f80fd5b505af1158015611736573d5f803e3d5ffd5b505050505b5060010161167c565b5f8282604051602001611758929190612448565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b5f64ffffffffff8211156117dc576040517f7149a3c10000000000000000000000000000000000000000000000000000000081526004810183905260240161026a565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061180e5780850382019150611816565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b5f838360405160200161187a929190612448565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b60408051602081018490529081018290525f90606001611357565b5f6020821061192457602082048401935060208281611920576119206124bc565b0691505b508254600882021b602082900380841115611948576001850154600882021c821791505b509392505050565b82156119c8576020831061197a57602083048401935060208381611976576119766124bc565b0692505b82156119c85760208390035f5f19600885021c1990506008850281811c91508351811c90508119875416828216178755508184116119b9575050610494565b50600194909401939182900391015b5b602082106119ea5780518455600190930192601f19909101906020016119c9565b8115610494575f5f19600884021c8554835182191691161785555050505050565b5f6008600180611a1d600260206122bc565b611a2791906122bc565b611a3191906122bc565b611a3b91906124d0565b8260ff911c1692915050565b606061141d611a57858585611866565b5f611a7b85611a668989610b7c565b9060ff166028026038011c64ffffffffff1690565b611b78565b5f81831180611a8f5750835182115b15611acc578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161026a939291906124e7565b60208401611ada84826122cf565b90505f611ae785856122bc565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60605f610b8e8360155f611b9b565b5f6008611b2a600260206122bc565b611b3491906124d0565b9190911c919050565b5f6020611b4b83601f6122cf565b611b55919061250b565b611b5f90846122cf565b90505b80831015610551575f8355600183019250611b62565b60405160208101601f19603f848401011660405282825261194885858584611c13565b60605f611ba88560801c90565b90506fffffffffffffffffffffffffffffffff85165f858281611bcd57611bcd6124bc565b0490506040519350602084016020820281016040528185525f5b82811015611c07578451871c825293870193602090910190600101611be7565b50505050509392505050565b8215611c975760208310611c3d57602083048401935060208381611c3957611c396124bc565b0692505b8215611c975760208390035f81841015611c5e57505f19600884021c611c67565b505f19600882021c5b8554600886021b818451168219821617845250818411611c88575050610494565b50600194909401939182900391015b5b60208210611cb95783548152600190930192601f1990910190602001611c98565b8115610494575f5f19600884021c8251865482191691161782525050505050565b5f60208284031215611cea575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b8e575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d5657611d56611d19565b604052919050565b5f82601f830112611d6d575f80fd5b8135602067ffffffffffffffff821115611d8957611d89611d19565b8160051b611d98828201611d2d565b9283528481018201928281019087851115611db1575f80fd5b83870192505b84831015611dd057823582529183019190830190611db7565b979650505050505050565b803564ffffffffff811681146108a7575f80fd5b5f82601f830112611dfe575f80fd5b813567ffffffffffffffff811115611e1857611e18611d19565b611e2b6020601f19601f84011601611d2d565b818152846020838601011115611e3f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a031215611e71575f80fd5b87359650602088013567ffffffffffffffff80821115611e8f575f80fd5b611e9b8b838c01611d5e565b975060408a0135915060ff82168214611eb2575f80fd5b819650611ec160608b01611ddb565b9550611ecf60808b01611ddb565b945060a08a0135935060c08a0135915080821115611eeb575f80fd5b50611ef88a828b01611def565b91505092959891949750929550565b5f805f805f8060c08789031215611f1c575f80fd5b86359550602087013567ffffffffffffffff80821115611f3a575f80fd5b611f468a838b01611d5e565b96506040890135915080821115611f5b575f80fd5b611f678a838b01611def565b9550606089013594506080890135915080821115611f83575f80fd5b50611f9089828a01611def565b92505060a087013590509295509295509295565b5f805f60608486031215611fb6575f80fd5b83359250602084013567ffffffffffffffff811115611fd3575f80fd5b611fdf86828701611d5e565b925050604084013590509250925092565b5f805f8060808587031215612003575f80fd5b84359350602085013567ffffffffffffffff80821115612021575f80fd5b61202d88838901611d5e565b94506040870135915065ffffffffffff82168214612049575f80fd5b9092506060860135908082111561205e575f80fd5b5061206b87828801611def565b91505092959194509250565b80516020808301519190811015612097575f198160200360031b1b821691505b50919050565b5f815180845260208085019450602084015f5b838110156120cc578151875295820195908201906001016120b0565b509495945050505050565b5f81518084525f5b818110156120fb576020818501810151868301820152016120df565b505f602082860101526020601f19601f83011685010191505092915050565b86815260c060208201525f61213260c083018861209d565b60ff8716604084015264ffffffffff86811660608501528516608084015282810360a084015261216281856120d7565b9998505050505050505050565b85815260a060208201525f61218760a083018761209d565b828103604084015261219981876120d7565b905084606084015282810360808401526121b381856120d7565b98975050505050505050565b848152608060208201525f6121d7608083018661209d565b65ffffffffffff851660408401528281036060840152611dd081856120d7565b828152604060208201525f61141d604083018461209d565b606081525f612221606083018661209d565b65ffffffffffff85166020840152828103604084015261224181856120d7565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201525f61229f60608301846120d7565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610218576102186122a8565b80820180821115610218576102186122a8565b64ffffffffff818116838216019080821115612300576123006122a8565b5092915050565b87815260e060208201525f61231f60e083018961209d565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261235681856120d7565b9a9950505050505050505050565b60c081525f61237660c083018961209d565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a084015261216281856120d7565b608081525f6123c4608083018761209d565b82810360208401526123d681876120d7565b90508460408401528281036060840152611dd081856120d7565b86815260c060208201525f61240860c083018861209d565b828103604084015261241a81886120d7565b9050856060840152828103608084015261243481866120d7565b9150508260a0830152979650505050505050565b8281525f60208083018451602086015f5b8281101561247557815184529284019290840190600101612459565b5091979650505050505050565b602081525f610b8e602083018461209d565b838152606060208201525f6124ac606083018561209d565b9050826040830152949350505050565b634e487b7160e01b5f52601260045260245ffd5b8082028115828204841417610218576102186122a8565b606081525f6124f960608301866120d7565b60208301949094525060400152919050565b5f8261252557634e487b7160e01b5f52601260045260245ffd5b50049056fea164736f6c6343000818000a","sourceMap":"623:1789:72:-:0;;;694:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;546:71;;;-1:-1:-1;;;546:71:72;;;3196:41:103;-1:-1:-1;;;3253:11:103;;;3246:58;-1:-1:-1;;;3320:12:103;;;3313:59;884:10:72;;877:32;;3388:12:103;546:71:72;;;;;;;;;;;;538:80;;;:::i;:::-;926:11;939:9;950:11;963:8;973:10;877:107;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;990:8:72;:37;;;;-1:-1:-1;623:1789:72;;-1:-1:-1;;;;;623:1789:72;14:127:103;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:103;247:40;;-1:-1:-1;;;;;302:34:103;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:103:o;426:250::-;511:1;521:113;535:6;532:1;529:13;521:113;;;611:11;;;605:18;592:11;;;585:39;557:2;550:10;521:113;;;-1:-1:-1;;668:1:103;650:16;;643:27;426:250::o;681:1322::-;745:5;775:4;821:3;814:4;806:6;802:17;798:27;788:55;;839:1;836;829:12;788:55;862:13;;894:4;-1:-1:-1;;;;;947:10:103;;;944:36;;;960:18;;:::i;:::-;1006:2;1003:1;999:10;1029:28;1053:2;1049;1045:11;1029:28;:::i;:::-;1091:15;;;1161;;;1157:24;;;1122:12;;;;1193:15;;;1190:35;;;1221:1;1218;1211:12;1190:35;1257:2;1249:6;1245:15;1234:26;;1269:705;1285:6;1280:3;1277:15;1269:705;;;1364:3;1358:10;1400:2;1387:11;1384:19;1381:39;;;1416:1;1413;1406:12;1381:39;1443:24;;1502:2;1494:11;;1490:21;-1:-1:-1;1480:49:103;;1525:1;1522;1515:12;1480:49;1566:2;1562;1558:11;1552:18;1593:2;1618;1614;1611:10;1608:36;;;1624:18;;:::i;:::-;1672:51;1696:11;;;-1:-1:-1;;1692:25:103;1688:34;;1672:51;:::i;:::-;1752:2;1743:7;1736:19;1796:3;1791:2;1786;1782;1778:11;1774:20;1771:29;1768:49;;;1813:1;1810;1803:12;1768:49;1830:69;1896:2;1891;1882:7;1878:16;1873:2;1869;1865:11;1830:69;:::i;:::-;1912:20;;-1:-1:-1;;;1302:12:103;;;;1952;;;;1269:705;;;1992:5;681:1322;-1:-1:-1;;;;;;;;;681:1322:103:o;2008:1000::-;2314:6;2322;2330;2338;2346;2354;2407:3;2395:9;2386:7;2382:23;2378:33;2375:53;;;2424:1;2421;2414:12;2375:53;2447:16;;2503:2;2488:18;;2482:25;2547:2;2532:18;;2526:25;2591:2;2576:18;;2570:25;2639:3;2624:19;;2618:26;2447:16;;-1:-1:-1;2482:25:103;;-1:-1:-1;2526:25:103;-1:-1:-1;2570:25:103;-1:-1:-1;;;;;;2693:14:103;;;2690:34;;;2720:1;2717;2710:12;2690:34;2743:71;2806:7;2797:6;2786:9;2782:22;2743:71;:::i;:::-;2733:81;;2860:3;2849:9;2845:19;2839:26;2823:42;;2890:2;2880:8;2877:16;2874:36;;;2906:1;2903;2896:12;2874:36;;2929:73;2994:7;2983:8;2972:9;2968:24;2929:73;:::i;:::-;2919:83;;;2008:1000;;;;;;;;:::o;3411:297::-;3529:12;;3576:4;3565:16;;;3559:23;;3529:12;3594:16;;3591:111;;;3688:1;3684:6;3674;3668:4;3664:17;3661:1;3657:25;3653:38;3646:5;3642:50;3633:59;;3591:111;;3411:297;;;:::o;3713:819::-;3765:3;3796;3828:5;3822:12;3855:6;3850:3;3843:19;3881:4;3910:2;3905:3;3901:12;3894:19;;3966:2;3956:6;3953:1;3949:14;3942:5;3938:26;3934:35;4003:2;3996:5;3992:14;4024:1;4034:472;4048:6;4045:1;4042:13;4034:472;;;4111:2;4107:7;4161:2;4153:5;4147:4;4143:16;4139:25;4134:3;4127:38;4194:6;4188:13;4236:2;4230:9;4265:8;4259:4;4252:22;4287:72;4350:8;4345:2;4339:4;4335:13;4330:2;4326;4322:11;4287:72;:::i;:::-;4484:12;;;;4412:2;4398:17;4394:26;;;4384:37;;;;4380:46;;;-1:-1:-1;4449:15:103;;;;4070:1;4063:9;4034:472;;;-1:-1:-1;4522:4:103;;3713:819;-1:-1:-1;;;;;;;3713:819:103:o;4537:912::-;5067:6;5056:9;5049:25;5110:6;5105:2;5094:9;5090:18;5083:34;5153:6;5148:2;5137:9;5133:18;5126:34;5196:6;5191:2;5180:9;5176:18;5169:34;5240:3;5234;5223:9;5219:19;5212:32;5030:4;5267:56;5318:3;5307:9;5303:19;5295:6;5267:56;:::i;:::-;5372:9;5364:6;5360:22;5354:3;5343:9;5339:19;5332:51;5400:43;5436:6;5428;5400:43;:::i;4537:912::-;623:1789:72;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100b9575f3560e01c80636358453311610072578063964f667d11610058578063964f667d146101525780639faeaf4514610165578063a8ba872114610178575f80fd5b8063635845331461013657806383b5c95b14610144575f80fd5b806355eb5a28116100a257806355eb5a28146100fb57806357066c9c146101105780635b28cdaf14610123575f80fd5b806301ffc9a7146100bd57806317c9a24c146100e5575b5f80fd5b6100d06100cb366004611cda565b610186565b60405190151581526020015b60405180910390f35b6100ed5f5481565b6040519081526020016100dc565b61010e610109366004611e5b565b61021e565b005b61010e61011e366004611f07565b6102e7565b61010e610131366004611f07565b6103a9565b61010e610131366004611e5b565b61010e610131366004611fa4565b61010e610160366004611ff0565b6103db565b61010e610173366004611fa4565b61049a565b61010e610131366004611ff0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1873396a00000000000000000000000000000000000000000000000000000000148061021857507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f5487146102735760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964207461626c654964000000000000000000000000000000000060448201526064015b60405180910390fd5b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e64657865720000000000000000000000000000000000000000000000000060308201526102de91016040516020818303038152906040526102d490612077565b8787878786610556565b50505050505050565b5f5486146103375760405162461bcd60e51b815260206004820152600d60248201527f696e76616c6964207461626c6500000000000000000000000000000000000000604482015260640161026a565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e64657865720000000000000000000000000000000000000000000000000060308201526103a1910160405160208183030381529060405261039890612077565b86868686610623565b505050505050565b6040517fcfd7320c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f54841461042b5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964207461626c6549640000000000000000000000000000000000604482015260640161026a565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e6465786572000000000000000000000000000000000000000000000000006030820152610494910160405160208183030381529060405261048c90612077565b8484846106ec565b50505050565b5f5483146104ea5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964207461626c6549640000000000000000000000000000000000604482015260640161026a565b60408051613a3160f11b60208201526536b4b93937b960d11b60228201527f696e6465786572000000000000000000000000000000000000000000000000006030820152610551910160405160208183030381529060405261054b90612077565b836107b2565b505050565b5f61055f610861565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105915761058c8787878787876108ac565b6102de565b6040517fc0a2895a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063c0a2895a906105ed908a908a908a908a908a908a9060040161211a565b5f604051808303815f87803b158015610604575f80fd5b505af1158015610616573d5f803e3d5ffd5b5050505050505050505050565b5f61062c610861565b90503073ffffffffffffffffffffffffffffffffffffffff82160361065d5761065886868686866108c4565b6103a1565b6040517f298314fb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063298314fb906106b7908990899089908990899060040161216f565b5f604051808303815f87803b1580156106ce575f80fd5b505af11580156106e0573d5f803e3d5ffd5b50505050505050505050565b5f6106f5610861565b90503073ffffffffffffffffffffffffffffffffffffffff82160361072557610720858585856108da565b6107ab565b6040517fb047c1eb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063b047c1eb9061077d9088908890889088906004016121bf565b5f604051808303815f87803b158015610794575f80fd5b505af11580156107a6573d5f803e3d5ffd5b505050505b5050505050565b5f6107bb610861565b90503073ffffffffffffffffffffffffffffffffffffffff8216036107e4576105518383610b65565b6040517f505a181d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063505a181d9061083890869086906004016121f7565b5f604051808303815f87803b15801561084f575f80fd5b505af11580156102de573d5f803e3d5ffd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175545f9073ffffffffffffffffffffffffffffffffffffffff16806108a7573391505090565b919050565b6103a18686868686866108bf8d8d610b7c565b610b95565b6107ab85858585856108d58b610f9e565b611021565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361096457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516109579392919061220f565b60405180910390a2610494565b5f61096f8585611343565b90505f61097b86611398565b90505f5b8151811015610a49575f82828151811061099b5761099b61224b565b602002602001015190506109c76004826affffffffffffffffffffff191661142590919063ffffffff16565b15610a40576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610a12908b908b908b908b906004016121bf565b5f604051808303815f87803b158015610a29575f80fd5b505af1158015610a3b573d5f803e3d5ffd5b505050505b5060010161097f565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610a7e9392919061220f565b60405180910390a2610a99828565ffffffffffff1685611442565b5f5b81518110156102de575f828281518110610ab757610ab761224b565b60200260200101519050610ae36008826affffffffffffffffffffff191661142590919063ffffffff16565b15610b5c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610b2e908b908b908b908b906004016121bf565b5f604051808303815f87803b158015610b45575f80fd5b505af1158015610b57573d5f803e3d5ffd5b505050505b50600101610a9b565b610b788282610b7385610f9e565b611458565b5050565b5f610b8e610b8a8484611744565b5490565b9392505050565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614610c1f57613a3160f11b8788604051602001610bdd91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261026a93929160040161225f565b5f610c39828760ff166028026038011c64ffffffffff1690565b90505f83518564ffffffffff1683610c5191906122bc565b610c5b91906122cf565b9050808214158015610c7d575081610c7386886122e2565b64ffffffffff1614155b15610ccd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff808816600483015280871660248301528316604482015260640161026a565b818664ffffffffff161115610d1e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff8716602482015260440161026a565b5f610d2a848984611799565b90505f610d368b611398565b90505f5b8151811015610e07575f828281518110610d5657610d5661224b565b60200260200101519050610d826010826affffffffffffffffffffff191661142590919063ffffffff16565b15610dfe57606081901c73ffffffffffffffffffffffffffffffffffffffff166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401610dd09796959493929190612307565b5f604051808303815f87803b158015610de7575f80fd5b505af1158015610df9573d5f803e3d5ffd5b505050505b50600101610d3a565b5064ffffffffff88165f5b8a60ff168160ff161015610e4557610e39878260ff166028026038011c64ffffffffff1690565b90910190600101610e12565b508b7ffe158a7adba34e256807c8a149028d3162918713c3838afc643ce9f96716ebfd8c8c848c888d604051610e8096959493929190612364565b60405180910390a250828414610ea0575f610e9b8c8c611744565b839055505b5f610eac8c8c8c611866565b9050610ec0818a64ffffffffff1689611442565b505f5b8151811015610f90575f828281518110610edf57610edf61224b565b60200260200101519050610f0b6020826affffffffffffffffffffff191661142590919063ffffffff16565b15610f8757606081901c73ffffffffffffffffffffffffffffffffffffffff1663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401610f599796959493929190612307565b5f604051808303815f87803b158015610f70575f80fd5b505af1158015610f82573d5f803e3d5ffd5b505050505b50600101610ec3565b505050505050505050505050565b5f7f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201610fec57507e60030220202000000000000000000000000000000000000000000000000000919050565b6102186110197f746273746f72650000000000000000005461626c657300000000000000000000846118e4565b60205f6118ff565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036110ad57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516110a094939291906123b2565b60405180910390a26103a1565b5f6110b787611398565b90505f5b8151811015611189575f8282815181106110d7576110d761224b565b602002602001015190506111036001826affffffffffffffffffffff191661142590919063ffffffff16565b15611180576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611152908c908c908c908c908c908c906004016123f0565b5f604051808303815f87803b158015611169575f80fd5b505af115801561117b573d5f803e3d5ffd5b505050505b506001016110bb565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516111c094939291906123b2565b60405180910390a25f6111d38888611343565b90505f6020870190506111e9825f895184611950565b5f6111f385611a0b565b1115611273575f6112048a8a611744565b87815590506020860191505f805f5b61121c88611a0b565b8160ff16101561126e576112318d8d83611866565b925061124c8a8260ff166028026038011c64ffffffffff1690565b915061125a835f8488611950565b61126482866122cf565b9450600101611213565b505050505b5f5b83518110156106e0575f8482815181106112915761129161224b565b602002602001015190506112bd6002826affffffffffffffffffffff191661142590919063ffffffff16565b1561133a576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061130c908e908e908e908e908e908e906004016123f0565b5f604051808303815f87803b158015611323575f80fd5b505af1158015611335573d5f803e3d5ffd5b505050505b50600101611275565b5f8282604051602001611357929190612448565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f815181106113d0576113d061224b565b60209081029190910101525f6114077f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611a47565b905061141d611418825f8451611a80565b611b0c565b949350505050565b5f8160ff16826114358560581c90565b1660ff1614905092915050565b610551838383516114538560200190565b611950565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff00000000000000000000000000000000000000000000000000000000000016036114de57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516114d19190612482565b60405180910390a2505050565b5f6114e884611398565b90505f5b81518110156115b4575f8282815181106115085761150861224b565b602002602001015190506115346040826affffffffffffffffffffff191661142590919063ffffffff16565b156115ab576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf459061157d90899089908990600401612494565b5f604051808303815f87803b158015611594575f80fd5b505af11580156115a6573d5f803e3d5ffd5b505050505b506001016114ec565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07846040516115e59190612482565b60405180910390a25f6115f88585611343565b9050611650815f61160886611b1b565b67ffffffffffffffff81111561162057611620611d19565b6040519080825280601f01601f19166020018201604052801561164a576020820181803683370190505b50611442565b5f61165a84611a0b565b111561167a575f61166b8686611744565b9050611678816020611b3d565b505b5f5b82518110156103a1575f8382815181106116985761169861224b565b602002602001015190506116c46080826affffffffffffffffffffff191661142590919063ffffffff16565b1561173b576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061170d908a908a908a90600401612494565b5f604051808303815f87803b158015611724575f80fd5b505af1158015611736573d5f803e3d5ffd5b505050505b5060010161167c565b5f8282604051602001611758929190612448565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b5f64ffffffffff8211156117dc576040517f7149a3c10000000000000000000000000000000000000000000000000000000081526004810183905260240161026a565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061180e5780850382019150611816565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b5f838360405160200161187a929190612448565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f118185f1c90509392505050565b60408051602081018490529081018290525f90606001611357565b5f6020821061192457602082048401935060208281611920576119206124bc565b0691505b508254600882021b602082900380841115611948576001850154600882021c821791505b509392505050565b82156119c8576020831061197a57602083048401935060208381611976576119766124bc565b0692505b82156119c85760208390035f5f19600885021c1990506008850281811c91508351811c90508119875416828216178755508184116119b9575050610494565b50600194909401939182900391015b5b602082106119ea5780518455600190930192601f19909101906020016119c9565b8115610494575f5f19600884021c8554835182191691161785555050505050565b5f6008600180611a1d600260206122bc565b611a2791906122bc565b611a3191906122bc565b611a3b91906124d0565b8260ff911c1692915050565b606061141d611a57858585611866565b5f611a7b85611a668989610b7c565b9060ff166028026038011c64ffffffffff1690565b611b78565b5f81831180611a8f5750835182115b15611acc578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161026a939291906124e7565b60208401611ada84826122cf565b90505f611ae785856122bc565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60605f610b8e8360155f611b9b565b5f6008611b2a600260206122bc565b611b3491906124d0565b9190911c919050565b5f6020611b4b83601f6122cf565b611b55919061250b565b611b5f90846122cf565b90505b80831015610551575f8355600183019250611b62565b60405160208101601f19603f848401011660405282825261194885858584611c13565b60605f611ba88560801c90565b90506fffffffffffffffffffffffffffffffff85165f858281611bcd57611bcd6124bc565b0490506040519350602084016020820281016040528185525f5b82811015611c07578451871c825293870193602090910190600101611be7565b50505050509392505050565b8215611c975760208310611c3d57602083048401935060208381611c3957611c396124bc565b0692505b8215611c975760208390035f81841015611c5e57505f19600884021c611c67565b505f19600882021c5b8554600886021b818451168219821617845250818411611c88575050610494565b50600194909401939182900391015b5b60208210611cb95783548152600190930192601f1990910190602001611c98565b8115610494575f5f19600884021c8251865482191691161782525050505050565b5f60208284031215611cea575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b8e575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d5657611d56611d19565b604052919050565b5f82601f830112611d6d575f80fd5b8135602067ffffffffffffffff821115611d8957611d89611d19565b8160051b611d98828201611d2d565b9283528481018201928281019087851115611db1575f80fd5b83870192505b84831015611dd057823582529183019190830190611db7565b979650505050505050565b803564ffffffffff811681146108a7575f80fd5b5f82601f830112611dfe575f80fd5b813567ffffffffffffffff811115611e1857611e18611d19565b611e2b6020601f19601f84011601611d2d565b818152846020838601011115611e3f575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f60e0888a031215611e71575f80fd5b87359650602088013567ffffffffffffffff80821115611e8f575f80fd5b611e9b8b838c01611d5e565b975060408a0135915060ff82168214611eb2575f80fd5b819650611ec160608b01611ddb565b9550611ecf60808b01611ddb565b945060a08a0135935060c08a0135915080821115611eeb575f80fd5b50611ef88a828b01611def565b91505092959891949750929550565b5f805f805f8060c08789031215611f1c575f80fd5b86359550602087013567ffffffffffffffff80821115611f3a575f80fd5b611f468a838b01611d5e565b96506040890135915080821115611f5b575f80fd5b611f678a838b01611def565b9550606089013594506080890135915080821115611f83575f80fd5b50611f9089828a01611def565b92505060a087013590509295509295509295565b5f805f60608486031215611fb6575f80fd5b83359250602084013567ffffffffffffffff811115611fd3575f80fd5b611fdf86828701611d5e565b925050604084013590509250925092565b5f805f8060808587031215612003575f80fd5b84359350602085013567ffffffffffffffff80821115612021575f80fd5b61202d88838901611d5e565b94506040870135915065ffffffffffff82168214612049575f80fd5b9092506060860135908082111561205e575f80fd5b5061206b87828801611def565b91505092959194509250565b80516020808301519190811015612097575f198160200360031b1b821691505b50919050565b5f815180845260208085019450602084015f5b838110156120cc578151875295820195908201906001016120b0565b509495945050505050565b5f81518084525f5b818110156120fb576020818501810151868301820152016120df565b505f602082860101526020601f19601f83011685010191505092915050565b86815260c060208201525f61213260c083018861209d565b60ff8716604084015264ffffffffff86811660608501528516608084015282810360a084015261216281856120d7565b9998505050505050505050565b85815260a060208201525f61218760a083018761209d565b828103604084015261219981876120d7565b905084606084015282810360808401526121b381856120d7565b98975050505050505050565b848152608060208201525f6121d7608083018661209d565b65ffffffffffff851660408401528281036060840152611dd081856120d7565b828152604060208201525f61141d604083018461209d565b606081525f612221606083018661209d565b65ffffffffffff85166020840152828103604084015261224181856120d7565b9695505050505050565b634e487b7160e01b5f52603260045260245ffd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201525f61229f60608301846120d7565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610218576102186122a8565b80820180821115610218576102186122a8565b64ffffffffff818116838216019080821115612300576123006122a8565b5092915050565b87815260e060208201525f61231f60e083018961209d565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261235681856120d7565b9a9950505050505050505050565b60c081525f61237660c083018961209d565b60ff8816602084015265ffffffffffff8716604084015264ffffffffff8616606084015284608084015282810360a084015261216281856120d7565b608081525f6123c4608083018761209d565b82810360208401526123d681876120d7565b90508460408401528281036060840152611dd081856120d7565b86815260c060208201525f61240860c083018861209d565b828103604084015261241a81886120d7565b9050856060840152828103608084015261243481866120d7565b9150508260a0830152979650505050505050565b8281525f60208083018451602086015f5b8281101561247557815184529284019290840190600101612459565b5091979650505050505050565b602081525f610b8e602083018461209d565b838152606060208201525f6124ac606083018561209d565b9050826040830152949350505050565b634e487b7160e01b5f52601260045260245ffd5b8082028115828204841417610218576102186122a8565b606081525f6124f960608301866120d7565b60208301949094525060400152919050565b5f8261252557634e487b7160e01b5f52601260045260245ffd5b50049056fea164736f6c6343000818000a","sourceMap":"623:1789:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;931:187:45;;;;;;:::i;:::-;;:::i;:::-;;;516:14:103;;509:22;491:41;;479:2;464:18;931:187:45;;;;;;;;666:23:72;;;;;;;;;689:25:103;;;677:2;662:18;666:23:72;543:177:103;1732:432:72;;;;;;:::i;:::-;;:::i;:::-;;1036:385;;;;;;:::i;:::-;;:::i;2478:267:45:-;;;;;;:::i;:::-;;:::i;6421:292::-;;;;;;:::i;7597:160::-;;;;;;:::i;1425:303:72:-;;;;;;:::i;:::-;;:::i;2168:242::-;;;;;;:::i;:::-;;:::i;4199:192:45:-;;;;;;:::i;931:187::-;1007:4;1026:43;;;1041:28;1026:43;;:87;;-1:-1:-1;1073:40:45;;;1088:25;1073:40;1026:87;1019:94;931:187;-1:-1:-1;;931:187:45:o;1732:432:72:-;2007:8;;1995:7;1977:38;1973:69;;2017:25;;-1:-1:-1;;;2017:25:72;;6490:2:103;2017:25:72;;;6472:21:103;6529:2;6509:18;;;6502:30;6568:17;6548:18;;;6541:45;6603:18;;2017:25:72;;;;;;;;1973:69;546:71;;;-1:-1:-1;;;546:71:72;;;6815:92:103;-1:-1:-1;;;6923:11:103;;;6916:100;598:18:72;7032:12:103;;;7025:101;2048:111:72;;7142:12:103;546:71:72;;;;;;;;;;;;538:80;;;:::i;:::-;2094:8;2104:17;2123:16;2141:11;2154:4;2048:29;:111::i;:::-;1732:432;;;;;;;:::o;1036:385::-;1289:8;;1277:7;1259:38;1255:67;;1299:23;;-1:-1:-1;;;1299:23:72;;7729:2:103;1299:23:72;;;7711:21:103;7768:2;7748:18;;;7741:30;7807:15;7787:18;;;7780:43;7840:18;;1299:23:72;7527:337:103;1255:67:72;546:71;;;-1:-1:-1;;;546:71:72;;;6815:92:103;-1:-1:-1;;;6923:11:103;;;6916:100;598:18:72;7032:12:103;;;7025:101;1328:88:72;;7142:12:103;546:71:72;;;;;;;;;;;;538:80;;;:::i;:::-;1366:8;1376:10;1388:14;1404:11;1328:21;:88::i;:::-;1036:385;;;;;;:::o;2478:267:45:-;2714:26;;;;;;;;;;;;;;1425:303:72;1615:8;;1603:7;1585:38;1581:69;;1625:25;;-1:-1:-1;;;1625:25:72;;6490:2:103;1625:25:72;;;6472:21:103;6529:2;6509:18;;;6502:30;6568:17;6548:18;;;6541:45;6603:18;;1625:25:72;6288:339:103;1581:69:72;546:71;;;-1:-1:-1;;;546:71:72;;;6815:92:103;-1:-1:-1;;;6923:11:103;;;6916:100;598:18:72;7032:12:103;;;7025:101;1656:67:72;;7142:12:103;546:71:72;;;;;;;;;;;;538:80;;;:::i;:::-;1701:8;1711:5;1718:4;1656:28;:67::i;:::-;1425:303;;;;:::o;2168:242::-;2314:8;;2302:7;2284:38;2280:69;;2324:25;;-1:-1:-1;;;2324:25:72;;6490:2:103;2324:25:72;;;6472:21:103;6529:2;6509:18;;;6502:30;6568:17;6548:18;;;6541:45;6603:18;;2324:25:72;6288:339:103;2280:69:72;546:71;;;-1:-1:-1;;;546:71:72;;;6815:92:103;-1:-1:-1;;;6923:11:103;;;6916:100;598:18:72;7032:12:103;;;7025:101;2355:50:72;;7142:12:103;546:71:72;;;;;;;;;;;;538:80;;;:::i;:::-;2396:8;2355:24;:50::i;:::-;2168:242;;;:::o;8207:601:48:-;8413:21;8437:17;:15;:17::i;:::-;8413:41;-1:-1:-1;8489:4:48;8464:30;;;;8460:344;;8504:102;8532:7;8541:8;8551:17;8570:16;8588:11;8601:4;8504:27;:102::i;:::-;8460:344;;;8627:170;;;;;:39;;;;;;:170;;8676:7;;8693:8;;8711:17;;8738:16;;8764:11;;8785:4;;8627:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8407:401;8207:601;;;;;;:::o;6458:480::-;6645:21;6669:17;:15;:17::i;:::-;6645:41;-1:-1:-1;6721:4:48;6696:30;;;;6692:242;;6736:79;6756:7;6765:8;6775:10;6787:14;6803:11;6736:19;:79::i;:::-;6692:242;;;6836:91;;;;;:31;;;;;;:91;;6868:7;;6877:8;;6887:10;;6899:14;;6915:11;;6836:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6639:299;6458:480;;;;;:::o;7297:372::-;7418:21;7442:17;:15;:17::i;:::-;7418:41;-1:-1:-1;7494:4:48;7469:30;;;;7465:200;;7509:58;7536:7;7545:8;7555:5;7562:4;7509:26;:58::i;:::-;7465:200;;;7588:70;;;;;:38;;;;;;:70;;7627:7;;7636:8;;7646:5;;7653:4;;7588:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7465:200;7412:257;7297:372;;;;:::o;13847:301::-;13931:21;13955:17;:15;:17::i;:::-;13931:41;-1:-1:-1;14007:4:48;13982:30;;;;13978:166;;14022:41;14045:7;14054:8;14022:22;:41::i;13978:166::-;14084:53;;;;;:34;;;;;;:53;;14119:7;;14128:8;;14084:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1836:227;1066:42;1925:22;1886:7;;1925:22;;;1953:106;;2001:10;1994:17;;;1836:227;:::o;1953:106::-;2039:13;1836:227;-1:-1:-1;1836:227:48:o;19594:539:44:-;19800:328;19854:7;19879:8;19914:17;19957:16;19994:11;20019:4;20055:66;20103:7;20112:8;20055:47;:66::i;:::-;19800:36;:328::i;12066:286::-;12253:94;12263:7;12272:8;12282:10;12294:14;12310:11;12323:23;12338:7;12323:14;:23::i;:::-;12253:9;:94::i;17013:1682::-;17213:23;17192:7;:44;;;17188:235;;17346:7;17299:103;17365:8;17382:5;17395:4;17299:103;;;;;;;;:::i;:::-;;;;;;;;17410:7;;17188:235;17429:16;17448:59;17489:7;17498:8;17448:40;:59::i;:::-;17429:78;;17653:22;17678:24;17694:7;17678:15;:24::i;:::-;17653:49;;17713:9;17708:328;17728:5;:12;17724:1;:16;17708:328;;;17755:9;17777:5;17783:1;17777:8;;;;;;;;:::i;:::-;;;;;;;17755:31;;17798:41;614:6:56;17798:4:44;:14;;;;;:41;;;;:::i;:::-;17794:236;;;17851:170;;;;;3536:35:24;;;;;17851:54:44;;:170;;17927:7;;17956:8;;17983:5;;18006:4;;17851:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17794:236;-1:-1:-1;17742:3:44;;17708:328;;;;18140:7;18093:103;18159:8;18176:5;18189:4;18093:103;;;;;;;;:::i;:::-;;;;;;;;18246:70;18278:8;18296:5;18246:70;;18309:4;18246:13;:70::i;:::-;18370:9;18365:326;18385:5;:12;18381:1;:16;18365:326;;;18412:9;18434:5;18440:1;18434:8;;;;;;;;:::i;:::-;;;;;;;18412:31;;18455:40;723:6:56;18455:4:44;:14;;;;;:40;;;;:::i;:::-;18451:234;;;18507:169;;;;;3536:35:24;;;;;18507:53:44;;:169;;18582:7;;18611:8;;18638:5;;18661:4;;18507:169;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18451:234;-1:-1:-1;18399:3:44;;18365:326;;25552:145;25636:56;25649:7;25658:8;25668:23;25683:7;25668:14;:23::i;:::-;25636:12;:56::i;:::-;25552:145;;:::o;53939:303::-;54060:14;54154:82;54185:48;54215:7;54224:8;54185:29;:48::i;:::-;4711:21:42;;4605:137;54154:82:44;54127:110;53939:303;-1:-1:-1;;;53939:303:44:o;44254:4001::-;-1:-1:-1;;;44652:7:44;:35;;;44648:161;;-1:-1:-1;;;44759:7:44;44792;44775:25;;;;;;12252:19:103;;12296:2;12287:12;;12091:214;44775:25:44;;;;-1:-1:-1;;44775:25:44;;;;;;;;;;44704:98;;;;;;;;;;:::i;44648:161::-;44815:27;44845:49;:22;44876:17;7070:16:22;;1063;7070;975;7059:27;7017:70;6995:94;;;6878:222;44845:49:44;44815:79;;44900:26;44965:4;:11;44951;44929:33;;:19;:33;;;;:::i;:::-;:47;;;;:::i;:::-;44900:76;;45248:18;45225:19;:41;;:98;;;;-1:-1:-1;45304:19:44;45270:30;45289:11;45270:16;:30;:::i;:::-;:53;;;;45225:98;45221:218;;;45340:92;;;;;13616:12:103;13655:15;;;45340:92:44;;;13637:34:103;13707:15;;;13687:18;;;13680:43;13759:15;;13739:18;;;13732:43;13579:18;;45340:92:44;13410:371:103;45221:218:44;45545:19;45526:16;:38;;;45522:140;;;45581:74;;;;;;;;13959:25:103;;;14032:12;14020:25;;14000:18;;;13993:53;13932:18;;45581:74:44;13786:266:103;45522:140:44;45701:36;45740:72;:22;45774:17;45793:18;45740:33;:72::i;:::-;45701:111;;45959:22;45984:24;46000:7;45984:15;:24::i;:::-;45959:49;;46019:9;46014:486;46034:5;:12;46030:1;:16;46014:486;;;46061:9;46083:5;46089:1;46083:8;;;;;;;;:::i;:::-;;;;;;;46061:31;;46104:42;836:6:56;46104:4:44;:14;;;;;:42;;;;:::i;:::-;46100:394;;;3536:35:24;;;;46158:55:44;;;46235:7;46264:8;46303:17;46350:16;46391:11;46430:22;46470:4;46158:327;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46100:394;-1:-1:-1;46048:3:44;;46014:486;;;-1:-1:-1;46558:32:44;;;:13;46698:107;46716:17;46712:21;;:1;:21;;;46698:107;;;46761:33;:22;46792:1;7070:16:22;;1063;7070;975;7059:27;7017:70;6995:94;;;6878:222;46761:33:44;46752:42;;;;46735:3;;46698:107;;;;46930:7;46874:277;46957:8;46994:17;47035:5;47064:11;47101:21;47138:4;46874:277;;;;;;;;;;;:::i;:::-;;;;;;;;46506:652;47243:18;47220:19;:41;47216:248;;47271:31;47305:48;47335:7;47344:8;47305:29;:48::i;:::-;695:28:42;;;-1:-1:-1;47216:248:44;47521:27;47551:61;47575:7;47584:8;47594:17;47551:23;:61::i;:::-;47521:91;;47620:92;47652:19;47681:16;47620:92;;47705:4;47620:13;:92::i;:::-;47513:206;47773:9;47768:483;47788:5;:12;47784:1;:16;47768:483;;;47815:9;47837:5;47843:1;47837:8;;;;;;;;:::i;:::-;;;;;;;47815:31;;47858:41;947:6:56;47858:4:44;:14;;;;;:41;;;;:::i;:::-;47854:391;;;3536:35:24;;;;47911:54:44;;;47987:7;48016:8;48055:17;48102:16;48143:11;48182:21;48221:4;47911:325;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47854:391;-1:-1:-1;47802:3:44;;47768:483;;;;44498:3757;;;;44254:4001;;;;;;;:::o;4015:652::-;4082:11;4318:64;;;4314:111;;-1:-1:-1;1336:66:53;;4015:652:44;-1:-1:-1;4015:652:44:o;4314:111::-;4469:185;4515:85;1207:66:53;4591:7:44;4515:40;:85::i;:::-;4620:2;4642:1;4469:17;:185::i;13212:3165::-;13507:23;13486:7;:44;;;13482:211;;13613:7;13584:88;13622:8;13632:10;13644:14;13660:11;13584:88;;;;;;;;;:::i;:::-;;;;;;;;13680:7;;13482:211;13831:22;13856:24;13872:7;13856:15;:24::i;:::-;13831:49;;13891:9;13886:340;13906:5;:12;13902:1;:16;13886:340;;;13933:9;13955:5;13961:1;13955:8;;;;;;;;:::i;:::-;;;;;;;13933:31;;13976:33;409:6:56;13976:4:44;:14;;;;;:33;;;;:::i;:::-;13972:248;;;14021:190;;;;;3536:35:24;;;;;14021:47:44;;:190;;14080:7;;14099:8;;14119:10;;14141:14;;14167:11;;14190;;14021:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13972:248;-1:-1:-1;13920:3:44;;13886:340;;;;14303:7;14274:88;14312:8;14322:10;14334:14;14350:11;14274:88;;;;;;;;;:::i;:::-;;;;;;;;14426:26;14455:59;14496:7;14505:8;14455:40;:59::i;:::-;14426:88;-1:-1:-1;14520:21:44;894:4:38;884:15;;14520:54:44;;14580:149;14618:18;14652:1;14669:10;:17;14709:13;14580;:149::i;:::-;14829:1;14796:30;:11;:28;:30::i;:::-;:34;14792:1174;;;14915:33;14951:66;14999:7;15008:8;14951:47;:66::i;:::-;695:28:42;;;14915:102:44;-1:-1:-1;894:4:38;884:15;;15191:47:44;;15347:27;15382:25;15420:7;15415:545;15433:30;:11;:28;:30::i;:::-;15429:1;:34;;;15415:545;;;15499:63;15541:7;15550:8;15560:1;15499:41;:63::i;:::-;15477:85;-1:-1:-1;15592:25:44;:14;15615:1;7070:16:22;;1063;7070;975;7059:27;7017:70;6995:94;;;6878:222;15592:25:44;15572:45;;15627:170;15669:19;15708:1;15729:17;15773:13;15627;:170::i;:::-;15807:34;15824:17;15807:34;;:::i;:::-;;-1:-1:-1;15938:3:44;;15415:545;;;;14832:1134;;;14792:1174;16040:9;16035:338;16055:5;:12;16051:1;:16;16035:338;;;16082:9;16104:5;16110:1;16104:8;;;;;;;;:::i;:::-;;;;;;;16082:31;;16125:32;503:6:56;16125:4:44;:14;;;;;:32;;;;:::i;:::-;16121:246;;;16169:189;;;;;3536:35:24;;;;;16169:46:44;;:189;;16227:7;;16246:8;;16266:10;;16288:14;;16314:11;;16337;;16169:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16121:246;-1:-1:-1;16069:3:44;;16035:338;;50806:191;50908:7;50972;50981:8;50955:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;50955:35:44;;;;;;;;;50945:46;;50955:35;50945:46;;;;42361:22;50938:53;;50806:191;-1:-1:-1;;;50806:191:44:o;3656:342:52:-;3772:16;;;3786:1;3772:16;;;;;;;;;3713:22;;3743:26;;3772:16;;;;;;;;;;;;-1:-1:-1;3772:16:52;3743:45;;3827:7;3794:9;3804:1;3794:12;;;;;;;;:::i;:::-;;;;;;;;;;:41;3842:18;3863:49;969:66;3899:9;3842:18;3863:25;:49::i;:::-;3842:70;;3926:66;:44;3947:5;3954:1;3957:5;:12;3926:20;:44::i;:::-;:64;:66::i;:::-;3918:75;3656:342;-1:-1:-1;;;;3656:342:52:o;3035:136:24:-;3105:4;3157:9;3124:42;;3143:9;3125:15;3135:4;3934:26;;;3804:162;3125:15;:27;3124:42;;;3117:49;;3035:136;;;;:::o;966:162:42:-;1055:68;1061:14;1077:6;1085:4;:11;1098:24;1117:4;894::38;884:15;;758:151;1098:24:42;1055:5;:68::i;26296:1804:44:-;26484:23;26463:7;:44;;;26459:173;;26593:7;26561:50;26602:8;26561:50;;;;;;:::i;:::-;;;;;;;;26296:1804;;;:::o;26459:173::-;26773:22;26798:24;26814:7;26798:15;:24::i;:::-;26773:49;;26833:9;26828:235;26848:5;:12;26844:1;:16;26828:235;;;26875:9;26897:5;26903:1;26897:8;;;;;;;;:::i;:::-;;;;;;;26875:31;;26918:36;1049:6:56;26918:4:44;:14;;;;;:36;;;;:::i;:::-;26914:143;;;26966:82;;;;;3536:35:24;;;;;26966:50:44;;:82;;27017:7;;27026:8;;27036:11;;26966:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26914:143;-1:-1:-1;26862:3:44;;26828:235;;;;27143:7;27111:50;27152:8;27111:50;;;;;;:::i;:::-;;;;;;;;27194:26;27223:59;27264:7;27273:8;27223:40;:59::i;:::-;27194:88;;27288:113;27320:18;27348:1;27367:30;:11;:28;:30::i;:::-;27357:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27357:41:44;;27288:13;:113::i;:::-;27620:1;27587:30;:11;:28;:30::i;:::-;:34;27583:236;;;27631:33;27667:66;27715:7;27724:8;27667:47;:66::i;:::-;27631:102;;27741:71;27772:25;27807:2;27741:12;:71::i;:::-;27623:196;27583:236;27868:9;27863:233;27883:5;:12;27879:1;:16;27863:233;;;27910:9;27932:5;27938:1;27932:8;;;;;;;;:::i;:::-;;;;;;;27910:31;;27953:35;1149:6:56;27953:4:44;:14;;;;;:35;;;;:::i;:::-;27949:141;;;28000:81;;;;;3536:35:24;;;;;28000:49:44;;:81;;28050:7;;28059:8;;28069:11;;28000:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27949:141;-1:-1:-1;27897:3:44;;27863:233;;53371:230;53492:7;53576;53585:8;53559:35;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;53559:35:44;;;;;;;;;53549:46;;53559:35;53549:46;;;;42524:40;53522:73;;53371:230;-1:-1:-1;;;53371:230:44:o;7468:1525:22:-;7596:14;1145:16;7622:25;;7618:120;;;7664:67;;;;;;;;689:25:103;;;662:18;;7664:67:22;543:177:103;7618:120:22;7802:14;6445:61;;;7070:16;;;1063;7070;975;7059:27;7017:70;;;6995:94;;8068:38;;;8064:192;;8151:19;8133:15;:37;8118:52;;;;8064:192;;;8232:15;8210:19;:37;8195:52;;;;8064:192;-1:-1:-1;8572:16:22;975;1063;8439;;;;8428:27;8564:35;;;8882:5;8719:26;8699:46;;;;8698:62;;;8862:25;;;;8892:34;;;;;8861:66;;-1:-1:-1;7468:1525:22;;;;;:::o;52742:274:44:-;52886:7;52991;53000:8;52974:35;;;;;;;;;:::i;:::-;;;;;;;;;;;;;52964:46;;;;;;52943:17;52936:25;;52916:45;;;42433:34;52916:45;:94;52908:103;;52901:110;;52742:274;;;;;:::o;51249:282::-;51494:30;;;;;;19110:19:103;;;19145:12;;;19138:28;;;51337:7:44;;19182:12:103;;51494:30:44;18921:279:103;8945:812:42;9043:14;9079:2;9069:6;:12;9065:112;;9138:2;9129:6;:11;9111:29;;;;9160:2;9150:12;;;;;;:::i;:::-;;;;9065:112;-1:-1:-1;9368:21:42;;9353:12;9341:25;;9337:53;9516:2;:11;;;9598:22;;;9594:159;;;9734:1;9718:14;9714:22;9708:29;9693:12;9678:13;9674:32;9670:68;9662:6;9659:80;9649:90;;9594:159;9059:698;8945:812;;;;;:::o;1489:2340::-;1602:10;;1598:1504;;1755:2;1745:6;:12;1741:122;;1818:2;1809:6;:11;1791:29;;;;1842:2;1832:12;;;;;;:::i;:::-;;;;1741:122;1953:10;;1949:1147;;2161:2;:11;;;2035:21;-1:-1:-1;;579:1:54;804:25:55;;782:48;2208:18:42;2193:33;;2395:12;2387:6;2383:25;2442:4;2431:9;2427:20;2419:28;;2497:13;2491:20;2480:9;2476:36;2458:54;;2745:4;2741:9;2724:14;2718:21;2714:37;2645:4;2633:10;2629:21;2572:193;2544:14;2524:253;;2836:13;2826:6;:23;2822:36;;2851:7;;;;2822:36;-1:-1:-1;2999:1:42;2981:19;;;;;3054:23;;;;;3012:30;1949:1147;3132:253;3149:2;3139:6;:12;3132:253;;3244:20;;3221:44;;3318:1;3300:19;;;;-1:-1:-1;;3358:12:42;;;;3346:2;3329:19;3132:253;;;3453:10;;3449:376;;3473:12;-1:-1:-1;;579:1:54;804:25:55;;782:48;3761:21:42;;3672:20;;3694:9;;3668:36;3757:32;;3617:184;3573:238;;-1:-1:-1;1489:2340:42;;;;:::o;5377:173:23:-;5451:7;579:1:54;1704;;1684:13;1696:1;376:2;1684:13;:::i;:::-;:17;;;;:::i;:::-;:21;;;;:::i;:::-;1683:38;;;;:::i;:::-;5487:11:23;5466:79;5479:65;;5466:79;;5377:173;-1:-1:-1;;5377:173:23:o;37180:522:44:-;37316:12;37440:257;37479:79;37521:7;37530:8;37540:17;37479:41;:79::i;:::-;37576:1;37595:93;37670:17;37595:66;37643:7;37652:8;37595:47;:66::i;:::-;:74;7070:16:22;;1063;7070;975;7059:27;7017:70;6995:94;;;6878:222;37595:93:44;37440:12;:257::i;2003:574:41:-;2094:5;2189:3;2181:5;:11;:32;;;;2202:4;:11;2196:3;:17;2181:32;2177:93;;;2253:4;2259:5;2266:3;2222:48;;;;;;;;;;;;;:::i;2177:93::-;2336:4;2326:15;;2383:16;2394:5;2326:15;2383:16;:::i;:::-;;-1:-1:-1;2405:12:41;2420:11;2426:5;2420:3;:11;:::i;:::-;692:17;2555:15;2547:3;2536:14;;;;2535:36;;;;;;-1:-1:-1;;;;;2003:574:41:o;40103:220:58:-;40169:24;40201:30;40234:32;40252:6;40260:2;40264:1;40234:17;:32::i;4598:171:23:-;4672:7;579:1:54;1354:13;1366:1;376:2;1354:13;:::i;:::-;1353:30;;;;:::i;:::-;4694:70:23;;;;;4598:171;-1:-1:-1;4598:171:23:o;4032:370:42:-;4154:13;4203:2;4188:11;:6;4197:2;4188:11;:::i;:::-;4187:18;;;;:::i;:::-;4170:35;;:14;:35;:::i;:::-;4154:51;;4211:187;4235:5;4218:14;:22;4211:187;;;4333:1;4317:14;4310:25;4382:1;4366:14;4362:22;4344:40;;4211:187;;5042:669;5458:4;5452:11;5499:4;5487:17;;-1:-1:-1;;5373:16:42;5546:26;;;5373:16;5369:32;5518:4;5511:63;5618:6;5610;5603:22;5636:51;5641:14;5657:6;5665;5673:13;5636:4;:51::i;2681:1129:60:-;2801:22;2831:21;2855;:11;2997:3:41;2975:25;;2901:104;2855:21:60;2831:45;-1:-1:-1;692:17:41;3238:38;;2882:20:60;3044:11;3238:38:41;3044:11:60;3029:26;;;;:::i;:::-;;3015:40;;3164:4;3158:11;3149:20;;3207:4;3200:5;3196:16;3267:4;3254:11;3250:22;3236:12;3232:41;3226:4;3219:55;3317:11;3310:5;3303:26;3360:1;3337:463;3376:11;3373:1;3370:18;3337:463;;;3770:20;;3749:42;;3728:64;;3642:31;;;;3555:4;3537:23;;;;3463:1;3456:9;3337:463;;;3341:28;;3116:690;;;2681:1129;;;;;:::o;6076:2380:42:-;6193:10;;6189:1542;;6346:2;6336:6;:12;6332:122;;6409:2;6400:6;:11;6382:29;;;;6433:2;6423:12;;;;;;:::i;:::-;;;;6332:122;6544:10;;6540:1185;;6752:2;:11;;;6626:21;6810:22;;;6806:135;;;-1:-1:-1;;;579:1:54;804:25:55;;782:48;6806:135:42;;;-1:-1:-1;;;579:1:54;804:25:55;;782:48;6806:135:42;7135:14;7129:21;7114:12;7106:6;7102:25;7098:53;7375:4;7359:13;7353:20;7349:31;7285:4;7281:9;7269:10;7265:26;7210:184;7183:13;7163:243;;7465:13;7455:6;:23;7451:36;;7480:7;;;;7451:36;-1:-1:-1;7628:1:42;7610:19;;;;;7683:23;;;;;7641:30;6540:1185;7760:253;7777:2;7767:6;:12;7760:253;;7871:21;;7849:44;;7946:1;7928:19;;;;-1:-1:-1;;7986:12:42;;;;7974:2;7957:19;7760:253;;;8081:10;;8077:375;;8101:12;-1:-1:-1;;579:1:54;804:25:55;;782:48;8389:20:42;;8299:21;;8322:9;;8295:37;8385:31;;8244:184;8201:237;;-1:-1:-1;6076:2380:42;;;;:::o;14:332:103:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;725:184;-1:-1:-1;;;774:1:103;767:88;874:4;871:1;864:15;898:4;895:1;888:15;914:334;985:2;979:9;1041:2;1031:13;;-1:-1:-1;;1027:86:103;1015:99;;1144:18;1129:34;;1165:22;;;1126:62;1123:88;;;1191:18;;:::i;:::-;1227:2;1220:22;914:334;;-1:-1:-1;914:334:103:o;1253:712::-;1307:5;1360:3;1353:4;1345:6;1341:17;1337:27;1327:55;;1378:1;1375;1368:12;1327:55;1414:6;1401:20;1440:4;1463:18;1459:2;1456:26;1453:52;;;1485:18;;:::i;:::-;1531:2;1528:1;1524:10;1554:28;1578:2;1574;1570:11;1554:28;:::i;:::-;1616:15;;;1686;;;1682:24;;;1647:12;;;;1718:15;;;1715:35;;;1746:1;1743;1736:12;1715:35;1782:2;1774:6;1770:15;1759:26;;1794:142;1810:6;1805:3;1802:15;1794:142;;;1876:17;;1864:30;;1827:12;;;;1914;;;;1794:142;;;1954:5;1253:712;-1:-1:-1;;;;;;;1253:712:103:o;1970:165::-;2037:20;;2097:12;2086:24;;2076:35;;2066:63;;2125:1;2122;2115:12;2140:589;2182:5;2235:3;2228:4;2220:6;2216:17;2212:27;2202:55;;2253:1;2250;2243:12;2202:55;2289:6;2276:20;2315:18;2311:2;2308:26;2305:52;;;2337:18;;:::i;:::-;2381:114;2489:4;-1:-1:-1;;2413:4:103;2409:2;2405:13;2401:86;2397:97;2381:114;:::i;:::-;2520:2;2511:7;2504:19;2566:3;2559:4;2554:2;2546:6;2542:15;2538:26;2535:35;2532:55;;;2583:1;2580;2573:12;2532:55;2648:2;2641:4;2633:6;2629:17;2622:4;2613:7;2609:18;2596:55;2696:1;2671:16;;;2689:4;2667:27;2660:38;;;;2675:7;2140:589;-1:-1:-1;;;2140:589:103:o;2734:1076::-;2945:6;2953;2961;2969;2977;2985;2993;3046:3;3034:9;3025:7;3021:23;3017:33;3014:53;;;3063:1;3060;3053:12;3014:53;3099:9;3086:23;3076:33;;3160:2;3149:9;3145:18;3132:32;3183:18;3224:2;3216:6;3213:14;3210:34;;;3240:1;3237;3230:12;3210:34;3263:61;3316:7;3307:6;3296:9;3292:22;3263:61;:::i;:::-;3253:71;;3374:2;3363:9;3359:18;3346:32;3333:45;;3418:4;3411:5;3407:16;3400:5;3397:27;3387:55;;3438:1;3435;3428:12;3387:55;3461:5;3451:15;;3485:37;3518:2;3507:9;3503:18;3485:37;:::i;:::-;3475:47;;3541:38;3574:3;3563:9;3559:19;3541:38;:::i;:::-;3531:48;;3626:3;3615:9;3611:19;3598:33;3588:43;;3684:3;3673:9;3669:19;3656:33;3640:49;;3714:2;3704:8;3701:16;3698:36;;;3730:1;3727;3720:12;3698:36;;3753:51;3796:7;3785:8;3774:9;3770:24;3753:51;:::i;:::-;3743:61;;;2734:1076;;;;;;;;;;:::o;3815:1073::-;4063:6;4071;4079;4087;4095;4103;4156:3;4144:9;4135:7;4131:23;4127:33;4124:53;;;4173:1;4170;4163:12;4124:53;4209:9;4196:23;4186:33;;4270:2;4259:9;4255:18;4242:32;4293:18;4334:2;4326:6;4323:14;4320:34;;;4350:1;4347;4340:12;4320:34;4373:61;4426:7;4417:6;4406:9;4402:22;4373:61;:::i;:::-;4363:71;;4487:2;4476:9;4472:18;4459:32;4443:48;;4516:2;4506:8;4503:16;4500:36;;;4532:1;4529;4522:12;4500:36;4555:51;4598:7;4587:8;4576:9;4572:24;4555:51;:::i;:::-;4545:61;;4653:2;4642:9;4638:18;4625:32;4615:42;;4710:3;4699:9;4695:19;4682:33;4666:49;;4740:2;4730:8;4727:16;4724:36;;;4756:1;4753;4746:12;4724:36;;4779:51;4822:7;4811:8;4800:9;4796:24;4779:51;:::i;:::-;4769:61;;;4877:3;4866:9;4862:19;4849:33;4839:43;;3815:1073;;;;;;;;:::o;4893:549::-;5060:6;5068;5076;5129:2;5117:9;5108:7;5104:23;5100:32;5097:52;;;5145:1;5142;5135:12;5097:52;5181:9;5168:23;5158:33;;5242:2;5231:9;5227:18;5214:32;5269:18;5261:6;5258:30;5255:50;;;5301:1;5298;5291:12;5255:50;5324:61;5377:7;5368:6;5357:9;5353:22;5324:61;:::i;:::-;5314:71;;;5432:2;5421:9;5417:18;5404:32;5394:42;;4893:549;;;;;:::o;5447:836::-;5598:6;5606;5614;5622;5675:3;5663:9;5654:7;5650:23;5646:33;5643:53;;;5692:1;5689;5682:12;5643:53;5728:9;5715:23;5705:33;;5789:2;5778:9;5774:18;5761:32;5812:18;5853:2;5845:6;5842:14;5839:34;;;5869:1;5866;5859:12;5839:34;5892:61;5945:7;5936:6;5925:9;5921:22;5892:61;:::i;:::-;5882:71;;6003:2;5992:9;5988:18;5975:32;5962:45;;6047:14;6040:5;6036:26;6029:5;6026:37;6016:65;;6077:1;6074;6067:12;6016:65;6100:5;;-1:-1:-1;6158:2:103;6143:18;;6130:32;;6174:16;;;6171:36;;;6203:1;6200;6193:12;6171:36;;6226:51;6269:7;6258:8;6247:9;6243:24;6226:51;:::i;:::-;6216:61;;;5447:836;;;;;;;:::o;7165:357::-;7283:12;;7330:4;7319:16;;;7313:23;;7283:12;7348:16;;7345:171;;;-1:-1:-1;;7428:6:103;7422:4;7418:17;7415:1;7411:25;7407:98;7400:5;7396:110;7387:119;;7345:171;;7165:357;;;:::o;7869:439::-;7922:3;7960:5;7954:12;7987:6;7982:3;7975:19;8013:4;8042;8037:3;8033:14;8026:21;;8081:4;8074:5;8070:16;8104:1;8114:169;8128:6;8125:1;8122:13;8114:169;;;8189:13;;8177:26;;8223:12;;;;8258:15;;;;8150:1;8143:9;8114:169;;;-1:-1:-1;8299:3:103;;7869:439;-1:-1:-1;;;;;7869:439:103:o;8313:481::-;8354:3;8392:5;8386:12;8419:6;8414:3;8407:19;8444:1;8454:162;8468:6;8465:1;8462:13;8454:162;;;8530:4;8586:13;;;8582:22;;8576:29;8558:11;;;8554:20;;8547:59;8483:12;8454:162;;;8458:3;8661:1;8654:4;8645:6;8640:3;8636:16;8632:27;8625:38;8783:4;-1:-1:-1;;8708:2:103;8700:6;8696:15;8692:88;8687:3;8683:98;8679:109;8672:116;;;8313:481;;;;:::o;8799:793::-;9160:6;9149:9;9142:25;9203:3;9198:2;9187:9;9183:18;9176:31;9123:4;9230:57;9282:3;9271:9;9267:19;9259:6;9230:57;:::i;:::-;9335:4;9323:17;;9318:2;9303:18;;9296:45;9360:12;9408:15;;;9403:2;9388:18;;9381:43;9461:15;;9455:3;9440:19;;9433:44;9514:22;;;9508:3;9493:19;;9486:51;9554:32;9518:6;9571;9554:32;:::i;:::-;9546:40;8799:793;-1:-1:-1;;;;;;;;;8799:793:103:o;9597:794::-;9992:6;9981:9;9974:25;10035:3;10030:2;10019:9;10015:18;10008:31;9955:4;10062:57;10114:3;10103:9;10099:19;10091:6;10062:57;:::i;:::-;10167:9;10159:6;10155:22;10150:2;10139:9;10135:18;10128:50;10201:32;10226:6;10218;10201:32;:::i;:::-;10187:46;;10269:6;10264:2;10253:9;10249:18;10242:34;10325:9;10317:6;10313:22;10307:3;10296:9;10292:19;10285:51;10353:32;10378:6;10370;10353:32;:::i;:::-;10345:40;9597:794;-1:-1:-1;;;;;;;;9597:794:103:o;10396:616::-;10707:6;10696:9;10689:25;10750:3;10745:2;10734:9;10730:18;10723:31;10670:4;10777:57;10829:3;10818:9;10814:19;10806:6;10777:57;:::i;:::-;10882:14;10874:6;10870:27;10865:2;10854:9;10850:18;10843:55;10946:9;10938:6;10934:22;10929:2;10918:9;10914:18;10907:50;10974:32;10999:6;10991;10974:32;:::i;11017:364::-;11256:6;11245:9;11238:25;11299:2;11294;11283:9;11279:18;11272:30;11219:4;11319:56;11371:2;11360:9;11356:18;11348:6;11319:56;:::i;11386:511::-;11637:2;11626:9;11619:21;11600:4;11663:56;11715:2;11704:9;11700:18;11692:6;11663:56;:::i;:::-;11767:14;11759:6;11755:27;11750:2;11739:9;11735:18;11728:55;11831:9;11823:6;11819:22;11814:2;11803:9;11799:18;11792:50;11859:32;11884:6;11876;11859:32;:::i;:::-;11851:40;11386:511;-1:-1:-1;;;;;;11386:511:103:o;11902:184::-;-1:-1:-1;;;11951:1:103;11944:88;12051:4;12048:1;12041:15;12075:4;12072:1;12065:15;12310:464;12557:66;12549:6;12545:79;12534:9;12527:98;12661:6;12656:2;12645:9;12641:18;12634:34;12704:2;12699;12688:9;12684:18;12677:30;12508:4;12724:44;12764:2;12753:9;12749:18;12741:6;12724:44;:::i;:::-;12716:52;12310:464;-1:-1:-1;;;;;12310:464:103:o;12779:184::-;-1:-1:-1;;;12828:1:103;12821:88;12928:4;12925:1;12918:15;12952:4;12949:1;12942:15;12968:128;13035:9;;;13056:11;;;13053:37;;;13070:18;;:::i;13101:125::-;13166:9;;;13187:10;;;13184:36;;;13200:18;;:::i;13231:174::-;13298:12;13330:10;;;13342;;;13326:27;;13365:11;;;13362:37;;;13379:18;;:::i;:::-;13362:37;13231:174;;;;:::o;14057:901::-;14482:6;14471:9;14464:25;14525:3;14520:2;14509:9;14505:18;14498:31;14445:4;14552:57;14604:3;14593:9;14589:19;14581:6;14552:57;:::i;:::-;14657:4;14645:17;;14640:2;14625:18;;14618:45;14682:12;14730:15;;;14725:2;14710:18;;14703:43;14783:15;;14777:3;14762:19;;14755:44;14830:3;14815:19;;14808:35;;;14880:22;;;14874:3;14859:19;;14852:51;14920:32;14884:6;14937;14920:32;:::i;:::-;14912:40;14057:901;-1:-1:-1;;;;;;;;;;14057:901:103:o;14963:788::-;15328:3;15317:9;15310:22;15291:4;15355:57;15407:3;15396:9;15392:19;15384:6;15355:57;:::i;:::-;15460:4;15452:6;15448:17;15443:2;15432:9;15428:18;15421:45;15514:14;15506:6;15502:27;15497:2;15486:9;15482:18;15475:55;15578:12;15570:6;15566:25;15561:2;15550:9;15546:18;15539:53;15629:6;15623:3;15612:9;15608:19;15601:35;15685:9;15677:6;15673:22;15667:3;15656:9;15652:19;15645:51;15713:32;15738:6;15730;15713:32;:::i;15756:690::-;16091:3;16080:9;16073:22;16054:4;16118:57;16170:3;16159:9;16155:19;16147:6;16118:57;:::i;:::-;16223:9;16215:6;16211:22;16206:2;16195:9;16191:18;16184:50;16257:32;16282:6;16274;16257:32;:::i;:::-;16243:46;;16325:6;16320:2;16309:9;16305:18;16298:34;16380:9;16372:6;16368:22;16363:2;16352:9;16348:18;16341:50;16408:32;16433:6;16425;16408:32;:::i;16451:899::-;16907:6;16896:9;16889:25;16950:3;16945:2;16934:9;16930:18;16923:31;16870:4;16977:57;17029:3;17018:9;17014:19;17006:6;16977:57;:::i;:::-;17082:9;17074:6;17070:22;17065:2;17054:9;17050:18;17043:50;17116:32;17141:6;17133;17116:32;:::i;:::-;17102:46;;17184:6;17179:2;17168:9;17164:18;17157:34;17240:9;17232:6;17228:22;17222:3;17211:9;17207:19;17200:51;17268:32;17293:6;17285;17268:32;:::i;:::-;17260:40;;;17337:6;17331:3;17320:9;17316:19;17309:35;16451:899;;;;;;;;;:::o;17355:640::-;17606:6;17601:3;17594:19;17576:3;17632:2;17665;17660:3;17656:12;17697:6;17691:13;17762:2;17754:6;17750:15;17783:1;17793:175;17807:6;17804:1;17801:13;17793:175;;;17870:13;;17856:28;;17906:14;;;;17943:15;;;;17829:1;17822:9;17793:175;;;-1:-1:-1;17984:5:103;;17355:640;-1:-1:-1;;;;;;;17355:640:103:o;18000:261::-;18179:2;18168:9;18161:21;18142:4;18199:56;18251:2;18240:9;18236:18;18228:6;18199:56;:::i;18266:468::-;18566:6;18555:9;18548:25;18609:2;18604;18593:9;18589:18;18582:30;18529:4;18629:56;18681:2;18670:9;18666:18;18658:6;18629:56;:::i;:::-;18621:64;;18721:6;18716:2;18705:9;18701:18;18694:34;18266:468;;;;;;:::o;19205:184::-;-1:-1:-1;;;19254:1:103;19247:88;19354:4;19351:1;19344:15;19378:4;19375:1;19368:15;19394:168;19467:9;;;19498;;19515:15;;;19509:22;;19495:37;19485:71;;19536:18;;:::i;19567:359::-;19770:2;19759:9;19752:21;19733:4;19790:44;19830:2;19819:9;19815:18;19807:6;19790:44;:::i;:::-;19865:2;19850:18;;19843:34;;;;-1:-1:-1;19908:2:103;19893:18;19886:34;19782:52;19567:359;-1:-1:-1;19567:359:103:o;19931:274::-;19971:1;19997;19987:189;;-1:-1:-1;;;20029:1:103;20022:88;20133:4;20130:1;20123:15;20161:4;20158:1;20151:15;19987:189;-1:-1:-1;20190:9:103;;19931:274::o","linkReferences":{}},"methodIdentifiers":{"_tableId()":"17c9a24c","onAfterDeleteRecord(bytes32,bytes32[],bytes32)":"83b5c95b","onAfterSetRecord(bytes32,bytes32[],bytes,bytes32,bytes,bytes32)":"5b28cdaf","onAfterSpliceDynamicData(bytes32,bytes32[],uint8,uint40,uint40,bytes32,bytes)":"63584533","onAfterSpliceStaticData(bytes32,bytes32[],uint48,bytes)":"a8ba8721","onBeforeDeleteRecord(bytes32,bytes32[],bytes32)":"9faeaf45","onBeforeSetRecord(bytes32,bytes32[],bytes,bytes32,bytes,bytes32)":"57066c9c","onBeforeSpliceDynamicData(bytes32,bytes32[],uint8,uint40,uint40,bytes32,bytes)":"55eb5a28","onBeforeSpliceStaticData(bytes32,bytes32[],uint48,bytes)":"964f667d","supportsInterface(bytes4)":"01ffc9a7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"FieldLayout\",\"name\":\"fieldLayout\",\"type\":\"bytes32\"},{\"internalType\":\"Schema\",\"name\":\"keySchema\",\"type\":\"bytes32\"},{\"internalType\":\"Schema\",\"name\":\"valueSchema\",\"type\":\"bytes32\"},{\"internalType\":\"string[]\",\"name\":\"keyNames\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"fieldNames\",\"type\":\"string[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"EncodedLengths_InvalidLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"Slice_OutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StoreHook_NotImplemented\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"accessedIndex\",\"type\":\"uint256\"}],\"name\":\"Store_IndexOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes2\",\"name\":\"expected\",\"type\":\"bytes2\"},{\"internalType\":\"ResourceId\",\"name\":\"resourceId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"resourceIdString\",\"type\":\"string\"}],\"name\":\"Store_InvalidResourceType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"startWithinField\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"deleteCount\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"fieldLength\",\"type\":\"uint40\"}],\"name\":\"Store_InvalidSplice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"}],\"name\":\"Store_DeleteRecord\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"staticData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"EncodedLengths\",\"name\":\"encodedLengths\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"dynamicData\",\"type\":\"bytes\"}],\"name\":\"Store_SetRecord\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"dynamicFieldIndex\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"deleteCount\",\"type\":\"uint40\"},{\"indexed\":false,\"internalType\":\"EncodedLengths\",\"name\":\"encodedLengths\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Store_SpliceDynamicData\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Store_SpliceStaticData\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"_tableId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"FieldLayout\",\"name\":\"fieldLayout\",\"type\":\"bytes32\"}],\"name\":\"onAfterDeleteRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"staticData\",\"type\":\"bytes\"},{\"internalType\":\"EncodedLengths\",\"name\":\"encodedLengths\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"dynamicData\",\"type\":\"bytes\"},{\"internalType\":\"FieldLayout\",\"name\":\"fieldLayout\",\"type\":\"bytes32\"}],\"name\":\"onAfterSetRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"dynamicFieldIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"startWithinField\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"deleteCount\",\"type\":\"uint40\"},{\"internalType\":\"EncodedLengths\",\"name\":\"encodedLengths\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onAfterSpliceDynamicData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onAfterSpliceStaticData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"FieldLayout\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"onBeforeDeleteRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"staticData\",\"type\":\"bytes\"},{\"internalType\":\"EncodedLengths\",\"name\":\"encodedLengths\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"dynamicData\",\"type\":\"bytes\"},{\"internalType\":\"FieldLayout\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"onBeforeSetRecord\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint8\",\"name\":\"dynamicFieldIndex\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"startWithinField\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"deleteCount\",\"type\":\"uint40\"},{\"internalType\":\"EncodedLengths\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onBeforeSpliceDynamicData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"ResourceId\",\"name\":\"tableId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"keyTuple\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onBeforeSpliceStaticData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"EncodedLengths_InvalidLength(uint256)\":[{\"params\":{\"length\":\"The length of the encoded lengths.\"}}],\"Slice_OutOfBounds(bytes,uint256,uint256)\":[{\"details\":\"Raised if `start` is greater than `end` or `end` greater than the length of `data`.\",\"params\":{\"data\":\"The bytes array to subslice.\",\"end\":\"The end index for the subslice.\",\"start\":\"The start index for the subslice.\"}}],\"Store_IndexOutOfBounds(uint256,uint256)\":[{\"details\":\"Raised if the start index is larger than the previous length of the field.\",\"params\":{\"accessedIndex\":\"FIXME\",\"length\":\"FIXME\"}}],\"Store_InvalidResourceType(bytes2,bytes32,string)\":[{\"params\":{\"expected\":\"The expected resource type.\",\"resourceId\":\"The resource ID.\",\"resourceIdString\":\"The stringified resource ID (for easier debugging).\"}}],\"Store_InvalidSplice(uint40,uint40,uint40)\":[{\"details\":\"Raised if the splice total length of the field is changed but the splice is not at the end of the field.\",\"params\":{\"deleteCount\":\"The number of bytes to delete in the splice operation.\",\"fieldLength\":\"The field length for the splice operation.\",\"startWithinField\":\"The start index within the field for the splice operation.\"}}]},\"events\":{\"Store_DeleteRecord(bytes32,bytes32[])\":{\"params\":{\"keyTuple\":\"An array representing the composite key for the record.\",\"tableId\":\"The ID of the table where the record is deleted.\"}},\"Store_SetRecord(bytes32,bytes32[],bytes,bytes32,bytes)\":{\"params\":{\"dynamicData\":\"The dynamic data of the record.\",\"encodedLengths\":\"The encoded lengths of the dynamic data of the record.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"staticData\":\"The static data of the record.\",\"tableId\":\"The ID of the table where the record is set.\"}},\"Store_SpliceDynamicData(bytes32,bytes32[],uint8,uint48,uint40,bytes32,bytes)\":{\"params\":{\"data\":\"The data to insert into the dynamic data of the record at the start byte.\",\"deleteCount\":\"The number of bytes to delete in the splice operation.\",\"dynamicFieldIndex\":\"The index of the dynamic field to splice data, relative to the start of the dynamic fields. (Dynamic field index = field index - number of static fields)\",\"encodedLengths\":\"The encoded lengths of the dynamic data of the record.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"start\":\"The start position in bytes for the splice operation.\",\"tableId\":\"The ID of the table where the data is spliced.\"}},\"Store_SpliceStaticData(bytes32,bytes32[],uint48,bytes)\":{\"details\":\"In static data, data is always overwritten starting at the start position, so the total length of the data remains the same and no data is shifted.\",\"params\":{\"data\":\"The data to write to the static data of the record at the start byte.\",\"keyTuple\":\"An array representing the key for the record.\",\"start\":\"The start position in bytes for the splice operation.\",\"tableId\":\"The ID of the table where the data is spliced.\"}}},\"kind\":\"dev\",\"methods\":{\"onAfterDeleteRecord(bytes32,bytes32[],bytes32)\":{\"details\":\"This function should be overridden to provide custom logic.\",\"params\":{\"fieldLayout\":\"The layout of the field, see FieldLayout.sol.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"tableId\":\"The ID of the table where the record is to be deleted.\"}},\"onAfterSetRecord(bytes32,bytes32[],bytes,bytes32,bytes,bytes32)\":{\"details\":\"This function should be overridden to provide custom logic.\",\"params\":{\"dynamicData\":\"The dynamic data of the record.\",\"encodedLengths\":\"The encoded lengths of the dynamic data of the record.\",\"fieldLayout\":\"The layout of the field, see FieldLayout.sol.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"staticData\":\"The static data of the record.\",\"tableId\":\"The ID of the table where the record was set.\"}},\"onAfterSpliceDynamicData(bytes32,bytes32[],uint8,uint40,uint40,bytes32,bytes)\":{\"details\":\"This function should be overridden to provide custom logic. Splice operations in dynamic data always reach the end of the dynamic data to avoid shifting data after the inserted or deleted data.\",\"params\":{\"data\":\"The data to be inserted into the dynamic data of the record at the start byte.\",\"deleteCount\":\"The number of bytes to delete in the dynamic data of the record.\",\"dynamicFieldIndex\":\"The index of the dynamic field.\",\"encodedLengths\":\"The encoded lengths of the dynamic data of the record.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"startWithinField\":\"The start byte position within the field for splicing.\",\"tableId\":\"The ID of the table where the data is to be spliced.\"}},\"onAfterSpliceStaticData(bytes32,bytes32[],uint48,bytes)\":{\"details\":\"This function should be overridden to provide custom logic. Splice operations in static data always overwrite data starting at the start position, so the total length of the data remains the same and no data is shifted.\",\"params\":{\"data\":\"The data to be written to the static data of the record at the start byte.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"start\":\"The start byte position for splicing.\",\"tableId\":\"The ID of the table where the data is to be spliced.\"}},\"onBeforeSpliceStaticData(bytes32,bytes32[],uint48,bytes)\":{\"details\":\"This function should be overridden to provide custom logic. Splice operations in static data always overwrite data starting at the start position, so the total length of the data remains the same and no data is shifted.\",\"params\":{\"data\":\"The data to be written to the static data of the record at the start byte.\",\"keyTuple\":\"An array representing the composite key for the record.\",\"start\":\"The start byte position for splicing.\",\"tableId\":\"The ID of the table where the data is to be spliced.\"}},\"supportsInterface(bytes4)\":{\"details\":\"This function is a part of the ERC-165 standard.\",\"params\":{\"interfaceId\":\"The ID of the interface to check.\"},\"returns\":{\"_0\":\"true if the interface is supported, false otherwise.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"EncodedLengths_InvalidLength(uint256)\":[{\"notice\":\"Error raised when the provided encoded lengths has an invalid length.\"}],\"Slice_OutOfBounds(bytes,uint256,uint256)\":[{\"notice\":\"Error raised when the provided slice is out of bounds.\"}],\"StoreHook_NotImplemented()\":[{\"notice\":\"Error emitted when a function is not implemented.\"}],\"Store_IndexOutOfBounds(uint256,uint256)\":[{\"notice\":\"Error raised if the provided index is out of bounds.\"}],\"Store_InvalidResourceType(bytes2,bytes32,string)\":[{\"notice\":\"Error raised if the provided resource ID cannot be found.\"}],\"Store_InvalidSplice(uint40,uint40,uint40)\":[{\"notice\":\"Error raised if the provided splice is invalid.\"}]},\"events\":{\"Store_DeleteRecord(bytes32,bytes32[])\":{\"notice\":\"Emitted when a record is deleted from the store.\"},\"Store_SetRecord(bytes32,bytes32[],bytes,bytes32,bytes)\":{\"notice\":\"Emitted when a new record is set in the store.\"},\"Store_SpliceDynamicData(bytes32,bytes32[],uint8,uint48,uint40,bytes32,bytes)\":{\"notice\":\"Emitted when dynamic data in the store is spliced.\"},\"Store_SpliceStaticData(bytes32,bytes32[],uint48,bytes)\":{\"notice\":\"Emitted when static data in the store is spliced.\"}},\"kind\":\"user\",\"methods\":{\"onAfterDeleteRecord(bytes32,bytes32[],bytes32)\":{\"notice\":\"Hook that runs after deleting a record.\"},\"onAfterSetRecord(bytes32,bytes32[],bytes,bytes32,bytes,bytes32)\":{\"notice\":\"Hook that runs after setting a record.\"},\"onAfterSpliceDynamicData(bytes32,bytes32[],uint8,uint40,uint40,bytes32,bytes)\":{\"notice\":\"Hook that runs after splicing dynamic (variable length) data.\"},\"onAfterSpliceStaticData(bytes32,bytes32[],uint48,bytes)\":{\"notice\":\"Hook that runs after splicing static (fixed length) data.\"},\"onBeforeSpliceStaticData(bytes32,bytes32[],uint48,bytes)\":{\"notice\":\"Hook that runs before splicing static (fixed length) data.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Check if the interface is supported.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/MirrorSubscriber.sol\":\"MirrorSubscriber\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"src/Bytes.sol\":{\"keccak256\":\"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35\",\"dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6\"]},\"src/EncodedLengths.sol\":{\"keccak256\":\"0xebc0a6efd611e02b15c05a382382b597fe059eba7f2a9e90da81eeb2f7666774\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://00b2cac12599935e25ea0697e99fc9e6d5af6c1c982761996c16707d9cd6ca09\",\"dweb:/ipfs/QmXccFminkrFtDpNfx6X1pHvW7Tn1nA5XcGu9T17pJyZyK\"]},\"src/FieldLayout.sol\":{\"keccak256\":\"0x15f698b7eabc062a00ff7a2e02db0ace2dd51f8bd2bc51a45dc0afa88f2ee658\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f774202c98ad394b3b62be93292512c633dec63bc931c190ed984656c2d54ec7\",\"dweb:/ipfs/Qmd2D9mvP8S88ad2Q8WU54saNVr3Pwc5stPqEKHwcpo8AT\"]},\"src/Hook.sol\":{\"keccak256\":\"0xd016a2e1260f5a81ff9a8dfac58d7947e114414df8cce7302a2629908ea5f18e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c558a6f3a5f540c0190fa6d642a094a185c5db1acfc2437c7dbde0340f00ac3\",\"dweb:/ipfs/QmViAHvR7U7HNfBiBZEMFiy1TTSHDFNiDzBfQSeLBShCky\"]},\"src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"src/IEncodedLengthsErrors.sol\":{\"keccak256\":\"0x06bb49164f44acc8d51df7b75ecf2f7aeb9281f7a3b357cae7d8d58bd1700dfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://719027f4cc60fea30ce01cd4f672462f41fac750ae802e91a1a6d37c929e11ba\",\"dweb:/ipfs/QmWi5DM2jT5V5SGP1afRmFyRgFvuZiGDX2PWHwP19HssF1\"]},\"src/IFieldLayoutErrors.sol\":{\"keccak256\":\"0xaef70c46e412bded1024ac82c957cea81c1d1ab11878a95635531e2ac9673a53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cda2c7dc02ee8f0163b1c8d0f3e1e05d48b2a009e5c7365d2418f17bc3455817\",\"dweb:/ipfs/QmXHDZuCPTxjHaeiEaJhA81koX2NJ3Gj1zt5WVWaz77FL8\"]},\"src/ISchemaErrors.sol\":{\"keccak256\":\"0x0ac3de36c9d0058a17fcd7f1a905132215fd16ea3ed3b5109de1de04ddd7c441\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f83fa2546009cfd16b3b3969dcec1d67c9d818d910177b885ba263b6a948c65d\",\"dweb:/ipfs/QmehywHdvFYBL9BTtoPsVVwJXsEA4Xjk8aPWoHw1R45KeY\"]},\"src/ISliceErrors.sol\":{\"keccak256\":\"0x72684b7dfc1b44537401ccf10d6120186d02323266fcc762bc81859985eded4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8d037b6937969ae54018ddf647eeaf5eb69a2b0bf9edf9456d3d270316b2883\",\"dweb:/ipfs/QmfYJeyAmzRqpn68FteiM97p5t17iBw62FCET4bK5g4w37\"]},\"src/IStore.sol\":{\"keccak256\":\"0x42515d1410333a3573f78a460576271ef62c16edad5cf771ef6287b83ca1c706\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a58d03c4cf420df57d2b2e2e7932daad877e46e89561b46e1fa9f593a701bdc\",\"dweb:/ipfs/QmeFmKS7J1WqqBAgXkyxxx2fGA8JzuGszUmVsV2T6DYtsL\"]},\"src/IStoreErrors.sol\":{\"keccak256\":\"0x37e4d2f015dd4005ff9b3f711257c891027804bc268db1791984af4989951912\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4a566ea96b69211f503707f69a9f9012d5873a3fd57b3f221549f46a7518df6\",\"dweb:/ipfs/QmVgcE3JufJr3iyeV6xqkvS4YtDcy6Eqyram2yzWUhwoB4\"]},\"src/IStoreEvents.sol\":{\"keccak256\":\"0x8606e9de37943c74beabb9ac9acd2132f951bed1ef79f2f4f3de83ed1f271f6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d13adeee7ae9e687bf1cd12a8c36223179685fc828a7c468ee9311c879401b08\",\"dweb:/ipfs/QmQeb2ArSoQpE6ujBbDj9LY3xqpVCPiz3bh9SLT6siE8RY\"]},\"src/IStoreHook.sol\":{\"keccak256\":\"0x6574a30a2bbd8a0de21b2504c55effb8802fdeff62296af82a9380bd753adcc4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a859c533f51b584a9a2e8a64d61b6cf6f69bfcff1b926ad787518b1cae9562\",\"dweb:/ipfs/QmVyjmyJ69ZeqaXHg91JtGLVahRfZ7KtWaessLWZ6rYk9p\"]},\"src/IStoreKernel.sol\":{\"keccak256\":\"0x37a23dcbabc5937a717f2fda636b6a97963ed4b5a96870a62dfb199a8b692f89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac9741ea6daf21f39699be11afd919ae3ec07df24d948aaaa6549456fefd7fc0\",\"dweb:/ipfs/QmeiPQkZitM4Pc3i6L87thU71Fs1JVWAgMqXnSK8VrCq75\"]},\"src/IStoreRead.sol\":{\"keccak256\":\"0xdcf28b3293d4d6c1fe2808a8918c1b2122e4e0e49f2793c79ebd2b9ae210ff7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb3d9cc80f549ed0c5b768aea69fb1b3c364bd4f85d193a3040c411b594d94db\",\"dweb:/ipfs/QmYYdY5CjPHiW5ucXihTva1eHsCPNqBsvL6zYYafH3ap4p\"]},\"src/IStoreRegistration.sol\":{\"keccak256\":\"0x9e91a73f93cc9ebc00c265c83177f6a3f8a156749a9261202e2845e12aeaa96b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a39280d87d22dd0a959d8f55925cb092dba1fee2f11d3dd8e3ffabed45a9ab6a\",\"dweb:/ipfs/QmRMBFLJtT2KN43Xz9P3vUNWxXrP8rLTNBFw2P6Z7EGeaS\"]},\"src/IStoreWrite.sol\":{\"keccak256\":\"0x120fd448da5806e09ecb5327ad4dba64df01d2ee7232de0979133627e87e24ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a3cb151b2ddee217f330d61813b2dcd997de94940c903719f6d066a21467890\",\"dweb:/ipfs/Qmbes1RRY6KdtsMohp8834xXyipeQK9GJ41NfgXK1d1QAZ\"]},\"src/Memory.sol\":{\"keccak256\":\"0xef6e7000b181c2991aeacbf99a9d886f8c4df88878b857713f851185b63a7811\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b079b4773d140ab2c01bdb04facfa56a78f753aea7122fa445b2bfa133411392\",\"dweb:/ipfs/QmWYWKFpwtsPeGdCSxcANgxXUbwAuMMgR7iMVPDSCZxz2A\"]},\"src/ResourceId.sol\":{\"keccak256\":\"0x842b07f2ff9df2e1ecf9bf424b0e5a77e1471c983d674cf86b76c365178d6cc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4c2df8853b020aef1bb8615ac69d5512a9b5385b82c88e03b27dc521c9d007b\",\"dweb:/ipfs/QmWEDiJn69DvHsdrikrMWY8DERWPSeWwVYgPcunfq3yiT7\"]},\"src/Schema.sol\":{\"keccak256\":\"0x0d2a08030d21292ecbcc850d9111f3817d03f17cd5e02186894848a9152d79d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f30024c1613fb587aaba4c1dcb8e4e46ed765a2cebd5b63fbebd327d1bf13d3\",\"dweb:/ipfs/QmZzqSnPMYKDYwbFNvUFrvuazMUyQHzQ59w3A9x6juHAm7\"]},\"src/Slice.sol\":{\"keccak256\":\"0xae6c03881fdfa56cba1879d9c9c6b52c2829e6a278a200176678d8da05a89345\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cad7dc4944c0518de2e7f99697485d365ae37aa6cad6967996377c2dd951fe4\",\"dweb:/ipfs/QmW3grFwr8BcgJmLfjLbj3FthnD7NRUBFMFiahbXztHPr7\"]},\"src/Storage.sol\":{\"keccak256\":\"0x7e735a4c7fa8b8a5fe2371d90801e3287ddb78efed69b31e1a76f0b7b153c4c3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e6db36bd52144b6feeecd91a58fc311127a3892fc96c4171db5b570fe9876ee\",\"dweb:/ipfs/QmS6LqnTZvpMc4eiz5JowBoNnh3RYemG6JHjqtYucT1rQi\"]},\"src/StoreCore.sol\":{\"keccak256\":\"0x9513dc38e5baadde0ba9b08320a324043b0e88a10702be5c3507da8c3d45e861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c80c65a394763668e4aed69220fec6bb3ed847fb277ddd1ff1d4bfdf452da2\",\"dweb:/ipfs/QmRT2BATKtrYmixWMuWo9Cz8g8oscfLNSmvjxTyiTNA1pc\"]},\"src/StoreHook.sol\":{\"keccak256\":\"0x5123aae46b3f37ea6d7d567fd82658ea7f58d06a6ebd76aaf358582459f13173\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7223f7ca27353b8d86bd75441df8221383e6966caa7c25f9a802e7623bb5275d\",\"dweb:/ipfs/QmaGmQK5JK2jS2sodKVxWuKiRNrtN8ErbdqE53PDatEDym\"]},\"src/StoreSwitch.sol\":{\"keccak256\":\"0x7edf7c1641408f3a580eb28bda58054583cb846f875608612671c6d40712ba40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4146adef610d1daab085a81aa9f2d4fd8c4e5f459b9ef184f3ef23465573cf91\",\"dweb:/ipfs/QmQqZMsbkzSNG6VfYzQLdRCBCsNohBSVQmWoTP6QvKmKUP\"]},\"src/codegen/index.sol\":{\"keccak256\":\"0x094a6f1e2910b345b6b254e0fc2c8882b3190c673f7ee19742e857057a4d3f85\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18908e2e7e878635abea72ef99851fddd204371e6b641f010e831ebfa0b1bfd4\",\"dweb:/ipfs/QmSNAxXqxTrzPkZ4rSAQgBnuer1yLPq74hoqnzrZV3WGsb\"]},\"src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0xcc0fa969a57724e7a9184009e2b1ea8ecb209a06e283c6d2b6a15cabff35f39d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d91985b8f48fcb8259b776c10bc17a1656e8dbeaa15c0c0e73368af38e6cfc8a\",\"dweb:/ipfs/QmRiYbrXqqWcTrvwz95kN6ZiMhUBfLiUycxQiSGeZFDkuo\"]},\"src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0xa52e8323cc7227d69a3c6b2e244b4e0face106eeaa5cf23e759b0278b0f4a7ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf5d3ede2d114c26abe7b5268ed17aedb56d6ded91af19019ecebb75edf48b36\",\"dweb:/ipfs/QmWwqNFjqWFhfv8ABRXV9mbZBGumz741YCmVuQPqtiVZaD\"]},\"src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x155aa0e073774674596a28371a3a863ad1d6c44d418140269d2982a45e40734b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c849ad6563c4afbdd7eec40042c9afa0d9919ece10c2acab390e358095ddd160\",\"dweb:/ipfs/QmbB7eVhKe3simEvugH18e1fBJKmwqionms3YWbWuRBDYV\"]},\"src/codegen/tables/Tables.sol\":{\"keccak256\":\"0x7930483bedccb95dd73447108e67d576924c83ec591cb70c699cdea7ebaabccc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c23093bf098e8e1f224a0e20beb6860d461a5f8d33265d382e3d43bdc431080\",\"dweb:/ipfs/QmSQwjDCEgTUgUWajjETvCRJd18ZPRhYPyS6Rcg6wDizXw\"]},\"src/constants.sol\":{\"keccak256\":\"0x67e0d59237bd37424827ecde1ecdbe71f65376af517b0623cd8f8d5451bca7a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c5ec7fe73e06140957d44a3d9938587711c783ccbf08ff017638c9279a3168\",\"dweb:/ipfs/QmfS9ZRqHXmBJ1h5B4x4gbU6d18DtMgKZSkxhQgNVRxueu\"]},\"src/rightMask.sol\":{\"keccak256\":\"0x28887aab8ad5ca598927e59d702999ca6e3b3128f1cddd2b995a381c8d04b275\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7710847f4689b7f5b81436c7d52ae4395f244a2eebf8d398b2edd43accb06754\",\"dweb:/ipfs/QmTD2wYqryXTynHAn5Vf9wtjUUSGeCJWENZTnWtBAK38pa\"]},\"src/storeHookTypes.sol\":{\"keccak256\":\"0x4f29001e53690ce74fe405a6d0376a564c9c743d1631d36fab04331865e4d572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://138c80abd63225a3eeb01ebfa1f9288e188a7ee5b2266b275fb4ed31b5aa30e3\",\"dweb:/ipfs/QmdEx9uHgCCbTcetGwFH5a66Ft7ajmrMDXvP1fW7WjnnE2\"]},\"src/storeResourceTypes.sol\":{\"keccak256\":\"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586\",\"dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2\"]},\"src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x310523f7f3acca841e62fe50be8d8b042cad5b3c239cb1105d6623cf83e63152\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc40ca233acf6502bc65677b381c05331dd7323953e54b5df969051e47f851e\",\"dweb:/ipfs/QmTxy9mhodT8drezB5K1kPR78AMaARomoJqDyaWpLuCKui\"]},\"src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x259ee545fd9dfd4767f0b7fef31f52fd3c54c4a1c6657d6fbda4927800c937b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a4e31efa9f476cd267af7c3e11fe0151252206a1f6407a80a4092444c2de8ea\",\"dweb:/ipfs/QmRF4gWYw33mFTMh7nX8DJ1qzx3Ko6yMsnxubzYTRppdyo\"]},\"src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x0e74ff88ec94cb33f79d8afc1497c4fdccf02db40ab47f3701c7d02fc305d4d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36b7cd0c2a3f2dcdc83ab7ac5a93f123746ce29c0f1000f2b275ad2c647ff0f3\",\"dweb:/ipfs/QmYdipHYUhHhS78wLdtmKZUK14FEwpto5mFy3rNeZssMLz\"]},\"src/version.sol\":{\"keccak256\":\"0x78c571906ee999ee7e56d4f7702b8a93c3a9e55e6b552aca115b5f6ac7f1c80a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9f141b2d556b2a2545e7db5606e8a038679a995a22aeaf1702cb3a60320b60a\",\"dweb:/ipfs/QmY7x258Fhj3TT3RT4sNyyfiRphVYdZXhtAnSYpasJ4xVQ\"]},\"test/MirrorSubscriber.sol\":{\"keccak256\":\"0x22402bc241f9c0f40603b09a2d895cedeb46db90a2cbcd9669250b9a283adaa3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81beac1c5b150c117a09f9bdbb07fdaa88ad87d1f88c21a3097d4ddf8c3463b8\",\"dweb:/ipfs/QmaSKCCmSv2m7HHXA6HPsQ1fZPogahLs1vjFLzzMRHEGQq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"FieldLayout","name":"fieldLayout","type":"bytes32"},{"internalType":"Schema","name":"keySchema","type":"bytes32"},{"internalType":"Schema","name":"valueSchema","type":"bytes32"},{"internalType":"string[]","name":"keyNames","type":"string[]"},{"internalType":"string[]","name":"fieldNames","type":"string[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"EncodedLengths_InvalidLength"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"type":"error","name":"Slice_OutOfBounds"},{"inputs":[],"type":"error","name":"StoreHook_NotImplemented"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"},{"internalType":"uint256","name":"accessedIndex","type":"uint256"}],"type":"error","name":"Store_IndexOutOfBounds"},{"inputs":[{"internalType":"bytes2","name":"expected","type":"bytes2"},{"internalType":"ResourceId","name":"resourceId","type":"bytes32"},{"internalType":"string","name":"resourceIdString","type":"string"}],"type":"error","name":"Store_InvalidResourceType"},{"inputs":[{"internalType":"uint40","name":"startWithinField","type":"uint40"},{"internalType":"uint40","name":"deleteCount","type":"uint40"},{"internalType":"uint40","name":"fieldLength","type":"uint40"}],"type":"error","name":"Store_InvalidSplice"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32","indexed":true},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]","indexed":false}],"type":"event","name":"Store_DeleteRecord","anonymous":false},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32","indexed":true},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]","indexed":false},{"internalType":"bytes","name":"staticData","type":"bytes","indexed":false},{"internalType":"EncodedLengths","name":"encodedLengths","type":"bytes32","indexed":false},{"internalType":"bytes","name":"dynamicData","type":"bytes","indexed":false}],"type":"event","name":"Store_SetRecord","anonymous":false},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32","indexed":true},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]","indexed":false},{"internalType":"uint8","name":"dynamicFieldIndex","type":"uint8","indexed":false},{"internalType":"uint48","name":"start","type":"uint48","indexed":false},{"internalType":"uint40","name":"deleteCount","type":"uint40","indexed":false},{"internalType":"EncodedLengths","name":"encodedLengths","type":"bytes32","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"Store_SpliceDynamicData","anonymous":false},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32","indexed":true},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]","indexed":false},{"internalType":"uint48","name":"start","type":"uint48","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"Store_SpliceStaticData","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"_tableId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"FieldLayout","name":"fieldLayout","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"onAfterDeleteRecord"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"bytes","name":"staticData","type":"bytes"},{"internalType":"EncodedLengths","name":"encodedLengths","type":"bytes32"},{"internalType":"bytes","name":"dynamicData","type":"bytes"},{"internalType":"FieldLayout","name":"fieldLayout","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"onAfterSetRecord"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"uint8","name":"dynamicFieldIndex","type":"uint8"},{"internalType":"uint40","name":"startWithinField","type":"uint40"},{"internalType":"uint40","name":"deleteCount","type":"uint40"},{"internalType":"EncodedLengths","name":"encodedLengths","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onAfterSpliceDynamicData"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"uint48","name":"start","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onAfterSpliceStaticData"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"FieldLayout","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"onBeforeDeleteRecord"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"bytes","name":"staticData","type":"bytes"},{"internalType":"EncodedLengths","name":"encodedLengths","type":"bytes32"},{"internalType":"bytes","name":"dynamicData","type":"bytes"},{"internalType":"FieldLayout","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"onBeforeSetRecord"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"uint8","name":"dynamicFieldIndex","type":"uint8"},{"internalType":"uint40","name":"startWithinField","type":"uint40"},{"internalType":"uint40","name":"deleteCount","type":"uint40"},{"internalType":"EncodedLengths","name":"","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onBeforeSpliceDynamicData"},{"inputs":[{"internalType":"ResourceId","name":"tableId","type":"bytes32"},{"internalType":"bytes32[]","name":"keyTuple","type":"bytes32[]"},{"internalType":"uint48","name":"start","type":"uint48"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onBeforeSpliceStaticData"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"pure","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"onAfterDeleteRecord(bytes32,bytes32[],bytes32)":{"details":"This function should be overridden to provide custom logic.","params":{"fieldLayout":"The layout of the field, see FieldLayout.sol.","keyTuple":"An array representing the composite key for the record.","tableId":"The ID of the table where the record is to be deleted."}},"onAfterSetRecord(bytes32,bytes32[],bytes,bytes32,bytes,bytes32)":{"details":"This function should be overridden to provide custom logic.","params":{"dynamicData":"The dynamic data of the record.","encodedLengths":"The encoded lengths of the dynamic data of the record.","fieldLayout":"The layout of the field, see FieldLayout.sol.","keyTuple":"An array representing the composite key for the record.","staticData":"The static data of the record.","tableId":"The ID of the table where the record was set."}},"onAfterSpliceDynamicData(bytes32,bytes32[],uint8,uint40,uint40,bytes32,bytes)":{"details":"This function should be overridden to provide custom logic. Splice operations in dynamic data always reach the end of the dynamic data to avoid shifting data after the inserted or deleted data.","params":{"data":"The data to be inserted into the dynamic data of the record at the start byte.","deleteCount":"The number of bytes to delete in the dynamic data of the record.","dynamicFieldIndex":"The index of the dynamic field.","encodedLengths":"The encoded lengths of the dynamic data of the record.","keyTuple":"An array representing the composite key for the record.","startWithinField":"The start byte position within the field for splicing.","tableId":"The ID of the table where the data is to be spliced."}},"onAfterSpliceStaticData(bytes32,bytes32[],uint48,bytes)":{"details":"This function should be overridden to provide custom logic. Splice operations in static data always overwrite data starting at the start position, so the total length of the data remains the same and no data is shifted.","params":{"data":"The data to be written to the static data of the record at the start byte.","keyTuple":"An array representing the composite key for the record.","start":"The start byte position for splicing.","tableId":"The ID of the table where the data is to be spliced."}},"onBeforeSpliceStaticData(bytes32,bytes32[],uint48,bytes)":{"details":"This function should be overridden to provide custom logic. Splice operations in static data always overwrite data starting at the start position, so the total length of the data remains the same and no data is shifted.","params":{"data":"The data to be written to the static data of the record at the start byte.","keyTuple":"An array representing the composite key for the record.","start":"The start byte position for splicing.","tableId":"The ID of the table where the data is to be spliced."}},"supportsInterface(bytes4)":{"details":"This function is a part of the ERC-165 standard.","params":{"interfaceId":"The ID of the interface to check."},"returns":{"_0":"true if the interface is supported, false otherwise."}}},"version":1},"userdoc":{"kind":"user","methods":{"onAfterDeleteRecord(bytes32,bytes32[],bytes32)":{"notice":"Hook that runs after deleting a record."},"onAfterSetRecord(bytes32,bytes32[],bytes,bytes32,bytes,bytes32)":{"notice":"Hook that runs after setting a record."},"onAfterSpliceDynamicData(bytes32,bytes32[],uint8,uint40,uint40,bytes32,bytes)":{"notice":"Hook that runs after splicing dynamic (variable length) data."},"onAfterSpliceStaticData(bytes32,bytes32[],uint48,bytes)":{"notice":"Hook that runs after splicing static (fixed length) data."},"onBeforeSpliceStaticData(bytes32,bytes32[],uint48,bytes)":{"notice":"Hook that runs before splicing static (fixed length) data."},"supportsInterface(bytes4)":{"notice":"Check if the interface is supported."}},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/MirrorSubscriber.sol":"MirrorSubscriber"},"evmVersion":"cancun","libraries":{}},"sources":{"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"src/Bytes.sol":{"keccak256":"0x7dec900f9c9e7dff59430fa6f520e76c56338c3e829201aea140d49342e4fef8","urls":["bzz-raw://e55c1dfcda94dcc64b8577949b2e92a9d3fc44f5fba1ae77ceacccfdc8e22e35","dweb:/ipfs/QmS7uRJbEQYkPuZ5Dz5aSNjaaxj9PA8RtxUeUGN2W3jZx6"],"license":"MIT"},"src/EncodedLengths.sol":{"keccak256":"0xebc0a6efd611e02b15c05a382382b597fe059eba7f2a9e90da81eeb2f7666774","urls":["bzz-raw://00b2cac12599935e25ea0697e99fc9e6d5af6c1c982761996c16707d9cd6ca09","dweb:/ipfs/QmXccFminkrFtDpNfx6X1pHvW7Tn1nA5XcGu9T17pJyZyK"],"license":"MIT"},"src/FieldLayout.sol":{"keccak256":"0x15f698b7eabc062a00ff7a2e02db0ace2dd51f8bd2bc51a45dc0afa88f2ee658","urls":["bzz-raw://f774202c98ad394b3b62be93292512c633dec63bc931c190ed984656c2d54ec7","dweb:/ipfs/Qmd2D9mvP8S88ad2Q8WU54saNVr3Pwc5stPqEKHwcpo8AT"],"license":"MIT"},"src/Hook.sol":{"keccak256":"0xd016a2e1260f5a81ff9a8dfac58d7947e114414df8cce7302a2629908ea5f18e","urls":["bzz-raw://0c558a6f3a5f540c0190fa6d642a094a185c5db1acfc2437c7dbde0340f00ac3","dweb:/ipfs/QmViAHvR7U7HNfBiBZEMFiy1TTSHDFNiDzBfQSeLBShCky"],"license":"MIT"},"src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"src/IEncodedLengthsErrors.sol":{"keccak256":"0x06bb49164f44acc8d51df7b75ecf2f7aeb9281f7a3b357cae7d8d58bd1700dfa","urls":["bzz-raw://719027f4cc60fea30ce01cd4f672462f41fac750ae802e91a1a6d37c929e11ba","dweb:/ipfs/QmWi5DM2jT5V5SGP1afRmFyRgFvuZiGDX2PWHwP19HssF1"],"license":"MIT"},"src/IFieldLayoutErrors.sol":{"keccak256":"0xaef70c46e412bded1024ac82c957cea81c1d1ab11878a95635531e2ac9673a53","urls":["bzz-raw://cda2c7dc02ee8f0163b1c8d0f3e1e05d48b2a009e5c7365d2418f17bc3455817","dweb:/ipfs/QmXHDZuCPTxjHaeiEaJhA81koX2NJ3Gj1zt5WVWaz77FL8"],"license":"MIT"},"src/ISchemaErrors.sol":{"keccak256":"0x0ac3de36c9d0058a17fcd7f1a905132215fd16ea3ed3b5109de1de04ddd7c441","urls":["bzz-raw://f83fa2546009cfd16b3b3969dcec1d67c9d818d910177b885ba263b6a948c65d","dweb:/ipfs/QmehywHdvFYBL9BTtoPsVVwJXsEA4Xjk8aPWoHw1R45KeY"],"license":"MIT"},"src/ISliceErrors.sol":{"keccak256":"0x72684b7dfc1b44537401ccf10d6120186d02323266fcc762bc81859985eded4c","urls":["bzz-raw://e8d037b6937969ae54018ddf647eeaf5eb69a2b0bf9edf9456d3d270316b2883","dweb:/ipfs/QmfYJeyAmzRqpn68FteiM97p5t17iBw62FCET4bK5g4w37"],"license":"MIT"},"src/IStore.sol":{"keccak256":"0x42515d1410333a3573f78a460576271ef62c16edad5cf771ef6287b83ca1c706","urls":["bzz-raw://6a58d03c4cf420df57d2b2e2e7932daad877e46e89561b46e1fa9f593a701bdc","dweb:/ipfs/QmeFmKS7J1WqqBAgXkyxxx2fGA8JzuGszUmVsV2T6DYtsL"],"license":"MIT"},"src/IStoreErrors.sol":{"keccak256":"0x37e4d2f015dd4005ff9b3f711257c891027804bc268db1791984af4989951912","urls":["bzz-raw://a4a566ea96b69211f503707f69a9f9012d5873a3fd57b3f221549f46a7518df6","dweb:/ipfs/QmVgcE3JufJr3iyeV6xqkvS4YtDcy6Eqyram2yzWUhwoB4"],"license":"MIT"},"src/IStoreEvents.sol":{"keccak256":"0x8606e9de37943c74beabb9ac9acd2132f951bed1ef79f2f4f3de83ed1f271f6a","urls":["bzz-raw://d13adeee7ae9e687bf1cd12a8c36223179685fc828a7c468ee9311c879401b08","dweb:/ipfs/QmQeb2ArSoQpE6ujBbDj9LY3xqpVCPiz3bh9SLT6siE8RY"],"license":"MIT"},"src/IStoreHook.sol":{"keccak256":"0x6574a30a2bbd8a0de21b2504c55effb8802fdeff62296af82a9380bd753adcc4","urls":["bzz-raw://85a859c533f51b584a9a2e8a64d61b6cf6f69bfcff1b926ad787518b1cae9562","dweb:/ipfs/QmVyjmyJ69ZeqaXHg91JtGLVahRfZ7KtWaessLWZ6rYk9p"],"license":"MIT"},"src/IStoreKernel.sol":{"keccak256":"0x37a23dcbabc5937a717f2fda636b6a97963ed4b5a96870a62dfb199a8b692f89","urls":["bzz-raw://ac9741ea6daf21f39699be11afd919ae3ec07df24d948aaaa6549456fefd7fc0","dweb:/ipfs/QmeiPQkZitM4Pc3i6L87thU71Fs1JVWAgMqXnSK8VrCq75"],"license":"MIT"},"src/IStoreRead.sol":{"keccak256":"0xdcf28b3293d4d6c1fe2808a8918c1b2122e4e0e49f2793c79ebd2b9ae210ff7b","urls":["bzz-raw://bb3d9cc80f549ed0c5b768aea69fb1b3c364bd4f85d193a3040c411b594d94db","dweb:/ipfs/QmYYdY5CjPHiW5ucXihTva1eHsCPNqBsvL6zYYafH3ap4p"],"license":"MIT"},"src/IStoreRegistration.sol":{"keccak256":"0x9e91a73f93cc9ebc00c265c83177f6a3f8a156749a9261202e2845e12aeaa96b","urls":["bzz-raw://a39280d87d22dd0a959d8f55925cb092dba1fee2f11d3dd8e3ffabed45a9ab6a","dweb:/ipfs/QmRMBFLJtT2KN43Xz9P3vUNWxXrP8rLTNBFw2P6Z7EGeaS"],"license":"MIT"},"src/IStoreWrite.sol":{"keccak256":"0x120fd448da5806e09ecb5327ad4dba64df01d2ee7232de0979133627e87e24ba","urls":["bzz-raw://7a3cb151b2ddee217f330d61813b2dcd997de94940c903719f6d066a21467890","dweb:/ipfs/Qmbes1RRY6KdtsMohp8834xXyipeQK9GJ41NfgXK1d1QAZ"],"license":"MIT"},"src/Memory.sol":{"keccak256":"0xef6e7000b181c2991aeacbf99a9d886f8c4df88878b857713f851185b63a7811","urls":["bzz-raw://b079b4773d140ab2c01bdb04facfa56a78f753aea7122fa445b2bfa133411392","dweb:/ipfs/QmWYWKFpwtsPeGdCSxcANgxXUbwAuMMgR7iMVPDSCZxz2A"],"license":"MIT"},"src/ResourceId.sol":{"keccak256":"0x842b07f2ff9df2e1ecf9bf424b0e5a77e1471c983d674cf86b76c365178d6cc5","urls":["bzz-raw://f4c2df8853b020aef1bb8615ac69d5512a9b5385b82c88e03b27dc521c9d007b","dweb:/ipfs/QmWEDiJn69DvHsdrikrMWY8DERWPSeWwVYgPcunfq3yiT7"],"license":"MIT"},"src/Schema.sol":{"keccak256":"0x0d2a08030d21292ecbcc850d9111f3817d03f17cd5e02186894848a9152d79d7","urls":["bzz-raw://3f30024c1613fb587aaba4c1dcb8e4e46ed765a2cebd5b63fbebd327d1bf13d3","dweb:/ipfs/QmZzqSnPMYKDYwbFNvUFrvuazMUyQHzQ59w3A9x6juHAm7"],"license":"MIT"},"src/Slice.sol":{"keccak256":"0xae6c03881fdfa56cba1879d9c9c6b52c2829e6a278a200176678d8da05a89345","urls":["bzz-raw://3cad7dc4944c0518de2e7f99697485d365ae37aa6cad6967996377c2dd951fe4","dweb:/ipfs/QmW3grFwr8BcgJmLfjLbj3FthnD7NRUBFMFiahbXztHPr7"],"license":"MIT"},"src/Storage.sol":{"keccak256":"0x7e735a4c7fa8b8a5fe2371d90801e3287ddb78efed69b31e1a76f0b7b153c4c3","urls":["bzz-raw://9e6db36bd52144b6feeecd91a58fc311127a3892fc96c4171db5b570fe9876ee","dweb:/ipfs/QmS6LqnTZvpMc4eiz5JowBoNnh3RYemG6JHjqtYucT1rQi"],"license":"MIT"},"src/StoreCore.sol":{"keccak256":"0x9513dc38e5baadde0ba9b08320a324043b0e88a10702be5c3507da8c3d45e861","urls":["bzz-raw://99c80c65a394763668e4aed69220fec6bb3ed847fb277ddd1ff1d4bfdf452da2","dweb:/ipfs/QmRT2BATKtrYmixWMuWo9Cz8g8oscfLNSmvjxTyiTNA1pc"],"license":"MIT"},"src/StoreHook.sol":{"keccak256":"0x5123aae46b3f37ea6d7d567fd82658ea7f58d06a6ebd76aaf358582459f13173","urls":["bzz-raw://7223f7ca27353b8d86bd75441df8221383e6966caa7c25f9a802e7623bb5275d","dweb:/ipfs/QmaGmQK5JK2jS2sodKVxWuKiRNrtN8ErbdqE53PDatEDym"],"license":"MIT"},"src/StoreSwitch.sol":{"keccak256":"0x7edf7c1641408f3a580eb28bda58054583cb846f875608612671c6d40712ba40","urls":["bzz-raw://4146adef610d1daab085a81aa9f2d4fd8c4e5f459b9ef184f3ef23465573cf91","dweb:/ipfs/QmQqZMsbkzSNG6VfYzQLdRCBCsNohBSVQmWoTP6QvKmKUP"],"license":"MIT"},"src/codegen/index.sol":{"keccak256":"0x094a6f1e2910b345b6b254e0fc2c8882b3190c673f7ee19742e857057a4d3f85","urls":["bzz-raw://18908e2e7e878635abea72ef99851fddd204371e6b641f010e831ebfa0b1bfd4","dweb:/ipfs/QmSNAxXqxTrzPkZ4rSAQgBnuer1yLPq74hoqnzrZV3WGsb"],"license":"MIT"},"src/codegen/tables/Hooks.sol":{"keccak256":"0xcc0fa969a57724e7a9184009e2b1ea8ecb209a06e283c6d2b6a15cabff35f39d","urls":["bzz-raw://d91985b8f48fcb8259b776c10bc17a1656e8dbeaa15c0c0e73368af38e6cfc8a","dweb:/ipfs/QmRiYbrXqqWcTrvwz95kN6ZiMhUBfLiUycxQiSGeZFDkuo"],"license":"MIT"},"src/codegen/tables/ResourceIds.sol":{"keccak256":"0xa52e8323cc7227d69a3c6b2e244b4e0face106eeaa5cf23e759b0278b0f4a7ab","urls":["bzz-raw://bf5d3ede2d114c26abe7b5268ed17aedb56d6ded91af19019ecebb75edf48b36","dweb:/ipfs/QmWwqNFjqWFhfv8ABRXV9mbZBGumz741YCmVuQPqtiVZaD"],"license":"MIT"},"src/codegen/tables/StoreHooks.sol":{"keccak256":"0x155aa0e073774674596a28371a3a863ad1d6c44d418140269d2982a45e40734b","urls":["bzz-raw://c849ad6563c4afbdd7eec40042c9afa0d9919ece10c2acab390e358095ddd160","dweb:/ipfs/QmbB7eVhKe3simEvugH18e1fBJKmwqionms3YWbWuRBDYV"],"license":"MIT"},"src/codegen/tables/Tables.sol":{"keccak256":"0x7930483bedccb95dd73447108e67d576924c83ec591cb70c699cdea7ebaabccc","urls":["bzz-raw://5c23093bf098e8e1f224a0e20beb6860d461a5f8d33265d382e3d43bdc431080","dweb:/ipfs/QmSQwjDCEgTUgUWajjETvCRJd18ZPRhYPyS6Rcg6wDizXw"],"license":"MIT"},"src/constants.sol":{"keccak256":"0x67e0d59237bd37424827ecde1ecdbe71f65376af517b0623cd8f8d5451bca7a6","urls":["bzz-raw://09c5ec7fe73e06140957d44a3d9938587711c783ccbf08ff017638c9279a3168","dweb:/ipfs/QmfS9ZRqHXmBJ1h5B4x4gbU6d18DtMgKZSkxhQgNVRxueu"],"license":"MIT"},"src/rightMask.sol":{"keccak256":"0x28887aab8ad5ca598927e59d702999ca6e3b3128f1cddd2b995a381c8d04b275","urls":["bzz-raw://7710847f4689b7f5b81436c7d52ae4395f244a2eebf8d398b2edd43accb06754","dweb:/ipfs/QmTD2wYqryXTynHAn5Vf9wtjUUSGeCJWENZTnWtBAK38pa"],"license":"MIT"},"src/storeHookTypes.sol":{"keccak256":"0x4f29001e53690ce74fe405a6d0376a564c9c743d1631d36fab04331865e4d572","urls":["bzz-raw://138c80abd63225a3eeb01ebfa1f9288e188a7ee5b2266b275fb4ed31b5aa30e3","dweb:/ipfs/QmdEx9uHgCCbTcetGwFH5a66Ft7ajmrMDXvP1fW7WjnnE2"],"license":"MIT"},"src/storeResourceTypes.sol":{"keccak256":"0x1c4cb6b3ecf76f614479ab304d7de3ade0e99c7ccfd07717b57c92f699a27261","urls":["bzz-raw://2c9b0e0c9b3b5610d6fd65a8ffd7c54df390a34ccc70d58f4a055c49ad1ea586","dweb:/ipfs/QmP6ffpnR7aRyvq9AiUkVNH6LbGfFP3NDq7E2n2PVcHhp2"],"license":"MIT"},"src/tightcoder/DecodeSlice.sol":{"keccak256":"0x310523f7f3acca841e62fe50be8d8b042cad5b3c239cb1105d6623cf83e63152","urls":["bzz-raw://1cc40ca233acf6502bc65677b381c05331dd7323953e54b5df969051e47f851e","dweb:/ipfs/QmTxy9mhodT8drezB5K1kPR78AMaARomoJqDyaWpLuCKui"],"license":"MIT"},"src/tightcoder/EncodeArray.sol":{"keccak256":"0x259ee545fd9dfd4767f0b7fef31f52fd3c54c4a1c6657d6fbda4927800c937b3","urls":["bzz-raw://0a4e31efa9f476cd267af7c3e11fe0151252206a1f6407a80a4092444c2de8ea","dweb:/ipfs/QmRF4gWYw33mFTMh7nX8DJ1qzx3Ko6yMsnxubzYTRppdyo"],"license":"MIT"},"src/tightcoder/TightCoder.sol":{"keccak256":"0x0e74ff88ec94cb33f79d8afc1497c4fdccf02db40ab47f3701c7d02fc305d4d8","urls":["bzz-raw://36b7cd0c2a3f2dcdc83ab7ac5a93f123746ce29c0f1000f2b275ad2c647ff0f3","dweb:/ipfs/QmYdipHYUhHhS78wLdtmKZUK14FEwpto5mFy3rNeZssMLz"],"license":"MIT"},"src/version.sol":{"keccak256":"0x78c571906ee999ee7e56d4f7702b8a93c3a9e55e6b552aca115b5f6ac7f1c80a","urls":["bzz-raw://a9f141b2d556b2a2545e7db5606e8a038679a995a22aeaf1702cb3a60320b60a","dweb:/ipfs/QmY7x258Fhj3TT3RT4sNyyfiRphVYdZXhtAnSYpasJ4xVQ"],"license":"MIT"},"test/MirrorSubscriber.sol":{"keccak256":"0x22402bc241f9c0f40603b09a2d895cedeb46db90a2cbcd9669250b9a283adaa3","urls":["bzz-raw://81beac1c5b150c117a09f9bdbb07fdaa88ad87d1f88c21a3097d4ddf8c3463b8","dweb:/ipfs/QmaSKCCmSv2m7HHXA6HPsQ1fZPogahLs1vjFLzzMRHEGQq"],"license":"MIT"}},"version":1},"id":72}