@latticexyz/world-modules 2.0.0-main-2b8c0bcc → 2.0.0-main-9448c3f1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/ERC20.t.sol/ERC20Test.json +1 -1
- package/out/ERC721.t.sol/ERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/ERC721Test.json +1 -1
- package/out/ERC721.t.sol/ERC721TokenReceiver.json +1 -1
- package/out/ERC721.t.sol/NonERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/RevertingERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/WrongReturnDataERC721Recipient.json +1 -1
- package/out/KeysInTableModule.t.sol/KeysInTableModuleTest.json +1 -1
- package/out/KeysWithValueModule.t.sol/KeysWithValueModuleTest.json +1 -1
- package/out/PuppetModule.t.sol/PuppetModuleTest.json +1 -1
- package/out/PuppetModule.t.sol/PuppetTestSystem.json +1 -1
- package/out/StandardDelegationsModule.t.sol/StandardDelegationsModuleTest.json +1 -1
- package/out/SystemSwitch.sol/SystemSwitch.json +1 -1
- package/out/SystemSwitch.t.sol/EchoSystem.abi.json +98 -1
- package/out/SystemSwitch.t.sol/EchoSystem.abi.json.d.ts +98 -1
- package/out/SystemSwitch.t.sol/EchoSystem.json +1 -1
- package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json +59 -15
- package/out/SystemSwitch.t.sol/SystemSwitchTest.abi.json.d.ts +59 -15
- package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
- package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
- package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json +68 -0
- package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.abi.json.d.ts +68 -0
- package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
- package/out/getUniqueEntity.sol/getUniqueEntity.json +1 -1
- package/out/query.t.sol/QueryTest.json +1 -1
- package/out/registerERC721.sol/registerERC721.json +1 -1
- package/package.json +8 -8
- package/src/utils/SystemSwitch.sol +6 -9
@@ -1 +1 @@
|
|
1
|
-
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testCallFromCallboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromSystemDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromTimeboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556200005061737960f01b686e616d65737061636560b81b697465737453797374656d60b01b62000089565b602055602180546001600160a01b03199081166001179091556022805490911660021790553480156200008257600080fd5b50620000f6565b60006200009960706010620000ce565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b80820180821115620000f057634e487b7160e01b600052601160045260246000fd5b92915050565b6201ff1780620001076000396000f3fe60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a696040518060600160405280602881526020016201feb96028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f6040518060600160405280602181526020016201fe706021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a81526020016201fee1602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd96040518060600160405280602881526020016201fe916028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61767e806200376083390190565b611668806200adde83390190565b61028c806200c44683390190565b615368806200c6d283390190565b611c688062011a3a83390190565b61178f80620136a283390190565b610b388062014e3183390190565b6157b8806201596983390190565b614d4f806201b12183390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b6119f3806200306a83390190565b61192d8062004a5d83390190565b6112f4806200638a83390190565b60805160a05160c05160e051612f456200012560003960006106130152600061049101526000610310015260005050612f456000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004612a14565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004612a6c565b610203565b005b604051601f193601358152602001610096565b6100df610102366004612a6c565b610235565b6100a76106e9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe6106f3565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061023f6106e9565b9050610249610725565b610251610790565b6102596107ec565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526102ee90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161038c9250612b65565b600060405180830381855af49150503d80600081146103c7576040519150601f19603f3d011682016040523d82523d6000602084013e6103cc565b606091505b5091509150816103df576103df81610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261046f90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161050d9250612b65565b600060405180830381855af49150503d8060008114610548576040519150601f19603f3d011682016040523d82523d6000602084013e61054d565b606091505b509092509050816105615761056181610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105f190612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161068f9250612b65565b600060405180830381855af49150503d80600081146106ca576040519150601f19603f3d011682016040523d82523d6000602084013e6106cf565b606091505b509092509050816106e3576106e381610850565b50505050565b60006101fe610858565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107225750335b90565b61078e7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610771610862565b6107796109aa565b6107816109e4565b610789610b66565b610bdd565b565b61078e7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000006107dc610cb1565b6107e46109aa565b610781610d76565b61078e7f7462000000000000000000000000000054696d65626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610838610e96565b6108406109aa565b610848610f15565b610789610fdf565b805160208201fd5b60006101fe611056565b60408051600480825260a082019092526000918291906020820160808036833701905050905060618160008151811061089d5761089d612b81565b602002602001019060c58111156108b6576108b6612b97565b908160c58111156108c9576108c9612b97565b815250506061816001815181106108e2576108e2612b81565b602002602001019060c58111156108fb576108fb612b97565b908160c581111561090e5761090e612b97565b81525050605f8160028151811061092757610927612b81565b602002602001019060c581111561094057610940612b97565b908160c581111561095357610953612b97565b81525050605f8160038151811061096c5761096c612b81565b602002602001019060c581111561098557610985612b97565b908160c581111561099857610998612b97565b9052506109a4816110a2565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061096c5761096c612b81565b60408051600480825260a08201909252606091816020015b60608152602001906001900390816109fc5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610a5c57610a5c612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610ab057610ab0612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b0457610b04612b81565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610b5857610b58612b81565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b7d5790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b6000610be7611056565b90503073ffffffffffffffffffffffffffffffffffffffff821603610c1957610c14878787878787611266565b610ca8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610c75908a908a908a908a908a908a90600401612c33565b600060405180830381600087803b158015610c8f57600080fd5b505af1158015610ca3573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610cec57610cec612b81565b602002602001019060c5811115610d0557610d05612b97565b908160c5811115610d1857610d18612b97565b81525050606181600181518110610d3157610d31612b81565b602002602001019060c5811115610d4a57610d4a612b97565b908160c5811115610d5d57610d5d612b97565b81525050605f8160028151811061096c5761096c612b81565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610d8e5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610dee57610dee612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610e4257610e42612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b5857610b58612b81565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610ed057610ed0612b81565b602002602001019060c5811115610ee957610ee9612b97565b908160c5811115610efc57610efc612b97565b8152505060618160018151811061096c5761096c612b81565b6040805160028082526060828101909352816020015b6060815260200190600190039081610f2b5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f8b57610f8b612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610b5857610b58612b81565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ff65790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061109d573391505090565b919050565b6000601c825111156110d5578151604051635318beb960e01b81526004016110cc91815260200190565b60405180910390fd5b60008080805b85518110156111b05760006111198783815181106110fb576110fb612b81565b602002602001015160c581111561111457611114612b97565b6116fa565b90508060000361112e57600190920191611166565b8215611166576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061118757611187612b81565b602002602001015160c58111156111a0576111a0612b97565b901b9490941793506001016110db565b5060058111156111d657604051635318beb960e01b8152600481018290526024016110cc565b845181900360086111e960026020612c93565b6111f39190612ca6565b83901b93909317926008600161120b60026020612c93565b6112159190612c93565b61121f9190612ca6565b81901b9390931792600860018061123860026020612c93565b6112429190612c93565b61124c9190612c93565b6112569190612ca6565b9190911b92909217949350505050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016148015906112fa57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15611376577f7462000000000000000000000000000000000000000000000000000000000000868760405160200161133491815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526110cc939291600401612cbd565b61137f8561175a565b61138a8460016119a1565b6113958360006119a1565b60e084901c60e885901c0160ff168251146113f55760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff168151146114555760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146114cd5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b6114d685611b3d565b6114df84611b3d565b14611531576114ed85611b3d565b6114f684611b3d565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b61153a85611b6f565b61154384611b6f565b146115955761155185611b6f565b61155a84611b6f565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60005b6115a186611b3d565b811015611637576115c66115b58583611b8c565b60c581111561111457611114612b97565b6008601b8390030287901c60ff161461162f576008601b8290030286901c60ff166115f46115b58684611b8c565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b600101611598565b5061164186611bb4565b1561169b57858660405160200161165a91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526110cc9291600401612cfe565b6116e786868686866040516020016116b39190612d17565b604051602081830303815290604052866040516020016116d39190612d17565b604051602081830303815290604052611c59565b6116f2866001611d3c565b505050505050565b6000808260c581111561170f5761170f612b97565b60ff169050606181101561172957601f1660010192915050565b60618360c581111561173d5761173d612b97565b0361174b5750601492915050565b50600092915050565b50919050565b80611791576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061179c82611b6f565b905060058111156117e3576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016110cc565b60006117ee83611b3d565b905060006117fc8383612d2a565b9050601c811115611843576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016110cc565b6000805b838110156118ee5760ff601b82900360080287901c16600081900361189b576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b60208111156118d9576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b6118e38184612d2a565b925050600101611847565b506118f885611dfa565b81146119445761190785611dfa565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016110cc565b825b601c8110156116f25760ff601b82900360080287901c168015611998576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b50600101611946565b801580156119ad575081155b156119ce57604051635318beb960e01b8152600060048201526024016110cc565b60006119d983611b6f565b90506005811115611a0057604051635318beb960e01b8152600481018290526024016110cc565b6000611a0b84611b3d565b90506000611a198383612d2a565b9050601c811115611a4057604051635318beb960e01b8152600481018290526024016110cc565b6000805b83811015611aac576000611a5b6115b58984611b8c565b905080600003611a97576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa18184612d2a565b925050600101611a44565b50611ab686611dfa565b8114611ae157611ac586611dfa565b604051635318beb960e01b81526004016110cc91815260200190565b825b82811015610ca8576000611afa6115b58984611b8c565b90508015611b34576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611ae3565b600060086001611b4f60026020612c93565b611b599190612c93565b611b639190612ca6565b8260ff911c1692915050565b60006008600180611b8260026020612c93565b611b4f9190612c93565b6000601b8290036008028360ff911c1660c5811115611bad57611bad612b97565b9392505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611bed57611bed612b81565b60209081029190910101526000611c457f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611e1d565b9050611c518160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611c908484611e53565b90506000611c9e8585611e70565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611cd857611cd8612b81565b6020908102919091010152611d307f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611e9c565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611d7257611d72612b81565b602002602001018181525050611df57f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611dc091151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006121d5565b505050565b60006008611e0a60026020612c93565b611e149190612ca6565b9190911c919050565b6000611e4a611e2c86866121f1565b60ff858116601b0360080285901c16611e458587612247565b612280565b95945050505050565b8151815160009181810160389190911b1760609190911b17611bad565b60608282604051602001611e85929190612d3d565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611f2857857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611f1b9493929190612da8565b60405180910390a26116f2565b6000611f33876122d1565b905060005b815181101561200c576000828281518110611f5557611f55612b81565b60200260200101519050611f816001826affffffffffffffffffffff191661235a90919063ffffffff16565b15612003576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611fd0908c908c908c908c908c908c90600401612df2565b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050505b50600101611f38565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516120439493929190612da8565b60405180910390a2600061205788886121f1565b9050600060208701905061206f826000895184612378565b600061207a85611b6f565b11156120fe57600061208c8a8a612437565b878155905060208601915060008060005b6120a688611b6f565b8160ff1610156120f9576120bb8d8d8361248d565b92506120d68a8260ff166028026038011c64ffffffffff1690565b91506120e58360008488612378565b6120ef8286612d2a565b945060010161209d565b505050505b60005b8351811015611d3057600084828151811061211e5761211e612b81565b6020026020010151905061214a6002826affffffffffffffffffffff191661235a90919063ffffffff16565b156121cc576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612199908e908e908e908e908e908e90600401612df2565b600060405180830381600087803b1580156121b357600080fd5b505af11580156121c7573d6000803e3d6000fd5b505050505b50600101612101565b6121ea85856121e48487612247565b8561250d565b5050505050565b60008282604051602001612206929190612e4b565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156122785761226e60ff601b83900360080287901c1683612d2a565b915060010161224c565b509392505050565b6000602082106122a6576020820484019350602082816122a2576122a2612e87565b0691505b508254600882021b602082900380841115612278576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061230b5761230b612b81565b602090810291909101015260006123437f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836127a8565b9050611c5161235582600084516127e2565b612870565b60008160ff168261236b8560581c90565b1660ff1614905092915050565b82156123f257602083106123a25760208304840193506020838161239e5761239e612e87565b0692505b82156123f25760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116123e35750506106e3565b50600194909401939182900391015b5b602082106124145780518455600190930192601f19909101906020016123f3565b81156106e3576000600019600884021c8554835182191691161785555050505050565b6000828260405160200161244c929190612e4b565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016124a2929190612e4b565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361259757837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161258a93929190612e9d565b60405180910390a26106e3565b60006125a385856121f1565b905060006125b0866122d1565b905060005b81518110156126855760008282815181106125d2576125d2612b81565b602002602001015190506125fe6004826affffffffffffffffffffff191661235a90919063ffffffff16565b1561267c576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612649908b908b908b908b90600401612eda565b600060405180830381600087803b15801561266357600080fd5b505af1158015612677573d6000803e3d6000fd5b505050505b506001016125b5565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516126ba93929190612e9d565b60405180910390a26126d5828565ffffffffffff1685612881565b60005b8151811015610ca85760008282815181106126f5576126f5612b81565b602002602001015190506127216008826affffffffffffffffffffff191661235a90919063ffffffff16565b1561279f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061276c908b908b908b908b90600401612eda565b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b505050505b506001016126d8565b6060611c516127b885858561248d565b60006127dd856127c88989612897565b9060ff166028026038011c64ffffffffff1690565b6128aa565b6000818311806127f25750835182115b1561282f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016110cc93929190612f13565b6020840161283d8482612d2a565b9050600061284b8585612c93565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611bad83601560006128cd565b611df5838383516128928560200190565b612378565b6000611bad6128a68484612437565b5490565b60405160208101601f19603f848401011660405282825261227885858584612948565b606060006128db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161290157612901612e87565b04905060405193506020840160208202810160405281855260005b8281101561293c578451871c82529387019360209091019060010161291c565b50505050509392505050565b82156129cf57602083106129725760208304840193506020838161296e5761296e612e87565b0692505b82156129cf5760208390036000818410156129955750600019600884021c61299f565b50600019600882021c5b8554600886021b8184511682198216178452508184116129c05750506106e3565b50600194909401939182900391015b5b602082106129f15783548152600190930192601f19909101906020016129d0565b81156106e3576000600019600884021c8251865482191691161782525050505050565b600060208284031215612a2657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215612a7e57600080fd5b813567ffffffffffffffff80821115612a9657600080fd5b818401915084601f830112612aaa57600080fd5b813581811115612abc57612abc612a56565b604051601f8201601f19908116603f01168101908382118183101715612ae457612ae4612a56565b81604052828152876020848701011115612afd57600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156117545760001960209190910360031b1b16919050565b60005b83811015612b5c578181015183820152602001612b44565b50506000910152565b60008251612b77818460208701612b41565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612bc5816020860160208601612b41565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612c2657601f19868403018952612c14838351612bad565b98840198925090830190600101612bf8565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612c5e60c0830185612bd9565b82810360a0840152612c708185612bd9565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee612c7d565b80820281158282048414176101ee576101ee612c7d565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611e4a6060830184612bad565b828152604060208201526000611c516040830184612bad565b602081526000611bad6020830184612bd9565b808201808211156101ee576101ee612c7d565b60008351612d4f818460208801612b41565b835190830190612d63818360208801612b41565b01949350505050565b60008151808452602080850194506020840160005b83811015612d9d57815187529582019590820190600101612d81565b509495945050505050565b608081526000612dbb6080830187612d6c565b8281036020840152612dcd8187612bad565b90508460408401528281036060840152612de78185612bad565b979650505050505050565b86815260c060208201526000612e0b60c0830188612d6c565b8281036040840152612e1d8188612bad565b90508560608401528281036080840152612e378186612bad565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612e7a57815184529284019290840190600101612e5e565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612eb06060830186612d6c565b65ffffffffffff851660208401528281036040840152612ed08185612bad565b9695505050505050565b848152608060208201526000612ef36080830186612d6c565b65ffffffffffff851660408401528281036060840152612de78185612bad565b606081526000612f266060830186612bad565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506119d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a61008536600461152b565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611627565b6101f6565b6100e56100e036600461167e565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b87856103dc565b600192505050610261565b801561025a5760001901610231866102526101e7565b8785856104c7565b6000925050505b9392505050565b6102836102736101e7565b85858580519060200120856104c7565b50505050565b60006101f16105fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376116dd565b6020026020010181815250508381600281518110610357576103576116dd565b6020026020010181815250508281600381518110610377576103776116dd565b602090810291909101015260006103cf7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610606565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061041f5761041f6116dd565b602002602001018181525050836001600160a01b031660001b8160018151811061044b5761044b6116dd565b602002602001018181525050828160028151811061046b5761046b6116dd565b602002602001018181525050818160038151811061048b5761048b6116dd565b60209081029190910101526104c07f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106c3565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061050a5761050a6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610536576105366116dd565b6020026020010181815250508381600281518110610556576105566116dd565b6020026020010181815250508281600381518110610576576105766116dd565b6020026020010181815250506105f47f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105bf91815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061076c565b505050505050565b60006101f1610821565b600080610611610821565b9050306001600160a01b038216036106375761062f86868686610860565b9150506103d4565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061068290899089908990899060040161172f565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061175e565b60006106cd610821565b9050306001600160a01b038216036106ee576106e98383610896565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906107359086908690600401611777565b600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050505050565b6000610776610821565b9050306001600160a01b0382160361079a5761079586868686866108ad565b6105f4565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906107e790899089908990899089906004016117d6565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061085b573391505090565b919050565b600061088d61086f86866108c2565b60ff858116601b0360080285901c166108888587610918565b610951565b95945050505050565b6108a982826108a4856109a2565b610a27565b5050565b6104c085856108bc8487610918565b85610d26565b600082826040516020016108d792919061181d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109495761093f60ff601b83900360080287901c168361186f565b915060010161091d565b509392505050565b6000602082106109775760208204840193506020828161097357610973611882565b0691505b508254600882021b602082900380841115610949576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016109f157507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1610a1e7f746273746f72650000000000000000005461626c65730000000000000000000084610fc1565b60206000610951565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610aad57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610aa09190611898565b60405180910390a2505050565b6000610ab884610fdd565b905060005b8151811015610b8b576000828281518110610ada57610ada6116dd565b60200260200101519050610b066040826affffffffffffffffffffff191661106690919063ffffffff16565b15610b82576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b4f908990899089906004016118ab565b600060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050505b50600101610abd565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bbc9190611898565b60405180910390a26000610bd085856108c2565b9050610c29816000610be186611084565b67ffffffffffffffff811115610bf957610bf9611584565b6040519080825280601f01601f191660200182016040528015610c23576020820181803683370190505b506110a7565b6000610c34846110bd565b1115610c55576000610c4686866110fa565b9050610c53816020611150565b505b60005b82518110156105f4576000838281518110610c7557610c756116dd565b60200260200101519050610ca16080826affffffffffffffffffffff191661106690919063ffffffff16565b15610d1d576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610cea908a908a908a906004016118ab565b600060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050505b50600101610c58565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610db057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610da3939291906118d4565b60405180910390a2610283565b6000610dbc85856108c2565b90506000610dc986610fdd565b905060005b8151811015610e9e576000828281518110610deb57610deb6116dd565b60200260200101519050610e176004826affffffffffffffffffffff191661106690919063ffffffff16565b15610e95576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e62908b908b908b908b90600401611911565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505050505b50600101610dce565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610ed3939291906118d4565b60405180910390a2610eee828565ffffffffffff16856110a7565b60005b8151811015610763576000828281518110610f0e57610f0e6116dd565b60200260200101519050610f3a6008826affffffffffffffffffffff191661106690919063ffffffff16565b15610fb8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f85908b908b908b908b90600401611911565b600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b505050505b50600101610ef1565b60408051602081018490529081018290526000906060016108d7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611017576110176116dd565b6020908102919091010152600061104f7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361118d565b90506103d461106182600084516111c7565b61125e565b60008160ff16826110778560581c90565b1660ff1614905092915050565b6000600861109460026020611955565b61109e9190611968565b9190911c919050565b6106e9838383516110b88560200190565b61126f565b600060086001806110d060026020611955565b6110da9190611955565b6110e49190611955565b6110ee9190611968565b8260ff911c1692915050565b6000828260405160200161110f92919061181d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061115f83601f61186f565b611169919061197f565b611173908461186f565b90505b808310156106e95760008355600183019250611176565b60606103d461119d85858561132e565b60006111c2856111ad89896113ae565b9060ff166028026038011c64ffffffffff1690565b6113c1565b6000818311806111d75750835182115b1561121d578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401611214939291906119a1565b60405180910390fd5b6020840161122b848261186f565b905060006112398585611955565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006113e4565b82156112e957602083106112995760208304840193506020838161129557611295611882565b0692505b82156112e95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112da575050610283565b50600194909401939182900391015b5b6020821061130b5780518455600190930192601f19909101906020016112ea565b8115610283576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161134392919061181d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102616113bd84846110fa565b5490565b60405160208101601f19603f84840101166040528282526109498585858461145f565b606060006113f28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161141857611418611882565b04905060405193506020840160208202810160405281855260005b82811015611453578451871c825293870193602090910190600101611433565b50505050509392505050565b82156114e657602083106114895760208304840193506020838161148557611485611882565b0692505b82156114e65760208390036000818410156114ac5750600019600884021c6114b6565b50600019600882021c5b8554600886021b8184511682198216178452508184116114d7575050610283565b50600194909401939182900391015b5b602082106115085783548152600190930192601f19909101906020016114e7565b8115610283576000600019600884021c8251865482191691161782525050505050565b60006020828403121561153d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b038116811461085b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115ab57600080fd5b813567ffffffffffffffff808211156115c6576115c6611584565b604051601f8301601f19908116603f011681019082821181831017156115ee576115ee611584565b8160405283815286602085880101111561160757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561163c57600080fd5b6116458461156d565b925060208401359150604084013567ffffffffffffffff81111561166857600080fd5b6116748682870161159a565b9150509250925092565b6000806000806080858703121561169457600080fd5b61169d8561156d565b935060208501359250604085013567ffffffffffffffff8111156116c057600080fd5b6116cc8782880161159a565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561172457815187529582019590820190600101611708565b509495945050505050565b84815260806020820152600061174860808301866116f3565b60ff949094166040830152506060015292915050565b60006020828403121561177057600080fd5b5051919050565b8281526040602082015260006103d460408301846116f3565b6000815180845260005b818110156117b65760208185018101518683018201520161179a565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117ef60a08301876116f3565b60ff86166040840152828103606084015261180a8186611790565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561184c57815184529284019290840190600101611830565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611859565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846116f3565b8381526060602082015260006118c460608301856116f3565b9050826040830152949350505050565b6060815260006118e760608301866116f3565b65ffffffffffff8516602084015282810360408401526119078185611790565b9695505050505050565b84815260806020820152600061192a60808301866116f3565b65ffffffffffff85166040840152828103606084015261194a8185611790565b979650505050505050565b818103818111156101e1576101e1611859565b80820281158282048414176101e1576101e1611859565b60008261199c57634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006119b46060830186611790565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061190d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046114b4565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611523565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046115ee565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103a3565b6001915050610254565b801561024e5760001901610227856102476101e7565b868461046d565b60009150505b9392505050565b61026e6102666101e7565b84848461046d565b505050565b60006101f1610581565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f5611621565b602002602001018181525050836001600160a01b031660001b8160018151811061032157610321611621565b602002602001018181525050828160028151811061034157610341611621565b602090810291909101015260006103997f7462000000000000000000000000000053797374656d626f756e6444656c656783837e2001002000000000000000000000000000000000000000000000000000000061058b565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b816000815181106103e6576103e6611621565b602002602001018181525050826001600160a01b031660001b8160018151811061041257610412611621565b602002602001018181525050818160028151811061043257610432611621565b60209081029190910101526104677f7462000000000000000000000000000053797374656d626f756e6444656c656782610650565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104b0576104b0611621565b602002602001018181525050836001600160a01b031660001b816001815181106104dc576104dc611621565b60200260200101818152505082816002815181106104fc576104fc611621565b60200260200101818152505061057a7f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161054591815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006106f4565b5050505050565b60006101f16107aa565b6000806105966107aa565b9050306001600160a01b038216036105bc576105b4868686866107e9565b915050610648565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610607908990899089908990600401611673565b602060405180830381865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906116a2565b949350505050565b600061065a6107aa565b9050306001600160a01b038216036106765761026e838361081f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106bd90869086906004016116bb565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050565b60006106fe6107aa565b9050306001600160a01b038216036107225761071d8686868686610836565b6107a2565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061076f908990899089908990899060040161171a565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806107e4573391505090565b919050565b60006108166107f8868661084b565b60ff858116601b0360080285901c1661081185876108a1565b6108da565b95945050505050565b610832828261082d8561092b565b6109b0565b5050565b61057a858561084584876108a1565b85610caf565b60008282604051602001610860929190611761565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108d2576108c860ff601b83900360080287901c16836117b3565b91506001016108a6565b509392505050565b600060208210610900576020820484019350602082816108fc576108fc6117c6565b0691505b508254600882021b6020829003808411156108d2576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161097a57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e16109a77f746273746f72650000000000000000005461626c65730000000000000000000084610f4a565b602060006108da565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610a3657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610a2991906117dc565b60405180910390a2505050565b6000610a4184610f66565b905060005b8151811015610b14576000828281518110610a6357610a63611621565b60200260200101519050610a8f6040826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610b0b576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610ad8908990899089906004016117ef565b600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050505b50600101610a46565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610b4591906117dc565b60405180910390a26000610b59858561084b565b9050610bb2816000610b6a8661100d565b67ffffffffffffffff811115610b8257610b8261150d565b6040519080825280601f01601f191660200182016040528015610bac576020820181803683370190505b50611030565b6000610bbd84611046565b1115610bde576000610bcf8686611083565b9050610bdc8160206110d9565b505b60005b82518110156107a2576000838281518110610bfe57610bfe611621565b60200260200101519050610c2a6080826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610ca6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610c73908a908a908a906004016117ef565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505b50600101610be1565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d3957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d2c93929190611818565b60405180910390a2610467565b6000610d45858561084b565b90506000610d5286610f66565b905060005b8151811015610e27576000828281518110610d7457610d74611621565b60200260200101519050610da06004826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610e1e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610deb908b908b908b908b9060040161184b565b600060405180830381600087803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b505050505b50600101610d57565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5c93929190611818565b60405180910390a2610e77828565ffffffffffff1685611030565b60005b81518110156106eb576000828281518110610e9757610e97611621565b60200260200101519050610ec36008826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610f41576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0e908b908b908b908b9060040161184b565b600060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050505b50600101610e7a565b6040805160208101849052908101829052600090606001610860565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fa057610fa0611621565b60209081029190910101526000610fd87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611116565b9050610648610fea8260008451611150565b6111e7565b60008160ff16826110008560581c90565b1660ff1614905092915050565b6000600861101d6002602061188f565b61102791906118a2565b9190911c919050565b61026e838383516110418560200190565b6111f8565b600060086001806110596002602061188f565b611063919061188f565b61106d919061188f565b61107791906118a2565b8260ff911c1692915050565b60008282604051602001611098929190611761565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206110e883601f6117b3565b6110f291906118b9565b6110fc90846117b3565b90505b8083101561026e57600083556001830192506110ff565b60606106486111268585856112b7565b600061114b856111368989611337565b9060ff166028026038011c64ffffffffff1690565b61134a565b6000818311806111605750835182115b156111a6578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119d939291906118db565b60405180910390fd5b602084016111b484826117b3565b905060006111c2858561188f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061136d565b821561127257602083106112225760208304840193506020838161121e5761121e6117c6565b0692505b82156112725760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611263575050610467565b50600194909401939182900391015b5b602082106112945780518455600190930192601f1990910190602001611273565b8115610467576000600019600884021c8554835182191691161785555050505050565b600083836040516020016112cc929190611761565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546113468484611083565b5490565b60405160208101601f19603f84840101166040528282526108d2858585846113e8565b6060600061137b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816113a1576113a16117c6565b04905060405193506020840160208202810160405281855260005b828110156113dc578451871c8252938701936020909101906001016113bc565b50505050509392505050565b821561146f57602083106114125760208304840193506020838161140e5761140e6117c6565b0692505b821561146f5760208390036000818410156114355750600019600884021c61143f565b50600019600882021c5b8554600886021b818451168219821617845250818411611460575050610467565b50600194909401939182900391015b5b602082106114915783548152600190930192601f1990910190602001611470565b8115610467576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b03811681146107e457600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561153857600080fd5b611541846114f6565b925060208401359150604084013567ffffffffffffffff8082111561156557600080fd5b818601915086601f83011261157957600080fd5b81358181111561158b5761158b61150d565b604051601f8201601f19908116603f011681019083821181831017156115b3576115b361150d565b816040528281528960208487010111156115cc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561160357600080fd5b61160c846114f6565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116685781518752958201959082019060010161164c565b509495945050505050565b84815260806020820152600061168c6080830186611637565b60ff949094166040830152506060015292915050565b6000602082840312156116b457600080fd5b5051919050565b8281526040602082015260006106486040830184611637565b6000815180845260005b818110156116fa576020818501810151868301820152016116de565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061173360a0830187611637565b60ff86166040840152828103606084015261174e81866116d4565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561179057815184529284019290840190600101611774565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e161179d565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611637565b8381526060602082015260006118086060830185611637565b9050826040830152949350505050565b60608152600061182b6060830186611637565b65ffffffffffff85166020840152828103604084015261039981856116d4565b8481526080602082015260006118646080830186611637565b65ffffffffffff85166040840152828103606084015261188481856116d4565b979650505050505050565b818103818111156101e1576101e161179d565b80820281158282048414176101e1576101e161179d565b6000826118d657634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006118ee60608301866116d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506112d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a610085366004610efb565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da366004610f77565b610203565b604051601f193601358152602001610096565b610105610100366004611042565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b8383610361565b5050565b60006101fe61046c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061106c565b602090810291909101015260006103587f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610476565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103af576103af61106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103e8576103e861106c565b6020026020010181815250506104667f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161043191815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610555565b50505050565b60006101fe610625565b600080610481610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104b4576104ac86868686610671565b91505061054d565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061050c9089908990899089906004016110be565b602060405180830381865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906110ed565b949350505050565b600061055f610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105905761058b868686868661069e565b61061d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906105ea908990899089908990899060040161114c565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066c573391505090565b919050565b600061035861068086866106ba565b60ff858116601b0360080285901c166106998587610710565b610749565b6106b385856106ad8487610710565b8561079a565b5050505050565b600082826040516020016106cf929190611193565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107415761073760ff601b83900360080287901c16836111e5565b9150600101610715565b509392505050565b60006020821061076f5760208204840193506020828161076b5761076b6111f8565b0691505b508254600882021b602082900380841115610741576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361082457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108179392919061120e565b60405180910390a2610466565b600061083085856106ba565b9050600061083d86610a3e565b905060005b815181101561091257600082828151811061085f5761085f61106c565b6020026020010151905061088b6004826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610909576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906108d6908b908b908b908b9060040161124b565b600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050505b50600101610842565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109479392919061120e565b60405180910390a2610962828565ffffffffffff1685610ae5565b60005b8151811015610a355760008282815181106109825761098261106c565b602002602001015190506109ae6008826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610a2c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906109f9908b908b908b908b9060040161124b565b600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b505050505b50600101610965565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7857610a7861106c565b60209081029190910101526000610ab07f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b00565b905061054d610ac28260008451610b3a565b610bd1565b60008160ff1682610ad88560581c90565b1660ff1614905092915050565b610afb83838351610af68560200190565b610be9565b505050565b606061054d610b10858585610ca8565b6000610b3585610b208989610d28565b9060ff166028026038011c64ffffffffff1690565b610d3b565b600081831180610b4a5750835182115b15610b90578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b879392919061128f565b60405180910390fd5b60208401610b9e84826111e5565b90506000610bac85856112b4565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610be28360156000610d5e565b9392505050565b8215610c635760208310610c1357602083048401935060208381610c0f57610c0f6111f8565b0692505b8215610c635760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c54575050610466565b50600194909401939182900391015b5b60208210610c855780518455600190930192601f1990910190602001610c64565b8115610466576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610cbd929190611193565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610be2610d378484610dd9565b5490565b60405160208101601f19603f848401011660405282825261074185858584610e2f565b60606000610d6c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d9257610d926111f8565b04905060405193506020840160208202810160405281855260005b82811015610dcd578451871c825293870193602090910190600101610dad565b50505050509392505050565b60008282604051602001610dee929190611193565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610eb65760208310610e5957602083048401935060208381610e5557610e556111f8565b0692505b8215610eb6576020839003600081841015610e7c5750600019600884021c610e86565b50600019600882021c5b8554600886021b818451168219821617845250818411610ea7575050610466565b50600194909401939182900391015b5b60208210610ed85783548152600190930192601f1990910190602001610eb7565b8115610466576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f0d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610be257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461066c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610f8c57600080fd5b610f9584610f3d565b925060208401359150604084013567ffffffffffffffff80821115610fb957600080fd5b818601915086601f830112610fcd57600080fd5b813581811115610fdf57610fdf610f61565b604051601f8201601f19908116603f0116810190838211818310171561100757611007610f61565b8160405282815289602084870101111561102057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561105557600080fd5b61105e83610f3d565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156110b357815187529582019590820190600101611097565b509495945050505050565b8481526080602082015260006110d76080830186611082565b60ff949094166040830152506060015292915050565b6000602082840312156110ff57600080fd5b5051919050565b6000815180845260005b8181101561112c57602081850181015186830182015201611110565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061116560a0830187611082565b60ff8616604084015282810360608401526111808186611106565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156111c2578151845292840192908401906001016111a6565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6111cf565b634e487b7160e01b600052601260045260246000fd5b6060815260006112216060830186611082565b65ffffffffffff8516602084015282810360408401526112418185611106565b9695505050505050565b8481526080602082015260006112646080830186611082565b65ffffffffffff8516604084015282810360608401526112848185611106565b979650505050505050565b6060815260006112a26060830186611106565b60208301949094525060400152919050565b818103818111156101ee576101ee6111cf56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611648806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c146102b6578063ea29e3ba146102cb576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611165565b6102e0565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610379565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611233565b610388565b6040516101699190611300565b3480156101e557600080fd5b506101f96101f4366004611313565b61040c565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610559565b34801561023c57600080fd5b5061025061024b3660046113ad565b610563565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046113c6565b6105ad565b3480156102ad57600080fd5b506101876105ea565b3480156102c257600080fd5b506101876105f4565b3480156102d757600080fd5b506101f96105fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103836106ea565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103b2919061140f565b600060405180830381855af49150503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50915091508161040457805181602001fd5b949350505050565b60408051600080825260208201909252906104487f7462000000000000000000000000000000000000000000000000000000000000868661071c565b9050306104536107a3565b73ffffffffffffffffffffffffffffffffffffffff16036104af576104aa81838560405160200161048b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107ef565b610552565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104e591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161051f959493929190611467565b600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050505b5050505050565b60006103836107a3565b6040805180820190915260008082526020820152604051806040016040528061058a610379565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105e19190611300565b60405180910390fd5b6000610383610379565b6000610383610559565b306106076107a3565b73ffffffffffffffffffffffffffffffffffffffff160361068b577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610681906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106819060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107195750335b90565b600061072a607060106114ce565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107ea573391505090565b919050565b61055285858585856108008b610805565b61088a565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161085457507e60030220202000000000000000000000000000000000000000000000000000919050565b6103736108817f746273746f72650000000000000000005461626c65730000000000000000000084610bd0565b60206000610c29565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361091657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161090994939291906114e1565b60405180910390a2610bc8565b600061092187610c7b565b905060005b81518110156109fa5760008282815181106109435761094361152b565b6020026020010151905061096f6001826affffffffffffffffffffff1916610d0490919063ffffffff16565b156109f1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109be908c908c908c908c908c908c90600401611541565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b50600101610926565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a3194939291906114e1565b60405180910390a26000610a458888610d22565b90506000602087019050610a5d826000895184610d37565b6000610a6885610df5565b1115610aec576000610a7a8a8a610e32565b878155905060208601915060008060005b610a9488610df5565b8160ff161015610ae757610aa98d8d83610e88565b9250610ac48a8260ff166028026038011c64ffffffffff1690565b9150610ad38360008488610d37565b610add82866114ce565b9450600101610a8b565b505050505b60005b8351811015610bc3576000848281518110610b0c57610b0c61152b565b60200260200101519050610b386002826affffffffffffffffffffff1916610d0490919063ffffffff16565b15610bba576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610b87908e908e908e908e908e908e90600401611541565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050505b50600101610aef565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c4f57602082048401935060208281610c4b57610c4b61159a565b0691505b508254600882021b602082900380841115610c73576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610cb557610cb561152b565b60209081029190910101526000610ced7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f08565b9050610404610cff8260008451610f42565b610fd0565b60008160ff1682610d158560581c90565b1660ff1614905092915050565b60008282604051602001610be89291906115b0565b8215610db15760208310610d6157602083048401935060208381610d5d57610d5d61159a565b0692505b8215610db15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610da2575050610def565b50600194909401939182900391015b5b60208210610dd35780518455600190930192601f1990910190602001610db2565b8115610def5783548151600019600885021c9182169119161784555b50505050565b60006008600180610e08600260206115ec565b610e1291906115ec565b610e1c91906115ec565b610e2691906115ff565b8260ff911c1692915050565b60008282604051602001610e479291906115b0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610e9d9291906115b0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6060610404610f18858585610e88565b6000610f3d85610f288989610fe8565b9060ff166028026038011c64ffffffffff1690565b610ffb565b600081831180610f525750835182115b15610f8f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105e193929190611616565b60208401610f9d84826114ce565b90506000610fab85856115ec565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610fe1836015600061101e565b9392505050565b6000610fe1610ff78484610e32565b5490565b60405160208101601f19603f8484010116604052828252610c7385858584611099565b6060600061102c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110525761105261159a565b04905060405193506020840160208202810160405281855260005b8281101561108d578451871c82529387019360209091019060010161106d565b50505050509392505050565b821561112057602083106110c3576020830484019350602083816110bf576110bf61159a565b0692505b82156111205760208390036000818410156110e65750600019600884021c6110f0565b50600019600882021c5b8554600886021b818451168219821617845250818411611111575050610def565b50600194909401939182900391015b5b602082106111425783548152600190930192601f1990910190602001611121565b8115610def576000600019600884021c8251865482191691161782525050505050565b60006020828403121561117757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610fe157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111d8576111d86111a7565b604051601f8501601f19908116603f01168101908282118183101715611200576112006111a7565b8160405280935085815286868601111561121957600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561124657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461126a57600080fd5b9150602083013567ffffffffffffffff81111561128657600080fd5b8301601f8101851361129757600080fd5b6112a6858235602084016111bd565b9150509250929050565b60005b838110156112cb5781810151838201526020016112b3565b50506000910152565b600081518084526112ec8160208601602086016112b0565b601f01601f19169290920160200192915050565b602081526000610fe160208301846112d4565b60008060006060848603121561132857600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461135857600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461138d57600080fd5b9150604084013580151581146113a257600080fd5b809150509250925092565b6000602082840312156113bf57600080fd5b5035919050565b6000602082840312156113d857600080fd5b813567ffffffffffffffff8111156113ef57600080fd5b8201601f8101841361140057600080fd5b610404848235602084016111bd565b600082516114218184602087016112b0565b9190910192915050565b60008151808452602080850194506020840160005b8381101561145c57815187529582019590820190600101611440565b509495945050505050565b85815260a06020820152600061148060a083018761142b565b828103604084015261149281876112d4565b905084606084015282810360808401526114ac81856112d4565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610373576103736114b8565b6080815260006114f4608083018761142b565b828103602084015261150681876112d4565b9050846040840152828103606084015261152081856112d4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061155a60c083018861142b565b828103604084015261156c81886112d4565b9050856060840152828103608084015261158681866112d4565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156115df578151845292840192908401906001016115c3565b5091979650505050505050565b81810381811115610373576103736114b8565b8082028115828204841417610373576103736114b8565b60608152600061162960608301866112d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061026c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f366004610216565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b60006101826000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff16905080610211573391505090565b919050565b60006020828403121561022857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025857600080fd5b939250505056fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615280620000e86000396000818161036f01526112a801526152806000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614387565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614387565b61025f34846143c4565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614434565b610983565b6040516103a591906144ea565b3480156103e757600080fd5b506102646103f636600461453f565b6109c6565b34801561040757600080fd5b5061026461041636600461453f565b610a79565b34801561042757600080fd5b506103ce6104363660046145cc565b610b24565b34801561044757600080fd5b5061026461045636600461462a565b610b6e565b34801561046757600080fd5b506102646104763660046146d7565b610c57565b34801561048757600080fd5b506102646104963660046146d7565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476d565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483d565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614884565b610e07565b6040516103a5939291906148d7565b34801561051757600080fd5b506103ce610526366004614977565b610e5c565b34801561053757600080fd5b506102646105463660046149e0565b610e6b565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614a41565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614434565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9a565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614af9565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b50565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8a565b611116565b34801561063d57600080fd5b5061026461064c366004614c19565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca6565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e0565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145cc565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476d565b611444565b3480156106dd57600080fd5b506102646106ec366004614434565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476d565b6114cf565b34801561071d57600080fd5b5061026461072c36600461453f565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc3565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc3565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc3565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614387565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614387565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614786565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c4565b9350505080806116b990614d04565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc3565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d23565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc3565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d23565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4b565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efa565b6114c885858585856119f18b611a39565b612f1d565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4b565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613262565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d64565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efa565b9998505050505050505050565b6111128282611bcf85611a39565b61327e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc3565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357d565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d23565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d77565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc3565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4b565b6135f8565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613608565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a4565b611f213360008484604051602401611ec491906144ea565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b0335000000000000000000000000000000000000000000000000000000001790526136ff565b506111128282805190602001206001613710565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd5565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f4565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc3565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e08565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd5565b60405180910390a26120fd828565ffffffffffff1685613866565b60005b8151811015610d0457600082828151811061211d5761211d614cc3565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e08565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387c565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613893565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613893565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e41565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613937565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ec565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a95565b905061247982613b27565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ecf565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d64565b604080516000815260208101909152889088612ac2565b600061253b82613bc4565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614ee8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c4565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f24565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d64565b61268b9190614f3a565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efa565b600060086001806126e060026020614d64565b6126ea9190614d64565b6126f49190614d64565b6126fe9190614f3a565b8260ff911c1692915050565b600061094f6127198484613c56565b5490565b60008383604051602001612732929190614ee8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f24565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc3565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cac565b613d3a565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4b565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ecf565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c4565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613def565b612a31565b612a3188888488613e67565b90999098509650505050505050565b6000600860016126ea60026020614d64565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efa565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ec8565b8061094f575061094f8383613ec8565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f51565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d64565b612bc091906143c4565b9050808214158015612be2575081612bd88688614f92565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f91565b90506000612c9d8b6137f4565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc3565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb7565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051612de0959493929190615015565b60405180910390a250828414612e01576000612dfc8c8c613c56565b839055505b6000612e0e8c8c8c61271d565b9050612e22818a64ffffffffff1689613866565b5060005b8151811015612eec576000828281518110612e4357612e43614cc3565b60200260200101519050612e6f6020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb09796959493929190614fb7565b600060405180830381600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050505b50600101612e26565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fa957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9c949392919061505b565b60405180910390a2610a71565b6000612fb4876137f4565b905060005b815181101561308d576000828281518110612fd657612fd6614cc3565b602002602001015190506130026001826affffffffffffffffffffff191661290790919063ffffffff16565b15613084576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613051908c908c908c908c908c908c9060040161509a565b600060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050505b50600101612fb9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c4949392919061505b565b60405180910390a260006130d88888612591565b905060006020870190506130f082600089518461405f565b60006130fb856126cd565b111561317f57600061310d8a8a613c56565b878155905060208601915060008060005b613127886126cd565b8160ff16101561317a5761313c8d8d8361271d565b92506131578a8260ff166028026038011c64ffffffffff1690565b9150613166836000848861405f565b61317082866143c4565b945060010161311e565b505050505b60005b835181101561325657600084828151811061319f5761319f614cc3565b602002602001015190506131cb6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321a908e908e908e908e908e908e9060040161509a565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b505050505b50600101613182565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f791906150f3565b60405180910390a2505050565b600061330f846137f4565b905060005b81518110156133e257600082828151811061333157613331614cc3565b6020026020010151905061335d6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133d9576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a690899089908990600401615106565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505b50600101613314565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341391906150f3565b60405180910390a260006134278585612591565b905061348081600061343886612671565b67ffffffffffffffff81111561345057613450614786565b6040519080825280601f01601f19166020018201604052801561347a576020820181803683370190505b50613866565b600061348b846126cd565b11156134ac57600061349d8686613c56565b90506134aa81602061411e565b505b60005b8251811015610a715760008382815181106134cc576134cc614cc3565b602002602001015190506134f86080826affffffffffffffffffffff191661290790919063ffffffff16565b15613574576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613541908a908a908a90600401615106565b600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b505050505b506001016134af565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f090614387565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364157613641614cc3565b602090810291909101015260006136997f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136ae828261415b565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e67565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375157613751614cc3565b602002602001018181525050828160018151811061377157613771614cc3565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137bf91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061382e5761382e614cc3565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138778560200190565b61405f565b600061388a607060106143c4565b9190911b919050565b606060005b60108110156138f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138f857600101613898565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613942614177565b9050306001600160a01b0382160361396057611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ab90899089908990899060040161512f565b602060405180830381865afa1580156139c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff919061515e565b60006139f6614177565b9050306001600160a01b03821603613a1a57613a1586868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a679089908990899089908990600401615177565b600060405180830381600087803b158015613a8157600080fd5b505af1158015613256573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ace57613ace614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6057613b60614cc3565b60209081029190910101526000613bb87f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bfd57613bfd614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6b929190614ee8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbc5750835182115b15613cf9578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151be565b60208401613d0784826143c4565b90506000613d158585614d64565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b1565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8557613d85614cc3565b602090810291909101015260008080613dde7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422c565b60006060836001600160a01b03166000613e0a858989614238565b604051613e1791906151e3565b60006040518083038185875af1925050503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e80848888614238565b604051613e8d91906151e3565b600060405180830381855af49150503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0157613f01614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110613f2d57613f2d614cc3565b60209081029190910101526000613f857f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614007578085038201915061400f565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140d957602083106140895760208304840193506020838161408557614085614f24565b0692505b82156140d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140ca575050611965565b50600194909401939182900391015b5b602082106140fb5780518455600190930192601f19909101906020016140da565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412d83601f6143c4565b61413791906151ff565b61414190846143c4565b90505b8083101561084e5760008355600183019250614144565b600061416683614267565b801561094f575061094f83836142b3565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141bf8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e5576141e5614f24565b04905060405193506020840160208202810160405281855260005b82811015614220578451871c825293870193602090910190600101614200565b50505050509392505050565b6000806116db8561436b565b606083838360405160200161424f93929190615221565b60405160208183030381529060405290509392505050565b6000614293827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b3565b8015610dc557506142ac826001600160e01b03196142b3565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614354575060208210155b80156143605750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143a8576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143ae565b60008083601f8401126143e957600080fd5b50813567ffffffffffffffff81111561440157600080fd5b6020830191508360208260051b850101111561441c57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444c57600080fd5b85359450602086013567ffffffffffffffff81111561446a57600080fd5b614476888289016143d7565b9095509350614489905060408701614423565b949793965091946060013592915050565b60005b838110156144b557818101518382015260200161449d565b50506000910152565b600081518084526144d681602086016020860161449a565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144be565b60008083601f84011261450f57600080fd5b50813567ffffffffffffffff81111561452757600080fd5b60208301915083602082850101111561441c57600080fd5b6000806000806000806080878903121561455857600080fd5b86359550602087013567ffffffffffffffff8082111561457757600080fd5b6145838a838b016143d7565b909750955085915061459760408a01614423565b945060608901359150808211156145ad57600080fd5b506145ba89828a016144fd565b979a9699509497509295939492505050565b600080600080606085870312156145e257600080fd5b84359350602085013567ffffffffffffffff81111561460057600080fd5b61460c878288016143d7565b909450925061461f905060408601614423565b905092959194509250565b60008060008060008060008060a0898b03121561464657600080fd5b88359750602089013567ffffffffffffffff8082111561466557600080fd5b6146718c838d016143d7565b909950975060408b013591508082111561468a57600080fd5b6146968c838d016144fd565b909750955060608b0135945060808b01359150808211156146b657600080fd5b506146c38b828c016144fd565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f257600080fd5b87359650602088013567ffffffffffffffff8082111561471157600080fd5b61471d8b838c016143d7565b909850965086915061473160408b01614423565b955060608a013591508082111561474757600080fd5b506147548a828b016144fd565b989b979a50959894979596608090950135949350505050565b60006020828403121561477f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c5576147c5614786565b604052919050565b600082601f8301126147de57600080fd5b813567ffffffffffffffff8111156147f8576147f8614786565b61480b6020601f19601f8401160161479c565b81815284602083860101111561482057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485057600080fd5b82359150602083013567ffffffffffffffff81111561486e57600080fd5b61487a858286016147cd565b9150509250929050565b6000806000806060858703121561489a57600080fd5b84359350602085013567ffffffffffffffff8111156148b857600080fd5b6148c4878288016143d7565b9598909750949560400135949350505050565b6060815260006148ea60608301866144be565b846020840152828103604084015261097981856144be565b600082601f83011261491357600080fd5b8135602067ffffffffffffffff82111561492f5761492f614786565b8160051b61493e82820161479c565b928352848101820192828101908785111561495857600080fd5b83870192505b848310156143605782358252918301919083019061495e565b600080600080600060a0868803121561498f57600080fd5b85359450602086013567ffffffffffffffff8111156149ad57600080fd5b6149b988828901614902565b9450506149c860408701614423565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f557600080fd5b83359250602084013567ffffffffffffffff811115614a1357600080fd5b614a1f868287016143d7565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5657600080fd5b8335614a6181614a2c565b925060208401359150604084013567ffffffffffffffff811115614a8457600080fd5b614a90868287016147cd565b9150509250925092565b60008060008060808587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada87828801614902565b935050614ae960408601614423565b9396929550929360600135925050565b600080600060608486031215614b0e57600080fd5b83359250602084013567ffffffffffffffff811115614b2c57600080fd5b614b3886828701614902565b925050614b4760408501614423565b90509250925092565b60008060408385031215614b6357600080fd5b8235614b6e81614a2c565b9150602083013567ffffffffffffffff81111561486e57600080fd5b60008060008060008060808789031215614ba357600080fd5b86359550602087013567ffffffffffffffff80821115614bc257600080fd5b614bce8a838b016143d7565b90975095506040890135915065ffffffffffff82168214614bee57600080fd5b909350606088013590808211156145ad57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3557600080fd5b88359750602089013567ffffffffffffffff80821115614c5457600080fd5b614c608c838d016143d7565b9099509750879150614c7460408c01614423565b9650614c8260608c01614c04565b9550614c9060808c01614c04565b945060a08b01359150808211156146b657600080fd5b600060208284031215614cb857600080fd5b813561094f81614a2c565b634e487b7160e01b600052603260045260246000fd5b604081526000614cec60408301856144be565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1a57614d1a6143ae565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144be565b60ff8281168282160390811115610dc557610dc56143ae565b81810381811115610dc557610dc56143ae565b600060208284031215614d8957600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dca57815187529582019590820190600101614dae565b509495945050505050565b606081526000614de86060830186614d99565b65ffffffffffff85166020840152828103604084015261097981856144be565b848152608060208201526000614e216080830186614d99565b65ffffffffffff85166040840152828103606084015261436081856144be565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea281600386016020890161449a565b808401905081600382015284519150614ec282600483016020880161449a565b0160040195945050505050565b8281526040602082015260006107aa60408301846144be565b8281526000602080830184516020860160005b82811015614f1757815184529284019290840190600101614efb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143ae565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144be565b64ffffffffff818116838216019080821115614fb057614fb06143ae565b5092915050565b87815260e060208201526000614fd060e0830189614d99565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500781856144be565b9a9950505050505050505050565b60a08152600061502860a0830188614d99565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611d4e81856144be565b60808152600061506e6080830187614d99565b828103602084015261508081876144be565b9050846040840152828103606084015261436081856144be565b86815260c0602082015260006150b360c0830188614d99565b82810360408401526150c581886144be565b905085606084015282810360808401526150df81866144be565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d99565b83815260606020820152600061511f6060830185614d99565b9050826040830152949350505050565b8481526080602082015260006151486080830186614d99565b60ff949094166040830152506060015292915050565b60006020828403121561517057600080fd5b5051919050565b85815260a06020820152600061519060a0830187614d99565b60ff8616604084015282810360608401526151ab81866144be565b9150508260808301529695505050505050565b6060815260006151d160608301866144be565b60208301949094525060400152919050565b600082516151f581846020870161449a565b9190910192915050565b60008261521c57634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523381846020890161449a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615787620000316000396000610c0801526157876000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063742d6118116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b8063742d6118146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c02565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c32565b61032c565b005b610176610186366004614cae565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614dfb565b61042d565b6101d16101cc366004614e54565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614e9b565b6105f4565b604051601f19360135815260200161015a565b61017661021e366004614ef3565b61076f565b6101d1610231366004614f31565b6107db565b610176610244366004614f7f565b61089d565b610176610257366004614c32565b61095f565b61017661026a366004614fb9565b61099e565b61017661027d366004614fb9565b6109d0565b610176610290366004614fd2565b610a65565b6101766102a336600461500c565b610b1a565b6101766102b6366004614ef3565b610b33565b610193610bf4565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bfe565b6103458261034061041e565b610c62565b61034f8282610cdb565b5050565b61035b610bfe565b600061036689610d06565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d1d565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e31565b6103f48861034061041e565b61041488888888610405888a615092565b61040f8789615092565b610e7c565b5050505050505050565b600061042861128c565b905090565b610435610bfe565b61044761044061041e565b84846112be565b61045082611391565b156104a3576000610460836113ad565b905061048c817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b6104a061049761041e565b848460006114a4565b50505b505050565b60006104b2610bfe565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d1d565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615118565b61051683610e31565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114d1565b905060008184604051602001610562929190615141565b60405160208183030381529060405290508080519060200120925060006105888461155b565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361160b565b6105ea85846116d6565b5050505092915050565b6105fc610bfe565b61737960f01b836001600160f01b031916146106225761737960f01b836104d885610d1d565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761064681610e31565b6106528161034061041e565b61067c837fb5dee12700000000000000000000000000000000000000000000000000000000611449565b600061068785610d06565b6fffffffffffffffffffffffffffffffff1916036106a9578361038885610d1d565b60006106b48461179f565b905080158015906106c55750848114155b15610707576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b6000610712866113ad565b90506001600160a01b0381161561073b5761072c81611824565b61073683826118a3565b610746565b610746866001611941565b6107518686866119e2565b61075b8587611a85565b61076783866001611b10565b505050505050565b610777610bfe565b6107a1827f1873396a00000000000000000000000000000000000000000000000000000000611449565b6107c4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b6107d08361034061041e565b6104a3838383611bbf565b60006107e5610bfe565b60408051616e7360f01b60208201526000602282018190526030820152610827910160405160208183030381529060405261081f90615199565b61034061041e565b5081516020830120600061083a8261155b565b90508015610880576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103bc565b61088b82868561160b565b61089582856116d6565b509392505050565b6108a5610bfe565b6108cf827f6fdd1c8000000000000000000000000000000000000000000000000000000000611449565b61094b6108da61041e565b600084846040516024016108ee91906151bd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c82565b5061034f8282805190602001206001611c93565b610967610bfe565b6109738261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d42565b6109a6610bfe565b6109af81611e55565b6109b881610e31565b6109c48161034061041e565b6109cd81611e86565b50565b6109d8610bfe565b6109e181611e55565b6109ea81611ef1565b6109f3816120e3565b15610a365780610a0282610d1d565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b610a41816001611941565b610a5281610a4d61041e565b612168565b6109cd81610a5e61041e565b6001611b10565b610a6d610bfe565b610a7683611e55565b610a7f82611391565b610ab5576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac18361034061041e565b6000610acc836113ad565b9050610af8817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b610b028484612232565b815115610b14576104a061049761041e565b50505050565b610b22610bfe565b6109cd610b2d61041e565b826122b1565b610b3b610bfe565b61737960f01b836001600160f01b03191614610b615761737960f01b836104d885610d1d565b610b8b827f540fbfa800000000000000000000000000000000000000000000000000000000611449565b610b9483610e31565b610bb7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b610bc38361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612353565b60006104286123f8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c60576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c8f616e7360f01b6dffffffffffffffffffffffffffff60801b851617612402565b6001600160a01b03161461034f57610ca682610d1d565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc9291906151d0565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d42565b6000610d1460706010615211565b9190911b919050565b606081601081901b6000610d3083610d06565b90508271ffffffffffffffffffffffffffffffffffff19831615610d7157610d6c71ffffffffffffffffffffffffffffffffffff1984166114d1565b610da8565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dcf57610dca836114d1565b610e06565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e1893929190615224565b6040516020818303038152906040529350505050919050565b610e3a816120e3565b6109cd5780610e4882610d1d565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b613a3160f11b866001600160f01b03191614801590610eaa5750611bdd60f21b866001600160f01b03191614155b15610f0b57613a3160f11b8687604051602001610ec991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615118565b610f1485612493565b610f1f8460016126da565b610f2a8360006126da565b60e084901c60e885901c0160ff16825114610f8a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fea5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110625760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61106b85612876565b61107484612876565b146110c65761108285612876565b61108b84612876565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110cf856128a8565b6110d8846128a8565b1461112a576110e6856128a8565b6110ef846128a8565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61113686612876565b8110156111d15761116061114a85836128c5565b60c581111561115b5761115b61529a565b6128ed565b6008601b8390030287901c60ff16146111c9576008601b8290030286901c60ff1661118e61114a86846128c5565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60010161112d565b506111db866120e3565b156112355785866040516020016111f491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b611281868686868660405160200161124d91906152b0565b6040516020818303038152906040528660405160200161126d91906152b0565b60405160208183030381529060405261294d565b610767866001611941565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112bb5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106112ff576112ff615332565b602002602001018181525050826001600160a01b031660001b8160018151811061132b5761132b615332565b602002602001018181525050610b147f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161137491815260200190565b60408051601f19818403018152919052630100080160dd1b612a14565b6000811515801561032657506113a682612a29565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106113e6576113e6615332565b6020908102919091010152600061143e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a89565b60601c949350505050565b6114538282612abf565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114b587878787612adb565b91509150816114c7576114c781612cab565b9695505050505050565b606060005b6010811015611527576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611527576001016114d6565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b3576115b3615332565b602090810291909101015260006115537f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a89565b60006116178383612cb3565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061167557611675615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612cf2565b50505050505050565b606060006116e383612ff8565b905060006116f084613008565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061174957611749615332565b60209081029190910101526107677f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106117e4576117e4615332565b602090810291909101015260006115537f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061186657611866615332565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613031565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d8576118d8615332565b602002602001018181525050816001600160a01b031660001b8160018151811061190457611904615332565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613031565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061197757611977615332565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119c591151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a14565b60006119ee83836132fd565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a2d57611a2d615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611ac757611ac7615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161137491815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b4557611b45615332565b602002602001018181525050826001600160a01b031660001b81600181518110611b7157611b71615332565b602002602001018181525050610b147f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119c591151560f81b815260010190565b613a3160f11b836001600160f01b03191614611bef57613a3160f11b8384604051602001610ec991815260200190565b611bf8836120e3565b611c51578283604051602001611c1091815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761332d565b60606000806114b5878787876133d2565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cd457611cd4615332565b6020026020010181815250508281600181518110611cf457611cf4615332565b602002602001018181525050610b147f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119c591151560f81b815260010190565b6000611d4e848461344a565b90506000815167ffffffffffffffff811115611d6c57611d6c614d44565b604051908082528060200260200182016040528015611d95578160200160208202803683370190505b5090506000805b8351811015611e4657846001600160a01b0316611de0858381518110611dc457611dc4615332565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e3e57838181518110611e0057611e00615332565b6020026020010151838381518110611e1a57611e1a615332565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d9c565b508082526107678686846134b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109cd57616e7360f01b816104d883610d1d565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ebc57611ebc615332565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261350c565b6000611efd8260101b90565b90506000611f1f71ffffffffffffffffffffffffffffffffffff1983166114d1565b80519091508015610b1457611f4182611f39600184615348565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611fd2576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611fe0600183615348565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561208d575061204883611f39836001615211565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120db576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611fd5565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061211c5761211c615332565b6020908102919091010152600061215c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a89565b90506115538160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061219e5761219e615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016121fd919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061226857612268615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161137491815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122f2576122f2615332565b602002602001018181525050816001600160a01b031660001b8160018151811061231e5761231e615332565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261350c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238957612389615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123e491906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135a7565b6000610428613658565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061243b5761243b615332565b6020908102919091010152600061143e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a89565b806124ca576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124d5826128a8565b9050600581111561251c576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061252783612876565b905060006125358383615211565b9050601c81111561257c576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156126275760ff601b82900360080287901c1660008190036125d4576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612612576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61261c8184615211565b925050600101612580565b5061263185613697565b811461267d5761264085613697565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107675760ff601b82900360080287901c1680156126d1576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161267f565b801580156126e6575081155b1561270757604051635318beb960e01b8152600060048201526024016103bc565b6000612712836128a8565b9050600581111561273957604051635318beb960e01b8152600481018290526024016103bc565b600061274484612876565b905060006127528383615211565b9050601c81111561277957604051635318beb960e01b8152600481018290526024016103bc565b6000805b838110156127e557600061279461114a89846128c5565b9050806000036127d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127da8184615211565b92505060010161277d565b506127ef86613697565b811461281a576127fe86613697565b604051635318beb960e01b81526004016103bc91815260200190565b825b828110156116cd57600061283361114a89846128c5565b9050801561286d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161281c565b60006008600161288860026020615348565b6128929190615348565b61289c919061535b565b8260ff911c1692915050565b600060086001806128bb60026020615348565b6128889190615348565b6000601b8290036008028360ff911c1660c58111156128e6576128e661529a565b9392505050565b6000808260c58111156129025761290261529a565b60ff169050606181101561291c57601f1660010192915050565b60618360c58111156129305761293061529a565b0361293e5750601492915050565b50600092915050565b50919050565b600061295a8686866136ba565b9050600061296884846136f0565b90506000612976858561370d565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129b0576129b0615332565b6020908102919091010152612a087f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612cf2565b50505050505050505050565b6104a08585612a238487613722565b85613753565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612a8190615199565b909114919050565b6000612ab6612a9886866139bb565b60ff858116601b0360080285901c16612ab18587613722565b613a11565b95945050505050565b6000612aca83613a62565b80156128e657506128e68383613aa3565b600060606000612aea86613b5b565b905060005b8151811015612bbd576000828281518110612b0c57612b0c615332565b60200260200101519050612b386001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612bb4576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612b81908c908c908c90600401615372565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050505b50600101612aef565b50612bca87858888613bfd565b909350915060005b8151811015612ca0576000828281518110612bef57612bef615332565b60200260200101519050612c1b6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612c97576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c64908c908c908c90600401615372565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b505050505b50600101612bd2565b505094509492505050565b805160208201fd5b60608282604051602001612cdb9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d4b57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d3e94939291906153d6565b60405180910390a2610767565b6000612d5687613ccf565b905060005b8151811015612e2f576000828281518110612d7857612d78615332565b60200260200101519050612da46001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612e26576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612df3908c908c908c908c908c908c90600401615415565b600060405180830381600087803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b505050505b50600101612d5b565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e6694939291906153d6565b60405180910390a26000612e7a88886139bb565b90506000602087019050612e92826000895184613d41565b6000612e9d856128a8565b1115612f21576000612eaf8a8a613e00565b878155905060208601915060008060005b612ec9886128a8565b8160ff161015612f1c57612ede8d8d83613e56565b9250612ef98a8260ff166028026038011c64ffffffffff1690565b9150612f088360008488613d41565b612f128286615211565b9450600101612ec0565b505050505b60005b8351811015612a08576000848281518110612f4157612f41615332565b60200260200101519050612f6d6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612fef576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fbc908e908e908e908e908e908e90600401615415565b600060405180830381600087803b158015612fd657600080fd5b505af1158015612fea573d6000803e3d6000fd5b505050505b50600101612f24565b60006103268251603881901b1790565b60608160405160200161301b919061546e565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b0319160361308457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613077919061548a565b60405180910390a2505050565b600061308f84613ccf565b905060005b81518110156131625760008282815181106130b1576130b1615332565b602002602001015190506130dd6040826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15613159576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906131269089908990899060040161549d565b600060405180830381600087803b15801561314057600080fd5b505af1158015613154573d6000803e3d6000fd5b505050505b50600101613094565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613193919061548a565b60405180910390a260006131a785856139bb565b90506132008160006131b886613697565b67ffffffffffffffff8111156131d0576131d0614d44565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b50613ed6565b600061320b846128a8565b111561322c57600061321d8686613e00565b905061322a816020613eec565b505b60005b825181101561076757600083828151811061324c5761324c615332565b602002602001015190506132786080826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156132f4576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132c1908a908a908a9060040161549d565b600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b505050505b5060010161322f565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cdb565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061336357613363615332565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133be91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f29565b60006060836001600160a01b031660006133ed858989613f64565b6040516133fa919061546e565b60006040518083038185875af1925050503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b606091505b509097909650945050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061348457613484615332565b602002602001018181525050600061349e85836000613f7b565b9050612ab66134b08260008451613fb5565b614043565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106134eb576134eb615332565b602002602001018181525050610b148482600061350786614054565b614064565b6000613516613658565b9050306001600160a01b03821603613532576104a3838361409f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061357990869086906004016154c6565b600060405180830381600087803b15801561359357600080fd5b505af11580156116cd573d6000803e3d6000fd5b60006135b1613658565b9050306001600160a01b038216036135d4576135cf85858585613f29565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061361f9088908890889088906004016154df565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613692573391505090565b919050565b600060086136a760026020615348565b6136b1919061535b565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128e6565b60608282604051602001612cdb929190615513565b600080805b8360ff168110156108955761374960ff601b83900360080287901c1683615211565b9150600101613727565b611bdd60f21b846001600160f01b031916036137aa57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161379d93929190615542565b60405180910390a2610b14565b60006137b685856139bb565b905060006137c386613ccf565b905060005b81518110156138985760008282815181106137e5576137e5615332565b602002602001015190506138116004826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561388f576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061385c908b908b908b908b90600401615575565b600060405180830381600087803b15801561387657600080fd5b505af115801561388a573d6000803e3d6000fd5b505050505b506001016137c8565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138cd93929190615542565b60405180910390a26138e8828565ffffffffffff1685613ed6565b60005b81518110156116cd57600082828151811061390857613908615332565b602002602001015190506139346008826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156139b2576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061397f908b908b908b908b90600401615575565b600060405180830381600087803b15801561399957600080fd5b505af11580156139ad573d6000803e3d6000fd5b505050505b506001016138eb565b600082826040516020016139d09291906155ae565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a3757602082048401935060208281613a3357613a336155ea565b0691505b508254600882021b602082900380841115610895576001850154600882021c82179150509392505050565b6000613a8e827f01ffc9a700000000000000000000000000000000000000000000000000000000613aa3565b801561032657506113a6826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b44575060208210155b8015613b505750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b9557613b95615332565b60209081029190910101526000613bcd7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613f7b565b90506115536134b08260008451613fb5565b60008160ff1682613bf08560581c90565b1660ff1614905092915050565b60006060600080613c0d866140b2565b90925090506001600160a01b038216613c2a5785610e4887610d1d565b80613c3957613c39868961416a565b8615613c7d576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c6582614181565b9050613c7a82613c758b84615211565b6141fa565b50505b6000613c898760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cb457613caf888884886133d2565b613cc0565b613cc088888488614279565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d0957613d09615332565b60209081029190910101526000613bcd7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613f7b565b8215613dbb5760208310613d6b57602083048401935060208381613d6757613d676155ea565b0692505b8215613dbb5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dac575050610b14565b50600194909401939182900391015b5b60208210613ddd5780518455600190930192601f1990910190602001613dbc565b8115610b14576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e159291906155ae565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e6b9291906155ae565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613ee78560200190565b613d41565b60006020613efb83601f615211565b613f059190615600565b613f0f9084615211565b90505b808310156104a35760008355600183019250613f12565b6000613f3585856142da565b90506000613f52828560ff166028026038011c64ffffffffff1690565b905061076786868684600088886142ed565b60608383836040516020016136d893929190615622565b6060611553613f8b858585613e56565b6000613fb085613f9b89896142da565b9060ff166028026038011c64ffffffffff1690565b614695565b600081831180613fc55750835182115b15614002578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc93929190615661565b602084016140108482615211565b9050600061401e8585615348565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128e683601560006146b8565b6060816128e68160156000614733565b600061407085856142da565b9050600061408d828560ff166028026038011c64ffffffffff1690565b905061076786868660008588886142ed565b61034f82826140ad85614787565b613031565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106140ec576140ec615332565b6020908102919091010152600080806141457f7462776f726c6400000000000000000053797374656d73000000000000000000857e1502001401000000000000000000000000000000000000000000000000000061480c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6141748282614914565b61034f57610ca682610d1d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141ba576141ba615332565b602090810291909101015260006115537f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061423057614230615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161137491815260200190565b60006060836001600160a01b0316614292848888613f64565b60405161429f919061546e565b600060405180830381855af49150503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b60006128e66142e98484613e00565b5490565b613a3160f11b876001600160f01b0319161461431d57613a3160f11b8788604051602001610ec991815260200190565b6000614338828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836143519190615348565b61435b9190615211565b905080821415801561437d5750816143738688615686565b64ffffffffff1614155b156143cd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561441e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061442b84898461494a565b905060006144388b613ccf565b905060005b815181101561450357600082828151811061445a5761445a615332565b602002602001015190506144866010826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156144fa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144c797969594939291906156ab565b600060405180830381600087803b1580156144e157600080fd5b505af11580156144f5573d6000803e3d6000fd5b505050505b5060010161443d565b5064ffffffffff881660005b8a60ff168160ff16101561454257614536878260ff166028026038011c64ffffffffff1690565b9091019060010161450f565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161457b959493929190615709565b60405180910390a25082841461459c5760006145978c8c613e00565b839055505b60006145a98c8c8c613e56565b90506145bd818a64ffffffffff1689613ed6565b5060005b81518110156146875760008282815181106145de576145de615332565b6020026020010151905061460a6020826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561467e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161464b97969594939291906156ab565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050505b506001016145c1565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261089585858584614a18565b606060006146c68560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816146ec576146ec6155ea565b04905060405193506020840160208202810160405281855260005b82811015614727578451871c825293870193602090910190600101614707565b50505050509392505050565b82516060906000614744858361535b565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614727578051871b83529187019160019190910190602001614766565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016147d657507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148037f746273746f72650000000000000000005461626c65730000000000000000000084614ae4565b60206000613a11565b606060006060600061481d85613697565b905061482a878783614b00565b93506000614837866128a8565b905080156149095761484988886142da565b935066ffffffffffffff841667ffffffffffffffff81111561486d5761486d614d44565b6040519080825280601f01601f191660200182016040528015614897576020820181803683370190505b5092506020830160005b828160ff1610156149065760006148b98b8b84613e56565b905060006148d6888460ff166028026038011c64ffffffffff1690565b90506148e58260008387614a18565b6148ef8185615211565b9350505080806148fe9061575b565b9150506148a1565b50505b505093509350939050565b600061493a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b39565b806128e657506128e68383614b39565b600064ffffffffff82111561498e576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149c057808503820191506149c8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614a9f5760208310614a4257602083048401935060208381614a3e57614a3e6155ea565b0692505b8215614a9f576020839003600081841015614a655750600019600884021c614a6f565b50600019600882021c5b8554600886021b818451168219821617845250818411614a90575050610b14565b50600194909401939182900391015b5b60208210614ac15783548152600190930192601f1990910190602001614aa0565b8115610b14576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139d0565b606081600003614b1f57506040805160208101909152600081526128e6565b6000614b2b85856139bb565b9050612ab681600085614695565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b7257614b72615332565b602002602001018181525050826001600160a01b031660001b81600181518110614b9e57614b9e615332565b60209081029190910101526000614bde7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a89565b9050612ab68160f81c90565b80356001600160e01b03198116811461369257600080fd5b600060208284031215614c1457600080fd5b6128e682614bea565b6001600160a01b03811681146109cd57600080fd5b60008060408385031215614c4557600080fd5b823591506020830135614c5781614c1d565b809150509250929050565b60008083601f840112614c7457600080fd5b50813567ffffffffffffffff811115614c8c57600080fd5b6020830191508360208260051b8501011115614ca757600080fd5b9250929050565b60008060008060008060008060c0898b031215614cca57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614cfe57600080fd5b614d0a8c838d01614c62565b909650945060a08b0135915080821115614d2357600080fd5b50614d308b828c01614c62565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614d8357614d83614d44565b604052919050565b600082601f830112614d9c57600080fd5b813567ffffffffffffffff811115614db657614db6614d44565b614dc96020601f19601f84011601614d5a565b818152846020838601011115614dde57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e1057600080fd5b8335614e1b81614c1d565b925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b614e4a86828701614d8b565b9150509250925092565b60008060408385031215614e6757600080fd5b82359150602083013567ffffffffffffffff811115614e8557600080fd5b614e9185828601614d8b565b9150509250929050565b600080600060608486031215614eb057600080fd5b833592506020840135614ec281614c1d565b915060408401358015158114614ed757600080fd5b809150509250925092565b803560ff8116811461369257600080fd5b600080600060608486031215614f0857600080fd5b833592506020840135614f1a81614c1d565b9150614f2860408501614ee2565b90509250925092565b600080600060608486031215614f4657600080fd5b83359250602084013567ffffffffffffffff811115614f6457600080fd5b614f7086828701614d8b565b925050614f2860408501614bea565b60008060408385031215614f9257600080fd5b8235614f9d81614c1d565b9150602083013567ffffffffffffffff811115614e8557600080fd5b600060208284031215614fcb57600080fd5b5035919050565b600080600060608486031215614fe757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b60006020828403121561501e57600080fd5b81356128e681614c1d565b60005b8381101561504457818101518382015260200161502c565b50506000910152565b60008151808452615065816020860160208601615029565b601f01601f19169290920160200192915050565b828152604060208201526000611553604083018461504d565b600067ffffffffffffffff808411156150ad576150ad614d44565b8360051b60206150bf60208301614d5a565b868152918501916020810190368411156150d857600080fd5b865b8481101561510c578035868111156150f25760008081fd5b6150fe36828b01614d8b565b8452509183019183016150da565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ab6606083018461504d565b60008351615153818460208801615029565b7f5f5f000000000000000000000000000000000000000000000000000000000000908301908152835161518d816002840160208801615029565b01600201949350505050565b805160208083015191908110156129475760001960209190910360031b1b16919050565b6020815260006128e6602083018461504d565b6040815260006151e3604083018561504d565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610326576103266151fb565b6001600160f01b03198416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161526d816003860160208901615029565b80840190508160038201528451915061528d826004830160208801615029565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615325577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261531385835161504d565b945092850192908501906001016152d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115610326576103266151fb565b8082028115828204841417610326576103266151fb565b6001600160a01b0384168152826020820152606060408201526000612ab6606083018461504d565b60008151808452602080850194506020840160005b838110156153cb578151875295820195908201906001016153af565b509495945050505050565b6080815260006153e9608083018761539a565b82810360208401526153fb818761504d565b90508460408401528281036060840152613b50818561504d565b86815260c06020820152600061542e60c083018861539a565b8281036040840152615440818861504d565b9050856060840152828103608084015261545a818661504d565b9150508260a0830152979650505050505050565b60008251615480818460208701615029565b9190910192915050565b6020815260006128e6602083018461539a565b8381526060602082015260006154b6606083018561539a565b9050826040830152949350505050565b828152604060208201526000611553604083018461539a565b8481526080602082015260006154f8608083018661539a565b60ff851660408401528281036060840152613b50818561504d565b60008351615525818460208801615029565b835190830190615539818360208801615029565b01949350505050565b606081526000615555606083018661539a565b65ffffffffffff8516602084015282810360408401526114c7818561504d565b84815260806020820152600061558e608083018661539a565b65ffffffffffff851660408401528281036060840152613b50818561504d565b8281526000602080830184516020860160005b828110156155dd578151845292840192908401906001016155c1565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261561d57634e487b7160e01b600052601260045260246000fd5b500490565b60008451615634818460208901615029565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615674606083018661504d565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156a4576156a46151fb565b5092915050565b87815260e0602082015260006156c460e083018961539a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526156fb818561504d565b9a9950505050505050505050565b60a08152600061571c60a083018861539a565b65ffffffffffff8716602084015264ffffffffff86166040840152846060840152828103608084015261574f818561504d565b98975050505050505050565b600060ff821660ff8103615771576157716151fb565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004d4f38038062004d4f833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614c216200012e60003960008181610701015281816115ac015261163b0152600061069901526000610631015260006105b0015260005050614c216000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a6100853660046143d5565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461442d565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461442d565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b610294610ca1565b61029c610f19565b6102a4610f82565b6102ac610fce565b6102b461101a565b6102bc611066565b6102c46110aa565b6102cc6110f6565b6102d461115a565b6102dc6111be565b6102e4611220565b6102ec611282565b6102f46112ce565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906144de565b600161132a565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906144de565b6103796101f4565b6113d0565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906144de565b6103c16101f4565b60016114ad565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906144de565b61156f565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614bf36022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b600481101561088c576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108849101604051602081830303815290604052610868906144de565b83836004811061087a5761087a614502565b602002015161162c565b600101610806565b506040805160a0810182526033918101828152600092829190614b9760608401398152602001604051806060016040528060318152602001614a66603191399052905060005b600281101561094f576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261094791015b604051602081830303815290604052610935906144de565b83836002811061087a5761087a614502565b6001016108d2565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614af2602891399052905060005b6002811015610a0f576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a07910161091d565b6001016109b8565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e08301528152815160608101835282815260009260208084019291906149b1908301398152602001604051806060016040528060288152602001614a9760289139815260200160405180606001604052806024815260200161498d6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614bca602991398152602001604051806060016040528060258152602001614b1a602591398152602001604051806060016040528060248152602001614a42602491398152602001604051806060016040528060288152602001614a1a602891398152602001604051806060016040528060338152602001614abf6033913981526020016040518060600160405280602981526020016149f16029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614b65603291398152602001604051806060016040528060268152602001614b3f602691399052905060005b600e811015610c90576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610c889101604051602081830303815290604052610c76906144de565b8383600e811061087a5761087a614502565b600101610c14565b5050505050565b60006101fe6116d3565b610cca7f746273746f72650000000000000000005461626c65730000000000000000000061171f565b15610d4857604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d3f9291600401614568565b60405180910390fd5b610d717f746273746f72650000000000000000005265736f75726365496473000000000061171f565b15610da957604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610cfe565b610e507f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610df56117ac565b610dfd611824565b610e05611973565b604051602001610e1591906145db565b604051602081830303815290604052610e2c6119f8565b604051602001610e3c91906145db565b604051602081830303815290604052611bc0565b610ebb7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610e846117ac565b610e8c611c87565b610e94611cc1565b604051602001610ea491906145db565b604051602081830303815290604052610e2c611d38565b610ee67f746273746f72650000000000000000005461626c657300000000000000000000600161132a565b610f117f746273746f72650000000000000000005265736f757263654964730000000000600161132a565b61056c611daf565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000610f656117ac565b610f6d611e11565b610f75611e4b565b610f7d611ec2565b611f39565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fb66117ac565b610fbe61200d565b610fc6611e4b565b610f7d612047565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b6110026120be565b61100a611c87565b61101261213d565b610f7d612207565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b61104e61227e565b6110566117ac565b61105e6122fd565b610f7d6123c7565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b61109a6117ac565b6110a26117ac565b61105e611e4b565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110de61243e565b6110e6611c87565b6110ee612478565b610f7d612542565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e150200140100000000000000000000000000000000000000000000000000006111426117ac565b61114a6125b9565b611152612638565b610f7d6126af565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111a6612779565b6111ae6127b3565b6111b6612832565b610f7d6128a9565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c0100000000000000000000000000000000000000000000000000000000611208612779565b611210612973565b611218612832565b610f7d6129ad565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061126a6117ac565b611272612a24565b61127a612638565b610f7d612a5e565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112b6611e11565b6112be6117ac565b6112c6612ad5565b610f7d612638565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000061131a612b4c565b611322611e11565b61127a612b65565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061136057611360614502565b6020026020010181815250506113cb7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113ae91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612b98565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061140657611406614502565b6020026020010181815250506113cb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001611478919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612b98565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114e2576114e2614502565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061151b5761151b614502565b6020026020010181815250506115697f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113ae91151560f81b815260010190565b50505050565b6113cb61157a6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612bad565b6113cb6116376101f4565b60007f000000000000000000000000000000000000000000000000000000000000000085858680519060200120604051602401611676939291906145ee565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612bad565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061171a573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061175857611758614502565b602090810291909101015260006117987f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612bda565b90506117a48160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106117e6576117e6614502565b602002602001019060c58111156117ff576117ff614639565b908160c581111561181257611812614639565b90525061181e81612c10565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f8160008151811061185f5761185f614502565b602002602001019060c581111561187857611878614639565b908160c581111561188b5761188b614639565b81525050605f816001815181106118a4576118a4614502565b602002602001019060c58111156118bd576118bd614639565b908160c58111156118d0576118d0614639565b81525050605f816002815181106118e9576118e9614502565b602002602001019060c581111561190257611902614639565b908160c581111561191557611915614639565b8152505060c48160038151811061192e5761192e614502565b602002602001019060c581111561194757611947614639565b908160c581111561195a5761195a614639565b8152505060c4816004815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161198a5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a105790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a7057611a70614502565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ac457611ac4614502565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b1857611b18614502565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b6c57611b6c614502565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119ea576119ea614502565b6000611bcd868686612dcb565b90506000611bdb8484612e01565b90506000611be98585612e21565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c2357611c23614502565b6020908102919091010152611c7b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612e4d565b50505050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cd85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611df96117ac565b611e01612a24565b611e09611973565b610f7d61318e565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e625790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed95790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6000611f436116d3565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f7557611f70878787878787613205565b612004565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611fd1908a908a908a908a908a908a9060040161464f565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161205e5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106120f8576120f8614502565b602002602001019060c581111561211157612111614639565b908160c581111561212457612124614639565b81525050605f816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816121535790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106121b3576121b3614502565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161221e5790505090506040518060400160405280600b81526020017f6973496e7374616c6c6564000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106122b8576122b8614502565b602002602001019060c58111156122d1576122d1614639565b908160c58111156122e4576122e4614639565b815250506061816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816123135790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061237357612373614502565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816123de5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119ea576119ea614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106122b8576122b8614502565b6040805160028082526060828101909352816020015b606081526020019060019003908161248e5790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106124ee576124ee614502565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816125595790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106125f3576125f3614502565b602002602001019060c581111561260c5761260c614639565b908160c581111561261f5761261f614639565b815250506060816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161264f5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816126c55790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061272557612725614502565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106117e6576117e6614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106127ed576127ed614502565b602002602001019060c581111561280657612806614639565b908160c581111561281957612819614639565b815250506043816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816128495790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816128bf5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061291f5761291f614502565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816129c45790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a755790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612aec5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160008082526020820190925261181e81612c10565b60408051600080825260208201909252606091612b92565b6060815260200190600190039081612b7d5790505b50905090565b610c908585612ba7848761363c565b85613675565b6060600080612bbe87878787613910565b9150915081612bd057612bd081613991565b9695505050505050565b6000612c07612be98686613999565b60ff858116601b0360080285901c16612c02858761363c565b6139ef565b95945050505050565b6000601c82511115612c3a578151604051635318beb960e01b8152600401610d3f91815260200190565b60008080805b8551811015612d15576000612c7e878381518110612c6057612c60614502565b602002602001015160c5811115612c7957612c79614639565b613a40565b905080600003612c9357600190920191612ccb565b8215612ccb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612cec57612cec614502565b602002602001015160c5811115612d0557612d05614639565b901b949094179350600101612c40565b506005811115612d3b57604051635318beb960e01b815260048101829052602401610d3f565b84518190036008612d4e600260206146af565b612d5891906146c2565b83901b939093179260086001612d70600260206146af565b612d7a91906146af565b612d8491906146c2565b81901b93909317926008600180612d9d600260206146af565b612da791906146af565b612db191906146af565b612dbb91906146c2565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612e369291906146d9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612ed957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612ecc9493929190614744565b60405180910390a2613186565b6000612ee487613aa0565b905060005b8151811015612fbd576000828281518110612f0657612f06614502565b60200260200101519050612f326001826affffffffffffffffffffff1916613b2990919063ffffffff16565b15612fb4576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612f81908c908c908c908c908c908c9060040161478e565b600060405180830381600087803b158015612f9b57600080fd5b505af1158015612faf573d6000803e3d6000fd5b505050505b50600101612ee9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612ff49493929190614744565b60405180910390a260006130088888613999565b90506000602087019050613020826000895184613b47565b600061302b85613c06565b11156130af57600061303d8a8a613c43565b878155905060208601915060008060005b61305788613c06565b8160ff1610156130aa5761306c8d8d83613c99565b92506130878a8260ff166028026038011c64ffffffffff1690565b91506130968360008488613b47565b6130a082866147e7565b945060010161304e565b505050505b60005b8351811015611c7b5760008482815181106130cf576130cf614502565b602002602001015190506130fb6002826affffffffffffffffffffff1916613b2990919063ffffffff16565b1561317d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061314a908e908e908e908e908e908e9060040161478e565b600060405180830381600087803b15801561316457600080fd5b505af1158015613178573d6000803e3d6000fd5b505050505b506001016130b2565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816131a55790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061329957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15613315577f746200000000000000000000000000000000000000000000000000000000000086876040516020016132d391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d3f9392916004016147fa565b61331e85613d19565b613329846001613f60565b613334836000613f60565b60e084901c60e885901c0160ff168251146133945760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff168151146133f45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461346c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b613475856140fc565b61347e846140fc565b146134d05761348c856140fc565b613495846140fc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b6134d985613c06565b6134e284613c06565b14613534576134f085613c06565b6134f984613c06565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60005b613540866140fc565b8110156135d657613565613554858361410e565b60c5811115612c7957612c79614639565b6008601b8390030287901c60ff16146135ce576008601b8290030286901c60ff16613593613554868461410e565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b600101613537565b506135e08661171f565b156135f9578586604051602001610cfe91815260200190565b613631868686868660405160200161361191906145db565b60405160208183030381529060405286604051602001610e3c91906145db565b61318686600161132a565b600080805b8360ff1681101561366d5761366360ff601b83900360080287901c16836147e7565b9150600101613641565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036136ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516136f29392919061483b565b60405180910390a2611569565b600061370b8585613999565b9050600061371886613aa0565b905060005b81518110156137ed57600082828151811061373a5761373a614502565b602002602001015190506137666004826affffffffffffffffffffff1916613b2990919063ffffffff16565b156137e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906137b1908b908b908b908b9060040161486e565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050505b5060010161371d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138229392919061483b565b60405180910390a261383d828565ffffffffffff168561412f565b60005b815181101561200457600082828151811061385d5761385d614502565b602002602001015190506138896008826affffffffffffffffffffff1916613b2990919063ffffffff16565b15613907576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906138d4908b908b908b908b9060040161486e565b600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b505050505b50600101613840565b600060608373ffffffffffffffffffffffffffffffffffffffff16613936848888614145565b60405161394391906148a7565b600060405180830381855af49150503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016139ae9291906148c3565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a1557602082048401935060208281613a1157613a116148ff565b0691505b508254600882021b60208290038084111561366d576001850154600882021c82179150509392505050565b6000808260c5811115613a5557613a55614639565b60ff1690506061811015613a6f57601f1660010192915050565b60618360c5811115613a8357613a83614639565b03613a915750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ada57613ada614502565b60209081029190910101526000613b127f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361415c565b90506117a4613b248260008451614196565b614224565b60008160ff1682613b3a8560581c90565b1660ff1614905092915050565b8215613bc15760208310613b7157602083048401935060208381613b6d57613b6d6148ff565b0692505b8215613bc15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613bb2575050611569565b50600194909401939182900391015b5b60208210613be35780518455600190930192601f1990910190602001613bc2565b8115611569576000600019600884021c8554835182191691161785555050505050565b60006008600180613c19600260206146af565b613c2391906146af565b613c2d91906146af565b613c3791906146c2565b8260ff911c1692915050565b60008282604051602001613c589291906148c3565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613cae9291906148c3565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613d50576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d5b82613c06565b90506005811115613da2576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d3f565b6000613dad836140fc565b90506000613dbb83836147e7565b9050601c811115613e02576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d3f565b6000805b83811015613ead5760ff601b82900360080287901c166000819003613e5a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b6020811115613e98576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b613ea281846147e7565b925050600101613e06565b50613eb785614235565b8114613f0357613ec685614235565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d3f565b825b601c8110156131865760ff601b82900360080287901c168015613f57576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b50600101613f05565b80158015613f6c575081155b15613f8d57604051635318beb960e01b815260006004820152602401610d3f565b6000613f9883613c06565b90506005811115613fbf57604051635318beb960e01b815260048101829052602401610d3f565b6000613fca846140fc565b90506000613fd883836147e7565b9050601c811115613fff57604051635318beb960e01b815260048101829052602401610d3f565b6000805b8381101561406b57600061401a613554898461410e565b905080600003614056576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61406081846147e7565b925050600101614003565b5061407586614235565b81146140a05761408486614235565b604051635318beb960e01b8152600401610d3f91815260200190565b825b828110156120045760006140b9613554898461410e565b905080156140f3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016140a2565b600060086001613c23600260206146af565b6000601b8290036008028360ff911c1660c5811115612e1a57612e1a614639565b6113cb838383516141408560200190565b613b47565b6060838383604051602001612de993929190614915565b60606117a461416c858585613c99565b60006141918561417c8989614258565b9060ff166028026038011c64ffffffffff1690565b61426b565b6000818311806141a65750835182115b156141e3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d3f93929190614967565b602084016141f184826147e7565b905060006141ff85856146af565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612e1a836015600061428e565b60006008614245600260206146af565b61424f91906146c2565b9190911c919050565b6000612e1a6142678484613c43565b5490565b60405160208101601f19603f848401011660405282825261366d85858584614309565b6060600061429c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816142c2576142c26148ff565b04905060405193506020840160208202810160405281855260005b828110156142fd578451871c8252938701936020909101906001016142dd565b50505050509392505050565b821561439057602083106143335760208304840193506020838161432f5761432f6148ff565b0692505b82156143905760208390036000818410156143565750600019600884021c614360565b50600019600882021c5b8554600886021b818451168219821617845250818411614381575050611569565b50600194909401939182900391015b5b602082106143b25783548152600190930192601f1990910190602001614391565b8115611569576000600019600884021c8251865482191691161782525050505050565b6000602082840312156143e757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561443f57600080fd5b813567ffffffffffffffff8082111561445757600080fd5b818401915084601f83011261446b57600080fd5b81358181111561447d5761447d614417565b604051601f8201601f19908116603f011681019083821181831017156144a5576144a5614417565b816040528281528760208487010111156144be57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613a9a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b8281526040602082015260006117a4604083018461453c565b60008282518085526020808601955060208260051b8401016020860160005b848110156145ce57601f198684030189526145bc83835161453c565b988401989250908301906001016145a0565b5090979650505050505050565b602081526000612e1a6020830184614581565b838152606060208201526000614607606083018561453c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061467a60c0830185614581565b82810360a084015261468c8185614581565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee614699565b80820281158282048414176101ee576101ee614699565b600083516146eb818460208801614518565b8351908301906146ff818360208801614518565b01949350505050565b60008151808452602080850194506020840160005b838110156147395781518752958201959082019060010161471d565b509495945050505050565b6080815260006147576080830187614708565b8281036020840152614769818761453c565b90508460408401528281036060840152614783818561453c565b979650505050505050565b86815260c0602082015260006147a760c0830188614708565b82810360408401526147b9818861453c565b905085606084015282810360808401526147d3818661453c565b9150508260a0830152979650505050505050565b808201808211156101ee576101ee614699565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612c07606083018461453c565b60608152600061484e6060830186614708565b65ffffffffffff851660208401528281036040840152612bd0818561453c565b8481526080602082015260006148876080830186614708565b65ffffffffffff851660408401528281036060840152614783818561453c565b600082516148b9818460208701614518565b9190910192915050565b8281526000602080830184516020860160005b828110156148f2578151845292840192908401906001016148d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614927818460208901614518565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b60608152600061497a606083018661453c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:203:-:0;;;1572:26:106;;;1594:4;-1:-1:-1;;1572:26:106;;;;;;;;3126:44:109;;;;;;;;;;;228:9:0;186:51;;1729:98:203;-1:-1:-1;;;;;;;;;1729:25:203;:98::i;:::-;1695:132;;1831:38;;;-1:-1:-1;;;;;;1831:38:203;;;1867:1;1831:38;;;;1873;;;;;;1909:1;1873:38;;;1555:5875;;;;;;;;;;;;980:257:59;1067:10;1196:26;438:6;385:5:16;1196:26:59;:::i;:::-;-1:-1:-1;;;;;;1123:15:59;;-1:-1:-1;;;;;;;385:5:16;1142:31:59;;;;1123:51;-1:-1:-1;;;;;;1178:13:59;;:45;;;1123:101;;-1:-1:-1;980:257:59;;;;;:::o;14:222:207:-;79:9;;;100:10;;;97:133;;;152:10;147:3;143:20;140:1;133:31;187:4;184:1;177:15;215:4;212:1;205:15;97:133;14:222;;;;:::o;:::-;1555:5875:203;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a696040518060600160405280602881526020016201feb96028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f6040518060600160405280602181526020016201fe706021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a81526020016201fee1602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd96040518060600160405280602881526020016201fe916028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61767e806200376083390190565b611668806200adde83390190565b61028c806200c44683390190565b615368806200c6d283390190565b611c688062011a3a83390190565b61178f80620136a283390190565b610b388062014e3183390190565b6157b8806201596983390190565b614d4f806201b12183390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b6119f3806200306a83390190565b61192d8062004a5d83390190565b6112f4806200638a83390190565b60805160a05160c05160e051612f456200012560003960006106130152600061049101526000610310015260005050612f456000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004612a14565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004612a6c565b610203565b005b604051601f193601358152602001610096565b6100df610102366004612a6c565b610235565b6100a76106e9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe6106f3565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061023f6106e9565b9050610249610725565b610251610790565b6102596107ec565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526102ee90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161038c9250612b65565b600060405180830381855af49150503d80600081146103c7576040519150601f19603f3d011682016040523d82523d6000602084013e6103cc565b606091505b5091509150816103df576103df81610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261046f90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161050d9250612b65565b600060405180830381855af49150503d8060008114610548576040519150601f19603f3d011682016040523d82523d6000602084013e61054d565b606091505b509092509050816105615761056181610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105f190612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161068f9250612b65565b600060405180830381855af49150503d80600081146106ca576040519150601f19603f3d011682016040523d82523d6000602084013e6106cf565b606091505b509092509050816106e3576106e381610850565b50505050565b60006101fe610858565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107225750335b90565b61078e7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610771610862565b6107796109aa565b6107816109e4565b610789610b66565b610bdd565b565b61078e7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000006107dc610cb1565b6107e46109aa565b610781610d76565b61078e7f7462000000000000000000000000000054696d65626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610838610e96565b6108406109aa565b610848610f15565b610789610fdf565b805160208201fd5b60006101fe611056565b60408051600480825260a082019092526000918291906020820160808036833701905050905060618160008151811061089d5761089d612b81565b602002602001019060c58111156108b6576108b6612b97565b908160c58111156108c9576108c9612b97565b815250506061816001815181106108e2576108e2612b81565b602002602001019060c58111156108fb576108fb612b97565b908160c581111561090e5761090e612b97565b81525050605f8160028151811061092757610927612b81565b602002602001019060c581111561094057610940612b97565b908160c581111561095357610953612b97565b81525050605f8160038151811061096c5761096c612b81565b602002602001019060c581111561098557610985612b97565b908160c581111561099857610998612b97565b9052506109a4816110a2565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061096c5761096c612b81565b60408051600480825260a08201909252606091816020015b60608152602001906001900390816109fc5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610a5c57610a5c612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610ab057610ab0612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b0457610b04612b81565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610b5857610b58612b81565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b7d5790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b6000610be7611056565b90503073ffffffffffffffffffffffffffffffffffffffff821603610c1957610c14878787878787611266565b610ca8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610c75908a908a908a908a908a908a90600401612c33565b600060405180830381600087803b158015610c8f57600080fd5b505af1158015610ca3573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610cec57610cec612b81565b602002602001019060c5811115610d0557610d05612b97565b908160c5811115610d1857610d18612b97565b81525050606181600181518110610d3157610d31612b81565b602002602001019060c5811115610d4a57610d4a612b97565b908160c5811115610d5d57610d5d612b97565b81525050605f8160028151811061096c5761096c612b81565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610d8e5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610dee57610dee612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610e4257610e42612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b5857610b58612b81565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610ed057610ed0612b81565b602002602001019060c5811115610ee957610ee9612b97565b908160c5811115610efc57610efc612b97565b8152505060618160018151811061096c5761096c612b81565b6040805160028082526060828101909352816020015b6060815260200190600190039081610f2b5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f8b57610f8b612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610b5857610b58612b81565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ff65790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061109d573391505090565b919050565b6000601c825111156110d5578151604051635318beb960e01b81526004016110cc91815260200190565b60405180910390fd5b60008080805b85518110156111b05760006111198783815181106110fb576110fb612b81565b602002602001015160c581111561111457611114612b97565b6116fa565b90508060000361112e57600190920191611166565b8215611166576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061118757611187612b81565b602002602001015160c58111156111a0576111a0612b97565b901b9490941793506001016110db565b5060058111156111d657604051635318beb960e01b8152600481018290526024016110cc565b845181900360086111e960026020612c93565b6111f39190612ca6565b83901b93909317926008600161120b60026020612c93565b6112159190612c93565b61121f9190612ca6565b81901b9390931792600860018061123860026020612c93565b6112429190612c93565b61124c9190612c93565b6112569190612ca6565b9190911b92909217949350505050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016148015906112fa57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15611376577f7462000000000000000000000000000000000000000000000000000000000000868760405160200161133491815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526110cc939291600401612cbd565b61137f8561175a565b61138a8460016119a1565b6113958360006119a1565b60e084901c60e885901c0160ff168251146113f55760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff168151146114555760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146114cd5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b6114d685611b3d565b6114df84611b3d565b14611531576114ed85611b3d565b6114f684611b3d565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b61153a85611b6f565b61154384611b6f565b146115955761155185611b6f565b61155a84611b6f565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60005b6115a186611b3d565b811015611637576115c66115b58583611b8c565b60c581111561111457611114612b97565b6008601b8390030287901c60ff161461162f576008601b8290030286901c60ff166115f46115b58684611b8c565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b600101611598565b5061164186611bb4565b1561169b57858660405160200161165a91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526110cc9291600401612cfe565b6116e786868686866040516020016116b39190612d17565b604051602081830303815290604052866040516020016116d39190612d17565b604051602081830303815290604052611c59565b6116f2866001611d3c565b505050505050565b6000808260c581111561170f5761170f612b97565b60ff169050606181101561172957601f1660010192915050565b60618360c581111561173d5761173d612b97565b0361174b5750601492915050565b50600092915050565b50919050565b80611791576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061179c82611b6f565b905060058111156117e3576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016110cc565b60006117ee83611b3d565b905060006117fc8383612d2a565b9050601c811115611843576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016110cc565b6000805b838110156118ee5760ff601b82900360080287901c16600081900361189b576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b60208111156118d9576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b6118e38184612d2a565b925050600101611847565b506118f885611dfa565b81146119445761190785611dfa565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016110cc565b825b601c8110156116f25760ff601b82900360080287901c168015611998576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b50600101611946565b801580156119ad575081155b156119ce57604051635318beb960e01b8152600060048201526024016110cc565b60006119d983611b6f565b90506005811115611a0057604051635318beb960e01b8152600481018290526024016110cc565b6000611a0b84611b3d565b90506000611a198383612d2a565b9050601c811115611a4057604051635318beb960e01b8152600481018290526024016110cc565b6000805b83811015611aac576000611a5b6115b58984611b8c565b905080600003611a97576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa18184612d2a565b925050600101611a44565b50611ab686611dfa565b8114611ae157611ac586611dfa565b604051635318beb960e01b81526004016110cc91815260200190565b825b82811015610ca8576000611afa6115b58984611b8c565b90508015611b34576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611ae3565b600060086001611b4f60026020612c93565b611b599190612c93565b611b639190612ca6565b8260ff911c1692915050565b60006008600180611b8260026020612c93565b611b4f9190612c93565b6000601b8290036008028360ff911c1660c5811115611bad57611bad612b97565b9392505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611bed57611bed612b81565b60209081029190910101526000611c457f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611e1d565b9050611c518160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611c908484611e53565b90506000611c9e8585611e70565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611cd857611cd8612b81565b6020908102919091010152611d307f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611e9c565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611d7257611d72612b81565b602002602001018181525050611df57f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611dc091151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006121d5565b505050565b60006008611e0a60026020612c93565b611e149190612ca6565b9190911c919050565b6000611e4a611e2c86866121f1565b60ff858116601b0360080285901c16611e458587612247565b612280565b95945050505050565b8151815160009181810160389190911b1760609190911b17611bad565b60608282604051602001611e85929190612d3d565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611f2857857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611f1b9493929190612da8565b60405180910390a26116f2565b6000611f33876122d1565b905060005b815181101561200c576000828281518110611f5557611f55612b81565b60200260200101519050611f816001826affffffffffffffffffffff191661235a90919063ffffffff16565b15612003576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611fd0908c908c908c908c908c908c90600401612df2565b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050505b50600101611f38565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516120439493929190612da8565b60405180910390a2600061205788886121f1565b9050600060208701905061206f826000895184612378565b600061207a85611b6f565b11156120fe57600061208c8a8a612437565b878155905060208601915060008060005b6120a688611b6f565b8160ff1610156120f9576120bb8d8d8361248d565b92506120d68a8260ff166028026038011c64ffffffffff1690565b91506120e58360008488612378565b6120ef8286612d2a565b945060010161209d565b505050505b60005b8351811015611d3057600084828151811061211e5761211e612b81565b6020026020010151905061214a6002826affffffffffffffffffffff191661235a90919063ffffffff16565b156121cc576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612199908e908e908e908e908e908e90600401612df2565b600060405180830381600087803b1580156121b357600080fd5b505af11580156121c7573d6000803e3d6000fd5b505050505b50600101612101565b6121ea85856121e48487612247565b8561250d565b5050505050565b60008282604051602001612206929190612e4b565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156122785761226e60ff601b83900360080287901c1683612d2a565b915060010161224c565b509392505050565b6000602082106122a6576020820484019350602082816122a2576122a2612e87565b0691505b508254600882021b602082900380841115612278576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061230b5761230b612b81565b602090810291909101015260006123437f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836127a8565b9050611c5161235582600084516127e2565b612870565b60008160ff168261236b8560581c90565b1660ff1614905092915050565b82156123f257602083106123a25760208304840193506020838161239e5761239e612e87565b0692505b82156123f25760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116123e35750506106e3565b50600194909401939182900391015b5b602082106124145780518455600190930192601f19909101906020016123f3565b81156106e3576000600019600884021c8554835182191691161785555050505050565b6000828260405160200161244c929190612e4b565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016124a2929190612e4b565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361259757837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161258a93929190612e9d565b60405180910390a26106e3565b60006125a385856121f1565b905060006125b0866122d1565b905060005b81518110156126855760008282815181106125d2576125d2612b81565b602002602001015190506125fe6004826affffffffffffffffffffff191661235a90919063ffffffff16565b1561267c576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612649908b908b908b908b90600401612eda565b600060405180830381600087803b15801561266357600080fd5b505af1158015612677573d6000803e3d6000fd5b505050505b506001016125b5565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516126ba93929190612e9d565b60405180910390a26126d5828565ffffffffffff1685612881565b60005b8151811015610ca85760008282815181106126f5576126f5612b81565b602002602001015190506127216008826affffffffffffffffffffff191661235a90919063ffffffff16565b1561279f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061276c908b908b908b908b90600401612eda565b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b505050505b506001016126d8565b6060611c516127b885858561248d565b60006127dd856127c88989612897565b9060ff166028026038011c64ffffffffff1690565b6128aa565b6000818311806127f25750835182115b1561282f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016110cc93929190612f13565b6020840161283d8482612d2a565b9050600061284b8585612c93565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611bad83601560006128cd565b611df5838383516128928560200190565b612378565b6000611bad6128a68484612437565b5490565b60405160208101601f19603f848401011660405282825261227885858584612948565b606060006128db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161290157612901612e87565b04905060405193506020840160208202810160405281855260005b8281101561293c578451871c82529387019360209091019060010161291c565b50505050509392505050565b82156129cf57602083106129725760208304840193506020838161296e5761296e612e87565b0692505b82156129cf5760208390036000818410156129955750600019600884021c61299f565b50600019600882021c5b8554600886021b8184511682198216178452508184116129c05750506106e3565b50600194909401939182900391015b5b602082106129f15783548152600190930192601f19909101906020016129d0565b81156106e3576000600019600884021c8251865482191691161782525050505050565b600060208284031215612a2657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215612a7e57600080fd5b813567ffffffffffffffff80821115612a9657600080fd5b818401915084601f830112612aaa57600080fd5b813581811115612abc57612abc612a56565b604051601f8201601f19908116603f01168101908382118183101715612ae457612ae4612a56565b81604052828152876020848701011115612afd57600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156117545760001960209190910360031b1b16919050565b60005b83811015612b5c578181015183820152602001612b44565b50506000910152565b60008251612b77818460208701612b41565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612bc5816020860160208601612b41565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612c2657601f19868403018952612c14838351612bad565b98840198925090830190600101612bf8565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612c5e60c0830185612bd9565b82810360a0840152612c708185612bd9565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee612c7d565b80820281158282048414176101ee576101ee612c7d565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611e4a6060830184612bad565b828152604060208201526000611c516040830184612bad565b602081526000611bad6020830184612bd9565b808201808211156101ee576101ee612c7d565b60008351612d4f818460208801612b41565b835190830190612d63818360208801612b41565b01949350505050565b60008151808452602080850194506020840160005b83811015612d9d57815187529582019590820190600101612d81565b509495945050505050565b608081526000612dbb6080830187612d6c565b8281036020840152612dcd8187612bad565b90508460408401528281036060840152612de78185612bad565b979650505050505050565b86815260c060208201526000612e0b60c0830188612d6c565b8281036040840152612e1d8188612bad565b90508560608401528281036080840152612e378186612bad565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612e7a57815184529284019290840190600101612e5e565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612eb06060830186612d6c565b65ffffffffffff851660208401528281036040840152612ed08185612bad565b9695505050505050565b848152608060208201526000612ef36080830186612d6c565b65ffffffffffff851660408401528281036060840152612de78185612bad565b606081526000612f266060830186612bad565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506119d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a61008536600461152b565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611627565b6101f6565b6100e56100e036600461167e565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b87856103dc565b600192505050610261565b801561025a5760001901610231866102526101e7565b8785856104c7565b6000925050505b9392505050565b6102836102736101e7565b85858580519060200120856104c7565b50505050565b60006101f16105fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376116dd565b6020026020010181815250508381600281518110610357576103576116dd565b6020026020010181815250508281600381518110610377576103776116dd565b602090810291909101015260006103cf7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610606565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061041f5761041f6116dd565b602002602001018181525050836001600160a01b031660001b8160018151811061044b5761044b6116dd565b602002602001018181525050828160028151811061046b5761046b6116dd565b602002602001018181525050818160038151811061048b5761048b6116dd565b60209081029190910101526104c07f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106c3565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061050a5761050a6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610536576105366116dd565b6020026020010181815250508381600281518110610556576105566116dd565b6020026020010181815250508281600381518110610576576105766116dd565b6020026020010181815250506105f47f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105bf91815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061076c565b505050505050565b60006101f1610821565b600080610611610821565b9050306001600160a01b038216036106375761062f86868686610860565b9150506103d4565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061068290899089908990899060040161172f565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061175e565b60006106cd610821565b9050306001600160a01b038216036106ee576106e98383610896565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906107359086908690600401611777565b600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050505050565b6000610776610821565b9050306001600160a01b0382160361079a5761079586868686866108ad565b6105f4565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906107e790899089908990899089906004016117d6565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061085b573391505090565b919050565b600061088d61086f86866108c2565b60ff858116601b0360080285901c166108888587610918565b610951565b95945050505050565b6108a982826108a4856109a2565b610a27565b5050565b6104c085856108bc8487610918565b85610d26565b600082826040516020016108d792919061181d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109495761093f60ff601b83900360080287901c168361186f565b915060010161091d565b509392505050565b6000602082106109775760208204840193506020828161097357610973611882565b0691505b508254600882021b602082900380841115610949576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016109f157507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1610a1e7f746273746f72650000000000000000005461626c65730000000000000000000084610fc1565b60206000610951565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610aad57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610aa09190611898565b60405180910390a2505050565b6000610ab884610fdd565b905060005b8151811015610b8b576000828281518110610ada57610ada6116dd565b60200260200101519050610b066040826affffffffffffffffffffff191661106690919063ffffffff16565b15610b82576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b4f908990899089906004016118ab565b600060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050505b50600101610abd565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bbc9190611898565b60405180910390a26000610bd085856108c2565b9050610c29816000610be186611084565b67ffffffffffffffff811115610bf957610bf9611584565b6040519080825280601f01601f191660200182016040528015610c23576020820181803683370190505b506110a7565b6000610c34846110bd565b1115610c55576000610c4686866110fa565b9050610c53816020611150565b505b60005b82518110156105f4576000838281518110610c7557610c756116dd565b60200260200101519050610ca16080826affffffffffffffffffffff191661106690919063ffffffff16565b15610d1d576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610cea908a908a908a906004016118ab565b600060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050505b50600101610c58565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610db057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610da3939291906118d4565b60405180910390a2610283565b6000610dbc85856108c2565b90506000610dc986610fdd565b905060005b8151811015610e9e576000828281518110610deb57610deb6116dd565b60200260200101519050610e176004826affffffffffffffffffffff191661106690919063ffffffff16565b15610e95576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e62908b908b908b908b90600401611911565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505050505b50600101610dce565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610ed3939291906118d4565b60405180910390a2610eee828565ffffffffffff16856110a7565b60005b8151811015610763576000828281518110610f0e57610f0e6116dd565b60200260200101519050610f3a6008826affffffffffffffffffffff191661106690919063ffffffff16565b15610fb8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f85908b908b908b908b90600401611911565b600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b505050505b50600101610ef1565b60408051602081018490529081018290526000906060016108d7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611017576110176116dd565b6020908102919091010152600061104f7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361118d565b90506103d461106182600084516111c7565b61125e565b60008160ff16826110778560581c90565b1660ff1614905092915050565b6000600861109460026020611955565b61109e9190611968565b9190911c919050565b6106e9838383516110b88560200190565b61126f565b600060086001806110d060026020611955565b6110da9190611955565b6110e49190611955565b6110ee9190611968565b8260ff911c1692915050565b6000828260405160200161110f92919061181d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061115f83601f61186f565b611169919061197f565b611173908461186f565b90505b808310156106e95760008355600183019250611176565b60606103d461119d85858561132e565b60006111c2856111ad89896113ae565b9060ff166028026038011c64ffffffffff1690565b6113c1565b6000818311806111d75750835182115b1561121d578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401611214939291906119a1565b60405180910390fd5b6020840161122b848261186f565b905060006112398585611955565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006113e4565b82156112e957602083106112995760208304840193506020838161129557611295611882565b0692505b82156112e95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112da575050610283565b50600194909401939182900391015b5b6020821061130b5780518455600190930192601f19909101906020016112ea565b8115610283576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161134392919061181d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102616113bd84846110fa565b5490565b60405160208101601f19603f84840101166040528282526109498585858461145f565b606060006113f28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161141857611418611882565b04905060405193506020840160208202810160405281855260005b82811015611453578451871c825293870193602090910190600101611433565b50505050509392505050565b82156114e657602083106114895760208304840193506020838161148557611485611882565b0692505b82156114e65760208390036000818410156114ac5750600019600884021c6114b6565b50600019600882021c5b8554600886021b8184511682198216178452508184116114d7575050610283565b50600194909401939182900391015b5b602082106115085783548152600190930192601f19909101906020016114e7565b8115610283576000600019600884021c8251865482191691161782525050505050565b60006020828403121561153d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b038116811461085b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115ab57600080fd5b813567ffffffffffffffff808211156115c6576115c6611584565b604051601f8301601f19908116603f011681019082821181831017156115ee576115ee611584565b8160405283815286602085880101111561160757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561163c57600080fd5b6116458461156d565b925060208401359150604084013567ffffffffffffffff81111561166857600080fd5b6116748682870161159a565b9150509250925092565b6000806000806080858703121561169457600080fd5b61169d8561156d565b935060208501359250604085013567ffffffffffffffff8111156116c057600080fd5b6116cc8782880161159a565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561172457815187529582019590820190600101611708565b509495945050505050565b84815260806020820152600061174860808301866116f3565b60ff949094166040830152506060015292915050565b60006020828403121561177057600080fd5b5051919050565b8281526040602082015260006103d460408301846116f3565b6000815180845260005b818110156117b65760208185018101518683018201520161179a565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117ef60a08301876116f3565b60ff86166040840152828103606084015261180a8186611790565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561184c57815184529284019290840190600101611830565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611859565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846116f3565b8381526060602082015260006118c460608301856116f3565b9050826040830152949350505050565b6060815260006118e760608301866116f3565b65ffffffffffff8516602084015282810360408401526119078185611790565b9695505050505050565b84815260806020820152600061192a60808301866116f3565b65ffffffffffff85166040840152828103606084015261194a8185611790565b979650505050505050565b818103818111156101e1576101e1611859565b80820281158282048414176101e1576101e1611859565b60008261199c57634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006119b46060830186611790565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061190d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046114b4565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611523565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046115ee565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103a3565b6001915050610254565b801561024e5760001901610227856102476101e7565b868461046d565b60009150505b9392505050565b61026e6102666101e7565b84848461046d565b505050565b60006101f1610581565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f5611621565b602002602001018181525050836001600160a01b031660001b8160018151811061032157610321611621565b602002602001018181525050828160028151811061034157610341611621565b602090810291909101015260006103997f7462000000000000000000000000000053797374656d626f756e6444656c656783837e2001002000000000000000000000000000000000000000000000000000000061058b565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b816000815181106103e6576103e6611621565b602002602001018181525050826001600160a01b031660001b8160018151811061041257610412611621565b602002602001018181525050818160028151811061043257610432611621565b60209081029190910101526104677f7462000000000000000000000000000053797374656d626f756e6444656c656782610650565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104b0576104b0611621565b602002602001018181525050836001600160a01b031660001b816001815181106104dc576104dc611621565b60200260200101818152505082816002815181106104fc576104fc611621565b60200260200101818152505061057a7f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161054591815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006106f4565b5050505050565b60006101f16107aa565b6000806105966107aa565b9050306001600160a01b038216036105bc576105b4868686866107e9565b915050610648565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610607908990899089908990600401611673565b602060405180830381865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906116a2565b949350505050565b600061065a6107aa565b9050306001600160a01b038216036106765761026e838361081f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106bd90869086906004016116bb565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050565b60006106fe6107aa565b9050306001600160a01b038216036107225761071d8686868686610836565b6107a2565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061076f908990899089908990899060040161171a565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806107e4573391505090565b919050565b60006108166107f8868661084b565b60ff858116601b0360080285901c1661081185876108a1565b6108da565b95945050505050565b610832828261082d8561092b565b6109b0565b5050565b61057a858561084584876108a1565b85610caf565b60008282604051602001610860929190611761565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108d2576108c860ff601b83900360080287901c16836117b3565b91506001016108a6565b509392505050565b600060208210610900576020820484019350602082816108fc576108fc6117c6565b0691505b508254600882021b6020829003808411156108d2576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161097a57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e16109a77f746273746f72650000000000000000005461626c65730000000000000000000084610f4a565b602060006108da565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610a3657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610a2991906117dc565b60405180910390a2505050565b6000610a4184610f66565b905060005b8151811015610b14576000828281518110610a6357610a63611621565b60200260200101519050610a8f6040826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610b0b576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610ad8908990899089906004016117ef565b600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050505b50600101610a46565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610b4591906117dc565b60405180910390a26000610b59858561084b565b9050610bb2816000610b6a8661100d565b67ffffffffffffffff811115610b8257610b8261150d565b6040519080825280601f01601f191660200182016040528015610bac576020820181803683370190505b50611030565b6000610bbd84611046565b1115610bde576000610bcf8686611083565b9050610bdc8160206110d9565b505b60005b82518110156107a2576000838281518110610bfe57610bfe611621565b60200260200101519050610c2a6080826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610ca6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610c73908a908a908a906004016117ef565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505b50600101610be1565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d3957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d2c93929190611818565b60405180910390a2610467565b6000610d45858561084b565b90506000610d5286610f66565b905060005b8151811015610e27576000828281518110610d7457610d74611621565b60200260200101519050610da06004826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610e1e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610deb908b908b908b908b9060040161184b565b600060405180830381600087803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b505050505b50600101610d57565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5c93929190611818565b60405180910390a2610e77828565ffffffffffff1685611030565b60005b81518110156106eb576000828281518110610e9757610e97611621565b60200260200101519050610ec36008826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610f41576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0e908b908b908b908b9060040161184b565b600060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050505b50600101610e7a565b6040805160208101849052908101829052600090606001610860565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fa057610fa0611621565b60209081029190910101526000610fd87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611116565b9050610648610fea8260008451611150565b6111e7565b60008160ff16826110008560581c90565b1660ff1614905092915050565b6000600861101d6002602061188f565b61102791906118a2565b9190911c919050565b61026e838383516110418560200190565b6111f8565b600060086001806110596002602061188f565b611063919061188f565b61106d919061188f565b61107791906118a2565b8260ff911c1692915050565b60008282604051602001611098929190611761565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206110e883601f6117b3565b6110f291906118b9565b6110fc90846117b3565b90505b8083101561026e57600083556001830192506110ff565b60606106486111268585856112b7565b600061114b856111368989611337565b9060ff166028026038011c64ffffffffff1690565b61134a565b6000818311806111605750835182115b156111a6578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119d939291906118db565b60405180910390fd5b602084016111b484826117b3565b905060006111c2858561188f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061136d565b821561127257602083106112225760208304840193506020838161121e5761121e6117c6565b0692505b82156112725760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611263575050610467565b50600194909401939182900391015b5b602082106112945780518455600190930192601f1990910190602001611273565b8115610467576000600019600884021c8554835182191691161785555050505050565b600083836040516020016112cc929190611761565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546113468484611083565b5490565b60405160208101601f19603f84840101166040528282526108d2858585846113e8565b6060600061137b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816113a1576113a16117c6565b04905060405193506020840160208202810160405281855260005b828110156113dc578451871c8252938701936020909101906001016113bc565b50505050509392505050565b821561146f57602083106114125760208304840193506020838161140e5761140e6117c6565b0692505b821561146f5760208390036000818410156114355750600019600884021c61143f565b50600019600882021c5b8554600886021b818451168219821617845250818411611460575050610467565b50600194909401939182900391015b5b602082106114915783548152600190930192601f1990910190602001611470565b8115610467576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b03811681146107e457600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561153857600080fd5b611541846114f6565b925060208401359150604084013567ffffffffffffffff8082111561156557600080fd5b818601915086601f83011261157957600080fd5b81358181111561158b5761158b61150d565b604051601f8201601f19908116603f011681019083821181831017156115b3576115b361150d565b816040528281528960208487010111156115cc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561160357600080fd5b61160c846114f6565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116685781518752958201959082019060010161164c565b509495945050505050565b84815260806020820152600061168c6080830186611637565b60ff949094166040830152506060015292915050565b6000602082840312156116b457600080fd5b5051919050565b8281526040602082015260006106486040830184611637565b6000815180845260005b818110156116fa576020818501810151868301820152016116de565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061173360a0830187611637565b60ff86166040840152828103606084015261174e81866116d4565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561179057815184529284019290840190600101611774565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e161179d565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611637565b8381526060602082015260006118086060830185611637565b9050826040830152949350505050565b60608152600061182b6060830186611637565b65ffffffffffff85166020840152828103604084015261039981856116d4565b8481526080602082015260006118646080830186611637565b65ffffffffffff85166040840152828103606084015261188481856116d4565b979650505050505050565b818103818111156101e1576101e161179d565b80820281158282048414176101e1576101e161179d565b6000826118d657634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006118ee60608301866116d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506112d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a610085366004610efb565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da366004610f77565b610203565b604051601f193601358152602001610096565b610105610100366004611042565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b8383610361565b5050565b60006101fe61046c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061106c565b602090810291909101015260006103587f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610476565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103af576103af61106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103e8576103e861106c565b6020026020010181815250506104667f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161043191815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610555565b50505050565b60006101fe610625565b600080610481610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104b4576104ac86868686610671565b91505061054d565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061050c9089908990899089906004016110be565b602060405180830381865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906110ed565b949350505050565b600061055f610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105905761058b868686868661069e565b61061d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906105ea908990899089908990899060040161114c565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066c573391505090565b919050565b600061035861068086866106ba565b60ff858116601b0360080285901c166106998587610710565b610749565b6106b385856106ad8487610710565b8561079a565b5050505050565b600082826040516020016106cf929190611193565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107415761073760ff601b83900360080287901c16836111e5565b9150600101610715565b509392505050565b60006020821061076f5760208204840193506020828161076b5761076b6111f8565b0691505b508254600882021b602082900380841115610741576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361082457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108179392919061120e565b60405180910390a2610466565b600061083085856106ba565b9050600061083d86610a3e565b905060005b815181101561091257600082828151811061085f5761085f61106c565b6020026020010151905061088b6004826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610909576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906108d6908b908b908b908b9060040161124b565b600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050505b50600101610842565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109479392919061120e565b60405180910390a2610962828565ffffffffffff1685610ae5565b60005b8151811015610a355760008282815181106109825761098261106c565b602002602001015190506109ae6008826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610a2c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906109f9908b908b908b908b9060040161124b565b600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b505050505b50600101610965565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7857610a7861106c565b60209081029190910101526000610ab07f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b00565b905061054d610ac28260008451610b3a565b610bd1565b60008160ff1682610ad88560581c90565b1660ff1614905092915050565b610afb83838351610af68560200190565b610be9565b505050565b606061054d610b10858585610ca8565b6000610b3585610b208989610d28565b9060ff166028026038011c64ffffffffff1690565b610d3b565b600081831180610b4a5750835182115b15610b90578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b879392919061128f565b60405180910390fd5b60208401610b9e84826111e5565b90506000610bac85856112b4565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610be28360156000610d5e565b9392505050565b8215610c635760208310610c1357602083048401935060208381610c0f57610c0f6111f8565b0692505b8215610c635760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c54575050610466565b50600194909401939182900391015b5b60208210610c855780518455600190930192601f1990910190602001610c64565b8115610466576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610cbd929190611193565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610be2610d378484610dd9565b5490565b60405160208101601f19603f848401011660405282825261074185858584610e2f565b60606000610d6c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d9257610d926111f8565b04905060405193506020840160208202810160405281855260005b82811015610dcd578451871c825293870193602090910190600101610dad565b50505050509392505050565b60008282604051602001610dee929190611193565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610eb65760208310610e5957602083048401935060208381610e5557610e556111f8565b0692505b8215610eb6576020839003600081841015610e7c5750600019600884021c610e86565b50600019600882021c5b8554600886021b818451168219821617845250818411610ea7575050610466565b50600194909401939182900391015b5b60208210610ed85783548152600190930192601f1990910190602001610eb7565b8115610466576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f0d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610be257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461066c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610f8c57600080fd5b610f9584610f3d565b925060208401359150604084013567ffffffffffffffff80821115610fb957600080fd5b818601915086601f830112610fcd57600080fd5b813581811115610fdf57610fdf610f61565b604051601f8201601f19908116603f0116810190838211818310171561100757611007610f61565b8160405282815289602084870101111561102057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561105557600080fd5b61105e83610f3d565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156110b357815187529582019590820190600101611097565b509495945050505050565b8481526080602082015260006110d76080830186611082565b60ff949094166040830152506060015292915050565b6000602082840312156110ff57600080fd5b5051919050565b6000815180845260005b8181101561112c57602081850181015186830182015201611110565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061116560a0830187611082565b60ff8616604084015282810360608401526111808186611106565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156111c2578151845292840192908401906001016111a6565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6111cf565b634e487b7160e01b600052601260045260246000fd5b6060815260006112216060830186611082565b65ffffffffffff8516602084015282810360408401526112418185611106565b9695505050505050565b8481526080602082015260006112646080830186611082565b65ffffffffffff8516604084015282810360608401526112848185611106565b979650505050505050565b6060815260006112a26060830186611106565b60208301949094525060400152919050565b818103818111156101ee576101ee6111cf56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611648806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c146102b6578063ea29e3ba146102cb576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611165565b6102e0565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610379565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611233565b610388565b6040516101699190611300565b3480156101e557600080fd5b506101f96101f4366004611313565b61040c565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610559565b34801561023c57600080fd5b5061025061024b3660046113ad565b610563565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046113c6565b6105ad565b3480156102ad57600080fd5b506101876105ea565b3480156102c257600080fd5b506101876105f4565b3480156102d757600080fd5b506101f96105fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103836106ea565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103b2919061140f565b600060405180830381855af49150503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50915091508161040457805181602001fd5b949350505050565b60408051600080825260208201909252906104487f7462000000000000000000000000000000000000000000000000000000000000868661071c565b9050306104536107a3565b73ffffffffffffffffffffffffffffffffffffffff16036104af576104aa81838560405160200161048b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107ef565b610552565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104e591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161051f959493929190611467565b600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050505b5050505050565b60006103836107a3565b6040805180820190915260008082526020820152604051806040016040528061058a610379565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105e19190611300565b60405180910390fd5b6000610383610379565b6000610383610559565b306106076107a3565b73ffffffffffffffffffffffffffffffffffffffff160361068b577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610681906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106819060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107195750335b90565b600061072a607060106114ce565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107ea573391505090565b919050565b61055285858585856108008b610805565b61088a565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161085457507e60030220202000000000000000000000000000000000000000000000000000919050565b6103736108817f746273746f72650000000000000000005461626c65730000000000000000000084610bd0565b60206000610c29565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361091657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161090994939291906114e1565b60405180910390a2610bc8565b600061092187610c7b565b905060005b81518110156109fa5760008282815181106109435761094361152b565b6020026020010151905061096f6001826affffffffffffffffffffff1916610d0490919063ffffffff16565b156109f1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109be908c908c908c908c908c908c90600401611541565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b50600101610926565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a3194939291906114e1565b60405180910390a26000610a458888610d22565b90506000602087019050610a5d826000895184610d37565b6000610a6885610df5565b1115610aec576000610a7a8a8a610e32565b878155905060208601915060008060005b610a9488610df5565b8160ff161015610ae757610aa98d8d83610e88565b9250610ac48a8260ff166028026038011c64ffffffffff1690565b9150610ad38360008488610d37565b610add82866114ce565b9450600101610a8b565b505050505b60005b8351811015610bc3576000848281518110610b0c57610b0c61152b565b60200260200101519050610b386002826affffffffffffffffffffff1916610d0490919063ffffffff16565b15610bba576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610b87908e908e908e908e908e908e90600401611541565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050505b50600101610aef565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c4f57602082048401935060208281610c4b57610c4b61159a565b0691505b508254600882021b602082900380841115610c73576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610cb557610cb561152b565b60209081029190910101526000610ced7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f08565b9050610404610cff8260008451610f42565b610fd0565b60008160ff1682610d158560581c90565b1660ff1614905092915050565b60008282604051602001610be89291906115b0565b8215610db15760208310610d6157602083048401935060208381610d5d57610d5d61159a565b0692505b8215610db15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610da2575050610def565b50600194909401939182900391015b5b60208210610dd35780518455600190930192601f1990910190602001610db2565b8115610def5783548151600019600885021c9182169119161784555b50505050565b60006008600180610e08600260206115ec565b610e1291906115ec565b610e1c91906115ec565b610e2691906115ff565b8260ff911c1692915050565b60008282604051602001610e479291906115b0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610e9d9291906115b0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6060610404610f18858585610e88565b6000610f3d85610f288989610fe8565b9060ff166028026038011c64ffffffffff1690565b610ffb565b600081831180610f525750835182115b15610f8f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105e193929190611616565b60208401610f9d84826114ce565b90506000610fab85856115ec565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610fe1836015600061101e565b9392505050565b6000610fe1610ff78484610e32565b5490565b60405160208101601f19603f8484010116604052828252610c7385858584611099565b6060600061102c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110525761105261159a565b04905060405193506020840160208202810160405281855260005b8281101561108d578451871c82529387019360209091019060010161106d565b50505050509392505050565b821561112057602083106110c3576020830484019350602083816110bf576110bf61159a565b0692505b82156111205760208390036000818410156110e65750600019600884021c6110f0565b50600019600882021c5b8554600886021b818451168219821617845250818411611111575050610def565b50600194909401939182900391015b5b602082106111425783548152600190930192601f1990910190602001611121565b8115610def576000600019600884021c8251865482191691161782525050505050565b60006020828403121561117757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610fe157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111d8576111d86111a7565b604051601f8501601f19908116603f01168101908282118183101715611200576112006111a7565b8160405280935085815286868601111561121957600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561124657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461126a57600080fd5b9150602083013567ffffffffffffffff81111561128657600080fd5b8301601f8101851361129757600080fd5b6112a6858235602084016111bd565b9150509250929050565b60005b838110156112cb5781810151838201526020016112b3565b50506000910152565b600081518084526112ec8160208601602086016112b0565b601f01601f19169290920160200192915050565b602081526000610fe160208301846112d4565b60008060006060848603121561132857600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461135857600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461138d57600080fd5b9150604084013580151581146113a257600080fd5b809150509250925092565b6000602082840312156113bf57600080fd5b5035919050565b6000602082840312156113d857600080fd5b813567ffffffffffffffff8111156113ef57600080fd5b8201601f8101841361140057600080fd5b610404848235602084016111bd565b600082516114218184602087016112b0565b9190910192915050565b60008151808452602080850194506020840160005b8381101561145c57815187529582019590820190600101611440565b509495945050505050565b85815260a06020820152600061148060a083018761142b565b828103604084015261149281876112d4565b905084606084015282810360808401526114ac81856112d4565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610373576103736114b8565b6080815260006114f4608083018761142b565b828103602084015261150681876112d4565b9050846040840152828103606084015261152081856112d4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061155a60c083018861142b565b828103604084015261156c81886112d4565b9050856060840152828103608084015261158681866112d4565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156115df578151845292840192908401906001016115c3565b5091979650505050505050565b81810381811115610373576103736114b8565b8082028115828204841417610373576103736114b8565b60608152600061162960608301866112d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061026c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f366004610216565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b60006101826000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff16905080610211573391505090565b919050565b60006020828403121561022857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025857600080fd5b939250505056fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615280620000e86000396000818161036f01526112a801526152806000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614387565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614387565b61025f34846143c4565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614434565b610983565b6040516103a591906144ea565b3480156103e757600080fd5b506102646103f636600461453f565b6109c6565b34801561040757600080fd5b5061026461041636600461453f565b610a79565b34801561042757600080fd5b506103ce6104363660046145cc565b610b24565b34801561044757600080fd5b5061026461045636600461462a565b610b6e565b34801561046757600080fd5b506102646104763660046146d7565b610c57565b34801561048757600080fd5b506102646104963660046146d7565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476d565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483d565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614884565b610e07565b6040516103a5939291906148d7565b34801561051757600080fd5b506103ce610526366004614977565b610e5c565b34801561053757600080fd5b506102646105463660046149e0565b610e6b565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614a41565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614434565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9a565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614af9565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b50565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8a565b611116565b34801561063d57600080fd5b5061026461064c366004614c19565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca6565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e0565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145cc565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476d565b611444565b3480156106dd57600080fd5b506102646106ec366004614434565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476d565b6114cf565b34801561071d57600080fd5b5061026461072c36600461453f565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc3565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc3565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc3565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614387565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614387565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614786565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c4565b9350505080806116b990614d04565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc3565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d23565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc3565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d23565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4b565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efa565b6114c885858585856119f18b611a39565b612f1d565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4b565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613262565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d64565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efa565b9998505050505050505050565b6111128282611bcf85611a39565b61327e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc3565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357d565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d23565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d77565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc3565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4b565b6135f8565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613608565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a4565b611f213360008484604051602401611ec491906144ea565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b0335000000000000000000000000000000000000000000000000000000001790526136ff565b506111128282805190602001206001613710565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd5565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f4565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc3565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e08565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd5565b60405180910390a26120fd828565ffffffffffff1685613866565b60005b8151811015610d0457600082828151811061211d5761211d614cc3565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e08565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387c565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613893565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613893565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e41565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613937565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ec565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a95565b905061247982613b27565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ecf565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d64565b604080516000815260208101909152889088612ac2565b600061253b82613bc4565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614ee8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c4565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f24565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d64565b61268b9190614f3a565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efa565b600060086001806126e060026020614d64565b6126ea9190614d64565b6126f49190614d64565b6126fe9190614f3a565b8260ff911c1692915050565b600061094f6127198484613c56565b5490565b60008383604051602001612732929190614ee8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f24565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc3565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cac565b613d3a565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4b565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ecf565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c4565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613def565b612a31565b612a3188888488613e67565b90999098509650505050505050565b6000600860016126ea60026020614d64565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efa565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ec8565b8061094f575061094f8383613ec8565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f51565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d64565b612bc091906143c4565b9050808214158015612be2575081612bd88688614f92565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f91565b90506000612c9d8b6137f4565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc3565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb7565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051612de0959493929190615015565b60405180910390a250828414612e01576000612dfc8c8c613c56565b839055505b6000612e0e8c8c8c61271d565b9050612e22818a64ffffffffff1689613866565b5060005b8151811015612eec576000828281518110612e4357612e43614cc3565b60200260200101519050612e6f6020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb09796959493929190614fb7565b600060405180830381600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050505b50600101612e26565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fa957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9c949392919061505b565b60405180910390a2610a71565b6000612fb4876137f4565b905060005b815181101561308d576000828281518110612fd657612fd6614cc3565b602002602001015190506130026001826affffffffffffffffffffff191661290790919063ffffffff16565b15613084576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613051908c908c908c908c908c908c9060040161509a565b600060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050505b50600101612fb9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c4949392919061505b565b60405180910390a260006130d88888612591565b905060006020870190506130f082600089518461405f565b60006130fb856126cd565b111561317f57600061310d8a8a613c56565b878155905060208601915060008060005b613127886126cd565b8160ff16101561317a5761313c8d8d8361271d565b92506131578a8260ff166028026038011c64ffffffffff1690565b9150613166836000848861405f565b61317082866143c4565b945060010161311e565b505050505b60005b835181101561325657600084828151811061319f5761319f614cc3565b602002602001015190506131cb6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321a908e908e908e908e908e908e9060040161509a565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b505050505b50600101613182565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f791906150f3565b60405180910390a2505050565b600061330f846137f4565b905060005b81518110156133e257600082828151811061333157613331614cc3565b6020026020010151905061335d6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133d9576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a690899089908990600401615106565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505b50600101613314565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341391906150f3565b60405180910390a260006134278585612591565b905061348081600061343886612671565b67ffffffffffffffff81111561345057613450614786565b6040519080825280601f01601f19166020018201604052801561347a576020820181803683370190505b50613866565b600061348b846126cd565b11156134ac57600061349d8686613c56565b90506134aa81602061411e565b505b60005b8251811015610a715760008382815181106134cc576134cc614cc3565b602002602001015190506134f86080826affffffffffffffffffffff191661290790919063ffffffff16565b15613574576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613541908a908a908a90600401615106565b600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b505050505b506001016134af565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f090614387565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364157613641614cc3565b602090810291909101015260006136997f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136ae828261415b565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e67565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375157613751614cc3565b602002602001018181525050828160018151811061377157613771614cc3565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137bf91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061382e5761382e614cc3565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138778560200190565b61405f565b600061388a607060106143c4565b9190911b919050565b606060005b60108110156138f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138f857600101613898565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613942614177565b9050306001600160a01b0382160361396057611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ab90899089908990899060040161512f565b602060405180830381865afa1580156139c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff919061515e565b60006139f6614177565b9050306001600160a01b03821603613a1a57613a1586868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a679089908990899089908990600401615177565b600060405180830381600087803b158015613a8157600080fd5b505af1158015613256573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ace57613ace614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6057613b60614cc3565b60209081029190910101526000613bb87f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bfd57613bfd614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6b929190614ee8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbc5750835182115b15613cf9578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151be565b60208401613d0784826143c4565b90506000613d158585614d64565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b1565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8557613d85614cc3565b602090810291909101015260008080613dde7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422c565b60006060836001600160a01b03166000613e0a858989614238565b604051613e1791906151e3565b60006040518083038185875af1925050503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e80848888614238565b604051613e8d91906151e3565b600060405180830381855af49150503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0157613f01614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110613f2d57613f2d614cc3565b60209081029190910101526000613f857f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614007578085038201915061400f565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140d957602083106140895760208304840193506020838161408557614085614f24565b0692505b82156140d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140ca575050611965565b50600194909401939182900391015b5b602082106140fb5780518455600190930192601f19909101906020016140da565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412d83601f6143c4565b61413791906151ff565b61414190846143c4565b90505b8083101561084e5760008355600183019250614144565b600061416683614267565b801561094f575061094f83836142b3565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141bf8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e5576141e5614f24565b04905060405193506020840160208202810160405281855260005b82811015614220578451871c825293870193602090910190600101614200565b50505050509392505050565b6000806116db8561436b565b606083838360405160200161424f93929190615221565b60405160208183030381529060405290509392505050565b6000614293827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b3565b8015610dc557506142ac826001600160e01b03196142b3565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614354575060208210155b80156143605750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143a8576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143ae565b60008083601f8401126143e957600080fd5b50813567ffffffffffffffff81111561440157600080fd5b6020830191508360208260051b850101111561441c57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444c57600080fd5b85359450602086013567ffffffffffffffff81111561446a57600080fd5b614476888289016143d7565b9095509350614489905060408701614423565b949793965091946060013592915050565b60005b838110156144b557818101518382015260200161449d565b50506000910152565b600081518084526144d681602086016020860161449a565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144be565b60008083601f84011261450f57600080fd5b50813567ffffffffffffffff81111561452757600080fd5b60208301915083602082850101111561441c57600080fd5b6000806000806000806080878903121561455857600080fd5b86359550602087013567ffffffffffffffff8082111561457757600080fd5b6145838a838b016143d7565b909750955085915061459760408a01614423565b945060608901359150808211156145ad57600080fd5b506145ba89828a016144fd565b979a9699509497509295939492505050565b600080600080606085870312156145e257600080fd5b84359350602085013567ffffffffffffffff81111561460057600080fd5b61460c878288016143d7565b909450925061461f905060408601614423565b905092959194509250565b60008060008060008060008060a0898b03121561464657600080fd5b88359750602089013567ffffffffffffffff8082111561466557600080fd5b6146718c838d016143d7565b909950975060408b013591508082111561468a57600080fd5b6146968c838d016144fd565b909750955060608b0135945060808b01359150808211156146b657600080fd5b506146c38b828c016144fd565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f257600080fd5b87359650602088013567ffffffffffffffff8082111561471157600080fd5b61471d8b838c016143d7565b909850965086915061473160408b01614423565b955060608a013591508082111561474757600080fd5b506147548a828b016144fd565b989b979a50959894979596608090950135949350505050565b60006020828403121561477f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c5576147c5614786565b604052919050565b600082601f8301126147de57600080fd5b813567ffffffffffffffff8111156147f8576147f8614786565b61480b6020601f19601f8401160161479c565b81815284602083860101111561482057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485057600080fd5b82359150602083013567ffffffffffffffff81111561486e57600080fd5b61487a858286016147cd565b9150509250929050565b6000806000806060858703121561489a57600080fd5b84359350602085013567ffffffffffffffff8111156148b857600080fd5b6148c4878288016143d7565b9598909750949560400135949350505050565b6060815260006148ea60608301866144be565b846020840152828103604084015261097981856144be565b600082601f83011261491357600080fd5b8135602067ffffffffffffffff82111561492f5761492f614786565b8160051b61493e82820161479c565b928352848101820192828101908785111561495857600080fd5b83870192505b848310156143605782358252918301919083019061495e565b600080600080600060a0868803121561498f57600080fd5b85359450602086013567ffffffffffffffff8111156149ad57600080fd5b6149b988828901614902565b9450506149c860408701614423565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f557600080fd5b83359250602084013567ffffffffffffffff811115614a1357600080fd5b614a1f868287016143d7565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5657600080fd5b8335614a6181614a2c565b925060208401359150604084013567ffffffffffffffff811115614a8457600080fd5b614a90868287016147cd565b9150509250925092565b60008060008060808587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada87828801614902565b935050614ae960408601614423565b9396929550929360600135925050565b600080600060608486031215614b0e57600080fd5b83359250602084013567ffffffffffffffff811115614b2c57600080fd5b614b3886828701614902565b925050614b4760408501614423565b90509250925092565b60008060408385031215614b6357600080fd5b8235614b6e81614a2c565b9150602083013567ffffffffffffffff81111561486e57600080fd5b60008060008060008060808789031215614ba357600080fd5b86359550602087013567ffffffffffffffff80821115614bc257600080fd5b614bce8a838b016143d7565b90975095506040890135915065ffffffffffff82168214614bee57600080fd5b909350606088013590808211156145ad57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3557600080fd5b88359750602089013567ffffffffffffffff80821115614c5457600080fd5b614c608c838d016143d7565b9099509750879150614c7460408c01614423565b9650614c8260608c01614c04565b9550614c9060808c01614c04565b945060a08b01359150808211156146b657600080fd5b600060208284031215614cb857600080fd5b813561094f81614a2c565b634e487b7160e01b600052603260045260246000fd5b604081526000614cec60408301856144be565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1a57614d1a6143ae565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144be565b60ff8281168282160390811115610dc557610dc56143ae565b81810381811115610dc557610dc56143ae565b600060208284031215614d8957600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dca57815187529582019590820190600101614dae565b509495945050505050565b606081526000614de86060830186614d99565b65ffffffffffff85166020840152828103604084015261097981856144be565b848152608060208201526000614e216080830186614d99565b65ffffffffffff85166040840152828103606084015261436081856144be565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea281600386016020890161449a565b808401905081600382015284519150614ec282600483016020880161449a565b0160040195945050505050565b8281526040602082015260006107aa60408301846144be565b8281526000602080830184516020860160005b82811015614f1757815184529284019290840190600101614efb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143ae565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144be565b64ffffffffff818116838216019080821115614fb057614fb06143ae565b5092915050565b87815260e060208201526000614fd060e0830189614d99565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500781856144be565b9a9950505050505050505050565b60a08152600061502860a0830188614d99565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611d4e81856144be565b60808152600061506e6080830187614d99565b828103602084015261508081876144be565b9050846040840152828103606084015261436081856144be565b86815260c0602082015260006150b360c0830188614d99565b82810360408401526150c581886144be565b905085606084015282810360808401526150df81866144be565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d99565b83815260606020820152600061511f6060830185614d99565b9050826040830152949350505050565b8481526080602082015260006151486080830186614d99565b60ff949094166040830152506060015292915050565b60006020828403121561517057600080fd5b5051919050565b85815260a06020820152600061519060a0830187614d99565b60ff8616604084015282810360608401526151ab81866144be565b9150508260808301529695505050505050565b6060815260006151d160608301866144be565b60208301949094525060400152919050565b600082516151f581846020870161449a565b9190910192915050565b60008261521c57634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523381846020890161449a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615787620000316000396000610c0801526157876000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063742d6118116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b8063742d6118146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c02565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c32565b61032c565b005b610176610186366004614cae565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614dfb565b61042d565b6101d16101cc366004614e54565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614e9b565b6105f4565b604051601f19360135815260200161015a565b61017661021e366004614ef3565b61076f565b6101d1610231366004614f31565b6107db565b610176610244366004614f7f565b61089d565b610176610257366004614c32565b61095f565b61017661026a366004614fb9565b61099e565b61017661027d366004614fb9565b6109d0565b610176610290366004614fd2565b610a65565b6101766102a336600461500c565b610b1a565b6101766102b6366004614ef3565b610b33565b610193610bf4565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bfe565b6103458261034061041e565b610c62565b61034f8282610cdb565b5050565b61035b610bfe565b600061036689610d06565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d1d565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e31565b6103f48861034061041e565b61041488888888610405888a615092565b61040f8789615092565b610e7c565b5050505050505050565b600061042861128c565b905090565b610435610bfe565b61044761044061041e565b84846112be565b61045082611391565b156104a3576000610460836113ad565b905061048c817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b6104a061049761041e565b848460006114a4565b50505b505050565b60006104b2610bfe565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d1d565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615118565b61051683610e31565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114d1565b905060008184604051602001610562929190615141565b60405160208183030381529060405290508080519060200120925060006105888461155b565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361160b565b6105ea85846116d6565b5050505092915050565b6105fc610bfe565b61737960f01b836001600160f01b031916146106225761737960f01b836104d885610d1d565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761064681610e31565b6106528161034061041e565b61067c837fb5dee12700000000000000000000000000000000000000000000000000000000611449565b600061068785610d06565b6fffffffffffffffffffffffffffffffff1916036106a9578361038885610d1d565b60006106b48461179f565b905080158015906106c55750848114155b15610707576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b6000610712866113ad565b90506001600160a01b0381161561073b5761072c81611824565b61073683826118a3565b610746565b610746866001611941565b6107518686866119e2565b61075b8587611a85565b61076783866001611b10565b505050505050565b610777610bfe565b6107a1827f1873396a00000000000000000000000000000000000000000000000000000000611449565b6107c4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b6107d08361034061041e565b6104a3838383611bbf565b60006107e5610bfe565b60408051616e7360f01b60208201526000602282018190526030820152610827910160405160208183030381529060405261081f90615199565b61034061041e565b5081516020830120600061083a8261155b565b90508015610880576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103bc565b61088b82868561160b565b61089582856116d6565b509392505050565b6108a5610bfe565b6108cf827f6fdd1c8000000000000000000000000000000000000000000000000000000000611449565b61094b6108da61041e565b600084846040516024016108ee91906151bd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c82565b5061034f8282805190602001206001611c93565b610967610bfe565b6109738261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d42565b6109a6610bfe565b6109af81611e55565b6109b881610e31565b6109c48161034061041e565b6109cd81611e86565b50565b6109d8610bfe565b6109e181611e55565b6109ea81611ef1565b6109f3816120e3565b15610a365780610a0282610d1d565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b610a41816001611941565b610a5281610a4d61041e565b612168565b6109cd81610a5e61041e565b6001611b10565b610a6d610bfe565b610a7683611e55565b610a7f82611391565b610ab5576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac18361034061041e565b6000610acc836113ad565b9050610af8817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b610b028484612232565b815115610b14576104a061049761041e565b50505050565b610b22610bfe565b6109cd610b2d61041e565b826122b1565b610b3b610bfe565b61737960f01b836001600160f01b03191614610b615761737960f01b836104d885610d1d565b610b8b827f540fbfa800000000000000000000000000000000000000000000000000000000611449565b610b9483610e31565b610bb7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b610bc38361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612353565b60006104286123f8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c60576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c8f616e7360f01b6dffffffffffffffffffffffffffff60801b851617612402565b6001600160a01b03161461034f57610ca682610d1d565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc9291906151d0565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d42565b6000610d1460706010615211565b9190911b919050565b606081601081901b6000610d3083610d06565b90508271ffffffffffffffffffffffffffffffffffff19831615610d7157610d6c71ffffffffffffffffffffffffffffffffffff1984166114d1565b610da8565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dcf57610dca836114d1565b610e06565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e1893929190615224565b6040516020818303038152906040529350505050919050565b610e3a816120e3565b6109cd5780610e4882610d1d565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b613a3160f11b866001600160f01b03191614801590610eaa5750611bdd60f21b866001600160f01b03191614155b15610f0b57613a3160f11b8687604051602001610ec991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615118565b610f1485612493565b610f1f8460016126da565b610f2a8360006126da565b60e084901c60e885901c0160ff16825114610f8a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fea5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110625760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61106b85612876565b61107484612876565b146110c65761108285612876565b61108b84612876565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110cf856128a8565b6110d8846128a8565b1461112a576110e6856128a8565b6110ef846128a8565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61113686612876565b8110156111d15761116061114a85836128c5565b60c581111561115b5761115b61529a565b6128ed565b6008601b8390030287901c60ff16146111c9576008601b8290030286901c60ff1661118e61114a86846128c5565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60010161112d565b506111db866120e3565b156112355785866040516020016111f491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b611281868686868660405160200161124d91906152b0565b6040516020818303038152906040528660405160200161126d91906152b0565b60405160208183030381529060405261294d565b610767866001611941565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112bb5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106112ff576112ff615332565b602002602001018181525050826001600160a01b031660001b8160018151811061132b5761132b615332565b602002602001018181525050610b147f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161137491815260200190565b60408051601f19818403018152919052630100080160dd1b612a14565b6000811515801561032657506113a682612a29565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106113e6576113e6615332565b6020908102919091010152600061143e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a89565b60601c949350505050565b6114538282612abf565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114b587878787612adb565b91509150816114c7576114c781612cab565b9695505050505050565b606060005b6010811015611527576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611527576001016114d6565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b3576115b3615332565b602090810291909101015260006115537f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a89565b60006116178383612cb3565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061167557611675615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612cf2565b50505050505050565b606060006116e383612ff8565b905060006116f084613008565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061174957611749615332565b60209081029190910101526107677f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106117e4576117e4615332565b602090810291909101015260006115537f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061186657611866615332565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613031565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d8576118d8615332565b602002602001018181525050816001600160a01b031660001b8160018151811061190457611904615332565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613031565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061197757611977615332565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119c591151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a14565b60006119ee83836132fd565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a2d57611a2d615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611ac757611ac7615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161137491815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b4557611b45615332565b602002602001018181525050826001600160a01b031660001b81600181518110611b7157611b71615332565b602002602001018181525050610b147f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119c591151560f81b815260010190565b613a3160f11b836001600160f01b03191614611bef57613a3160f11b8384604051602001610ec991815260200190565b611bf8836120e3565b611c51578283604051602001611c1091815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761332d565b60606000806114b5878787876133d2565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cd457611cd4615332565b6020026020010181815250508281600181518110611cf457611cf4615332565b602002602001018181525050610b147f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119c591151560f81b815260010190565b6000611d4e848461344a565b90506000815167ffffffffffffffff811115611d6c57611d6c614d44565b604051908082528060200260200182016040528015611d95578160200160208202803683370190505b5090506000805b8351811015611e4657846001600160a01b0316611de0858381518110611dc457611dc4615332565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e3e57838181518110611e0057611e00615332565b6020026020010151838381518110611e1a57611e1a615332565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d9c565b508082526107678686846134b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109cd57616e7360f01b816104d883610d1d565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ebc57611ebc615332565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261350c565b6000611efd8260101b90565b90506000611f1f71ffffffffffffffffffffffffffffffffffff1983166114d1565b80519091508015610b1457611f4182611f39600184615348565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611fd2576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611fe0600183615348565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561208d575061204883611f39836001615211565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120db576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611fd5565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061211c5761211c615332565b6020908102919091010152600061215c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a89565b90506115538160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061219e5761219e615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016121fd919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061226857612268615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161137491815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122f2576122f2615332565b602002602001018181525050816001600160a01b031660001b8160018151811061231e5761231e615332565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261350c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238957612389615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123e491906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135a7565b6000610428613658565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061243b5761243b615332565b6020908102919091010152600061143e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a89565b806124ca576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124d5826128a8565b9050600581111561251c576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061252783612876565b905060006125358383615211565b9050601c81111561257c576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156126275760ff601b82900360080287901c1660008190036125d4576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612612576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61261c8184615211565b925050600101612580565b5061263185613697565b811461267d5761264085613697565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107675760ff601b82900360080287901c1680156126d1576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161267f565b801580156126e6575081155b1561270757604051635318beb960e01b8152600060048201526024016103bc565b6000612712836128a8565b9050600581111561273957604051635318beb960e01b8152600481018290526024016103bc565b600061274484612876565b905060006127528383615211565b9050601c81111561277957604051635318beb960e01b8152600481018290526024016103bc565b6000805b838110156127e557600061279461114a89846128c5565b9050806000036127d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127da8184615211565b92505060010161277d565b506127ef86613697565b811461281a576127fe86613697565b604051635318beb960e01b81526004016103bc91815260200190565b825b828110156116cd57600061283361114a89846128c5565b9050801561286d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161281c565b60006008600161288860026020615348565b6128929190615348565b61289c919061535b565b8260ff911c1692915050565b600060086001806128bb60026020615348565b6128889190615348565b6000601b8290036008028360ff911c1660c58111156128e6576128e661529a565b9392505050565b6000808260c58111156129025761290261529a565b60ff169050606181101561291c57601f1660010192915050565b60618360c58111156129305761293061529a565b0361293e5750601492915050565b50600092915050565b50919050565b600061295a8686866136ba565b9050600061296884846136f0565b90506000612976858561370d565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129b0576129b0615332565b6020908102919091010152612a087f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612cf2565b50505050505050505050565b6104a08585612a238487613722565b85613753565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612a8190615199565b909114919050565b6000612ab6612a9886866139bb565b60ff858116601b0360080285901c16612ab18587613722565b613a11565b95945050505050565b6000612aca83613a62565b80156128e657506128e68383613aa3565b600060606000612aea86613b5b565b905060005b8151811015612bbd576000828281518110612b0c57612b0c615332565b60200260200101519050612b386001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612bb4576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612b81908c908c908c90600401615372565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050505b50600101612aef565b50612bca87858888613bfd565b909350915060005b8151811015612ca0576000828281518110612bef57612bef615332565b60200260200101519050612c1b6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612c97576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c64908c908c908c90600401615372565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b505050505b50600101612bd2565b505094509492505050565b805160208201fd5b60608282604051602001612cdb9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d4b57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d3e94939291906153d6565b60405180910390a2610767565b6000612d5687613ccf565b905060005b8151811015612e2f576000828281518110612d7857612d78615332565b60200260200101519050612da46001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612e26576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612df3908c908c908c908c908c908c90600401615415565b600060405180830381600087803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b505050505b50600101612d5b565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e6694939291906153d6565b60405180910390a26000612e7a88886139bb565b90506000602087019050612e92826000895184613d41565b6000612e9d856128a8565b1115612f21576000612eaf8a8a613e00565b878155905060208601915060008060005b612ec9886128a8565b8160ff161015612f1c57612ede8d8d83613e56565b9250612ef98a8260ff166028026038011c64ffffffffff1690565b9150612f088360008488613d41565b612f128286615211565b9450600101612ec0565b505050505b60005b8351811015612a08576000848281518110612f4157612f41615332565b60200260200101519050612f6d6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612fef576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fbc908e908e908e908e908e908e90600401615415565b600060405180830381600087803b158015612fd657600080fd5b505af1158015612fea573d6000803e3d6000fd5b505050505b50600101612f24565b60006103268251603881901b1790565b60608160405160200161301b919061546e565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b0319160361308457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613077919061548a565b60405180910390a2505050565b600061308f84613ccf565b905060005b81518110156131625760008282815181106130b1576130b1615332565b602002602001015190506130dd6040826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15613159576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906131269089908990899060040161549d565b600060405180830381600087803b15801561314057600080fd5b505af1158015613154573d6000803e3d6000fd5b505050505b50600101613094565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613193919061548a565b60405180910390a260006131a785856139bb565b90506132008160006131b886613697565b67ffffffffffffffff8111156131d0576131d0614d44565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b50613ed6565b600061320b846128a8565b111561322c57600061321d8686613e00565b905061322a816020613eec565b505b60005b825181101561076757600083828151811061324c5761324c615332565b602002602001015190506132786080826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156132f4576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132c1908a908a908a9060040161549d565b600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b505050505b5060010161322f565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cdb565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061336357613363615332565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133be91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f29565b60006060836001600160a01b031660006133ed858989613f64565b6040516133fa919061546e565b60006040518083038185875af1925050503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b606091505b509097909650945050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061348457613484615332565b602002602001018181525050600061349e85836000613f7b565b9050612ab66134b08260008451613fb5565b614043565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106134eb576134eb615332565b602002602001018181525050610b148482600061350786614054565b614064565b6000613516613658565b9050306001600160a01b03821603613532576104a3838361409f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061357990869086906004016154c6565b600060405180830381600087803b15801561359357600080fd5b505af11580156116cd573d6000803e3d6000fd5b60006135b1613658565b9050306001600160a01b038216036135d4576135cf85858585613f29565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061361f9088908890889088906004016154df565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613692573391505090565b919050565b600060086136a760026020615348565b6136b1919061535b565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128e6565b60608282604051602001612cdb929190615513565b600080805b8360ff168110156108955761374960ff601b83900360080287901c1683615211565b9150600101613727565b611bdd60f21b846001600160f01b031916036137aa57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161379d93929190615542565b60405180910390a2610b14565b60006137b685856139bb565b905060006137c386613ccf565b905060005b81518110156138985760008282815181106137e5576137e5615332565b602002602001015190506138116004826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561388f576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061385c908b908b908b908b90600401615575565b600060405180830381600087803b15801561387657600080fd5b505af115801561388a573d6000803e3d6000fd5b505050505b506001016137c8565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138cd93929190615542565b60405180910390a26138e8828565ffffffffffff1685613ed6565b60005b81518110156116cd57600082828151811061390857613908615332565b602002602001015190506139346008826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156139b2576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061397f908b908b908b908b90600401615575565b600060405180830381600087803b15801561399957600080fd5b505af11580156139ad573d6000803e3d6000fd5b505050505b506001016138eb565b600082826040516020016139d09291906155ae565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a3757602082048401935060208281613a3357613a336155ea565b0691505b508254600882021b602082900380841115610895576001850154600882021c82179150509392505050565b6000613a8e827f01ffc9a700000000000000000000000000000000000000000000000000000000613aa3565b801561032657506113a6826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b44575060208210155b8015613b505750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b9557613b95615332565b60209081029190910101526000613bcd7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613f7b565b90506115536134b08260008451613fb5565b60008160ff1682613bf08560581c90565b1660ff1614905092915050565b60006060600080613c0d866140b2565b90925090506001600160a01b038216613c2a5785610e4887610d1d565b80613c3957613c39868961416a565b8615613c7d576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c6582614181565b9050613c7a82613c758b84615211565b6141fa565b50505b6000613c898760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cb457613caf888884886133d2565b613cc0565b613cc088888488614279565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d0957613d09615332565b60209081029190910101526000613bcd7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613f7b565b8215613dbb5760208310613d6b57602083048401935060208381613d6757613d676155ea565b0692505b8215613dbb5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dac575050610b14565b50600194909401939182900391015b5b60208210613ddd5780518455600190930192601f1990910190602001613dbc565b8115610b14576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e159291906155ae565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e6b9291906155ae565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613ee78560200190565b613d41565b60006020613efb83601f615211565b613f059190615600565b613f0f9084615211565b90505b808310156104a35760008355600183019250613f12565b6000613f3585856142da565b90506000613f52828560ff166028026038011c64ffffffffff1690565b905061076786868684600088886142ed565b60608383836040516020016136d893929190615622565b6060611553613f8b858585613e56565b6000613fb085613f9b89896142da565b9060ff166028026038011c64ffffffffff1690565b614695565b600081831180613fc55750835182115b15614002578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc93929190615661565b602084016140108482615211565b9050600061401e8585615348565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128e683601560006146b8565b6060816128e68160156000614733565b600061407085856142da565b9050600061408d828560ff166028026038011c64ffffffffff1690565b905061076786868660008588886142ed565b61034f82826140ad85614787565b613031565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106140ec576140ec615332565b6020908102919091010152600080806141457f7462776f726c6400000000000000000053797374656d73000000000000000000857e1502001401000000000000000000000000000000000000000000000000000061480c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6141748282614914565b61034f57610ca682610d1d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141ba576141ba615332565b602090810291909101015260006115537f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061423057614230615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161137491815260200190565b60006060836001600160a01b0316614292848888613f64565b60405161429f919061546e565b600060405180830381855af49150503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b60006128e66142e98484613e00565b5490565b613a3160f11b876001600160f01b0319161461431d57613a3160f11b8788604051602001610ec991815260200190565b6000614338828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836143519190615348565b61435b9190615211565b905080821415801561437d5750816143738688615686565b64ffffffffff1614155b156143cd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561441e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061442b84898461494a565b905060006144388b613ccf565b905060005b815181101561450357600082828151811061445a5761445a615332565b602002602001015190506144866010826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156144fa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144c797969594939291906156ab565b600060405180830381600087803b1580156144e157600080fd5b505af11580156144f5573d6000803e3d6000fd5b505050505b5060010161443d565b5064ffffffffff881660005b8a60ff168160ff16101561454257614536878260ff166028026038011c64ffffffffff1690565b9091019060010161450f565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161457b959493929190615709565b60405180910390a25082841461459c5760006145978c8c613e00565b839055505b60006145a98c8c8c613e56565b90506145bd818a64ffffffffff1689613ed6565b5060005b81518110156146875760008282815181106145de576145de615332565b6020026020010151905061460a6020826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561467e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161464b97969594939291906156ab565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050505b506001016145c1565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261089585858584614a18565b606060006146c68560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816146ec576146ec6155ea565b04905060405193506020840160208202810160405281855260005b82811015614727578451871c825293870193602090910190600101614707565b50505050509392505050565b82516060906000614744858361535b565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614727578051871b83529187019160019190910190602001614766565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016147d657507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148037f746273746f72650000000000000000005461626c65730000000000000000000084614ae4565b60206000613a11565b606060006060600061481d85613697565b905061482a878783614b00565b93506000614837866128a8565b905080156149095761484988886142da565b935066ffffffffffffff841667ffffffffffffffff81111561486d5761486d614d44565b6040519080825280601f01601f191660200182016040528015614897576020820181803683370190505b5092506020830160005b828160ff1610156149065760006148b98b8b84613e56565b905060006148d6888460ff166028026038011c64ffffffffff1690565b90506148e58260008387614a18565b6148ef8185615211565b9350505080806148fe9061575b565b9150506148a1565b50505b505093509350939050565b600061493a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b39565b806128e657506128e68383614b39565b600064ffffffffff82111561498e576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149c057808503820191506149c8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614a9f5760208310614a4257602083048401935060208381614a3e57614a3e6155ea565b0692505b8215614a9f576020839003600081841015614a655750600019600884021c614a6f565b50600019600882021c5b8554600886021b818451168219821617845250818411614a90575050610b14565b50600194909401939182900391015b5b60208210614ac15783548152600190930192601f1990910190602001614aa0565b8115610b14576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139d0565b606081600003614b1f57506040805160208101909152600081526128e6565b6000614b2b85856139bb565b9050612ab681600085614695565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b7257614b72615332565b602002602001018181525050826001600160a01b031660001b81600181518110614b9e57614b9e615332565b60209081029190910101526000614bde7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a89565b9050612ab68160f81c90565b80356001600160e01b03198116811461369257600080fd5b600060208284031215614c1457600080fd5b6128e682614bea565b6001600160a01b03811681146109cd57600080fd5b60008060408385031215614c4557600080fd5b823591506020830135614c5781614c1d565b809150509250929050565b60008083601f840112614c7457600080fd5b50813567ffffffffffffffff811115614c8c57600080fd5b6020830191508360208260051b8501011115614ca757600080fd5b9250929050565b60008060008060008060008060c0898b031215614cca57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614cfe57600080fd5b614d0a8c838d01614c62565b909650945060a08b0135915080821115614d2357600080fd5b50614d308b828c01614c62565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614d8357614d83614d44565b604052919050565b600082601f830112614d9c57600080fd5b813567ffffffffffffffff811115614db657614db6614d44565b614dc96020601f19601f84011601614d5a565b818152846020838601011115614dde57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e1057600080fd5b8335614e1b81614c1d565b925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b614e4a86828701614d8b565b9150509250925092565b60008060408385031215614e6757600080fd5b82359150602083013567ffffffffffffffff811115614e8557600080fd5b614e9185828601614d8b565b9150509250929050565b600080600060608486031215614eb057600080fd5b833592506020840135614ec281614c1d565b915060408401358015158114614ed757600080fd5b809150509250925092565b803560ff8116811461369257600080fd5b600080600060608486031215614f0857600080fd5b833592506020840135614f1a81614c1d565b9150614f2860408501614ee2565b90509250925092565b600080600060608486031215614f4657600080fd5b83359250602084013567ffffffffffffffff811115614f6457600080fd5b614f7086828701614d8b565b925050614f2860408501614bea565b60008060408385031215614f9257600080fd5b8235614f9d81614c1d565b9150602083013567ffffffffffffffff811115614e8557600080fd5b600060208284031215614fcb57600080fd5b5035919050565b600080600060608486031215614fe757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b60006020828403121561501e57600080fd5b81356128e681614c1d565b60005b8381101561504457818101518382015260200161502c565b50506000910152565b60008151808452615065816020860160208601615029565b601f01601f19169290920160200192915050565b828152604060208201526000611553604083018461504d565b600067ffffffffffffffff808411156150ad576150ad614d44565b8360051b60206150bf60208301614d5a565b868152918501916020810190368411156150d857600080fd5b865b8481101561510c578035868111156150f25760008081fd5b6150fe36828b01614d8b565b8452509183019183016150da565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ab6606083018461504d565b60008351615153818460208801615029565b7f5f5f000000000000000000000000000000000000000000000000000000000000908301908152835161518d816002840160208801615029565b01600201949350505050565b805160208083015191908110156129475760001960209190910360031b1b16919050565b6020815260006128e6602083018461504d565b6040815260006151e3604083018561504d565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610326576103266151fb565b6001600160f01b03198416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161526d816003860160208901615029565b80840190508160038201528451915061528d826004830160208801615029565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615325577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261531385835161504d565b945092850192908501906001016152d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115610326576103266151fb565b8082028115828204841417610326576103266151fb565b6001600160a01b0384168152826020820152606060408201526000612ab6606083018461504d565b60008151808452602080850194506020840160005b838110156153cb578151875295820195908201906001016153af565b509495945050505050565b6080815260006153e9608083018761539a565b82810360208401526153fb818761504d565b90508460408401528281036060840152613b50818561504d565b86815260c06020820152600061542e60c083018861539a565b8281036040840152615440818861504d565b9050856060840152828103608084015261545a818661504d565b9150508260a0830152979650505050505050565b60008251615480818460208701615029565b9190910192915050565b6020815260006128e6602083018461539a565b8381526060602082015260006154b6606083018561539a565b9050826040830152949350505050565b828152604060208201526000611553604083018461539a565b8481526080602082015260006154f8608083018661539a565b60ff851660408401528281036060840152613b50818561504d565b60008351615525818460208801615029565b835190830190615539818360208801615029565b01949350505050565b606081526000615555606083018661539a565b65ffffffffffff8516602084015282810360408401526114c7818561504d565b84815260806020820152600061558e608083018661539a565b65ffffffffffff851660408401528281036060840152613b50818561504d565b8281526000602080830184516020860160005b828110156155dd578151845292840192908401906001016155c1565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261561d57634e487b7160e01b600052601260045260246000fd5b500490565b60008451615634818460208901615029565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615674606083018661504d565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156a4576156a46151fb565b5092915050565b87815260e0602082015260006156c460e083018961539a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526156fb818561504d565b9a9950505050505050505050565b60a08152600061571c60a083018861539a565b65ffffffffffff8716602084015264ffffffffff86166040840152846060840152828103608084015261574f818561504d565b98975050505050505050565b600060ff821660ff8103615771576157716151fb565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004d4f38038062004d4f833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614c216200012e60003960008181610701015281816115ac015261163b0152600061069901526000610631015260006105b0015260005050614c216000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a6100853660046143d5565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461442d565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461442d565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b610294610ca1565b61029c610f19565b6102a4610f82565b6102ac610fce565b6102b461101a565b6102bc611066565b6102c46110aa565b6102cc6110f6565b6102d461115a565b6102dc6111be565b6102e4611220565b6102ec611282565b6102f46112ce565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906144de565b600161132a565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906144de565b6103796101f4565b6113d0565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906144de565b6103c16101f4565b60016114ad565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906144de565b61156f565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614bf36022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b600481101561088c576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108849101604051602081830303815290604052610868906144de565b83836004811061087a5761087a614502565b602002015161162c565b600101610806565b506040805160a0810182526033918101828152600092829190614b9760608401398152602001604051806060016040528060318152602001614a66603191399052905060005b600281101561094f576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261094791015b604051602081830303815290604052610935906144de565b83836002811061087a5761087a614502565b6001016108d2565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614af2602891399052905060005b6002811015610a0f576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a07910161091d565b6001016109b8565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e08301528152815160608101835282815260009260208084019291906149b1908301398152602001604051806060016040528060288152602001614a9760289139815260200160405180606001604052806024815260200161498d6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614bca602991398152602001604051806060016040528060258152602001614b1a602591398152602001604051806060016040528060248152602001614a42602491398152602001604051806060016040528060288152602001614a1a602891398152602001604051806060016040528060338152602001614abf6033913981526020016040518060600160405280602981526020016149f16029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614b65603291398152602001604051806060016040528060268152602001614b3f602691399052905060005b600e811015610c90576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610c889101604051602081830303815290604052610c76906144de565b8383600e811061087a5761087a614502565b600101610c14565b5050505050565b60006101fe6116d3565b610cca7f746273746f72650000000000000000005461626c65730000000000000000000061171f565b15610d4857604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d3f9291600401614568565b60405180910390fd5b610d717f746273746f72650000000000000000005265736f75726365496473000000000061171f565b15610da957604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610cfe565b610e507f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610df56117ac565b610dfd611824565b610e05611973565b604051602001610e1591906145db565b604051602081830303815290604052610e2c6119f8565b604051602001610e3c91906145db565b604051602081830303815290604052611bc0565b610ebb7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610e846117ac565b610e8c611c87565b610e94611cc1565b604051602001610ea491906145db565b604051602081830303815290604052610e2c611d38565b610ee67f746273746f72650000000000000000005461626c657300000000000000000000600161132a565b610f117f746273746f72650000000000000000005265736f757263654964730000000000600161132a565b61056c611daf565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000610f656117ac565b610f6d611e11565b610f75611e4b565b610f7d611ec2565b611f39565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fb66117ac565b610fbe61200d565b610fc6611e4b565b610f7d612047565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b6110026120be565b61100a611c87565b61101261213d565b610f7d612207565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b61104e61227e565b6110566117ac565b61105e6122fd565b610f7d6123c7565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b61109a6117ac565b6110a26117ac565b61105e611e4b565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110de61243e565b6110e6611c87565b6110ee612478565b610f7d612542565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e150200140100000000000000000000000000000000000000000000000000006111426117ac565b61114a6125b9565b611152612638565b610f7d6126af565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111a6612779565b6111ae6127b3565b6111b6612832565b610f7d6128a9565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c0100000000000000000000000000000000000000000000000000000000611208612779565b611210612973565b611218612832565b610f7d6129ad565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061126a6117ac565b611272612a24565b61127a612638565b610f7d612a5e565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112b6611e11565b6112be6117ac565b6112c6612ad5565b610f7d612638565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000061131a612b4c565b611322611e11565b61127a612b65565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061136057611360614502565b6020026020010181815250506113cb7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113ae91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612b98565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061140657611406614502565b6020026020010181815250506113cb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001611478919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612b98565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114e2576114e2614502565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061151b5761151b614502565b6020026020010181815250506115697f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113ae91151560f81b815260010190565b50505050565b6113cb61157a6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612bad565b6113cb6116376101f4565b60007f000000000000000000000000000000000000000000000000000000000000000085858680519060200120604051602401611676939291906145ee565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612bad565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061171a573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061175857611758614502565b602090810291909101015260006117987f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612bda565b90506117a48160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106117e6576117e6614502565b602002602001019060c58111156117ff576117ff614639565b908160c581111561181257611812614639565b90525061181e81612c10565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f8160008151811061185f5761185f614502565b602002602001019060c581111561187857611878614639565b908160c581111561188b5761188b614639565b81525050605f816001815181106118a4576118a4614502565b602002602001019060c58111156118bd576118bd614639565b908160c58111156118d0576118d0614639565b81525050605f816002815181106118e9576118e9614502565b602002602001019060c581111561190257611902614639565b908160c581111561191557611915614639565b8152505060c48160038151811061192e5761192e614502565b602002602001019060c581111561194757611947614639565b908160c581111561195a5761195a614639565b8152505060c4816004815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161198a5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a105790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a7057611a70614502565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ac457611ac4614502565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b1857611b18614502565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b6c57611b6c614502565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119ea576119ea614502565b6000611bcd868686612dcb565b90506000611bdb8484612e01565b90506000611be98585612e21565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c2357611c23614502565b6020908102919091010152611c7b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612e4d565b50505050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cd85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611df96117ac565b611e01612a24565b611e09611973565b610f7d61318e565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e625790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed95790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6000611f436116d3565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f7557611f70878787878787613205565b612004565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611fd1908a908a908a908a908a908a9060040161464f565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161205e5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106120f8576120f8614502565b602002602001019060c581111561211157612111614639565b908160c581111561212457612124614639565b81525050605f816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816121535790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106121b3576121b3614502565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161221e5790505090506040518060400160405280600b81526020017f6973496e7374616c6c6564000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106122b8576122b8614502565b602002602001019060c58111156122d1576122d1614639565b908160c58111156122e4576122e4614639565b815250506061816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816123135790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061237357612373614502565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816123de5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119ea576119ea614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106122b8576122b8614502565b6040805160028082526060828101909352816020015b606081526020019060019003908161248e5790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106124ee576124ee614502565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816125595790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106125f3576125f3614502565b602002602001019060c581111561260c5761260c614639565b908160c581111561261f5761261f614639565b815250506060816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161264f5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816126c55790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061272557612725614502565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106117e6576117e6614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106127ed576127ed614502565b602002602001019060c581111561280657612806614639565b908160c581111561281957612819614639565b815250506043816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816128495790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816128bf5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061291f5761291f614502565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816129c45790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a755790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612aec5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160008082526020820190925261181e81612c10565b60408051600080825260208201909252606091612b92565b6060815260200190600190039081612b7d5790505b50905090565b610c908585612ba7848761363c565b85613675565b6060600080612bbe87878787613910565b9150915081612bd057612bd081613991565b9695505050505050565b6000612c07612be98686613999565b60ff858116601b0360080285901c16612c02858761363c565b6139ef565b95945050505050565b6000601c82511115612c3a578151604051635318beb960e01b8152600401610d3f91815260200190565b60008080805b8551811015612d15576000612c7e878381518110612c6057612c60614502565b602002602001015160c5811115612c7957612c79614639565b613a40565b905080600003612c9357600190920191612ccb565b8215612ccb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612cec57612cec614502565b602002602001015160c5811115612d0557612d05614639565b901b949094179350600101612c40565b506005811115612d3b57604051635318beb960e01b815260048101829052602401610d3f565b84518190036008612d4e600260206146af565b612d5891906146c2565b83901b939093179260086001612d70600260206146af565b612d7a91906146af565b612d8491906146c2565b81901b93909317926008600180612d9d600260206146af565b612da791906146af565b612db191906146af565b612dbb91906146c2565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612e369291906146d9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612ed957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612ecc9493929190614744565b60405180910390a2613186565b6000612ee487613aa0565b905060005b8151811015612fbd576000828281518110612f0657612f06614502565b60200260200101519050612f326001826affffffffffffffffffffff1916613b2990919063ffffffff16565b15612fb4576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612f81908c908c908c908c908c908c9060040161478e565b600060405180830381600087803b158015612f9b57600080fd5b505af1158015612faf573d6000803e3d6000fd5b505050505b50600101612ee9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612ff49493929190614744565b60405180910390a260006130088888613999565b90506000602087019050613020826000895184613b47565b600061302b85613c06565b11156130af57600061303d8a8a613c43565b878155905060208601915060008060005b61305788613c06565b8160ff1610156130aa5761306c8d8d83613c99565b92506130878a8260ff166028026038011c64ffffffffff1690565b91506130968360008488613b47565b6130a082866147e7565b945060010161304e565b505050505b60005b8351811015611c7b5760008482815181106130cf576130cf614502565b602002602001015190506130fb6002826affffffffffffffffffffff1916613b2990919063ffffffff16565b1561317d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061314a908e908e908e908e908e908e9060040161478e565b600060405180830381600087803b15801561316457600080fd5b505af1158015613178573d6000803e3d6000fd5b505050505b506001016130b2565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816131a55790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061329957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15613315577f746200000000000000000000000000000000000000000000000000000000000086876040516020016132d391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d3f9392916004016147fa565b61331e85613d19565b613329846001613f60565b613334836000613f60565b60e084901c60e885901c0160ff168251146133945760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff168151146133f45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461346c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b613475856140fc565b61347e846140fc565b146134d05761348c856140fc565b613495846140fc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b6134d985613c06565b6134e284613c06565b14613534576134f085613c06565b6134f984613c06565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60005b613540866140fc565b8110156135d657613565613554858361410e565b60c5811115612c7957612c79614639565b6008601b8390030287901c60ff16146135ce576008601b8290030286901c60ff16613593613554868461410e565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b600101613537565b506135e08661171f565b156135f9578586604051602001610cfe91815260200190565b613631868686868660405160200161361191906145db565b60405160208183030381529060405286604051602001610e3c91906145db565b61318686600161132a565b600080805b8360ff1681101561366d5761366360ff601b83900360080287901c16836147e7565b9150600101613641565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036136ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516136f29392919061483b565b60405180910390a2611569565b600061370b8585613999565b9050600061371886613aa0565b905060005b81518110156137ed57600082828151811061373a5761373a614502565b602002602001015190506137666004826affffffffffffffffffffff1916613b2990919063ffffffff16565b156137e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906137b1908b908b908b908b9060040161486e565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050505b5060010161371d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138229392919061483b565b60405180910390a261383d828565ffffffffffff168561412f565b60005b815181101561200457600082828151811061385d5761385d614502565b602002602001015190506138896008826affffffffffffffffffffff1916613b2990919063ffffffff16565b15613907576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906138d4908b908b908b908b9060040161486e565b600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b505050505b50600101613840565b600060608373ffffffffffffffffffffffffffffffffffffffff16613936848888614145565b60405161394391906148a7565b600060405180830381855af49150503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016139ae9291906148c3565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a1557602082048401935060208281613a1157613a116148ff565b0691505b508254600882021b60208290038084111561366d576001850154600882021c82179150509392505050565b6000808260c5811115613a5557613a55614639565b60ff1690506061811015613a6f57601f1660010192915050565b60618360c5811115613a8357613a83614639565b03613a915750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ada57613ada614502565b60209081029190910101526000613b127f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361415c565b90506117a4613b248260008451614196565b614224565b60008160ff1682613b3a8560581c90565b1660ff1614905092915050565b8215613bc15760208310613b7157602083048401935060208381613b6d57613b6d6148ff565b0692505b8215613bc15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613bb2575050611569565b50600194909401939182900391015b5b60208210613be35780518455600190930192601f1990910190602001613bc2565b8115611569576000600019600884021c8554835182191691161785555050505050565b60006008600180613c19600260206146af565b613c2391906146af565b613c2d91906146af565b613c3791906146c2565b8260ff911c1692915050565b60008282604051602001613c589291906148c3565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613cae9291906148c3565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613d50576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d5b82613c06565b90506005811115613da2576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d3f565b6000613dad836140fc565b90506000613dbb83836147e7565b9050601c811115613e02576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d3f565b6000805b83811015613ead5760ff601b82900360080287901c166000819003613e5a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b6020811115613e98576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b613ea281846147e7565b925050600101613e06565b50613eb785614235565b8114613f0357613ec685614235565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d3f565b825b601c8110156131865760ff601b82900360080287901c168015613f57576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b50600101613f05565b80158015613f6c575081155b15613f8d57604051635318beb960e01b815260006004820152602401610d3f565b6000613f9883613c06565b90506005811115613fbf57604051635318beb960e01b815260048101829052602401610d3f565b6000613fca846140fc565b90506000613fd883836147e7565b9050601c811115613fff57604051635318beb960e01b815260048101829052602401610d3f565b6000805b8381101561406b57600061401a613554898461410e565b905080600003614056576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61406081846147e7565b925050600101614003565b5061407586614235565b81146140a05761408486614235565b604051635318beb960e01b8152600401610d3f91815260200190565b825b828110156120045760006140b9613554898461410e565b905080156140f3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016140a2565b600060086001613c23600260206146af565b6000601b8290036008028360ff911c1660c5811115612e1a57612e1a614639565b6113cb838383516141408560200190565b613b47565b6060838383604051602001612de993929190614915565b60606117a461416c858585613c99565b60006141918561417c8989614258565b9060ff166028026038011c64ffffffffff1690565b61426b565b6000818311806141a65750835182115b156141e3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d3f93929190614967565b602084016141f184826147e7565b905060006141ff85856146af565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612e1a836015600061428e565b60006008614245600260206146af565b61424f91906146c2565b9190911c919050565b6000612e1a6142678484613c43565b5490565b60405160208101601f19603f848401011660405282825261366d85858584614309565b6060600061429c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816142c2576142c26148ff565b04905060405193506020840160208202810160405281855260005b828110156142fd578451871c8252938701936020909101906001016142dd565b50505050509392505050565b821561439057602083106143335760208304840193506020838161432f5761432f6148ff565b0692505b82156143905760208390036000818410156143565750600019600884021c614360565b50600019600882021c5b8554600886021b818451168219821617845250818411614381575050611569565b50600194909401939182900391015b5b602082106143b25783548152600190930192601f1990910190602001614391565b8115611569576000600019600884021c8251865482191691161782525050505050565b6000602082840312156143e757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561443f57600080fd5b813567ffffffffffffffff8082111561445757600080fd5b818401915084601f83011261446b57600080fd5b81358181111561447d5761447d614417565b604051601f8201601f19908116603f011681019083821181831017156144a5576144a5614417565b816040528281528760208487010111156144be57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613a9a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b8281526040602082015260006117a4604083018461453c565b60008282518085526020808601955060208260051b8401016020860160005b848110156145ce57601f198684030189526145bc83835161453c565b988401989250908301906001016145a0565b5090979650505050505050565b602081526000612e1a6020830184614581565b838152606060208201526000614607606083018561453c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061467a60c0830185614581565b82810360a084015261468c8185614581565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee614699565b80820281158282048414176101ee576101ee614699565b600083516146eb818460208801614518565b8351908301906146ff818360208801614518565b01949350505050565b60008151808452602080850194506020840160005b838110156147395781518752958201959082019060010161471d565b509495945050505050565b6080815260006147576080830187614708565b8281036020840152614769818761453c565b90508460408401528281036060840152614783818561453c565b979650505050505050565b86815260c0602082015260006147a760c0830188614708565b82810360408401526147b9818861453c565b905085606084015282810360808401526147d3818661453c565b9150508260a0830152979650505050505050565b808201808211156101ee576101ee614699565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612c07606083018461453c565b60608152600061484e6060830186614708565b65ffffffffffff851660208401528281036040840152612bd0818561453c565b8481526080602082015260006148876080830186614708565b65ffffffffffff851660408401528281036060840152614783818561453c565b600082516148b9818460208701614518565b9190910192915050565b8281526000602080830184516020860160005b828110156148f2578151845292840192908401906001016148d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614927818460208901614518565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b60608152600061497a606083018661453c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:203:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:320;;;:::i;:::-;;2170:134:112;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;5071:1492:203:-;;;:::i;2787:146:112:-;;;:::i;6567:861:203:-;;;:::i;1875:141:112:-;;;:::i;1819:584:106:-;;;:::i;:::-;;;4024:14:207;;4017:22;3999:41;;3987:2;3972:18;1819:584:106;3859:187:207;3475:1592:203;;;:::i;2240:1231::-;;;:::i;2022:142:112:-;;;:::i;1572:26:106:-;;;;;;;;;1916:320:203;1954:13;:11;:13::i;:::-;1946:5;:21;;;;-1:-1:-1;;;;;1946:21:203;;;;;;;;;1997:31;;1973:23;;1997:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2030:12:203;;;2040:1;2030:12;;;;;;;;;1973:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:22;2104:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2131:5:203;;2155:8;;2079:46;;-1:-1:-1;;;;;;2131:5:203;;:23;;2155:25;;578:36:59;2820:46;816:18:98;2819:74:59;;2708:191;2155:25:203;2131:50;;;;;;;;;;;;;4796:25:207;;4784:2;4769:18;;4619:208;2131:50:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2187:5:203;;2208:8;;2187:44;;;;;;;;5084:25:207;;;;-1:-1:-1;;;;;5145:55:207;;;5125:18;;;5118:83;2187:5:203;5217:18:207;;;5210:50;2187:5:203;;;;-1:-1:-1;2187:20:203;;-1:-1:-1;5057:18:207;;2187:44:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:296;1916:320::o;2170:134:112:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:112;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:112;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:112;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5071:1492:203;5199:10;;;;;5207:1;5199:10;;;4796:25:207;5150:4:203;;5199:7;;;;4769:18:207;;5199:10:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5266:9:203;;5257:19;;-1:-1:-1;;;5257:19:203;;-1:-1:-1;;;;;5266:9:203;;;5257:19;;;6049:74:207;5257:8:203;;-1:-1:-1;5257:8:203;;-1:-1:-1;6022:18:207;;5257:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5282:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;5337:5;;5369:9;;;719:71:185;;;-1:-1:-1;;;719:71:185;;;6317:92:207;5337:5:203;6425:11:207;;;6418:100;;;;769:20:185;6534:12:207;;;6527:101;-1:-1:-1;;;;;5337:5:203;;;;:24;;5369:9;;;6644:12:207;719:71:185;;;;;;;;;;;;711:80;;;:::i;:::-;5473:9:203;;5414:84;;-1:-1:-1;;;;;5473:9:203;;;5414:84;;;7203:74:207;7293:18;;;7286:34;;;7176:18;;5414:84:203;;;-1:-1:-1;;5414:84:203;;;;;;;;;;;;;;-1:-1:-1;;;;;5414:84:203;;;;;5337:167;;5414:84;5337:167;;;;;;;;;;5414:84;5337:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:14;:12;:14::i;:::-;5607:9;;5598:19;;-1:-1:-1;;;5598:19:203;;-1:-1:-1;;;;;5607:9:203;;;5598:19;;;6049:74:207;5598:8:203;;;;6022:18:207;;5598:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;5713:5;;5728:9;;5739:8;;;5749:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5749:45:203;-1:-1:-1;;;5749:45:203;;;5713:82;;-1:-1:-1;;;5713:82:203;;5687:23;;-1:-1:-1;;;;;5713:5:203;;;;:14;;:82;;5728:9;;;;;5739:8;;5749:45;;5713:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5713:82:203;;;;;;;;;;;;:::i;:::-;5687:108;;5801:14;:12;:14::i;:::-;5821:23;5858:10;5847:33;;;;;;;;;;;;:::i;:::-;5979:9;;5821:59;;-1:-1:-1;5953:36:203;;5821:59;;-1:-1:-1;;;;;5979:9:203;5953:8;:36::i;:::-;6081:21;;;;;;;;4796:25:207;;;6081:7:203;;;;4769:18:207;;6081:21:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6117:9:203;;6108:19;;-1:-1:-1;;;6108:19:203;;-1:-1:-1;;;;;6117:9:203;;;6108:19;;;6049:74:207;6108:8:203;;-1:-1:-1;6108:8:203;;-1:-1:-1;6022:18:207;;6108:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:5:203;;6148:9;;6159:8;;;6169:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6169:45:203;-1:-1:-1;;;6169:45:203;;;6133:82;;-1:-1:-1;;;6133:82:203;;-1:-1:-1;;;;;6133:5:203;;;;-1:-1:-1;6133:14:203;;-1:-1:-1;6133:82:203;;6148:9;;;;;6159:8;;6169:45;;6133:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:82:203;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6305:7:203;;6313:16;:12;6328:1;6313:16;:::i;:::-;6305:25;;;;;;;;;;;;;4796::207;;4784:2;4769:18;;4619:208;6305:25:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6345:9:203;;6336:19;;-1:-1:-1;;;6336:19:203;;-1:-1:-1;;;;;6345:9:203;;;6336:19;;;6049:74:207;6336:8:203;;-1:-1:-1;6336:8:203;;-1:-1:-1;6022:18:207;;6336:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6448:9:203;;6459;;6377:92;;;-1:-1:-1;;;;;6448:9:203;;;6377:92;;;10091:34:207;6459:9:203;;;;10141:18:207;;;;10134:43;;;;6377:92:203;;;;;;;;;;10003:18:207;;;;6377:92:203;;;;;;;-1:-1:-1;;;;;6377:92:203;6400:46;6377:92;;;6361:109;;;;:15;;-1:-1:-1;6361:15:203;;-1:-1:-1;6361:109:203;;6377:92;6361:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:5:203;;6491:9;;6502:8;;;6512:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6512:45:203;-1:-1:-1;;;6512:45:203;;;6476:82;;-1:-1:-1;;;6476:82:203;;-1:-1:-1;;;;;6476:5:203;;;;-1:-1:-1;6476:14:203;;-1:-1:-1;6476:82:203;;6491:9;;;;;6502:8;;6512:45;;6476:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:82:203;;;;;;;;;;;;:::i;:::-;;5121:1442;;;5071:1492::o;2787:146:112:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:861:203;6706:32;6741:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6706:47;;6759:32;6794:122;-1:-1:-1;;;6794:122:203;;:25;:122::i;:::-;6922:5;;:76;;;;;;;;5084:25:207;;;-1:-1:-1;;;;;5145:55:207;;;5125:18;;;5118:83;6922:5:203;5217:18:207;;;5210:50;6759:157:203;;-1:-1:-1;6922:5:203;;;:20;;5057:18:207;;6922:76:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7121:9:203;;7112:19;;-1:-1:-1;;;7112:19:203;;-1:-1:-1;;;;;7121:9:203;;;7112:19;;;6049:74:207;7112:8:203;;-1:-1:-1;7112:8:203;;-1:-1:-1;6022:18:207;;7112:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7160:179:203;;;-1:-1:-1;;;;;11031:55:207;;7160:179:203;;;11013:74:207;7295:36:203;11103:18:207;;;;11096:107;;;;7160:179:203;;;;;;;;;;10986:18:207;;;;7160:179:203;;;;;;;-1:-1:-1;;;;;7160:179:203;7192:49;7160:179;;;7137:208;;;;;:15;;-1:-1:-1;7137:15:203;;-1:-1:-1;7137:208:203;;7160:179;7137:208;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7351:5:203;;7376:9;;7410:12;;;7351:5;7410:12;;;;;;;;;-1:-1:-1;;;;;7351:5:203;;;;-1:-1:-1;7351:24:203;;-1:-1:-1;7376:9:203;;;;;7387:21;;7410:12;;;;;;;;;;-1:-1:-1;7410:12:203;7351:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6635:793;;6567:861::o;1875:141:112:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:106;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:106;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7203:74:207;;;2221:17:106;7293:18:207;;;7286:34;2196:43:106;;;;;;;;;7176:18:207;;;2196:43:106;;;-1:-1:-1;;1671:64:106;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:106;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:106:o;3475:1592:203:-;3628:9;;3619:19;;-1:-1:-1;;;3619:19:203;;-1:-1:-1;;;;;3628:9:203;;;3619:19;;;6049:74:207;3619:8:203;;;;6022:18:207;;3619:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3644:51;;;;;;;;;;;;;;;;;;:14;:51::i;:::-;3701:5;;3733:9;;;546:73:185;;;-1:-1:-1;;;546:73:185;;;6317:92:207;3701:5:203;6425:11:207;;;6418:100;;;;596:22:185;6534:12:207;;;6527:101;-1:-1:-1;;;;;3701:5:203;;;;:24;;3733:9;;;6644:12:207;546:73:185;;;;;;;;;;;;538:82;;;:::i;:::-;3841:9:203;;3852:8;;3780:85;;-1:-1:-1;;;;;3841:9:203;;;3780:85;;;12766:74:207;12856:18;;;12849:34;3862:1:203;12899:18:207;;;12892:34;12739:18;;3780:85:203;;;-1:-1:-1;;3780:85:203;;;;;;;;;;;;;;-1:-1:-1;;;;;3780:85:203;;;;;3701:170;;3780:85;3701:170;;;;;;;;;;3780:85;3701:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:14;:12;:14::i;:::-;3974:9;;3965:19;;-1:-1:-1;;;3965:19:203;;-1:-1:-1;;;;;3974:9:203;;;3965:19;;;6049:74:207;3965:8:203;;;;6022:18:207;;3965:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3990:60;;;;;;;;;;;;;;;;;;:14;:60::i;:::-;4082:5;;4097:9;;4108:8;;;4118:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4118:45:203;-1:-1:-1;;;4118:45:203;;;4082:82;;-1:-1:-1;;;4082:82:203;;4056:23;;-1:-1:-1;;;;;4082:5:203;;;;:14;;:82;;4097:9;;;;;4108:8;;4118:45;;4082:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4082:82:203;;;;;;;;;;;;:::i;:::-;4056:108;;4170:14;:12;:14::i;:::-;4190:23;4227:10;4216:33;;;;;;;;;;;;:::i;:::-;4348:9;;4190:59;;-1:-1:-1;4322:36:203;;4190:59;;-1:-1:-1;;;;;4348:9:203;4322:8;:36::i;:::-;4453:9;;4444:19;;-1:-1:-1;;;4444:19:203;;-1:-1:-1;;;;;4453:9:203;;;4444:19;;;6049:74:207;4444:8:203;;;;6022:18:207;;4444:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:5:203;;4497:9;;4508:8;;4518:50;;4482:5;4518:50;;;4796:25:207;-1:-1:-1;;;;;4482:5:203;;;;-1:-1:-1;4482:14:203;;-1:-1:-1;4497:9:203;;;;;4769:18:207;;4518:50:203;;;-1:-1:-1;;4518:50:203;;;;;;;;;;;;;;-1:-1:-1;;;;;4518:50:203;;;;;4482:87;;4518:50;4482:87;;;;;;;;;;4518:50;4482:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:87:203;;;;;;;;;;;;:::i;:::-;4469:100;;4575:43;4632:10;4621:47;;;;;;;;;;;;:::i;:::-;4750:21;;4773:9;;4575:93;;-1:-1:-1;4741:42:203;;-1:-1:-1;;;;;4773:9:203;4741:8;:42::i;:::-;4849:9;;4840:19;;-1:-1:-1;;;4840:19:203;;-1:-1:-1;;;;;4849:9:203;;;4840:19;;;6049:74:207;4840:8:203;;;;6022:18:207;;4840:19:203;5903:226:207;2240:1231:203;2394:9;;2385:19;;-1:-1:-1;;;2385:19:203;;-1:-1:-1;;;;;2394:9:203;;;2385:19;;;6049:74:207;2385:8:203;;;;6022:18:207;;2385:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2410:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;2465:5;;2497:9;;;371:71:185;;;-1:-1:-1;;;371:71:185;;;6317:92:207;2465:5:203;6425:11:207;;;6418:100;;;;421:20:185;6534:12:207;;;6527:101;-1:-1:-1;;;;;2465:5:203;;;;:24;;2497:9;;;6644:12:207;371:71:185;;;;;;;;;;;;363:80;;;:::i;:::-;2618:9:203;;2629:8;;;2639:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2639:45:203;-1:-1:-1;;;2639:45:203;;;2542:154;;;;-1:-1:-1;;;;;2618:9:203;;;;2542:154;;:::i;:::-;;;;-1:-1:-1;;2542:154:203;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:154:203;;;;;2465:237;;2542:154;2465:237;;;;;;;;;;2542:154;2465:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:14;:12;:14::i;:::-;2805:9;;2796:19;;-1:-1:-1;;;2796:19:203;;-1:-1:-1;;;;;2805:9:203;;;2796:19;;;6049:74:207;2796:8:203;;;;6022:18:207;;2796:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;2911:5;;2926:9;;2937:8;;;2947:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:45:203;-1:-1:-1;;;2947:45:203;;;2911:82;;-1:-1:-1;;;2911:82:203;;2885:23;;-1:-1:-1;;;;;2911:5:203;;;;:14;;:82;;2926:9;;;;;2937:8;;2947:45;;2911:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2911:82:203;;;;;;;;;;;;:::i;:::-;2885:108;;2999:14;:12;:14::i;:::-;3019:23;3056:10;3045:33;;;;;;;;;;;;:::i;:::-;3177:9;;3019:59;;-1:-1:-1;3151:36:203;;3019:59;;-1:-1:-1;;;;;3177:9:203;3151:8;:36::i;:::-;3253:9;;3244:19;;-1:-1:-1;;;3244:19:203;;-1:-1:-1;;;;;3253:9:203;;;3244:19;;;6049:74:207;3244:8:203;;;;6022:18:207;;3244:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3356:9:203;;3367;;3285:92;;;-1:-1:-1;;;;;3356:9:203;;;3285:92;;;10091:34:207;3367:9:203;;;;10141:18:207;;;;10134:43;;;;3285:92:203;;;;;;;;;;10003:18:207;;;;3285:92:203;;;;;;;-1:-1:-1;;;;;3285:92:203;3308:46;3285:92;;;3269:109;;;;:15;;-1:-1:-1;3269:15:203;;-1:-1:-1;3269:109:203;;3285:92;3269:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:5:203;;3399:9;;3410:8;;;3420:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3420:45:203;-1:-1:-1;;;3420:45:203;;;3384:82;;-1:-1:-1;;;3384:82:203;;-1:-1:-1;;;;;3384:5:203;;;;-1:-1:-1;3384:14:203;;-1:-1:-1;3384:82:203;;3399:9;;;;;3410:8;;3420:45;;3384:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:82:203;;;;;;;;;;;;:::i;:::-;;2290:1181;;2240:1231::o;2022:142:112:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:112;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;232:137:105:-;264:16;313:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;286:40;;330:5;-1:-1:-1;;;;;330:16:105;;347:18;:16;:18::i;:::-;330:36;;;;;;;;;;-1:-1:-1;;;;;6067:55:207;;;330:36:105;;;6049:74:207;6022:18;;330:36:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:137;:::o;330:580:0:-;394:39;;;;;;;;;14698:21:207;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:107;14869:20:207;;;14862:52;394:8:0;;;;14834:19:207;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:107;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:107;;883:22:0;;;;;;;309:37:107;883:20:0;:22;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;14698:21:207;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:107;14869:20:207;;;14862:52;953:23:0;;-1:-1:-1;987:8:0;;;;14834:19:207;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;20307:2:207;1214:49:0;;;20289:21:207;20346:2;20326:18;;;20319:30;20385:27;20365:18;;;20358:55;20430:18;;1214:49:0;20105:349:207;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;3622:277:106:-;3690:1;-1:-1:-1;;;;;3685:6:106;:1;-1:-1:-1;;;;;3685:6:106;;3681:212;;3712:44;;;;;22422:2:207;22404:21;;;22461:2;22441:18;;;22434:30;22500:34;22495:2;22480:18;;22473:62;22571:7;22566:2;22551:18;;22544:35;22611:3;22596:19;;22220:401;3712:44:106;;;;;;;;3775:34;;;22838:21:207;;;22895:2;22875:18;;;22868:30;22934:12;22929:2;22914:18;;22907:40;-1:-1:-1;;;;;23021:55:207;;23014:4;22999:20;;22992:85;3775:34:106;;;;;;;22979:3:207;3775:34:106;;;3828;;;23300:21:207;;;23357:2;23337:18;;;23330:30;23396:12;23391:2;23376:18;;23369:40;-1:-1:-1;;;;;23483:55:207;;23476:4;23461:20;;23454:85;3828:34:106;;;;;;;23441:3:207;3828:34:106;;;3876:6;:4;:6::i;:::-;3622:277;;:::o;980:257:59:-;1067:10;1196:26;438:6;385:5:16;1196:26:59;:::i;:::-;1123:15;;;1142:31;385:5:16;1142:31:59;;;;1123:51;1178:13;;;:45;;;1123:101;;-1:-1:-1;980:257:59;;;;;:::o;506:219:104:-;543:10;592:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;628:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;663:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;692:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;570:152;;;;;:::i;:::-;-1:-1:-1;;;;;23976:15:207;;;23958:34;;24028:15;;;24023:2;24008:18;;24001:43;24080:15;;;24075:2;24060:18;;24053:43;24132:15;;;24127:2;24112:18;;24105:43;23884:3;23869:19;570:152:104;;;;;;;;;;;;;;;;;;;;;;;559:163;;506:219;:::o;1754:155:0:-;1818:86;317:28:107;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;4796:25:207;;;4784:2;4769:18;;4619:208;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;:::-;1754:155;:::o;2409:432:106:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;12766:74:207;;;2677:17:106;12856:18:207;;;12849:34;;;;2712:4:106;12899:18:207;;;12892:34;2489:11:106;;1671:64;2586:43;;12739:18:207;;2652:67:106;;;-1:-1:-1;;2652:67:106;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:106;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:106;2820:7;:14;;;;;;;;2409:432::o;5630:121:120:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:120;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:120;;;;;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:207:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:207;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:207;;14:681;-1:-1:-1;;;;;;14:681:207:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;-1:-1:-1;;1384:95:207;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:207;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:207;;;;2283:5;-1:-1:-1;;;2311:15:207;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:207;;700:1697;-1:-1:-1;;;;;;;;;700:1697:207:o;2402:250::-;2487:1;2497:113;2511:6;2508:1;2505:13;2497:113;;;2587:11;;;2581:18;2568:11;;;2561:39;2533:2;2526:10;2497:113;;;-1:-1:-1;;2644:1:207;2626:16;;2619:27;2402:250::o;2657:330::-;2699:3;2737:5;2731:12;2764:6;2759:3;2752:19;2780:76;2849:6;2842:4;2837:3;2833:14;2826:4;2819:5;2815:16;2780:76;:::i;:::-;2901:2;2889:15;-1:-1:-1;;2885:88:207;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:207:o;2992:862::-;3154:4;3183:2;3223;3212:9;3208:18;3253:2;3242:9;3235:21;3276:6;3311;3305:13;3342:6;3334;3327:22;3380:2;3369:9;3365:18;3358:25;;3442:2;3432:6;3429:1;3425:14;3414:9;3410:30;3406:39;3392:53;;3480:2;3472:6;3468:15;3501:1;3511:314;3525:6;3522:1;3519:13;3511:314;;;-1:-1:-1;;3602:9:207;3594:6;3590:22;3586:95;3581:3;3574:108;3705:40;3738:6;3729;3723:13;3705:40;:::i;:::-;3695:50;-1:-1:-1;3803:12:207;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:207;;2992:862;-1:-1:-1;;;;;;;2992:862:207:o;4051:184::-;4103:77;4100:1;4093:88;4200:4;4197:1;4190:15;4224:4;4221:1;4214:15;4240:374;-1:-1:-1;;;;;4455:6:207;4451:55;4440:9;4433:74;4543:2;4538;4527:9;4523:18;4516:30;4414:4;4563:45;4604:2;4593:9;4589:18;4581:6;4563:45;:::i;:::-;4555:53;4240:374;-1:-1:-1;;;;4240:374:207:o;5271:437::-;5350:1;5346:12;;;;5393;;;5414:61;;5468:4;5460:6;5456:17;5446:27;;5414:61;5521:2;5513:6;5510:14;5490:18;5487:38;5484:218;;5558:77;5555:1;5548:88;5659:4;5656:1;5649:15;5687:4;5684:1;5677:15;5484:218;;5271:437;;;:::o;6667:357::-;6785:12;;6832:4;6821:16;;;6815:23;;6785:12;6850:16;;6847:171;;;-1:-1:-1;;6924:4:207;6920:17;;;;6917:1;6913:25;6909:98;6898:110;;6667:357;-1:-1:-1;6667:357:207:o;7331:440::-;-1:-1:-1;;;;;7569:6:207;7565:55;7554:9;7547:74;7657:6;7652:2;7641:9;7637:18;7630:34;7700:2;7695;7684:9;7680:18;7673:30;7528:4;7720:45;7761:2;7750:9;7746:18;7738:6;7720:45;:::i;:::-;7712:53;7331:440;-1:-1:-1;;;;;7331:440:207:o;7776:673::-;7851:5;7881:18;7922:2;7914:6;7911:14;7908:40;;;7928:18;;:::i;:::-;8062:2;8056:9;8128:2;8116:15;;-1:-1:-1;;8112:24:207;;;8138:2;8108:33;8104:42;8092:55;;;8162:18;;;8182:22;;;8159:46;8156:72;;;8208:18;;:::i;:::-;8248:10;8244:2;8237:22;8277:6;8268:15;;8307:6;8299;8292:22;8347:3;8338:6;8333:3;8329:16;8326:25;8323:45;;;8364:1;8361;8354:12;8323:45;8377:66;8436:6;8429:4;8421:6;8417:17;8412:3;8377:66;:::i;:::-;;;;7776:673;;;;;:::o;8454:457::-;8533:6;8586:2;8574:9;8565:7;8561:23;8557:32;8554:52;;;8602:1;8599;8592:12;8554:52;8635:9;8629:16;8668:18;8660:6;8657:30;8654:50;;;8700:1;8697;8690:12;8654:50;8723:22;;8776:4;8768:13;;8764:27;-1:-1:-1;8754:55:207;;8805:1;8802;8795:12;8754:55;8828:77;8897:7;8892:2;8886:9;8881:2;8877;8873:11;8828:77;:::i;8916:162::-;-1:-1:-1;;;;;9003:5:207;8999:54;8992:5;8989:65;8979:93;;9068:1;9065;9058:12;9083:267;9161:6;9214:2;9202:9;9193:7;9189:23;9185:32;9182:52;;;9230:1;9227;9220:12;9182:52;9262:9;9256:16;9281:39;9314:5;9281:39;:::i;:::-;9339:5;9083:267;-1:-1:-1;;;9083:267:207:o;9537:184::-;9589:77;9586:1;9579:88;9686:4;9683:1;9676:15;9710:4;9707:1;9700:15;9726:125;9791:9;;;9812:10;;;9809:36;;;9825:18;;:::i;:::-;9726:125;;;;:::o;10188:218::-;10335:2;10324:9;10317:21;10298:4;10355:45;10396:2;10385:9;10381:18;10373:6;10355:45;:::i;11516:430::-;11713:66;11705:6;11701:79;11696:3;11689:92;11671:3;11810:6;11804:13;11826:74;11893:6;11889:1;11884:3;11880:11;11873:4;11865:6;11861:17;11826:74;:::i;:::-;11920:16;;;;11938:1;11916:24;;11516:430;-1:-1:-1;;;11516:430:207:o;11951:287::-;12080:3;12118:6;12112:13;12134:66;12193:6;12188:3;12181:4;12173:6;12169:17;12134:66;:::i;:::-;12216:16;;;;;11951:287;-1:-1:-1;;11951:287:207:o;12243:277::-;12310:6;12363:2;12351:9;12342:7;12338:23;12334:32;12331:52;;;12379:1;12376;12369:12;12331:52;12411:9;12405:16;12464:5;12457:13;12450:21;12443:5;12440:32;12430:60;;12486:1;12483;12476:12;13119:591;13229:6;13282:2;13270:9;13261:7;13257:23;13253:32;13250:52;;;13298:1;13295;13288:12;13250:52;13331:2;13325:9;13373:2;13365:6;13361:15;13442:6;13430:10;13427:22;13406:18;13394:10;13391:34;13388:62;13385:88;;;13453:18;;:::i;:::-;13489:2;13482:22;13526:16;;13551:39;13526:16;13551:39;:::i;:::-;13599:21;;13674:2;13659:18;;;13653:25;13636:15;;;13629:50;;;;-1:-1:-1;13606:6:207;13119:591;-1:-1:-1;13119:591:207:o;13715:521::-;-1:-1:-1;;;;;13989:6:207;13985:55;13974:9;13967:74;14077:6;14072:2;14061:9;14057:18;14050:34;14120:3;14115:2;14104:9;14100:18;14093:31;13948:4;14141:46;14182:3;14171:9;14167:19;14159:6;14141:46;:::i;:::-;14133:54;;14223:6;14218:2;14207:9;14203:18;14196:34;13715:521;;;;;;;:::o;15051:781::-;15101:3;15142:5;15136:12;15171:36;15197:9;15171:36;:::i;:::-;15226:1;15243:17;;;15269:191;;;;15474:1;15469:357;;;;15236:590;;15269:191;15317:66;15306:9;15302:82;15297:3;15290:95;15440:6;15433:14;15426:22;15418:6;15414:35;15409:3;15405:45;15398:52;;15269:191;;15469:357;15500:5;15497:1;15490:16;15529:4;15574;15571:1;15561:18;15601:1;15615:165;15629:6;15626:1;15623:13;15615:165;;;15707:14;;15694:11;;;15687:35;15750:16;;;;15644:10;;15615:165;;;15619:3;;;15809:6;15804:3;15800:16;15793:23;;15236:590;;;;;15051:781;;;;:::o;15837:664::-;16187:66;16182:3;16175:79;16157:3;16273:47;16316:2;16311:3;16307:12;16299:6;16273:47;:::i;:::-;16340:66;16329:78;;16436:31;16431:2;16423:11;;16416:52;16492:2;16484:11;;15837:664;-1:-1:-1;;;15837:664:207:o;17025:694::-;17368:66;17363:3;17356:79;17338:3;17464:6;17458:13;17480:75;17548:6;17543:2;17538:3;17534:12;17527:4;17519:6;17515:17;17480:75;:::i;:::-;17619:66;17614:2;17574:16;;;;17606:11;;;17599:87;-1:-1:-1;17710:2:207;17702:11;;17025:694;-1:-1:-1;17025:694:207:o;17724:543::-;17826:2;17821:3;17818:11;17815:446;;;17862:1;17886:5;17883:1;17876:16;17930:4;17927:1;17917:18;18000:2;17988:10;17984:19;17981:1;17977:27;17971:4;17967:38;18036:4;18024:10;18021:20;18018:47;;;-1:-1:-1;18059:4:207;18018:47;18114:2;18109:3;18105:12;18102:1;18098:20;18092:4;18088:31;18078:41;;18169:82;18187:2;18180:5;18177:13;18169:82;;;18232:17;;;18213:1;18202:13;18169:82;;18503:1464;18629:3;18623:10;18656:18;18648:6;18645:30;18642:56;;;18678:18;;:::i;:::-;18707:97;18797:6;18757:38;18789:4;18783:11;18757:38;:::i;:::-;18751:4;18707:97;:::i;:::-;18859:4;;18916:2;18905:14;;18933:1;18928:782;;;;19754:1;19771:6;19768:89;;;-1:-1:-1;19823:19:207;;;19817:26;19768:89;-1:-1:-1;;18400:1:207;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;19870:81;;18898:1063;;18928:782;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;18964:79:207;;;19141:236;19155:7;19152:1;19149:14;19141:236;;;19244:19;;;19238:26;19223:42;;19336:27;;;;19304:1;19292:14;;;;19171:19;;19141:236;;;19145:3;19405:6;19396:7;19393:19;19390:261;;;19466:19;;;19460:26;-1:-1:-1;;19549:1:207;19545:14;;;19561:3;19541:24;19537:97;19533:102;19518:118;19503:134;;19390:261;-1:-1:-1;;;;;19697:1:207;19681:14;;;19677:22;19664:36;;-1:-1:-1;18503:1464:207:o;19972:128::-;20039:9;;;20060:11;;;20057:37;;;20074:18;;:::i;20459:197::-;20587:3;20612:38;20646:3;20638:6;20612:38;:::i;20661:1554::-;20780:3;20774:4;20771:13;20768:26;;20787:5;;20661:1554::o;20768:26::-;20817:37;20849:3;20843:10;20817:37;:::i;:::-;20877:18;20869:6;20866:30;20863:56;;;20899:18;;:::i;:::-;20928:97;21018:6;20978:38;21010:4;21004:11;20978:38;:::i;20928:97::-;21051:1;21079:2;21071:6;21068:14;21096:1;21091:867;;;;22002:1;22019:6;22016:89;;;-1:-1:-1;22071:19:207;;;22065:26;22016:89;-1:-1:-1;;18400:1:207;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;22118:81;;21061:1148;;21091:867;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;21127:79:207;;;14998:1;14991:14;;;15035:4;15022:18;;21350:9;21372:251;21386:7;21383:1;21380:14;21372:251;;;21468:21;;;21462:28;21447:44;;21518:1;21591:18;;;;21546:15;;;;21409:4;21402:12;21372:251;;;21376:3;21651:6;21642:7;21639:19;21636:263;;;21712:21;;21706:28;-1:-1:-1;;21809:3:207;21797:1;21793:14;;;21789:24;21785:97;21781:102;21766:118;21751:134;;;-1:-1:-1;;21945:1:207;21929:14;;;21925:22;21912:36;;-1:-1:-1;20661:1554:207:o;24622:764::-;25012:14;25007:3;25000:27;24982:3;25056:6;25050:13;25072:75;25140:6;25135:2;25130:3;25126:12;25119:4;25111:6;25107:17;25072:75;:::i;:::-;25211:3;25206:2;25166:16;;;25198:11;;;25191:24;25240:13;;25262:76;25240:13;25324:2;25316:11;;25309:4;25297:17;;25262:76;:::i;:::-;25358:17;25377:2;25354:26;;24622:764;-1:-1:-1;;;;24622:764:207:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCallFromCallboundDelegation()":"e187dc8f","testCallFromSystemDelegation()":"d671f65b","testCallFromTimeboundDelegation()":"89403ab3","testRegisterDelegationRevertInterfaceNotSupported()":"9d4218e6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromCallboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromSystemDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromTimeboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRegisterDelegationRevertInterfaceNotSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/StandardDelegationsModule.t.sol\":\"StandardDelegationsModuleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798\",\"dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55\",\"dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf\",\"dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4\",\"dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b\",\"dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb\",\"dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84\",\"dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1\",\"dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e\",\"dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924\",\"dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67\",\"dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263\",\"dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912\",\"dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6\",\"dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2\",\"dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99\",\"dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a\",\"dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d\",\"dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3\",\"dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210\",\"dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A\"]},\"node_modules/@latticexyz/store/src/StoreHook.sol\":{\"keccak256\":\"0x7774e2176bbb9e259f71c62f41d07e6284fecd2af062a47d3c88a3e9cccb61b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1048129389b95fac80da3edd0f7bbfa18bd51c13531ee650f9c1cbe3433ae8e8\",\"dweb:/ipfs/QmaSaxfGPxmSZHSyuKsrNR1xx3RpLRJh5jykSj94WDBxei\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd\",\"dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff\",\"dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787\",\"dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551\",\"dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea\",\"dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4\",\"dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44\",\"dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2\",\"dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN\"]},\"node_modules/@latticexyz/store/src/rightMask.sol\":{\"keccak256\":\"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38\",\"dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64\",\"dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb\",\"dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4\",\"dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf\",\"dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205\",\"dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed\",\"dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU\"]},\"node_modules/@latticexyz/store/test/EchoSubscriber.sol\":{\"keccak256\":\"0x4fe4e9c11d863342fc19014de491ab28638fb9b5e7a0af143c86b0ab29fd3f84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57d7b059a932a4a411e7a25f95b4d41e3370bfedcf878960c14134fc78ba6eaa\",\"dweb:/ipfs/QmVmfUDyjfX4mLnU4HxkPg79ALfQwXXgfRrQsMCYbCGp7k\"]},\"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol\":{\"keccak256\":\"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3\",\"dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze\"]},\"node_modules/@latticexyz/store/test/RevertSubscriber.sol\":{\"keccak256\":\"0x1df97686c247408971bc08a4b8d36ac804da3b14965eae34a1f192f65eb2e902\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ff2fb2cf1b170d9de43fb6b530d9eba342a2a52720f5ca20d51abbf386c8d28\",\"dweb:/ipfs/QmYhQL9ZKcusiadLG1binasmyh4vjnRWXchniBgJ9iiGXY\"]},\"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol\":{\"keccak256\":\"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5\",\"dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c\",\"dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89\",\"dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6\",\"dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d\",\"dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3\",\"dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd\",\"dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc\",\"dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xd3645ee90c73dd991659a140c0132c5a2aaf27a296c457737b212d87b2f66402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://519d81e2bc7233b1488339eaf9220f7eb57086dd3ee8e1831708ebc6e87f00db\",\"dweb:/ipfs/Qmf8RjMxuPXbteMeEB3vstjutsCrmveyBFCjVFt7nSYgtc\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0x149d3c2b4bbea21047fc8cf79236488764dd8dde6e440dbc37067a8ce8831bbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2f340a5616cafd1d80e6ef79f1620102d3d64730c6aa19ecdbb4ca86aaa59b2\",\"dweb:/ipfs/QmWoXP1BKj8U3ZXXoiTRENCxVaaCxrKAenwCZbCVbyfaZ7\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3\",\"dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020\",\"dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9\",\"dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d\",\"dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7\"]},\"node_modules/@latticexyz/world/src/SystemHook.sol\":{\"keccak256\":\"0xe960a82dbc824f1543d1113471040bb1c8d332508d9c362f6c433634dee86737\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8f43c0e555a3e2bfc59376b5af61147c136d718eee871972888630445287da4\",\"dweb:/ipfs/QmcxoLoyuqxFR32rb8CEL5TtsauqvFSFYUnuBmJt2Xrtk6\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x5f02e221a1f088b56d81894e210ccd97c097b8da2cdc677d073c2722f2a0564a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02134a975fb146c5b37ce8472245982120b13000a8628b99395200458e3fd5ef\",\"dweb:/ipfs/Qmd2Zq9LX1kkEE5UEA6oFWnSpBPTX9F9iU2Z74GHSaDwXX\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0x4b83d5791209b8f39773b07e5f162dfd0617f5f9b5b4bd371c087412e5ad01cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://033a3777136e6d5c581efc8bf2535403abe44874409c85d17a353fae6dc56006\",\"dweb:/ipfs/QmaXepBDVnmnMdVzuxbGT2qo5vqWnjB75KNCCdxRehrBMX\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74\",\"dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f\",\"dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4\",\"dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5\",\"dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45\",\"dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6\",\"dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol\":{\"keccak256\":\"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8\",\"dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478\",\"dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458\",\"dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd\",\"dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7\",\"dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol\":{\"keccak256\":\"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69\",\"dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e\",\"dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35\",\"dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e\",\"dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c\",\"dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2\",\"dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c\",\"dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7\",\"dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571\",\"dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/modules/init/InitModule.sol\":{\"keccak256\":\"0x2350a2a13cdf3e5420fa9881506936bf32442e4ddfc181c2d499d989e3cd34b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24ec25478a659cca0c9529366bc139b80d302b5ac201abcec67316cf01e1f3d2\",\"dweb:/ipfs/QmegoDuhwLYsuoR1cXwEerUHkLUKyYC4C4TgZBNJXxAtik\"]},\"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol\":{\"keccak256\":\"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6\",\"dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc\"]},\"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol\":{\"keccak256\":\"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c\",\"dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9\"]},\"node_modules/@latticexyz/world/src/modules/init/constants.sol\":{\"keccak256\":\"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752\",\"dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8\",\"dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c\",\"dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160\",\"dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216\",\"dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7\",\"dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535\",\"dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw\"]},\"node_modules/@latticexyz/world/src/modules/init/types.sol\":{\"keccak256\":\"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411\",\"dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658\",\"dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C\"]},\"node_modules/@latticexyz/world/src/requireNamespace.sol\":{\"keccak256\":\"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6\",\"dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi\"]},\"node_modules/@latticexyz/world/src/requireValidNamespace.sol\":{\"keccak256\":\"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027\",\"dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8\",\"dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d\",\"dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e\",\"dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d\",\"dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12\"]},\"node_modules/@latticexyz/world/test/DelegationControlMock.sol\":{\"keccak256\":\"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d\",\"dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf\"]},\"node_modules/@latticexyz/world/test/World.t.sol\":{\"keccak256\":\"0x9741435a6d4b2ab65cb16b0ff1e46179012d51f33ec292188224f243c5918414\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://002db4ebf5ee5f69626d5905e22b192c41f8723774e3e7385d00ec7c3102d891\",\"dweb:/ipfs/QmbRRJpeWo528Nve5FyHE2jcCSjrgg1juTgnZFB55GyPk9\"]},\"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol\":{\"keccak256\":\"0x6a980c5814c0b4f581ac686a9957a4ee4aeebf944fbb7f3bcd747aa46e6711f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ca863d25e983ca61e718d22fa1118c41bb82237fe8c7ef715378a84da8f239\",\"dweb:/ipfs/QmWEELBroj9fSPvkpT8DJ6JeeYSNcAqTyTsv37pqrArQfc\"]},\"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol\":{\"keccak256\":\"0xfacef9348a1b8a406863449a5575ca653d9ee4c3b145349864c987fa7134de8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://434dd592d088cc53df20ac637bd46d49facd071c661a68727e99a0ee4151eeaf\",\"dweb:/ipfs/QmaSLkwAAnWVwZzp4FntXo4N2qgxXtLNVeFU4fewTQ3wZe\"]},\"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol\":{\"keccak256\":\"0x3bb0aed7826ecbd8083d2694422c16922dcb5c0460ec5c6e26f2f8c091071136\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bd053f250292932423222426fb129931a7192d5b2cb294044098a23f0e7603\",\"dweb:/ipfs/QmduMJzo59L6biSEestyzzHUVEzj3cohA14rDNuMWr8ehX\"]},\"node_modules/@latticexyz/world/test/createInitModule.sol\":{\"keccak256\":\"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc\",\"dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa\"]},\"node_modules/@latticexyz/world/test/createWorld.sol\":{\"keccak256\":\"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4\",\"dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/modules/std-delegations/CallboundDelegationControl.sol\":{\"keccak256\":\"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44\",\"dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF\"]},\"src/modules/std-delegations/StandardDelegationsModule.sol\":{\"keccak256\":\"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67\",\"dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK\"]},\"src/modules/std-delegations/SystemboundDelegationControl.sol\":{\"keccak256\":\"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815\",\"dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq\"]},\"src/modules/std-delegations/TimeboundDelegationControl.sol\":{\"keccak256\":\"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb\",\"dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb\"]},\"src/modules/std-delegations/constants.sol\":{\"keccak256\":\"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b\",\"dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC\"]},\"src/modules/std-delegations/tables/CallboundDelegations.sol\":{\"keccak256\":\"0xff415bd15a84962a2e56a0768b554f3afca9a1e53539f2d34255e7cfa2e7fa22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a1fdadc45e7950047ae325a98345ea821e97eb52500934a026fd3ae8ea83a1f\",\"dweb:/ipfs/QmWxjjvpSpkU2zJu4Z5HFYjwXnZATDWeJEwQeE43LxtZSb\"]},\"src/modules/std-delegations/tables/SystemboundDelegations.sol\":{\"keccak256\":\"0xf4b5beed9f89b55c448245a14bccae045705036e83229964162617ec610e8529\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56d22e0cae215d83dffd1a355910c66cb291bf0ac8efc4af19174c678fe4b643\",\"dweb:/ipfs/QmSUdSn7sMN1gutnEwkcffkfGq4iurL3R9g3FzbUNiaXZg\"]},\"src/modules/std-delegations/tables/TimeboundDelegations.sol\":{\"keccak256\":\"0xe7136185cac83d57113c5500a7ec74d523357d24623c493fe8c6ec9c00d61d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://deffe13dd00f4c6b021d94d67209eb8f303e3fe496cfd85e6da1cef171b05cc6\",\"dweb:/ipfs/QmaJ3iV1nFcojWJF6Wxe4BBhf7AHpe6EesBjFLTsHvnTZh\"]},\"test/StandardDelegationsModule.t.sol\":{\"keccak256\":\"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812\",\"dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromCallboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromSystemDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromTimeboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/StandardDelegationsModule.t.sol":"StandardDelegationsModuleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd","urls":["bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798","dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd","urls":["bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55","dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728","urls":["bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf","dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09","urls":["bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4","dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3","urls":["bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b","dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec","urls":["bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb","dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79","urls":["bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84","dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f","urls":["bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1","dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99","urls":["bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e","dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449","urls":["bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924","dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167","urls":["bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67","dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc","urls":["bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263","dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d","urls":["bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912","dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e","urls":["bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6","dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18","urls":["bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2","dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8","urls":["bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99","dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5","urls":["bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a","dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f","urls":["bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d","dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20","urls":["bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3","dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd","urls":["bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210","dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreHook.sol":{"keccak256":"0x7774e2176bbb9e259f71c62f41d07e6284fecd2af062a47d3c88a3e9cccb61b1","urls":["bzz-raw://1048129389b95fac80da3edd0f7bbfa18bd51c13531ee650f9c1cbe3433ae8e8","dweb:/ipfs/QmaSaxfGPxmSZHSyuKsrNR1xx3RpLRJh5jykSj94WDBxei"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28","urls":["bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd","dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9","urls":["bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff","dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c","urls":["bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787","dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7","urls":["bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551","dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763","urls":["bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea","dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b","urls":["bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4","dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270","urls":["bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44","dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50","urls":["bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2","dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN"],"license":"MIT"},"node_modules/@latticexyz/store/src/rightMask.sol":{"keccak256":"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410","urls":["bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38","dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305","urls":["bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64","dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554","urls":["bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb","dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7","urls":["bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4","dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29","urls":["bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf","dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a","urls":["bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205","dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61","urls":["bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed","dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU"],"license":"MIT"},"node_modules/@latticexyz/store/test/EchoSubscriber.sol":{"keccak256":"0x4fe4e9c11d863342fc19014de491ab28638fb9b5e7a0af143c86b0ab29fd3f84","urls":["bzz-raw://57d7b059a932a4a411e7a25f95b4d41e3370bfedcf878960c14134fc78ba6eaa","dweb:/ipfs/QmVmfUDyjfX4mLnU4HxkPg79ALfQwXXgfRrQsMCYbCGp7k"],"license":"MIT"},"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol":{"keccak256":"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd","urls":["bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3","dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze"],"license":"MIT"},"node_modules/@latticexyz/store/test/RevertSubscriber.sol":{"keccak256":"0x1df97686c247408971bc08a4b8d36ac804da3b14965eae34a1f192f65eb2e902","urls":["bzz-raw://6ff2fb2cf1b170d9de43fb6b530d9eba342a2a52720f5ca20d51abbf386c8d28","dweb:/ipfs/QmYhQL9ZKcusiadLG1binasmyh4vjnRWXchniBgJ9iiGXY"],"license":"MIT"},"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol":{"keccak256":"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02","urls":["bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5","dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439","urls":["bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c","dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a","urls":["bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89","dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3","urls":["bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6","dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e","urls":["bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d","dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695","urls":["bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3","dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909","urls":["bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd","dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc","urls":["bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc","dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xd3645ee90c73dd991659a140c0132c5a2aaf27a296c457737b212d87b2f66402","urls":["bzz-raw://519d81e2bc7233b1488339eaf9220f7eb57086dd3ee8e1831708ebc6e87f00db","dweb:/ipfs/Qmf8RjMxuPXbteMeEB3vstjutsCrmveyBFCjVFt7nSYgtc"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0x149d3c2b4bbea21047fc8cf79236488764dd8dde6e440dbc37067a8ce8831bbd","urls":["bzz-raw://d2f340a5616cafd1d80e6ef79f1620102d3d64730c6aa19ecdbb4ca86aaa59b2","dweb:/ipfs/QmWoXP1BKj8U3ZXXoiTRENCxVaaCxrKAenwCZbCVbyfaZ7"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635","urls":["bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3","dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd","urls":["bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020","dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3","urls":["bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9","dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2","urls":["bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d","dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemHook.sol":{"keccak256":"0xe960a82dbc824f1543d1113471040bb1c8d332508d9c362f6c433634dee86737","urls":["bzz-raw://c8f43c0e555a3e2bfc59376b5af61147c136d718eee871972888630445287da4","dweb:/ipfs/QmcxoLoyuqxFR32rb8CEL5TtsauqvFSFYUnuBmJt2Xrtk6"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x5f02e221a1f088b56d81894e210ccd97c097b8da2cdc677d073c2722f2a0564a","urls":["bzz-raw://02134a975fb146c5b37ce8472245982120b13000a8628b99395200458e3fd5ef","dweb:/ipfs/Qmd2Zq9LX1kkEE5UEA6oFWnSpBPTX9F9iU2Z74GHSaDwXX"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0x4b83d5791209b8f39773b07e5f162dfd0617f5f9b5b4bd371c087412e5ad01cf","urls":["bzz-raw://033a3777136e6d5c581efc8bf2535403abe44874409c85d17a353fae6dc56006","dweb:/ipfs/QmaXepBDVnmnMdVzuxbGT2qo5vqWnjB75KNCCdxRehrBMX"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd","urls":["bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74","dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d","urls":["bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f","dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4","urls":["bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4","dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a","urls":["bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5","dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b","urls":["bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45","dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4","urls":["bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6","dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol":{"keccak256":"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772","urls":["bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8","dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c","urls":["bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478","dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f","urls":["bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458","dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8","urls":["bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd","dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b","urls":["bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7","dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol":{"keccak256":"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395","urls":["bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69","dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc","urls":["bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e","dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf","urls":["bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35","dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd","urls":["bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e","dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568","urls":["bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c","dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68","urls":["bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2","dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194","urls":["bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c","dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21","urls":["bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7","dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51","urls":["bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571","dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/InitModule.sol":{"keccak256":"0x2350a2a13cdf3e5420fa9881506936bf32442e4ddfc181c2d499d989e3cd34b6","urls":["bzz-raw://24ec25478a659cca0c9529366bc139b80d302b5ac201abcec67316cf01e1f3d2","dweb:/ipfs/QmegoDuhwLYsuoR1cXwEerUHkLUKyYC4C4TgZBNJXxAtik"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol":{"keccak256":"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa","urls":["bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6","dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol":{"keccak256":"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9","urls":["bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c","dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/constants.sol":{"keccak256":"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9","urls":["bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752","dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol":{"keccak256":"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2","urls":["bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8","dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol":{"keccak256":"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b","urls":["bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c","dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol":{"keccak256":"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7","urls":["bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160","dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93","urls":["bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216","dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol":{"keccak256":"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f","urls":["bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7","dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e","urls":["bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535","dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/types.sol":{"keccak256":"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3","urls":["bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411","dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730","urls":["bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658","dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireNamespace.sol":{"keccak256":"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1","urls":["bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6","dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireValidNamespace.sol":{"keccak256":"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc","urls":["bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027","dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a","urls":["bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8","dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145","urls":["bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d","dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be","urls":["bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e","dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed","urls":["bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d","dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12"],"license":"MIT"},"node_modules/@latticexyz/world/test/DelegationControlMock.sol":{"keccak256":"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e","urls":["bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d","dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf"],"license":"MIT"},"node_modules/@latticexyz/world/test/World.t.sol":{"keccak256":"0x9741435a6d4b2ab65cb16b0ff1e46179012d51f33ec292188224f243c5918414","urls":["bzz-raw://002db4ebf5ee5f69626d5905e22b192c41f8723774e3e7385d00ec7c3102d891","dweb:/ipfs/QmbRRJpeWo528Nve5FyHE2jcCSjrgg1juTgnZFB55GyPk9"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol":{"keccak256":"0x6a980c5814c0b4f581ac686a9957a4ee4aeebf944fbb7f3bcd747aa46e6711f6","urls":["bzz-raw://75ca863d25e983ca61e718d22fa1118c41bb82237fe8c7ef715378a84da8f239","dweb:/ipfs/QmWEELBroj9fSPvkpT8DJ6JeeYSNcAqTyTsv37pqrArQfc"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol":{"keccak256":"0xfacef9348a1b8a406863449a5575ca653d9ee4c3b145349864c987fa7134de8c","urls":["bzz-raw://434dd592d088cc53df20ac637bd46d49facd071c661a68727e99a0ee4151eeaf","dweb:/ipfs/QmaSLkwAAnWVwZzp4FntXo4N2qgxXtLNVeFU4fewTQ3wZe"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol":{"keccak256":"0x3bb0aed7826ecbd8083d2694422c16922dcb5c0460ec5c6e26f2f8c091071136","urls":["bzz-raw://99bd053f250292932423222426fb129931a7192d5b2cb294044098a23f0e7603","dweb:/ipfs/QmduMJzo59L6biSEestyzzHUVEzj3cohA14rDNuMWr8ehX"],"license":"MIT"},"node_modules/@latticexyz/world/test/createInitModule.sol":{"keccak256":"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383","urls":["bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc","dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa"],"license":"MIT"},"node_modules/@latticexyz/world/test/createWorld.sol":{"keccak256":"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196","urls":["bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4","dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/modules/std-delegations/CallboundDelegationControl.sol":{"keccak256":"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202","urls":["bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44","dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF"],"license":"MIT"},"src/modules/std-delegations/StandardDelegationsModule.sol":{"keccak256":"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75","urls":["bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67","dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK"],"license":"MIT"},"src/modules/std-delegations/SystemboundDelegationControl.sol":{"keccak256":"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad","urls":["bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815","dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq"],"license":"MIT"},"src/modules/std-delegations/TimeboundDelegationControl.sol":{"keccak256":"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093","urls":["bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb","dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb"],"license":"MIT"},"src/modules/std-delegations/constants.sol":{"keccak256":"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d","urls":["bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b","dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC"],"license":"MIT"},"src/modules/std-delegations/tables/CallboundDelegations.sol":{"keccak256":"0xff415bd15a84962a2e56a0768b554f3afca9a1e53539f2d34255e7cfa2e7fa22","urls":["bzz-raw://3a1fdadc45e7950047ae325a98345ea821e97eb52500934a026fd3ae8ea83a1f","dweb:/ipfs/QmWxjjvpSpkU2zJu4Z5HFYjwXnZATDWeJEwQeE43LxtZSb"],"license":"MIT"},"src/modules/std-delegations/tables/SystemboundDelegations.sol":{"keccak256":"0xf4b5beed9f89b55c448245a14bccae045705036e83229964162617ec610e8529","urls":["bzz-raw://56d22e0cae215d83dffd1a355910c66cb291bf0ac8efc4af19174c678fe4b643","dweb:/ipfs/QmSUdSn7sMN1gutnEwkcffkfGq4iurL3R9g3FzbUNiaXZg"],"license":"MIT"},"src/modules/std-delegations/tables/TimeboundDelegations.sol":{"keccak256":"0xe7136185cac83d57113c5500a7ec74d523357d24623c493fe8c6ec9c00d61d3e","urls":["bzz-raw://deffe13dd00f4c6b021d94d67209eb8f303e3fe496cfd85e6da1cef171b05cc6","dweb:/ipfs/QmaJ3iV1nFcojWJF6Wxe4BBhf7AHpe6EesBjFLTsHvnTZh"],"license":"MIT"},"test/StandardDelegationsModule.t.sol":{"keccak256":"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a","urls":["bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812","dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/StandardDelegationsModule.t.sol","id":136175,"exportedSymbols":{"CALLBOUND_DELEGATION":[122288],"CallboundDelegationControl":[121939],"GasReporter":[226],"IBaseWorld":[24554],"IDelegationControl":[22347],"IWorldErrors":[22547],"RESOURCE_SYSTEM":[38079],"ResourceId":[2782],"SYSTEMBOUND_DELEGATION":[122306],"StandardDelegationsModule":[122109],"StandardDelegationsModuleTest":[136174],"System":[22727],"SystemboundDelegationControl":[122205],"Systems":[34474],"TIMEBOUND_DELEGATION":[122324],"Test":[60480],"TimeboundDelegationControl":[122262],"World":[23867],"WorldResourceIdInstance":[24417],"WorldResourceIdLib":[24290],"WorldTestSystem":[38479],"WorldTestSystemReturn":[38275],"createWorld":[48581]},"nodeType":"SourceUnit","src":"32:7399:203","nodes":[{"id":135581,"nodeType":"PragmaDirective","src":"32:25:203","nodes":[],"literals":["solidity",">=","0.8",".24"]},{"id":135583,"nodeType":"ImportDirective","src":"59:42:203","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":60481,"symbolAliases":[{"foreign":{"id":135582,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60480,"src":"68:4:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135585,"nodeType":"ImportDirective","src":"102:73:203","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":135584,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135587,"nodeType":"ImportDirective","src":"177:56:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":23868,"symbolAliases":[{"foreign":{"id":135586,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23867,"src":"186:5:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135591,"nodeType":"ImportDirective","src":"234:116:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":24418,"symbolAliases":[{"foreign":{"id":135588,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"243:10:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135589,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24290,"src":"255:18:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135590,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24417,"src":"275:23:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135593,"nodeType":"ImportDirective","src":"351:58:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":22728,"symbolAliases":[{"foreign":{"id":135592,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22727,"src":"360:6:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135595,"nodeType":"ImportDirective","src":"410:79:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":38086,"symbolAliases":[{"foreign":{"id":135594,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38079,"src":"419:15:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135597,"nodeType":"ImportDirective","src":"491:85:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":24555,"symbolAliases":[{"foreign":{"id":135596,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24554,"src":"500:10:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135599,"nodeType":"ImportDirective","src":"577:70:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IWorldErrors.sol","file":"@latticexyz/world/src/IWorldErrors.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":22548,"symbolAliases":[{"foreign":{"id":135598,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"586:12:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135601,"nodeType":"ImportDirective","src":"648:82:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IDelegationControl.sol","file":"@latticexyz/world/src/IDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":22348,"symbolAliases":[{"foreign":{"id":135600,"name":"IDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22347,"src":"657:18:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135603,"nodeType":"ImportDirective","src":"732:69:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createWorld.sol","file":"@latticexyz/world/test/createWorld.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":48582,"symbolAliases":[{"foreign":{"id":135602,"name":"createWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48581,"src":"741:11:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135605,"nodeType":"ImportDirective","src":"802:75:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol","file":"@latticexyz/world/src/codegen/tables/Systems.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":34485,"symbolAliases":[{"foreign":{"id":135604,"name":"Systems","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34474,"src":"811:7:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135607,"nodeType":"ImportDirective","src":"879:105:203","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":122110,"symbolAliases":[{"foreign":{"id":135606,"name":"StandardDelegationsModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122109,"src":"888:25:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135609,"nodeType":"ImportDirective","src":"985:107:203","nodes":[],"absolutePath":"src/modules/std-delegations/CallboundDelegationControl.sol","file":"../src/modules/std-delegations/CallboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":121940,"symbolAliases":[{"foreign":{"id":135608,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121939,"src":"994:26:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135611,"nodeType":"ImportDirective","src":"1093:111:203","nodes":[],"absolutePath":"src/modules/std-delegations/SystemboundDelegationControl.sol","file":"../src/modules/std-delegations/SystemboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":122206,"symbolAliases":[{"foreign":{"id":135610,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122205,"src":"1102:28:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135613,"nodeType":"ImportDirective","src":"1205:107:203","nodes":[],"absolutePath":"src/modules/std-delegations/TimeboundDelegationControl.sol","file":"../src/modules/std-delegations/TimeboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":122263,"symbolAliases":[{"foreign":{"id":135612,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122262,"src":"1214:26:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135617,"nodeType":"ImportDirective","src":"1313:146:203","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":122110,"symbolAliases":[{"foreign":{"id":135614,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122288,"src":"1322:20:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135615,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122306,"src":"1344:22:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135616,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122324,"src":"1368:20:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135620,"nodeType":"ImportDirective","src":"1461:92:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/World.t.sol","file":"@latticexyz/world/test/World.t.sol","nameLocation":"-1:-1:-1","scope":136175,"sourceUnit":45183,"symbolAliases":[{"foreign":{"id":135618,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"1470:15:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135619,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38275,"src":"1487:21:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":136174,"nodeType":"ContractDefinition","src":"1555:5875:203","nodes":[{"id":135628,"nodeType":"UsingForDirective","src":"1619:45:203","nodes":[],"global":false,"libraryName":{"id":135625,"name":"WorldResourceIdInstance","nameLocations":["1625:23:203"],"nodeType":"IdentifierPath","referencedDeclaration":24417,"src":"1625:23:203"},"typeName":{"id":135627,"nodeType":"UserDefinedTypeName","pathNode":{"id":135626,"name":"ResourceId","nameLocations":["1653:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1653:10:203"},"referencedDeclaration":2782,"src":"1653:10:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":135631,"nodeType":"VariableDeclaration","src":"1667:24:203","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1686:5:203","scope":136174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"},"typeName":{"id":135630,"nodeType":"UserDefinedTypeName","pathNode":{"id":135629,"name":"IBaseWorld","nameLocations":["1667:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":24554,"src":"1667:10:203"},"referencedDeclaration":24554,"src":"1667:10:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"visibility":"private"},{"id":135640,"nodeType":"VariableDeclaration","src":"1695:132:203","nodes":[],"constant":false,"mutability":"mutable","name":"systemId","nameLocation":"1714:8:203","scope":136174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135633,"nodeType":"UserDefinedTypeName","pathNode":{"id":135632,"name":"ResourceId","nameLocations":["1695:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1695:10:203"},"referencedDeclaration":2782,"src":"1695:10:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"value":{"arguments":[{"id":135636,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38079,"src":"1765:15:203","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":135637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1793:11:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"7465737453797374656d","id":135638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1812:12:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d96422d2b097e05a277285f0fc83c2e15de737c7943b8faa9a1568e10dd25b0","typeString":"literal_string \"testSystem\""},"value":"testSystem"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},{"typeIdentifier":"t_stringliteral_8d96422d2b097e05a277285f0fc83c2e15de737c7943b8faa9a1568e10dd25b0","typeString":"literal_string \"testSystem\""}],"expression":{"id":135634,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24290,"src":"1729:18:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24290_$","typeString":"type(library WorldResourceIdLib)"}},"id":135635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1748:6:203","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24218,"src":"1729:25:203","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1757:6:203","1782:9:203","1806:4:203"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"1729:98:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"private"},{"id":135646,"nodeType":"VariableDeclaration","src":"1831:38:203","nodes":[],"constant":false,"mutability":"mutable","name":"delegator","nameLocation":"1847:9:203","scope":136174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135641,"name":"address","nodeType":"ElementaryTypeName","src":"1831:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"31","id":135644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1867:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":135643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1859:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135642,"name":"address","nodeType":"ElementaryTypeName","src":"1859:7:203","typeDescriptions":{}}},"id":135645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1859:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":135652,"nodeType":"VariableDeclaration","src":"1873:38:203","nodes":[],"constant":false,"mutability":"mutable","name":"delegatee","nameLocation":"1889:9:203","scope":136174,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135647,"name":"address","nodeType":"ElementaryTypeName","src":"1873:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"32","id":135650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1909:1:203","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":135649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1901:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135648,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:203","typeDescriptions":{}}},"id":135651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":135698,"nodeType":"FunctionDefinition","src":"1916:320:203","nodes":[],"body":{"id":135697,"nodeType":"Block","src":"1940:296:203","nodes":[],"statements":[{"expression":{"id":135658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135655,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"1946:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135656,"name":"createWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48581,"src":"1954:11:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_IBaseWorld_$24554_$","typeString":"function () returns (contract IBaseWorld)"}},"id":135657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:13:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"src":"1946:21:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135659,"nodeType":"ExpressionStatement","src":"1946:21:203"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1997:29:203","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_StandardDelegationsModule_$122109_$","typeString":"function () returns (contract StandardDelegationsModule)"},"typeName":{"id":135664,"nodeType":"UserDefinedTypeName","pathNode":{"id":135663,"name":"StandardDelegationsModule","nameLocations":["2001:25:203"],"nodeType":"IdentifierPath","referencedDeclaration":122109,"src":"2001:25:203"},"referencedDeclaration":122109,"src":"2001:25:203","typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$122109","typeString":"contract StandardDelegationsModule"}}},"id":135666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1997:31:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$122109","typeString":"contract StandardDelegationsModule"}},{"arguments":[{"hexValue":"30","id":135669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2040:1:203","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2030:9:203","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":135667,"name":"bytes","nodeType":"ElementaryTypeName","src":"2034:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":135670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2030:12:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardDelegationsModule_$122109","typeString":"contract StandardDelegationsModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135660,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"1973:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1979:17:203","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22565,"src":"1973:23:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22390_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":135671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1973:70:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135672,"nodeType":"ExpressionStatement","src":"1973:70:203"},{"assignments":[135675],"declarations":[{"constant":false,"id":135675,"mutability":"mutable","name":"system","nameLocation":"2095:6:203","nodeType":"VariableDeclaration","scope":135697,"src":"2079:22:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"},"typeName":{"id":135674,"nodeType":"UserDefinedTypeName","pathNode":{"id":135673,"name":"WorldTestSystem","nameLocations":["2079:15:203"],"nodeType":"IdentifierPath","referencedDeclaration":38479,"src":"2079:15:203"},"referencedDeclaration":38479,"src":"2079:15:203","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}},"visibility":"internal"}],"id":135680,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":135678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2104:19:203","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_WorldTestSystem_$38479_$","typeString":"function () returns (contract WorldTestSystem)"},"typeName":{"id":135677,"nodeType":"UserDefinedTypeName","pathNode":{"id":135676,"name":"WorldTestSystem","nameLocations":["2108:15:203"],"nodeType":"IdentifierPath","referencedDeclaration":38479,"src":"2108:15:203"},"referencedDeclaration":38479,"src":"2108:15:203","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}}},"id":135679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2104:21:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}},"nodeType":"VariableDeclarationStatement","src":"2079:46:203"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":135684,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"2155:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2164:14:203","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24336,"src":"2155:23:203","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":135686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2155:25:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135681,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"2131:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2137:17:203","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24614,"src":"2131:23:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":135687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2131:50:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135688,"nodeType":"ExpressionStatement","src":"2131:50:203"},{"expression":{"arguments":[{"id":135692,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"2208:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135693,"name":"system","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135675,"src":"2218:6:203","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}},{"hexValue":"74727565","id":135694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2226:4:203","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135689,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"2187:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2193:14:203","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24645,"src":"2187:20:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_System_$22727_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract System,bool) external"}},"id":135695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2187:44:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135696,"nodeType":"ExpressionStatement","src":"2187:44:203"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1925:5:203","parameters":{"id":135653,"nodeType":"ParameterList","parameters":[],"src":"1930:2:203"},"returnParameters":{"id":135654,"nodeType":"ParameterList","parameters":[],"src":"1940:0:203"},"scope":136174,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135811,"nodeType":"FunctionDefinition","src":"2240:1231:203","nodes":[],"body":{"id":135810,"nodeType":"Block","src":"2290:1181:203","nodes":[],"statements":[{"expression":{"arguments":[{"id":135704,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"2394:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135701,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"2385:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2388:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"2385:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2385:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135706,"nodeType":"ExpressionStatement","src":"2385:19:203"},{"expression":{"arguments":[{"hexValue":"726567697374657220612063616c6c626f756e642064656c65676174696f6e","id":135708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2425:33:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6260935f8df4ca5d4db1fdcb0f11e6b7e615bb106d1f9b366f1b807fcba509d","typeString":"literal_string \"register a callbound delegation\""},"value":"register a callbound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f6260935f8df4ca5d4db1fdcb0f11e6b7e615bb106d1f9b366f1b807fcba509d","typeString":"literal_string \"register a callbound delegation\""}],"id":135707,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2410:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2410:49:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135710,"nodeType":"ExpressionStatement","src":"2410:49:203"},{"expression":{"arguments":[{"id":135714,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"2497:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135715,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122288,"src":"2514:20:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135718,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121939,"src":"2566:26:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallboundDelegationControl_$121939_$","typeString":"type(contract CallboundDelegationControl)"}},"id":135719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2593:14:203","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":121938,"src":"2566:41:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function CallboundDelegationControl.initDelegation(address,ResourceId,bytes memory,uint256)"}},{"components":[{"id":135720,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"2618:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135721,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"2629:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135724,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"2654:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2670:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"2654:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135726,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2681:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135722,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2639:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2643:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"2639:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"31","id":135728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2686:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":135729,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2617:71:203","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_rational_1_by_1_$","typeString":"tuple(address,ResourceId,bytes memory,int_const 1)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function CallboundDelegationControl.initDelegation(address,ResourceId,bytes memory,uint256)"},{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_rational_1_by_1_$","typeString":"tuple(address,ResourceId,bytes memory,int_const 1)"}],"expression":{"id":135716,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2542:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2546:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"2542:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2542:154:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135711,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"2465:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2471:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"2465:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":135731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2465:237:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135732,"nodeType":"ExpressionStatement","src":"2465:237:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135733,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2708:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2708:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135735,"nodeType":"ExpressionStatement","src":"2708:14:203"},{"expression":{"arguments":[{"id":135739,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"2805:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135736,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"2796:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2799:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"2796:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2796:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135741,"nodeType":"ExpressionStatement","src":"2796:19:203"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e","id":135743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2836:42:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c8886cd270f067a21390dbb98d4b26fa947f2a083c84eb610dfa8977f643ec8","typeString":"literal_string \"call a system via a callbound delegation\""},"value":"call a system via a callbound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2c8886cd270f067a21390dbb98d4b26fa947f2a083c84eb610dfa8977f643ec8","typeString":"literal_string \"call a system via a callbound delegation\""}],"id":135742,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2821:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2821:58:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135745,"nodeType":"ExpressionStatement","src":"2821:58:203"},{"assignments":[135747],"declarations":[{"constant":false,"id":135747,"mutability":"mutable","name":"returnData","nameLocation":"2898:10:203","nodeType":"VariableDeclaration","scope":135810,"src":"2885:23:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135746,"name":"bytes","nodeType":"ElementaryTypeName","src":"2885:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135759,"initialValue":{"arguments":[{"id":135750,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"2926:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135751,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"2937:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135754,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"2962:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2978:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"2962:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135756,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2989:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135752,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2947:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2951:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"2947:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2947:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135748,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"2911:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2917:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"2911:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2911:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2885:108:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135760,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2999:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2999:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135762,"nodeType":"ExpressionStatement","src":"2999:14:203"},{"assignments":[135764],"declarations":[{"constant":false,"id":135764,"mutability":"mutable","name":"returnedAddress","nameLocation":"3027:15:203","nodeType":"VariableDeclaration","scope":135810,"src":"3019:23:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135763,"name":"address","nodeType":"ElementaryTypeName","src":"3019:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135772,"initialValue":{"arguments":[{"id":135767,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135747,"src":"3056:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3069:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135768,"name":"address","nodeType":"ElementaryTypeName","src":"3069:7:203","typeDescriptions":{}}}],"id":135770,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3068:9:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135765,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3045:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3049:6:203","memberName":"decode","nodeType":"MemberAccess","src":"3045:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3045:33:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"3019:59:203"},{"expression":{"arguments":[{"id":135774,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135764,"src":"3160:15:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135775,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"3177:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135773,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"3151:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3151:36:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135777,"nodeType":"ExpressionStatement","src":"3151:36:203"},{"expression":{"arguments":[{"id":135781,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"3253:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135778,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3244:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3247:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"3244:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135783,"nodeType":"ExpressionStatement","src":"3244:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":135789,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"3308:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":135790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:24:203","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22514,"src":"3308:37:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":135791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3346:8:203","memberName":"selector","nodeType":"MemberAccess","src":"3308:46:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":135792,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"3356:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135793,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"3367:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135787,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3285:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3289:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3285:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:92:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135784,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3269:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3272:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"3269:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":135795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3269:109:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135796,"nodeType":"ExpressionStatement","src":"3269:109:203"},{"expression":{"arguments":[{"id":135800,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"3399:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135801,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"3410:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135804,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"3435:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3451:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"3435:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135806,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3462:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135802,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3420:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3424:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"3420:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3420:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135797,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"3384:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3390:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"3384:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3384:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":135809,"nodeType":"ExpressionStatement","src":"3384:82:203"}]},"functionSelector":"e187dc8f","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromCallboundDelegation","nameLocation":"2249:31:203","parameters":{"id":135699,"nodeType":"ParameterList","parameters":[],"src":"2280:2:203"},"returnParameters":{"id":135700,"nodeType":"ParameterList","parameters":[],"src":"2290:0:203"},"scope":136174,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135958,"nodeType":"FunctionDefinition","src":"3475:1592:203","nodes":[],"body":{"id":135957,"nodeType":"Block","src":"3522:1545:203","nodes":[],"statements":[{"expression":{"arguments":[{"id":135817,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"3628:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135814,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3619:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3622:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"3619:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135819,"nodeType":"ExpressionStatement","src":"3619:19:203"},{"expression":{"arguments":[{"hexValue":"726567697374657220612073797374656d626f756e642064656c65676174696f6e","id":135821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3659:35:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_21df7fcd4cd4c86bbb9480ea7a308ceed3582004c5112b61c86ca150ef4797f8","typeString":"literal_string \"register a systembound delegation\""},"value":"register a systembound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_21df7fcd4cd4c86bbb9480ea7a308ceed3582004c5112b61c86ca150ef4797f8","typeString":"literal_string \"register a systembound delegation\""}],"id":135820,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3644:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3644:51:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135823,"nodeType":"ExpressionStatement","src":"3644:51:203"},{"expression":{"arguments":[{"id":135827,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"3733:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135828,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122306,"src":"3750:22:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135831,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122205,"src":"3795:28:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemboundDelegationControl_$122205_$","typeString":"type(contract SystemboundDelegationControl)"}},"id":135832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3824:14:203","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":122204,"src":"3795:43:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function SystemboundDelegationControl.initDelegation(address,ResourceId,uint256)"}},{"components":[{"id":135833,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"3841:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135834,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"3852:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"32","id":135835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3862:1:203","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":135836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3840:24:203","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_rational_2_by_1_$","typeString":"tuple(address,ResourceId,int_const 2)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function SystemboundDelegationControl.initDelegation(address,ResourceId,uint256)"},{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_rational_2_by_1_$","typeString":"tuple(address,ResourceId,int_const 2)"}],"expression":{"id":135829,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3780:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3784:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"3780:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3780:85:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135824,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"3701:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3707:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"3701:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":135838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3701:170:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135839,"nodeType":"ExpressionStatement","src":"3701:170:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135840,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3877:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3877:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135842,"nodeType":"ExpressionStatement","src":"3877:14:203"},{"expression":{"arguments":[{"id":135846,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"3974:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135843,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3965:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3968:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"3965:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3965:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135848,"nodeType":"ExpressionStatement","src":"3965:19:203"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6e","id":135850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4005:44:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_f40209918385b29b5009bd87849d768acbbb7f73f1ba1c7b889be488acf74997","typeString":"literal_string \"call a system via a systembound delegation\""},"value":"call a system via a systembound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f40209918385b29b5009bd87849d768acbbb7f73f1ba1c7b889be488acf74997","typeString":"literal_string \"call a system via a systembound delegation\""}],"id":135849,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3990:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3990:60:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135852,"nodeType":"ExpressionStatement","src":"3990:60:203"},{"assignments":[135854],"declarations":[{"constant":false,"id":135854,"mutability":"mutable","name":"returnData","nameLocation":"4069:10:203","nodeType":"VariableDeclaration","scope":135957,"src":"4056:23:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135853,"name":"bytes","nodeType":"ElementaryTypeName","src":"4056:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135866,"initialValue":{"arguments":[{"id":135857,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"4097:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135858,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"4108:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135861,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"4133:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4149:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"4133:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135863,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4160:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135859,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4118:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135860,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4122:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"4118:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135855,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"4082:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4088:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"4082:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4082:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4056:108:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135867,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4170:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4170:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135869,"nodeType":"ExpressionStatement","src":"4170:14:203"},{"assignments":[135871],"declarations":[{"constant":false,"id":135871,"mutability":"mutable","name":"returnedAddress","nameLocation":"4198:15:203","nodeType":"VariableDeclaration","scope":135957,"src":"4190:23:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135870,"name":"address","nodeType":"ElementaryTypeName","src":"4190:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135879,"initialValue":{"arguments":[{"id":135874,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135854,"src":"4227:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4240:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135875,"name":"address","nodeType":"ElementaryTypeName","src":"4240:7:203","typeDescriptions":{}}}],"id":135877,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4239:9:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135872,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4216:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135873,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4220:6:203","memberName":"decode","nodeType":"MemberAccess","src":"4216:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4216:33:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"4190:59:203"},{"expression":{"arguments":[{"id":135881,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135871,"src":"4331:15:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135882,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"4348:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135880,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"4322:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:36:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135884,"nodeType":"ExpressionStatement","src":"4322:36:203"},{"expression":{"arguments":[{"id":135888,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"4453:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135885,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"4444:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4447:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"4444:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4444:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135890,"nodeType":"ExpressionStatement","src":"4444:19:203"},{"expression":{"id":135907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135891,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135854,"src":"4469:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135894,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"4497:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135895,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"4508:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135898,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"4533:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4549:4:203","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":38319,"src":"4533:20:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$38275_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"}},{"components":[{"arguments":[{"hexValue":"30","id":135902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4564:1:203","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4556:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":135900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4556:7:203","typeDescriptions":{}}},"id":135903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":135904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4555:12:203","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$38275_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":135896,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4518:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4522:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"4518:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4518:50:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135892,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"4482:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4488:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"4482:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4482:87:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4469:100:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":135908,"nodeType":"ExpressionStatement","src":"4469:100:203"},{"assignments":[135911],"declarations":[{"constant":false,"id":135911,"mutability":"mutable","name":"returnedStruct","nameLocation":"4604:14:203","nodeType":"VariableDeclaration","scope":135957,"src":"4575:43:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_memory_ptr","typeString":"struct WorldTestSystemReturn"},"typeName":{"id":135910,"nodeType":"UserDefinedTypeName","pathNode":{"id":135909,"name":"WorldTestSystemReturn","nameLocations":["4575:21:203"],"nodeType":"IdentifierPath","referencedDeclaration":38275,"src":"4575:21:203"},"referencedDeclaration":38275,"src":"4575:21:203","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_storage_ptr","typeString":"struct WorldTestSystemReturn"}},"visibility":"internal"}],"id":135918,"initialValue":{"arguments":[{"id":135914,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135854,"src":"4632:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135915,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38275,"src":"4645:21:203","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$38275_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"id":135916,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4644:23:203","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$38275_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$38275_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}],"expression":{"id":135912,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4621:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4625:6:203","memberName":"decode","nodeType":"MemberAccess","src":"4621:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4621:47:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"nodeType":"VariableDeclarationStatement","src":"4575:93:203"},{"expression":{"arguments":[{"expression":{"id":135920,"name":"returnedStruct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135911,"src":"4750:14:203","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"id":135921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4765:6:203","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":38272,"src":"4750:21:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135922,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"4773:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135919,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"4741:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4741:42:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135924,"nodeType":"ExpressionStatement","src":"4741:42:203"},{"expression":{"arguments":[{"id":135928,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"4849:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135925,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"4840:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4843:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"4840:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4840:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135930,"nodeType":"ExpressionStatement","src":"4840:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":135936,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"4904:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":135937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4917:24:203","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22514,"src":"4904:37:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":135938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4942:8:203","memberName":"selector","nodeType":"MemberAccess","src":"4904:46:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":135939,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"4952:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135940,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"4963:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135934,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4881:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4885:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4881:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:92:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135931,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"4865:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"4865:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":135942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:109:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135943,"nodeType":"ExpressionStatement","src":"4865:109:203"},{"expression":{"arguments":[{"id":135947,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"4995:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135948,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"5006:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135951,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"5031:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5047:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"5031:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135953,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5058:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135949,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5016:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5020:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"5016:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5016:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135944,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"4980:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4986:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"4980:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":135956,"nodeType":"ExpressionStatement","src":"4980:82:203"}]},"functionSelector":"d671f65b","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromSystemDelegation","nameLocation":"3484:28:203","parameters":{"id":135812,"nodeType":"ParameterList","parameters":[],"src":"3512:2:203"},"returnParameters":{"id":135813,"nodeType":"ParameterList","parameters":[],"src":"3522:0:203"},"scope":136174,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136107,"nodeType":"FunctionDefinition","src":"5071:1492:203","nodes":[],"body":{"id":136106,"nodeType":"Block","src":"5121:1442:203","nodes":[],"statements":[{"assignments":[135962],"declarations":[{"constant":false,"id":135962,"mutability":"mutable","name":"maxTimestamp","nameLocation":"5135:12:203","nodeType":"VariableDeclaration","scope":136106,"src":"5127:20:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":135961,"name":"uint256","nodeType":"ElementaryTypeName","src":"5127:7:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":135964,"initialValue":{"hexValue":"34323432","id":135963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5150:4:203","typeDescriptions":{"typeIdentifier":"t_rational_4242_by_1","typeString":"int_const 4242"},"value":"4242"},"nodeType":"VariableDeclarationStatement","src":"5127:27:203"},{"expression":{"arguments":[{"hexValue":"31","id":135968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5207:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":135965,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"5199:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5202:4:203","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":61542,"src":"5199:7:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":135969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135970,"nodeType":"ExpressionStatement","src":"5199:10:203"},{"expression":{"arguments":[{"id":135974,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"5266:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135971,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"5257:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5260:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"5257:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5257:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135976,"nodeType":"ExpressionStatement","src":"5257:19:203"},{"expression":{"arguments":[{"hexValue":"726567697374657220612074696d65626f756e642064656c65676174696f6e","id":135978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5297:33:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_b870c0af94dffd3a0feb69bdce5240693ab9885f0519d461ae7512ecc1dc3be8","typeString":"literal_string \"register a timebound delegation\""},"value":"register a timebound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b870c0af94dffd3a0feb69bdce5240693ab9885f0519d461ae7512ecc1dc3be8","typeString":"literal_string \"register a timebound delegation\""}],"id":135977,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5282:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:49:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135980,"nodeType":"ExpressionStatement","src":"5282:49:203"},{"expression":{"arguments":[{"id":135984,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"5369:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135985,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122324,"src":"5386:20:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135988,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122262,"src":"5429:26:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TimeboundDelegationControl_$122262_$","typeString":"type(contract TimeboundDelegationControl)"}},"id":135989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5456:14:203","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":122261,"src":"5429:41:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function TimeboundDelegationControl.initDelegation(address,uint256)"}},{"components":[{"id":135990,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"5473:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135991,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135962,"src":"5484:12:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":135992,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5472:25:203","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function TimeboundDelegationControl.initDelegation(address,uint256)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":135986,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5414:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5418:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"5414:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5414:84:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135981,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"5337:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5343:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"5337:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":135994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:167:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135995,"nodeType":"ExpressionStatement","src":"5337:167:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135996,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5510:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5510:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135998,"nodeType":"ExpressionStatement","src":"5510:14:203"},{"expression":{"arguments":[{"id":136002,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"5607:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135999,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"5598:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5601:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"5598:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5598:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136004,"nodeType":"ExpressionStatement","src":"5598:19:203"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e","id":136006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5638:42:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_93de4703438ef657447a5305bfa94d1465e07b6821152bf759261ed1d08b050b","typeString":"literal_string \"call a system via a timebound delegation\""},"value":"call a system via a timebound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_93de4703438ef657447a5305bfa94d1465e07b6821152bf759261ed1d08b050b","typeString":"literal_string \"call a system via a timebound delegation\""}],"id":136005,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5623:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":136007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:58:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136008,"nodeType":"ExpressionStatement","src":"5623:58:203"},{"assignments":[136010],"declarations":[{"constant":false,"id":136010,"mutability":"mutable","name":"returnData","nameLocation":"5700:10:203","nodeType":"VariableDeclaration","scope":136106,"src":"5687:23:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":136009,"name":"bytes","nodeType":"ElementaryTypeName","src":"5687:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":136022,"initialValue":{"arguments":[{"id":136013,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"5728:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136014,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"5739:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136017,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"5764:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":136018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5780:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"5764:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":136019,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5791:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136015,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5749:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5753:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"5749:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5749:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136011,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"5713:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5719:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"5713:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5713:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5687:108:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":136023,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5801:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":136024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136025,"nodeType":"ExpressionStatement","src":"5801:14:203"},{"assignments":[136027],"declarations":[{"constant":false,"id":136027,"mutability":"mutable","name":"returnedAddress","nameLocation":"5829:15:203","nodeType":"VariableDeclaration","scope":136106,"src":"5821:23:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136026,"name":"address","nodeType":"ElementaryTypeName","src":"5821:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":136035,"initialValue":{"arguments":[{"id":136030,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136010,"src":"5858:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":136032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5871:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":136031,"name":"address","nodeType":"ElementaryTypeName","src":"5871:7:203","typeDescriptions":{}}}],"id":136033,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5870:9:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":136028,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5847:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136029,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5851:6:203","memberName":"decode","nodeType":"MemberAccess","src":"5847:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":136034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5847:33:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5821:59:203"},{"expression":{"arguments":[{"id":136037,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136027,"src":"5962:15:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136038,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"5979:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":136036,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"5953:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":136039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:36:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136040,"nodeType":"ExpressionStatement","src":"5953:36:203"},{"expression":{"arguments":[{"id":136044,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135962,"src":"6089:12:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":136041,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6081:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6084:4:203","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":61542,"src":"6081:7:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":136045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6081:21:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136046,"nodeType":"ExpressionStatement","src":"6081:21:203"},{"expression":{"arguments":[{"id":136050,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"6117:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136047,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6108:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6111:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"6108:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136052,"nodeType":"ExpressionStatement","src":"6108:19:203"},{"expression":{"arguments":[{"id":136056,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"6148:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136057,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"6159:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136060,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"6184:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":136061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6200:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"6184:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":136062,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6211:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136058,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6169:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136059,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6173:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"6169:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6169:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136053,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"6133:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6139:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"6133:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":136065,"nodeType":"ExpressionStatement","src":"6133:82:203"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136069,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135962,"src":"6313:12:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6328:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6313:16:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":136066,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6305:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6308:4:203","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":61542,"src":"6305:7:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":136072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6305:25:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136073,"nodeType":"ExpressionStatement","src":"6305:25:203"},{"expression":{"arguments":[{"id":136077,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"6345:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136074,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6336:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6339:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"6336:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136079,"nodeType":"ExpressionStatement","src":"6336:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":136085,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"6400:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":136086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6413:24:203","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22514,"src":"6400:37:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":136087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6438:8:203","memberName":"selector","nodeType":"MemberAccess","src":"6400:46:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":136088,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"6448:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136089,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"6459:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136083,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6377:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6381:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6377:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":136090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6377:92:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136080,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6361:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6364:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"6361:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":136091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6361:109:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136092,"nodeType":"ExpressionStatement","src":"6361:109:203"},{"expression":{"arguments":[{"id":136096,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"6491:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136097,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135640,"src":"6502:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136100,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"6527:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":136101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6543:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"6527:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":136102,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6554:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136098,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6512:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6516:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"6512:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6512:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136093,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"6476:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6482:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"6476:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6476:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":136105,"nodeType":"ExpressionStatement","src":"6476:82:203"}]},"functionSelector":"89403ab3","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromTimeboundDelegation","nameLocation":"5080:31:203","parameters":{"id":135959,"nodeType":"ParameterList","parameters":[],"src":"5111:2:203"},"returnParameters":{"id":135960,"nodeType":"ParameterList","parameters":[],"src":"5121:0:203"},"scope":136174,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136173,"nodeType":"FunctionDefinition","src":"6567:861:203","nodes":[],"body":{"id":136172,"nodeType":"Block","src":"6635:793:203","nodes":[],"statements":[{"assignments":[136112],"declarations":[{"constant":false,"id":136112,"mutability":"mutable","name":"noDelegationControlSystem","nameLocation":"6713:25:203","nodeType":"VariableDeclaration","scope":136172,"src":"6706:32:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"},"typeName":{"id":136111,"nodeType":"UserDefinedTypeName","pathNode":{"id":136110,"name":"System","nameLocations":["6706:6:203"],"nodeType":"IdentifierPath","referencedDeclaration":22727,"src":"6706:6:203"},"referencedDeclaration":22727,"src":"6706:6:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}},"visibility":"internal"}],"id":136117,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":136115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"6741:10:203","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_System_$22727_$","typeString":"function () returns (contract System)"},"typeName":{"id":136114,"nodeType":"UserDefinedTypeName","pathNode":{"id":136113,"name":"System","nameLocations":["6745:6:203"],"nodeType":"IdentifierPath","referencedDeclaration":22727,"src":"6745:6:203"},"referencedDeclaration":22727,"src":"6745:6:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}}},"id":136116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6741:12:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}},"nodeType":"VariableDeclarationStatement","src":"6706:47:203"},{"assignments":[136120],"declarations":[{"constant":false,"id":136120,"mutability":"mutable","name":"noDelegationControlId","nameLocation":"6770:21:203","nodeType":"VariableDeclaration","scope":136172,"src":"6759:32:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136119,"nodeType":"UserDefinedTypeName","pathNode":{"id":136118,"name":"ResourceId","nameLocations":["6759:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"6759:10:203"},"referencedDeclaration":2782,"src":"6759:10:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136127,"initialValue":{"arguments":[{"id":136123,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38079,"src":"6836:15:203","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":136124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6870:11:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"6e6f44656c65676174696f6e","id":136125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6895:14:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3618eed64dac34fd8772db6ba7c85c8f42265bcb4045d386eac06aef5980c55","typeString":"literal_string \"noDelegation\""},"value":"noDelegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},{"typeIdentifier":"t_stringliteral_a3618eed64dac34fd8772db6ba7c85c8f42265bcb4045d386eac06aef5980c55","typeString":"literal_string \"noDelegation\""}],"expression":{"id":136121,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24290,"src":"6794:18:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24290_$","typeString":"type(library WorldResourceIdLib)"}},"id":136122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6813:6:203","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24218,"src":"6794:25:203","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":136126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["6828:6:203","6859:9:203","6889:4:203"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"6794:122:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"6759:157:203"},{"expression":{"arguments":[{"id":136131,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136120,"src":"6943:21:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":136132,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136112,"src":"6966:25:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}},{"hexValue":"74727565","id":136133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6993:4:203","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":136128,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"6922:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6928:14:203","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24645,"src":"6922:20:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_System_$22727_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract System,bool) external"}},"id":136134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6922:76:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136135,"nodeType":"ExpressionStatement","src":"6922:76:203"},{"expression":{"arguments":[{"id":136139,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135646,"src":"7121:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136136,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"7112:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7115:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"7112:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7112:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136141,"nodeType":"ExpressionStatement","src":"7112:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":136147,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"7192:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":136148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7205:27:203","memberName":"World_InterfaceNotSupported","nodeType":"MemberAccess","referencedDeclaration":22531,"src":"7192:40:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4) pure"}},"id":136149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7233:8:203","memberName":"selector","nodeType":"MemberAccess","src":"7192:49:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"id":136152,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136112,"src":"7259:25:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}],"id":136151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7251:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":136150,"name":"address","nodeType":"ElementaryTypeName","src":"7251:7:203","typeDescriptions":{}}},"id":136153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7251:34:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":136155,"name":"IDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22347,"src":"7300:18:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDelegationControl_$22347_$","typeString":"type(contract IDelegationControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IDelegationControl_$22347_$","typeString":"type(contract IDelegationControl)"}],"id":136154,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7295:4:203","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":136156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7295:24:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IDelegationControl_$22347","typeString":"type(contract IDelegationControl)"}},"id":136157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7320:11:203","memberName":"interfaceId","nodeType":"MemberAccess","src":"7295:36:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":136145,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7160:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7164:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7160:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":136158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7160:179:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136142,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"7137:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7140:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"7137:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":136159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7137:208:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136160,"nodeType":"ExpressionStatement","src":"7137:208:203"},{"expression":{"arguments":[{"id":136164,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"7376:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136165,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136120,"src":"7387:21:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"hexValue":"31","id":136168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7420:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":136167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7410:9:203","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136166,"name":"bytes","nodeType":"ElementaryTypeName","src":"7414:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7410:12:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136161,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135631,"src":"7351:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7357:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"7351:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":136170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7351:72:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136171,"nodeType":"ExpressionStatement","src":"7351:72:203"}]},"functionSelector":"9d4218e6","implemented":true,"kind":"function","modifiers":[],"name":"testRegisterDelegationRevertInterfaceNotSupported","nameLocation":"6576:49:203","parameters":{"id":136108,"nodeType":"ParameterList","parameters":[],"src":"6625:2:203"},"returnParameters":{"id":136109,"nodeType":"ParameterList","parameters":[],"src":"6635:0:203"},"scope":136174,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":135621,"name":"Test","nameLocations":["1597:4:203"],"nodeType":"IdentifierPath","referencedDeclaration":60480,"src":"1597:4:203"},"id":135622,"nodeType":"InheritanceSpecifier","src":"1597:4:203"},{"baseName":{"id":135623,"name":"GasReporter","nameLocations":["1603:11:203"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1603:11:203"},"id":135624,"nodeType":"InheritanceSpecifier","src":"1603:11:203"}],"canonicalName":"StandardDelegationsModuleTest","contractDependencies":[22727,23867,36077,36132,36394,36570,36767,38479,122109],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[136174,226,60480,50939,50936,60429,56167,55877,55113,53059,52366,50873],"name":"StandardDelegationsModuleTest","nameLocation":"1564:29:203","scope":136175,"usedErrors":[],"usedEvents":[48587,48591,48595,48599,48603,48607,48611,48615,48621,48627,48635,48643,48649,48655,48661,48667,50961,50966,50971,50978,50985,50992]}],"license":"MIT"},"id":203}
|
1
|
+
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"testCallFromCallboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromSystemDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCallFromTimeboundDelegation","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556200005061737960f01b686e616d65737061636560b81b697465737453797374656d60b01b62000089565b602055602180546001600160a01b03199081166001179091556022805490911660021790553480156200008257600080fd5b50620000f6565b60006200009960706010620000ce565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b80820180821115620000f057634e487b7160e01b600052601160045260246000fd5b92915050565b6201ff1780620001076000396000f3fe60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a696040518060600160405280602881526020016201feb96028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f6040518060600160405280602181526020016201fe706021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a81526020016201fee1602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd96040518060600160405280602881526020016201fe916028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61767e806200376083390190565b611668806200adde83390190565b61028c806200c44683390190565b615368806200c6d283390190565b611c688062011a3a83390190565b61178f80620136a283390190565b610b388062014e3183390190565b6157b8806201596983390190565b614d4f806201b12183390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b6119f3806200306a83390190565b61192d8062004a5d83390190565b6112f4806200638a83390190565b60805160a05160c05160e051612f456200012560003960006106130152600061049101526000610310015260005050612f456000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004612a14565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004612a6c565b610203565b005b604051601f193601358152602001610096565b6100df610102366004612a6c565b610235565b6100a76106e9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe6106f3565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061023f6106e9565b9050610249610725565b610251610790565b6102596107ec565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526102ee90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161038c9250612b65565b600060405180830381855af49150503d80600081146103c7576040519150601f19603f3d011682016040523d82523d6000602084013e6103cc565b606091505b5091509150816103df576103df81610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261046f90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161050d9250612b65565b600060405180830381855af49150503d8060008114610548576040519150601f19603f3d011682016040523d82523d6000602084013e61054d565b606091505b509092509050816105615761056181610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105f190612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161068f9250612b65565b600060405180830381855af49150503d80600081146106ca576040519150601f19603f3d011682016040523d82523d6000602084013e6106cf565b606091505b509092509050816106e3576106e381610850565b50505050565b60006101fe610858565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107225750335b90565b61078e7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610771610862565b6107796109aa565b6107816109e4565b610789610b66565b610bdd565b565b61078e7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000006107dc610cb1565b6107e46109aa565b610781610d76565b61078e7f7462000000000000000000000000000054696d65626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610838610e96565b6108406109aa565b610848610f15565b610789610fdf565b805160208201fd5b60006101fe611056565b60408051600480825260a082019092526000918291906020820160808036833701905050905060618160008151811061089d5761089d612b81565b602002602001019060c58111156108b6576108b6612b97565b908160c58111156108c9576108c9612b97565b815250506061816001815181106108e2576108e2612b81565b602002602001019060c58111156108fb576108fb612b97565b908160c581111561090e5761090e612b97565b81525050605f8160028151811061092757610927612b81565b602002602001019060c581111561094057610940612b97565b908160c581111561095357610953612b97565b81525050605f8160038151811061096c5761096c612b81565b602002602001019060c581111561098557610985612b97565b908160c581111561099857610998612b97565b9052506109a4816110a2565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061096c5761096c612b81565b60408051600480825260a08201909252606091816020015b60608152602001906001900390816109fc5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610a5c57610a5c612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610ab057610ab0612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b0457610b04612b81565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610b5857610b58612b81565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b7d5790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b6000610be7611056565b90503073ffffffffffffffffffffffffffffffffffffffff821603610c1957610c14878787878787611266565b610ca8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610c75908a908a908a908a908a908a90600401612c33565b600060405180830381600087803b158015610c8f57600080fd5b505af1158015610ca3573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610cec57610cec612b81565b602002602001019060c5811115610d0557610d05612b97565b908160c5811115610d1857610d18612b97565b81525050606181600181518110610d3157610d31612b81565b602002602001019060c5811115610d4a57610d4a612b97565b908160c5811115610d5d57610d5d612b97565b81525050605f8160028151811061096c5761096c612b81565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610d8e5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610dee57610dee612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610e4257610e42612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b5857610b58612b81565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610ed057610ed0612b81565b602002602001019060c5811115610ee957610ee9612b97565b908160c5811115610efc57610efc612b97565b8152505060618160018151811061096c5761096c612b81565b6040805160028082526060828101909352816020015b6060815260200190600190039081610f2b5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f8b57610f8b612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610b5857610b58612b81565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ff65790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061109d573391505090565b919050565b6000601c825111156110d5578151604051635318beb960e01b81526004016110cc91815260200190565b60405180910390fd5b60008080805b85518110156111b05760006111198783815181106110fb576110fb612b81565b602002602001015160c581111561111457611114612b97565b6116fa565b90508060000361112e57600190920191611166565b8215611166576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061118757611187612b81565b602002602001015160c58111156111a0576111a0612b97565b901b9490941793506001016110db565b5060058111156111d657604051635318beb960e01b8152600481018290526024016110cc565b845181900360086111e960026020612c93565b6111f39190612ca6565b83901b93909317926008600161120b60026020612c93565b6112159190612c93565b61121f9190612ca6565b81901b9390931792600860018061123860026020612c93565b6112429190612c93565b61124c9190612c93565b6112569190612ca6565b9190911b92909217949350505050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016148015906112fa57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15611376577f7462000000000000000000000000000000000000000000000000000000000000868760405160200161133491815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526110cc939291600401612cbd565b61137f8561175a565b61138a8460016119a1565b6113958360006119a1565b60e084901c60e885901c0160ff168251146113f55760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff168151146114555760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146114cd5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b6114d685611b3d565b6114df84611b3d565b14611531576114ed85611b3d565b6114f684611b3d565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b61153a85611b6f565b61154384611b6f565b146115955761155185611b6f565b61155a84611b6f565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60005b6115a186611b3d565b811015611637576115c66115b58583611b8c565b60c581111561111457611114612b97565b6008601b8390030287901c60ff161461162f576008601b8290030286901c60ff166115f46115b58684611b8c565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b600101611598565b5061164186611bb4565b1561169b57858660405160200161165a91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526110cc9291600401612cfe565b6116e786868686866040516020016116b39190612d17565b604051602081830303815290604052866040516020016116d39190612d17565b604051602081830303815290604052611c59565b6116f2866001611d3c565b505050505050565b6000808260c581111561170f5761170f612b97565b60ff169050606181101561172957601f1660010192915050565b60618360c581111561173d5761173d612b97565b0361174b5750601492915050565b50600092915050565b50919050565b80611791576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061179c82611b6f565b905060058111156117e3576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016110cc565b60006117ee83611b3d565b905060006117fc8383612d2a565b9050601c811115611843576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016110cc565b6000805b838110156118ee5760ff601b82900360080287901c16600081900361189b576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b60208111156118d9576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b6118e38184612d2a565b925050600101611847565b506118f885611dfa565b81146119445761190785611dfa565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016110cc565b825b601c8110156116f25760ff601b82900360080287901c168015611998576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b50600101611946565b801580156119ad575081155b156119ce57604051635318beb960e01b8152600060048201526024016110cc565b60006119d983611b6f565b90506005811115611a0057604051635318beb960e01b8152600481018290526024016110cc565b6000611a0b84611b3d565b90506000611a198383612d2a565b9050601c811115611a4057604051635318beb960e01b8152600481018290526024016110cc565b6000805b83811015611aac576000611a5b6115b58984611b8c565b905080600003611a97576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa18184612d2a565b925050600101611a44565b50611ab686611dfa565b8114611ae157611ac586611dfa565b604051635318beb960e01b81526004016110cc91815260200190565b825b82811015610ca8576000611afa6115b58984611b8c565b90508015611b34576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611ae3565b600060086001611b4f60026020612c93565b611b599190612c93565b611b639190612ca6565b8260ff911c1692915050565b60006008600180611b8260026020612c93565b611b4f9190612c93565b6000601b8290036008028360ff911c1660c5811115611bad57611bad612b97565b9392505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611bed57611bed612b81565b60209081029190910101526000611c457f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611e1d565b9050611c518160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611c908484611e53565b90506000611c9e8585611e70565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611cd857611cd8612b81565b6020908102919091010152611d307f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611e9c565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611d7257611d72612b81565b602002602001018181525050611df57f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611dc091151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006121d5565b505050565b60006008611e0a60026020612c93565b611e149190612ca6565b9190911c919050565b6000611e4a611e2c86866121f1565b60ff858116601b0360080285901c16611e458587612247565b612280565b95945050505050565b8151815160009181810160389190911b1760609190911b17611bad565b60608282604051602001611e85929190612d3d565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611f2857857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611f1b9493929190612da8565b60405180910390a26116f2565b6000611f33876122d1565b905060005b815181101561200c576000828281518110611f5557611f55612b81565b60200260200101519050611f816001826affffffffffffffffffffff191661235a90919063ffffffff16565b15612003576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611fd0908c908c908c908c908c908c90600401612df2565b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050505b50600101611f38565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516120439493929190612da8565b60405180910390a2600061205788886121f1565b9050600060208701905061206f826000895184612378565b600061207a85611b6f565b11156120fe57600061208c8a8a612437565b878155905060208601915060008060005b6120a688611b6f565b8160ff1610156120f9576120bb8d8d8361248d565b92506120d68a8260ff166028026038011c64ffffffffff1690565b91506120e58360008488612378565b6120ef8286612d2a565b945060010161209d565b505050505b60005b8351811015611d3057600084828151811061211e5761211e612b81565b6020026020010151905061214a6002826affffffffffffffffffffff191661235a90919063ffffffff16565b156121cc576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612199908e908e908e908e908e908e90600401612df2565b600060405180830381600087803b1580156121b357600080fd5b505af11580156121c7573d6000803e3d6000fd5b505050505b50600101612101565b6121ea85856121e48487612247565b8561250d565b5050505050565b60008282604051602001612206929190612e4b565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156122785761226e60ff601b83900360080287901c1683612d2a565b915060010161224c565b509392505050565b6000602082106122a6576020820484019350602082816122a2576122a2612e87565b0691505b508254600882021b602082900380841115612278576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061230b5761230b612b81565b602090810291909101015260006123437f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836127a8565b9050611c5161235582600084516127e2565b612870565b60008160ff168261236b8560581c90565b1660ff1614905092915050565b82156123f257602083106123a25760208304840193506020838161239e5761239e612e87565b0692505b82156123f25760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116123e35750506106e3565b50600194909401939182900391015b5b602082106124145780518455600190930192601f19909101906020016123f3565b81156106e3576000600019600884021c8554835182191691161785555050505050565b6000828260405160200161244c929190612e4b565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016124a2929190612e4b565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361259757837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161258a93929190612e9d565b60405180910390a26106e3565b60006125a385856121f1565b905060006125b0866122d1565b905060005b81518110156126855760008282815181106125d2576125d2612b81565b602002602001015190506125fe6004826affffffffffffffffffffff191661235a90919063ffffffff16565b1561267c576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612649908b908b908b908b90600401612eda565b600060405180830381600087803b15801561266357600080fd5b505af1158015612677573d6000803e3d6000fd5b505050505b506001016125b5565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516126ba93929190612e9d565b60405180910390a26126d5828565ffffffffffff1685612881565b60005b8151811015610ca85760008282815181106126f5576126f5612b81565b602002602001015190506127216008826affffffffffffffffffffff191661235a90919063ffffffff16565b1561279f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061276c908b908b908b908b90600401612eda565b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b505050505b506001016126d8565b6060611c516127b885858561248d565b60006127dd856127c88989612897565b9060ff166028026038011c64ffffffffff1690565b6128aa565b6000818311806127f25750835182115b1561282f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016110cc93929190612f13565b6020840161283d8482612d2a565b9050600061284b8585612c93565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611bad83601560006128cd565b611df5838383516128928560200190565b612378565b6000611bad6128a68484612437565b5490565b60405160208101601f19603f848401011660405282825261227885858584612948565b606060006128db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161290157612901612e87565b04905060405193506020840160208202810160405281855260005b8281101561293c578451871c82529387019360209091019060010161291c565b50505050509392505050565b82156129cf57602083106129725760208304840193506020838161296e5761296e612e87565b0692505b82156129cf5760208390036000818410156129955750600019600884021c61299f565b50600019600882021c5b8554600886021b8184511682198216178452508184116129c05750506106e3565b50600194909401939182900391015b5b602082106129f15783548152600190930192601f19909101906020016129d0565b81156106e3576000600019600884021c8251865482191691161782525050505050565b600060208284031215612a2657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215612a7e57600080fd5b813567ffffffffffffffff80821115612a9657600080fd5b818401915084601f830112612aaa57600080fd5b813581811115612abc57612abc612a56565b604051601f8201601f19908116603f01168101908382118183101715612ae457612ae4612a56565b81604052828152876020848701011115612afd57600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156117545760001960209190910360031b1b16919050565b60005b83811015612b5c578181015183820152602001612b44565b50506000910152565b60008251612b77818460208701612b41565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612bc5816020860160208601612b41565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612c2657601f19868403018952612c14838351612bad565b98840198925090830190600101612bf8565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612c5e60c0830185612bd9565b82810360a0840152612c708185612bd9565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee612c7d565b80820281158282048414176101ee576101ee612c7d565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611e4a6060830184612bad565b828152604060208201526000611c516040830184612bad565b602081526000611bad6020830184612bd9565b808201808211156101ee576101ee612c7d565b60008351612d4f818460208801612b41565b835190830190612d63818360208801612b41565b01949350505050565b60008151808452602080850194506020840160005b83811015612d9d57815187529582019590820190600101612d81565b509495945050505050565b608081526000612dbb6080830187612d6c565b8281036020840152612dcd8187612bad565b90508460408401528281036060840152612de78185612bad565b979650505050505050565b86815260c060208201526000612e0b60c0830188612d6c565b8281036040840152612e1d8188612bad565b90508560608401528281036080840152612e378186612bad565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612e7a57815184529284019290840190600101612e5e565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612eb06060830186612d6c565b65ffffffffffff851660208401528281036040840152612ed08185612bad565b9695505050505050565b848152608060208201526000612ef36080830186612d6c565b65ffffffffffff851660408401528281036060840152612de78185612bad565b606081526000612f266060830186612bad565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506119d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a61008536600461152b565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611627565b6101f6565b6100e56100e036600461167e565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b87856103dc565b600192505050610261565b801561025a5760001901610231866102526101e7565b8785856104c7565b6000925050505b9392505050565b6102836102736101e7565b85858580519060200120856104c7565b50505050565b60006101f16105fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376116dd565b6020026020010181815250508381600281518110610357576103576116dd565b6020026020010181815250508281600381518110610377576103776116dd565b602090810291909101015260006103cf7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610606565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061041f5761041f6116dd565b602002602001018181525050836001600160a01b031660001b8160018151811061044b5761044b6116dd565b602002602001018181525050828160028151811061046b5761046b6116dd565b602002602001018181525050818160038151811061048b5761048b6116dd565b60209081029190910101526104c07f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106c3565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061050a5761050a6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610536576105366116dd565b6020026020010181815250508381600281518110610556576105566116dd565b6020026020010181815250508281600381518110610576576105766116dd565b6020026020010181815250506105f47f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105bf91815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061076c565b505050505050565b60006101f1610821565b600080610611610821565b9050306001600160a01b038216036106375761062f86868686610860565b9150506103d4565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061068290899089908990899060040161172f565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061175e565b60006106cd610821565b9050306001600160a01b038216036106ee576106e98383610896565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906107359086908690600401611777565b600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050505050565b6000610776610821565b9050306001600160a01b0382160361079a5761079586868686866108ad565b6105f4565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906107e790899089908990899089906004016117d6565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061085b573391505090565b919050565b600061088d61086f86866108c2565b60ff858116601b0360080285901c166108888587610918565b610951565b95945050505050565b6108a982826108a4856109a2565b610a27565b5050565b6104c085856108bc8487610918565b85610d26565b600082826040516020016108d792919061181d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109495761093f60ff601b83900360080287901c168361186f565b915060010161091d565b509392505050565b6000602082106109775760208204840193506020828161097357610973611882565b0691505b508254600882021b602082900380841115610949576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016109f157507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1610a1e7f746273746f72650000000000000000005461626c65730000000000000000000084610fc1565b60206000610951565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610aad57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610aa09190611898565b60405180910390a2505050565b6000610ab884610fdd565b905060005b8151811015610b8b576000828281518110610ada57610ada6116dd565b60200260200101519050610b066040826affffffffffffffffffffff191661106690919063ffffffff16565b15610b82576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b4f908990899089906004016118ab565b600060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050505b50600101610abd565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bbc9190611898565b60405180910390a26000610bd085856108c2565b9050610c29816000610be186611084565b67ffffffffffffffff811115610bf957610bf9611584565b6040519080825280601f01601f191660200182016040528015610c23576020820181803683370190505b506110a7565b6000610c34846110bd565b1115610c55576000610c4686866110fa565b9050610c53816020611150565b505b60005b82518110156105f4576000838281518110610c7557610c756116dd565b60200260200101519050610ca16080826affffffffffffffffffffff191661106690919063ffffffff16565b15610d1d576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610cea908a908a908a906004016118ab565b600060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050505b50600101610c58565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610db057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610da3939291906118d4565b60405180910390a2610283565b6000610dbc85856108c2565b90506000610dc986610fdd565b905060005b8151811015610e9e576000828281518110610deb57610deb6116dd565b60200260200101519050610e176004826affffffffffffffffffffff191661106690919063ffffffff16565b15610e95576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e62908b908b908b908b90600401611911565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505050505b50600101610dce565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610ed3939291906118d4565b60405180910390a2610eee828565ffffffffffff16856110a7565b60005b8151811015610763576000828281518110610f0e57610f0e6116dd565b60200260200101519050610f3a6008826affffffffffffffffffffff191661106690919063ffffffff16565b15610fb8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f85908b908b908b908b90600401611911565b600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b505050505b50600101610ef1565b60408051602081018490529081018290526000906060016108d7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611017576110176116dd565b6020908102919091010152600061104f7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361118d565b90506103d461106182600084516111c7565b61125e565b60008160ff16826110778560581c90565b1660ff1614905092915050565b6000600861109460026020611955565b61109e9190611968565b9190911c919050565b6106e9838383516110b88560200190565b61126f565b600060086001806110d060026020611955565b6110da9190611955565b6110e49190611955565b6110ee9190611968565b8260ff911c1692915050565b6000828260405160200161110f92919061181d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061115f83601f61186f565b611169919061197f565b611173908461186f565b90505b808310156106e95760008355600183019250611176565b60606103d461119d85858561132e565b60006111c2856111ad89896113ae565b9060ff166028026038011c64ffffffffff1690565b6113c1565b6000818311806111d75750835182115b1561121d578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401611214939291906119a1565b60405180910390fd5b6020840161122b848261186f565b905060006112398585611955565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006113e4565b82156112e957602083106112995760208304840193506020838161129557611295611882565b0692505b82156112e95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112da575050610283565b50600194909401939182900391015b5b6020821061130b5780518455600190930192601f19909101906020016112ea565b8115610283576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161134392919061181d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102616113bd84846110fa565b5490565b60405160208101601f19603f84840101166040528282526109498585858461145f565b606060006113f28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161141857611418611882565b04905060405193506020840160208202810160405281855260005b82811015611453578451871c825293870193602090910190600101611433565b50505050509392505050565b82156114e657602083106114895760208304840193506020838161148557611485611882565b0692505b82156114e65760208390036000818410156114ac5750600019600884021c6114b6565b50600019600882021c5b8554600886021b8184511682198216178452508184116114d7575050610283565b50600194909401939182900391015b5b602082106115085783548152600190930192601f19909101906020016114e7565b8115610283576000600019600884021c8251865482191691161782525050505050565b60006020828403121561153d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b038116811461085b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115ab57600080fd5b813567ffffffffffffffff808211156115c6576115c6611584565b604051601f8301601f19908116603f011681019082821181831017156115ee576115ee611584565b8160405283815286602085880101111561160757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561163c57600080fd5b6116458461156d565b925060208401359150604084013567ffffffffffffffff81111561166857600080fd5b6116748682870161159a565b9150509250925092565b6000806000806080858703121561169457600080fd5b61169d8561156d565b935060208501359250604085013567ffffffffffffffff8111156116c057600080fd5b6116cc8782880161159a565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561172457815187529582019590820190600101611708565b509495945050505050565b84815260806020820152600061174860808301866116f3565b60ff949094166040830152506060015292915050565b60006020828403121561177057600080fd5b5051919050565b8281526040602082015260006103d460408301846116f3565b6000815180845260005b818110156117b65760208185018101518683018201520161179a565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117ef60a08301876116f3565b60ff86166040840152828103606084015261180a8186611790565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561184c57815184529284019290840190600101611830565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611859565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846116f3565b8381526060602082015260006118c460608301856116f3565b9050826040830152949350505050565b6060815260006118e760608301866116f3565b65ffffffffffff8516602084015282810360408401526119078185611790565b9695505050505050565b84815260806020820152600061192a60808301866116f3565b65ffffffffffff85166040840152828103606084015261194a8185611790565b979650505050505050565b818103818111156101e1576101e1611859565b80820281158282048414176101e1576101e1611859565b60008261199c57634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006119b46060830186611790565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061190d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046114b4565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611523565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046115ee565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103a3565b6001915050610254565b801561024e5760001901610227856102476101e7565b868461046d565b60009150505b9392505050565b61026e6102666101e7565b84848461046d565b505050565b60006101f1610581565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f5611621565b602002602001018181525050836001600160a01b031660001b8160018151811061032157610321611621565b602002602001018181525050828160028151811061034157610341611621565b602090810291909101015260006103997f7462000000000000000000000000000053797374656d626f756e6444656c656783837e2001002000000000000000000000000000000000000000000000000000000061058b565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b816000815181106103e6576103e6611621565b602002602001018181525050826001600160a01b031660001b8160018151811061041257610412611621565b602002602001018181525050818160028151811061043257610432611621565b60209081029190910101526104677f7462000000000000000000000000000053797374656d626f756e6444656c656782610650565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104b0576104b0611621565b602002602001018181525050836001600160a01b031660001b816001815181106104dc576104dc611621565b60200260200101818152505082816002815181106104fc576104fc611621565b60200260200101818152505061057a7f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161054591815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006106f4565b5050505050565b60006101f16107aa565b6000806105966107aa565b9050306001600160a01b038216036105bc576105b4868686866107e9565b915050610648565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610607908990899089908990600401611673565b602060405180830381865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906116a2565b949350505050565b600061065a6107aa565b9050306001600160a01b038216036106765761026e838361081f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106bd90869086906004016116bb565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050565b60006106fe6107aa565b9050306001600160a01b038216036107225761071d8686868686610836565b6107a2565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061076f908990899089908990899060040161171a565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806107e4573391505090565b919050565b60006108166107f8868661084b565b60ff858116601b0360080285901c1661081185876108a1565b6108da565b95945050505050565b610832828261082d8561092b565b6109b0565b5050565b61057a858561084584876108a1565b85610caf565b60008282604051602001610860929190611761565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108d2576108c860ff601b83900360080287901c16836117b3565b91506001016108a6565b509392505050565b600060208210610900576020820484019350602082816108fc576108fc6117c6565b0691505b508254600882021b6020829003808411156108d2576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161097a57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e16109a77f746273746f72650000000000000000005461626c65730000000000000000000084610f4a565b602060006108da565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610a3657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610a2991906117dc565b60405180910390a2505050565b6000610a4184610f66565b905060005b8151811015610b14576000828281518110610a6357610a63611621565b60200260200101519050610a8f6040826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610b0b576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610ad8908990899089906004016117ef565b600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050505b50600101610a46565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610b4591906117dc565b60405180910390a26000610b59858561084b565b9050610bb2816000610b6a8661100d565b67ffffffffffffffff811115610b8257610b8261150d565b6040519080825280601f01601f191660200182016040528015610bac576020820181803683370190505b50611030565b6000610bbd84611046565b1115610bde576000610bcf8686611083565b9050610bdc8160206110d9565b505b60005b82518110156107a2576000838281518110610bfe57610bfe611621565b60200260200101519050610c2a6080826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610ca6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610c73908a908a908a906004016117ef565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505b50600101610be1565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d3957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d2c93929190611818565b60405180910390a2610467565b6000610d45858561084b565b90506000610d5286610f66565b905060005b8151811015610e27576000828281518110610d7457610d74611621565b60200260200101519050610da06004826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610e1e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610deb908b908b908b908b9060040161184b565b600060405180830381600087803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b505050505b50600101610d57565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5c93929190611818565b60405180910390a2610e77828565ffffffffffff1685611030565b60005b81518110156106eb576000828281518110610e9757610e97611621565b60200260200101519050610ec36008826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610f41576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0e908b908b908b908b9060040161184b565b600060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050505b50600101610e7a565b6040805160208101849052908101829052600090606001610860565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fa057610fa0611621565b60209081029190910101526000610fd87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611116565b9050610648610fea8260008451611150565b6111e7565b60008160ff16826110008560581c90565b1660ff1614905092915050565b6000600861101d6002602061188f565b61102791906118a2565b9190911c919050565b61026e838383516110418560200190565b6111f8565b600060086001806110596002602061188f565b611063919061188f565b61106d919061188f565b61107791906118a2565b8260ff911c1692915050565b60008282604051602001611098929190611761565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206110e883601f6117b3565b6110f291906118b9565b6110fc90846117b3565b90505b8083101561026e57600083556001830192506110ff565b60606106486111268585856112b7565b600061114b856111368989611337565b9060ff166028026038011c64ffffffffff1690565b61134a565b6000818311806111605750835182115b156111a6578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119d939291906118db565b60405180910390fd5b602084016111b484826117b3565b905060006111c2858561188f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061136d565b821561127257602083106112225760208304840193506020838161121e5761121e6117c6565b0692505b82156112725760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611263575050610467565b50600194909401939182900391015b5b602082106112945780518455600190930192601f1990910190602001611273565b8115610467576000600019600884021c8554835182191691161785555050505050565b600083836040516020016112cc929190611761565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546113468484611083565b5490565b60405160208101601f19603f84840101166040528282526108d2858585846113e8565b6060600061137b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816113a1576113a16117c6565b04905060405193506020840160208202810160405281855260005b828110156113dc578451871c8252938701936020909101906001016113bc565b50505050509392505050565b821561146f57602083106114125760208304840193506020838161140e5761140e6117c6565b0692505b821561146f5760208390036000818410156114355750600019600884021c61143f565b50600019600882021c5b8554600886021b818451168219821617845250818411611460575050610467565b50600194909401939182900391015b5b602082106114915783548152600190930192601f1990910190602001611470565b8115610467576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b03811681146107e457600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561153857600080fd5b611541846114f6565b925060208401359150604084013567ffffffffffffffff8082111561156557600080fd5b818601915086601f83011261157957600080fd5b81358181111561158b5761158b61150d565b604051601f8201601f19908116603f011681019083821181831017156115b3576115b361150d565b816040528281528960208487010111156115cc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561160357600080fd5b61160c846114f6565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116685781518752958201959082019060010161164c565b509495945050505050565b84815260806020820152600061168c6080830186611637565b60ff949094166040830152506060015292915050565b6000602082840312156116b457600080fd5b5051919050565b8281526040602082015260006106486040830184611637565b6000815180845260005b818110156116fa576020818501810151868301820152016116de565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061173360a0830187611637565b60ff86166040840152828103606084015261174e81866116d4565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561179057815184529284019290840190600101611774565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e161179d565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611637565b8381526060602082015260006118086060830185611637565b9050826040830152949350505050565b60608152600061182b6060830186611637565b65ffffffffffff85166020840152828103604084015261039981856116d4565b8481526080602082015260006118646080830186611637565b65ffffffffffff85166040840152828103606084015261188481856116d4565b979650505050505050565b818103818111156101e1576101e161179d565b80820281158282048414176101e1576101e161179d565b6000826118d657634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006118ee60608301866116d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506112d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a610085366004610efb565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da366004610f77565b610203565b604051601f193601358152602001610096565b610105610100366004611042565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b8383610361565b5050565b60006101fe61046c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061106c565b602090810291909101015260006103587f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610476565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103af576103af61106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103e8576103e861106c565b6020026020010181815250506104667f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161043191815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610555565b50505050565b60006101fe610625565b600080610481610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104b4576104ac86868686610671565b91505061054d565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061050c9089908990899089906004016110be565b602060405180830381865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906110ed565b949350505050565b600061055f610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105905761058b868686868661069e565b61061d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906105ea908990899089908990899060040161114c565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066c573391505090565b919050565b600061035861068086866106ba565b60ff858116601b0360080285901c166106998587610710565b610749565b6106b385856106ad8487610710565b8561079a565b5050505050565b600082826040516020016106cf929190611193565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107415761073760ff601b83900360080287901c16836111e5565b9150600101610715565b509392505050565b60006020821061076f5760208204840193506020828161076b5761076b6111f8565b0691505b508254600882021b602082900380841115610741576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361082457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108179392919061120e565b60405180910390a2610466565b600061083085856106ba565b9050600061083d86610a3e565b905060005b815181101561091257600082828151811061085f5761085f61106c565b6020026020010151905061088b6004826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610909576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906108d6908b908b908b908b9060040161124b565b600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050505b50600101610842565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109479392919061120e565b60405180910390a2610962828565ffffffffffff1685610ae5565b60005b8151811015610a355760008282815181106109825761098261106c565b602002602001015190506109ae6008826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610a2c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906109f9908b908b908b908b9060040161124b565b600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b505050505b50600101610965565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7857610a7861106c565b60209081029190910101526000610ab07f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b00565b905061054d610ac28260008451610b3a565b610bd1565b60008160ff1682610ad88560581c90565b1660ff1614905092915050565b610afb83838351610af68560200190565b610be9565b505050565b606061054d610b10858585610ca8565b6000610b3585610b208989610d28565b9060ff166028026038011c64ffffffffff1690565b610d3b565b600081831180610b4a5750835182115b15610b90578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b879392919061128f565b60405180910390fd5b60208401610b9e84826111e5565b90506000610bac85856112b4565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610be28360156000610d5e565b9392505050565b8215610c635760208310610c1357602083048401935060208381610c0f57610c0f6111f8565b0692505b8215610c635760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c54575050610466565b50600194909401939182900391015b5b60208210610c855780518455600190930192601f1990910190602001610c64565b8115610466576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610cbd929190611193565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610be2610d378484610dd9565b5490565b60405160208101601f19603f848401011660405282825261074185858584610e2f565b60606000610d6c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d9257610d926111f8565b04905060405193506020840160208202810160405281855260005b82811015610dcd578451871c825293870193602090910190600101610dad565b50505050509392505050565b60008282604051602001610dee929190611193565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610eb65760208310610e5957602083048401935060208381610e5557610e556111f8565b0692505b8215610eb6576020839003600081841015610e7c5750600019600884021c610e86565b50600019600882021c5b8554600886021b818451168219821617845250818411610ea7575050610466565b50600194909401939182900391015b5b60208210610ed85783548152600190930192601f1990910190602001610eb7565b8115610466576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f0d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610be257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461066c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610f8c57600080fd5b610f9584610f3d565b925060208401359150604084013567ffffffffffffffff80821115610fb957600080fd5b818601915086601f830112610fcd57600080fd5b813581811115610fdf57610fdf610f61565b604051601f8201601f19908116603f0116810190838211818310171561100757611007610f61565b8160405282815289602084870101111561102057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561105557600080fd5b61105e83610f3d565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156110b357815187529582019590820190600101611097565b509495945050505050565b8481526080602082015260006110d76080830186611082565b60ff949094166040830152506060015292915050565b6000602082840312156110ff57600080fd5b5051919050565b6000815180845260005b8181101561112c57602081850181015186830182015201611110565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061116560a0830187611082565b60ff8616604084015282810360608401526111808186611106565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156111c2578151845292840192908401906001016111a6565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6111cf565b634e487b7160e01b600052601260045260246000fd5b6060815260006112216060830186611082565b65ffffffffffff8516602084015282810360408401526112418185611106565b9695505050505050565b8481526080602082015260006112646080830186611082565b65ffffffffffff8516604084015282810360608401526112848185611106565b979650505050505050565b6060815260006112a26060830186611106565b60208301949094525060400152919050565b818103818111156101ee576101ee6111cf56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611648806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c146102b6578063ea29e3ba146102cb576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611165565b6102e0565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610379565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611233565b610388565b6040516101699190611300565b3480156101e557600080fd5b506101f96101f4366004611313565b61040c565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610559565b34801561023c57600080fd5b5061025061024b3660046113ad565b610563565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046113c6565b6105ad565b3480156102ad57600080fd5b506101876105ea565b3480156102c257600080fd5b506101876105f4565b3480156102d757600080fd5b506101f96105fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103836106ea565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103b2919061140f565b600060405180830381855af49150503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50915091508161040457805181602001fd5b949350505050565b60408051600080825260208201909252906104487f7462000000000000000000000000000000000000000000000000000000000000868661071c565b9050306104536107a3565b73ffffffffffffffffffffffffffffffffffffffff16036104af576104aa81838560405160200161048b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107ef565b610552565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104e591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161051f959493929190611467565b600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050505b5050505050565b60006103836107a3565b6040805180820190915260008082526020820152604051806040016040528061058a610379565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105e19190611300565b60405180910390fd5b6000610383610379565b6000610383610559565b306106076107a3565b73ffffffffffffffffffffffffffffffffffffffff160361068b577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610681906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106819060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107195750335b90565b600061072a607060106114ce565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107ea573391505090565b919050565b61055285858585856108008b610805565b61088a565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161085457507e60030220202000000000000000000000000000000000000000000000000000919050565b6103736108817f746273746f72650000000000000000005461626c65730000000000000000000084610bd0565b60206000610c29565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361091657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161090994939291906114e1565b60405180910390a2610bc8565b600061092187610c7b565b905060005b81518110156109fa5760008282815181106109435761094361152b565b6020026020010151905061096f6001826affffffffffffffffffffff1916610d0490919063ffffffff16565b156109f1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109be908c908c908c908c908c908c90600401611541565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b50600101610926565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a3194939291906114e1565b60405180910390a26000610a458888610d22565b90506000602087019050610a5d826000895184610d37565b6000610a6885610df5565b1115610aec576000610a7a8a8a610e32565b878155905060208601915060008060005b610a9488610df5565b8160ff161015610ae757610aa98d8d83610e88565b9250610ac48a8260ff166028026038011c64ffffffffff1690565b9150610ad38360008488610d37565b610add82866114ce565b9450600101610a8b565b505050505b60005b8351811015610bc3576000848281518110610b0c57610b0c61152b565b60200260200101519050610b386002826affffffffffffffffffffff1916610d0490919063ffffffff16565b15610bba576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610b87908e908e908e908e908e908e90600401611541565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050505b50600101610aef565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c4f57602082048401935060208281610c4b57610c4b61159a565b0691505b508254600882021b602082900380841115610c73576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610cb557610cb561152b565b60209081029190910101526000610ced7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f08565b9050610404610cff8260008451610f42565b610fd0565b60008160ff1682610d158560581c90565b1660ff1614905092915050565b60008282604051602001610be89291906115b0565b8215610db15760208310610d6157602083048401935060208381610d5d57610d5d61159a565b0692505b8215610db15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610da2575050610def565b50600194909401939182900391015b5b60208210610dd35780518455600190930192601f1990910190602001610db2565b8115610def5783548151600019600885021c9182169119161784555b50505050565b60006008600180610e08600260206115ec565b610e1291906115ec565b610e1c91906115ec565b610e2691906115ff565b8260ff911c1692915050565b60008282604051602001610e479291906115b0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610e9d9291906115b0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6060610404610f18858585610e88565b6000610f3d85610f288989610fe8565b9060ff166028026038011c64ffffffffff1690565b610ffb565b600081831180610f525750835182115b15610f8f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105e193929190611616565b60208401610f9d84826114ce565b90506000610fab85856115ec565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610fe1836015600061101e565b9392505050565b6000610fe1610ff78484610e32565b5490565b60405160208101601f19603f8484010116604052828252610c7385858584611099565b6060600061102c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110525761105261159a565b04905060405193506020840160208202810160405281855260005b8281101561108d578451871c82529387019360209091019060010161106d565b50505050509392505050565b821561112057602083106110c3576020830484019350602083816110bf576110bf61159a565b0692505b82156111205760208390036000818410156110e65750600019600884021c6110f0565b50600019600882021c5b8554600886021b818451168219821617845250818411611111575050610def565b50600194909401939182900391015b5b602082106111425783548152600190930192601f1990910190602001611121565b8115610def576000600019600884021c8251865482191691161782525050505050565b60006020828403121561117757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610fe157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111d8576111d86111a7565b604051601f8501601f19908116603f01168101908282118183101715611200576112006111a7565b8160405280935085815286868601111561121957600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561124657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461126a57600080fd5b9150602083013567ffffffffffffffff81111561128657600080fd5b8301601f8101851361129757600080fd5b6112a6858235602084016111bd565b9150509250929050565b60005b838110156112cb5781810151838201526020016112b3565b50506000910152565b600081518084526112ec8160208601602086016112b0565b601f01601f19169290920160200192915050565b602081526000610fe160208301846112d4565b60008060006060848603121561132857600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461135857600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461138d57600080fd5b9150604084013580151581146113a257600080fd5b809150509250925092565b6000602082840312156113bf57600080fd5b5035919050565b6000602082840312156113d857600080fd5b813567ffffffffffffffff8111156113ef57600080fd5b8201601f8101841361140057600080fd5b610404848235602084016111bd565b600082516114218184602087016112b0565b9190910192915050565b60008151808452602080850194506020840160005b8381101561145c57815187529582019590820190600101611440565b509495945050505050565b85815260a06020820152600061148060a083018761142b565b828103604084015261149281876112d4565b905084606084015282810360808401526114ac81856112d4565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610373576103736114b8565b6080815260006114f4608083018761142b565b828103602084015261150681876112d4565b9050846040840152828103606084015261152081856112d4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061155a60c083018861142b565b828103604084015261156c81886112d4565b9050856060840152828103608084015261158681866112d4565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156115df578151845292840192908401906001016115c3565b5091979650505050505050565b81810381811115610373576103736114b8565b8082028115828204841417610373576103736114b8565b60608152600061162960608301866112d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061026c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f366004610216565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b60006101826000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff16905080610211573391505090565b919050565b60006020828403121561022857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025857600080fd5b939250505056fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615280620000e86000396000818161036f01526112a801526152806000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614387565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614387565b61025f34846143c4565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614434565b610983565b6040516103a591906144ea565b3480156103e757600080fd5b506102646103f636600461453f565b6109c6565b34801561040757600080fd5b5061026461041636600461453f565b610a79565b34801561042757600080fd5b506103ce6104363660046145cc565b610b24565b34801561044757600080fd5b5061026461045636600461462a565b610b6e565b34801561046757600080fd5b506102646104763660046146d7565b610c57565b34801561048757600080fd5b506102646104963660046146d7565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476d565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483d565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614884565b610e07565b6040516103a5939291906148d7565b34801561051757600080fd5b506103ce610526366004614977565b610e5c565b34801561053757600080fd5b506102646105463660046149e0565b610e6b565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614a41565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614434565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9a565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614af9565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b50565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8a565b611116565b34801561063d57600080fd5b5061026461064c366004614c19565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca6565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e0565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145cc565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476d565b611444565b3480156106dd57600080fd5b506102646106ec366004614434565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476d565b6114cf565b34801561071d57600080fd5b5061026461072c36600461453f565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc3565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc3565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc3565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614387565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614387565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614786565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c4565b9350505080806116b990614d04565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc3565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d23565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc3565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d23565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4b565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efa565b6114c885858585856119f18b611a39565b612f1d565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4b565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613262565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d64565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efa565b9998505050505050505050565b6111128282611bcf85611a39565b61327e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc3565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357d565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d23565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d77565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc3565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4b565b6135f8565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613608565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a4565b611f213360008484604051602401611ec491906144ea565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b0335000000000000000000000000000000000000000000000000000000001790526136ff565b506111128282805190602001206001613710565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd5565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f4565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc3565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e08565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd5565b60405180910390a26120fd828565ffffffffffff1685613866565b60005b8151811015610d0457600082828151811061211d5761211d614cc3565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e08565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387c565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613893565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613893565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e41565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613937565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ec565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a95565b905061247982613b27565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ecf565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d64565b604080516000815260208101909152889088612ac2565b600061253b82613bc4565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614ee8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c4565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f24565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d64565b61268b9190614f3a565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efa565b600060086001806126e060026020614d64565b6126ea9190614d64565b6126f49190614d64565b6126fe9190614f3a565b8260ff911c1692915050565b600061094f6127198484613c56565b5490565b60008383604051602001612732929190614ee8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f24565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc3565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cac565b613d3a565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4b565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ecf565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c4565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613def565b612a31565b612a3188888488613e67565b90999098509650505050505050565b6000600860016126ea60026020614d64565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efa565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ec8565b8061094f575061094f8383613ec8565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f51565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d64565b612bc091906143c4565b9050808214158015612be2575081612bd88688614f92565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f91565b90506000612c9d8b6137f4565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc3565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb7565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051612de0959493929190615015565b60405180910390a250828414612e01576000612dfc8c8c613c56565b839055505b6000612e0e8c8c8c61271d565b9050612e22818a64ffffffffff1689613866565b5060005b8151811015612eec576000828281518110612e4357612e43614cc3565b60200260200101519050612e6f6020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb09796959493929190614fb7565b600060405180830381600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050505b50600101612e26565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fa957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9c949392919061505b565b60405180910390a2610a71565b6000612fb4876137f4565b905060005b815181101561308d576000828281518110612fd657612fd6614cc3565b602002602001015190506130026001826affffffffffffffffffffff191661290790919063ffffffff16565b15613084576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613051908c908c908c908c908c908c9060040161509a565b600060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050505b50600101612fb9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c4949392919061505b565b60405180910390a260006130d88888612591565b905060006020870190506130f082600089518461405f565b60006130fb856126cd565b111561317f57600061310d8a8a613c56565b878155905060208601915060008060005b613127886126cd565b8160ff16101561317a5761313c8d8d8361271d565b92506131578a8260ff166028026038011c64ffffffffff1690565b9150613166836000848861405f565b61317082866143c4565b945060010161311e565b505050505b60005b835181101561325657600084828151811061319f5761319f614cc3565b602002602001015190506131cb6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321a908e908e908e908e908e908e9060040161509a565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b505050505b50600101613182565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f791906150f3565b60405180910390a2505050565b600061330f846137f4565b905060005b81518110156133e257600082828151811061333157613331614cc3565b6020026020010151905061335d6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133d9576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a690899089908990600401615106565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505b50600101613314565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341391906150f3565b60405180910390a260006134278585612591565b905061348081600061343886612671565b67ffffffffffffffff81111561345057613450614786565b6040519080825280601f01601f19166020018201604052801561347a576020820181803683370190505b50613866565b600061348b846126cd565b11156134ac57600061349d8686613c56565b90506134aa81602061411e565b505b60005b8251811015610a715760008382815181106134cc576134cc614cc3565b602002602001015190506134f86080826affffffffffffffffffffff191661290790919063ffffffff16565b15613574576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613541908a908a908a90600401615106565b600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b505050505b506001016134af565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f090614387565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364157613641614cc3565b602090810291909101015260006136997f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136ae828261415b565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e67565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375157613751614cc3565b602002602001018181525050828160018151811061377157613771614cc3565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137bf91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061382e5761382e614cc3565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138778560200190565b61405f565b600061388a607060106143c4565b9190911b919050565b606060005b60108110156138f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138f857600101613898565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613942614177565b9050306001600160a01b0382160361396057611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ab90899089908990899060040161512f565b602060405180830381865afa1580156139c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff919061515e565b60006139f6614177565b9050306001600160a01b03821603613a1a57613a1586868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a679089908990899089908990600401615177565b600060405180830381600087803b158015613a8157600080fd5b505af1158015613256573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ace57613ace614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6057613b60614cc3565b60209081029190910101526000613bb87f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bfd57613bfd614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6b929190614ee8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbc5750835182115b15613cf9578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151be565b60208401613d0784826143c4565b90506000613d158585614d64565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b1565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8557613d85614cc3565b602090810291909101015260008080613dde7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422c565b60006060836001600160a01b03166000613e0a858989614238565b604051613e1791906151e3565b60006040518083038185875af1925050503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e80848888614238565b604051613e8d91906151e3565b600060405180830381855af49150503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0157613f01614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110613f2d57613f2d614cc3565b60209081029190910101526000613f857f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614007578085038201915061400f565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140d957602083106140895760208304840193506020838161408557614085614f24565b0692505b82156140d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140ca575050611965565b50600194909401939182900391015b5b602082106140fb5780518455600190930192601f19909101906020016140da565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412d83601f6143c4565b61413791906151ff565b61414190846143c4565b90505b8083101561084e5760008355600183019250614144565b600061416683614267565b801561094f575061094f83836142b3565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141bf8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e5576141e5614f24565b04905060405193506020840160208202810160405281855260005b82811015614220578451871c825293870193602090910190600101614200565b50505050509392505050565b6000806116db8561436b565b606083838360405160200161424f93929190615221565b60405160208183030381529060405290509392505050565b6000614293827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b3565b8015610dc557506142ac826001600160e01b03196142b3565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614354575060208210155b80156143605750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143a8576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143ae565b60008083601f8401126143e957600080fd5b50813567ffffffffffffffff81111561440157600080fd5b6020830191508360208260051b850101111561441c57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444c57600080fd5b85359450602086013567ffffffffffffffff81111561446a57600080fd5b614476888289016143d7565b9095509350614489905060408701614423565b949793965091946060013592915050565b60005b838110156144b557818101518382015260200161449d565b50506000910152565b600081518084526144d681602086016020860161449a565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144be565b60008083601f84011261450f57600080fd5b50813567ffffffffffffffff81111561452757600080fd5b60208301915083602082850101111561441c57600080fd5b6000806000806000806080878903121561455857600080fd5b86359550602087013567ffffffffffffffff8082111561457757600080fd5b6145838a838b016143d7565b909750955085915061459760408a01614423565b945060608901359150808211156145ad57600080fd5b506145ba89828a016144fd565b979a9699509497509295939492505050565b600080600080606085870312156145e257600080fd5b84359350602085013567ffffffffffffffff81111561460057600080fd5b61460c878288016143d7565b909450925061461f905060408601614423565b905092959194509250565b60008060008060008060008060a0898b03121561464657600080fd5b88359750602089013567ffffffffffffffff8082111561466557600080fd5b6146718c838d016143d7565b909950975060408b013591508082111561468a57600080fd5b6146968c838d016144fd565b909750955060608b0135945060808b01359150808211156146b657600080fd5b506146c38b828c016144fd565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f257600080fd5b87359650602088013567ffffffffffffffff8082111561471157600080fd5b61471d8b838c016143d7565b909850965086915061473160408b01614423565b955060608a013591508082111561474757600080fd5b506147548a828b016144fd565b989b979a50959894979596608090950135949350505050565b60006020828403121561477f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c5576147c5614786565b604052919050565b600082601f8301126147de57600080fd5b813567ffffffffffffffff8111156147f8576147f8614786565b61480b6020601f19601f8401160161479c565b81815284602083860101111561482057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485057600080fd5b82359150602083013567ffffffffffffffff81111561486e57600080fd5b61487a858286016147cd565b9150509250929050565b6000806000806060858703121561489a57600080fd5b84359350602085013567ffffffffffffffff8111156148b857600080fd5b6148c4878288016143d7565b9598909750949560400135949350505050565b6060815260006148ea60608301866144be565b846020840152828103604084015261097981856144be565b600082601f83011261491357600080fd5b8135602067ffffffffffffffff82111561492f5761492f614786565b8160051b61493e82820161479c565b928352848101820192828101908785111561495857600080fd5b83870192505b848310156143605782358252918301919083019061495e565b600080600080600060a0868803121561498f57600080fd5b85359450602086013567ffffffffffffffff8111156149ad57600080fd5b6149b988828901614902565b9450506149c860408701614423565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f557600080fd5b83359250602084013567ffffffffffffffff811115614a1357600080fd5b614a1f868287016143d7565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5657600080fd5b8335614a6181614a2c565b925060208401359150604084013567ffffffffffffffff811115614a8457600080fd5b614a90868287016147cd565b9150509250925092565b60008060008060808587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada87828801614902565b935050614ae960408601614423565b9396929550929360600135925050565b600080600060608486031215614b0e57600080fd5b83359250602084013567ffffffffffffffff811115614b2c57600080fd5b614b3886828701614902565b925050614b4760408501614423565b90509250925092565b60008060408385031215614b6357600080fd5b8235614b6e81614a2c565b9150602083013567ffffffffffffffff81111561486e57600080fd5b60008060008060008060808789031215614ba357600080fd5b86359550602087013567ffffffffffffffff80821115614bc257600080fd5b614bce8a838b016143d7565b90975095506040890135915065ffffffffffff82168214614bee57600080fd5b909350606088013590808211156145ad57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3557600080fd5b88359750602089013567ffffffffffffffff80821115614c5457600080fd5b614c608c838d016143d7565b9099509750879150614c7460408c01614423565b9650614c8260608c01614c04565b9550614c9060808c01614c04565b945060a08b01359150808211156146b657600080fd5b600060208284031215614cb857600080fd5b813561094f81614a2c565b634e487b7160e01b600052603260045260246000fd5b604081526000614cec60408301856144be565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1a57614d1a6143ae565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144be565b60ff8281168282160390811115610dc557610dc56143ae565b81810381811115610dc557610dc56143ae565b600060208284031215614d8957600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dca57815187529582019590820190600101614dae565b509495945050505050565b606081526000614de86060830186614d99565b65ffffffffffff85166020840152828103604084015261097981856144be565b848152608060208201526000614e216080830186614d99565b65ffffffffffff85166040840152828103606084015261436081856144be565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea281600386016020890161449a565b808401905081600382015284519150614ec282600483016020880161449a565b0160040195945050505050565b8281526040602082015260006107aa60408301846144be565b8281526000602080830184516020860160005b82811015614f1757815184529284019290840190600101614efb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143ae565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144be565b64ffffffffff818116838216019080821115614fb057614fb06143ae565b5092915050565b87815260e060208201526000614fd060e0830189614d99565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500781856144be565b9a9950505050505050505050565b60a08152600061502860a0830188614d99565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611d4e81856144be565b60808152600061506e6080830187614d99565b828103602084015261508081876144be565b9050846040840152828103606084015261436081856144be565b86815260c0602082015260006150b360c0830188614d99565b82810360408401526150c581886144be565b905085606084015282810360808401526150df81866144be565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d99565b83815260606020820152600061511f6060830185614d99565b9050826040830152949350505050565b8481526080602082015260006151486080830186614d99565b60ff949094166040830152506060015292915050565b60006020828403121561517057600080fd5b5051919050565b85815260a06020820152600061519060a0830187614d99565b60ff8616604084015282810360608401526151ab81866144be565b9150508260808301529695505050505050565b6060815260006151d160608301866144be565b60208301949094525060400152919050565b600082516151f581846020870161449a565b9190910192915050565b60008261521c57634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523381846020890161449a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615787620000316000396000610c0801526157876000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063742d6118116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b8063742d6118146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c02565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c32565b61032c565b005b610176610186366004614cae565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614dfb565b61042d565b6101d16101cc366004614e54565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614e9b565b6105f4565b604051601f19360135815260200161015a565b61017661021e366004614ef3565b61076f565b6101d1610231366004614f31565b6107db565b610176610244366004614f7f565b61089d565b610176610257366004614c32565b61095f565b61017661026a366004614fb9565b61099e565b61017661027d366004614fb9565b6109d0565b610176610290366004614fd2565b610a65565b6101766102a336600461500c565b610b1a565b6101766102b6366004614ef3565b610b33565b610193610bf4565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bfe565b6103458261034061041e565b610c62565b61034f8282610cdb565b5050565b61035b610bfe565b600061036689610d06565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d1d565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e31565b6103f48861034061041e565b61041488888888610405888a615092565b61040f8789615092565b610e7c565b5050505050505050565b600061042861128c565b905090565b610435610bfe565b61044761044061041e565b84846112be565b61045082611391565b156104a3576000610460836113ad565b905061048c817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b6104a061049761041e565b848460006114a4565b50505b505050565b60006104b2610bfe565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d1d565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615118565b61051683610e31565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114d1565b905060008184604051602001610562929190615141565b60405160208183030381529060405290508080519060200120925060006105888461155b565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361160b565b6105ea85846116d6565b5050505092915050565b6105fc610bfe565b61737960f01b836001600160f01b031916146106225761737960f01b836104d885610d1d565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761064681610e31565b6106528161034061041e565b61067c837fb5dee12700000000000000000000000000000000000000000000000000000000611449565b600061068785610d06565b6fffffffffffffffffffffffffffffffff1916036106a9578361038885610d1d565b60006106b48461179f565b905080158015906106c55750848114155b15610707576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b6000610712866113ad565b90506001600160a01b0381161561073b5761072c81611824565b61073683826118a3565b610746565b610746866001611941565b6107518686866119e2565b61075b8587611a85565b61076783866001611b10565b505050505050565b610777610bfe565b6107a1827f1873396a00000000000000000000000000000000000000000000000000000000611449565b6107c4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b6107d08361034061041e565b6104a3838383611bbf565b60006107e5610bfe565b60408051616e7360f01b60208201526000602282018190526030820152610827910160405160208183030381529060405261081f90615199565b61034061041e565b5081516020830120600061083a8261155b565b90508015610880576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103bc565b61088b82868561160b565b61089582856116d6565b509392505050565b6108a5610bfe565b6108cf827f6fdd1c8000000000000000000000000000000000000000000000000000000000611449565b61094b6108da61041e565b600084846040516024016108ee91906151bd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c82565b5061034f8282805190602001206001611c93565b610967610bfe565b6109738261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d42565b6109a6610bfe565b6109af81611e55565b6109b881610e31565b6109c48161034061041e565b6109cd81611e86565b50565b6109d8610bfe565b6109e181611e55565b6109ea81611ef1565b6109f3816120e3565b15610a365780610a0282610d1d565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b610a41816001611941565b610a5281610a4d61041e565b612168565b6109cd81610a5e61041e565b6001611b10565b610a6d610bfe565b610a7683611e55565b610a7f82611391565b610ab5576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac18361034061041e565b6000610acc836113ad565b9050610af8817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b610b028484612232565b815115610b14576104a061049761041e565b50505050565b610b22610bfe565b6109cd610b2d61041e565b826122b1565b610b3b610bfe565b61737960f01b836001600160f01b03191614610b615761737960f01b836104d885610d1d565b610b8b827f540fbfa800000000000000000000000000000000000000000000000000000000611449565b610b9483610e31565b610bb7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b610bc38361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612353565b60006104286123f8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c60576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c8f616e7360f01b6dffffffffffffffffffffffffffff60801b851617612402565b6001600160a01b03161461034f57610ca682610d1d565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc9291906151d0565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d42565b6000610d1460706010615211565b9190911b919050565b606081601081901b6000610d3083610d06565b90508271ffffffffffffffffffffffffffffffffffff19831615610d7157610d6c71ffffffffffffffffffffffffffffffffffff1984166114d1565b610da8565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dcf57610dca836114d1565b610e06565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e1893929190615224565b6040516020818303038152906040529350505050919050565b610e3a816120e3565b6109cd5780610e4882610d1d565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b613a3160f11b866001600160f01b03191614801590610eaa5750611bdd60f21b866001600160f01b03191614155b15610f0b57613a3160f11b8687604051602001610ec991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615118565b610f1485612493565b610f1f8460016126da565b610f2a8360006126da565b60e084901c60e885901c0160ff16825114610f8a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fea5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110625760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61106b85612876565b61107484612876565b146110c65761108285612876565b61108b84612876565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110cf856128a8565b6110d8846128a8565b1461112a576110e6856128a8565b6110ef846128a8565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61113686612876565b8110156111d15761116061114a85836128c5565b60c581111561115b5761115b61529a565b6128ed565b6008601b8390030287901c60ff16146111c9576008601b8290030286901c60ff1661118e61114a86846128c5565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60010161112d565b506111db866120e3565b156112355785866040516020016111f491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b611281868686868660405160200161124d91906152b0565b6040516020818303038152906040528660405160200161126d91906152b0565b60405160208183030381529060405261294d565b610767866001611941565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112bb5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106112ff576112ff615332565b602002602001018181525050826001600160a01b031660001b8160018151811061132b5761132b615332565b602002602001018181525050610b147f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161137491815260200190565b60408051601f19818403018152919052630100080160dd1b612a14565b6000811515801561032657506113a682612a29565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106113e6576113e6615332565b6020908102919091010152600061143e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a89565b60601c949350505050565b6114538282612abf565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114b587878787612adb565b91509150816114c7576114c781612cab565b9695505050505050565b606060005b6010811015611527576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611527576001016114d6565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b3576115b3615332565b602090810291909101015260006115537f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a89565b60006116178383612cb3565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061167557611675615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612cf2565b50505050505050565b606060006116e383612ff8565b905060006116f084613008565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061174957611749615332565b60209081029190910101526107677f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106117e4576117e4615332565b602090810291909101015260006115537f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061186657611866615332565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613031565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d8576118d8615332565b602002602001018181525050816001600160a01b031660001b8160018151811061190457611904615332565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613031565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061197757611977615332565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119c591151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a14565b60006119ee83836132fd565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a2d57611a2d615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611ac757611ac7615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161137491815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b4557611b45615332565b602002602001018181525050826001600160a01b031660001b81600181518110611b7157611b71615332565b602002602001018181525050610b147f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119c591151560f81b815260010190565b613a3160f11b836001600160f01b03191614611bef57613a3160f11b8384604051602001610ec991815260200190565b611bf8836120e3565b611c51578283604051602001611c1091815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761332d565b60606000806114b5878787876133d2565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cd457611cd4615332565b6020026020010181815250508281600181518110611cf457611cf4615332565b602002602001018181525050610b147f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119c591151560f81b815260010190565b6000611d4e848461344a565b90506000815167ffffffffffffffff811115611d6c57611d6c614d44565b604051908082528060200260200182016040528015611d95578160200160208202803683370190505b5090506000805b8351811015611e4657846001600160a01b0316611de0858381518110611dc457611dc4615332565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e3e57838181518110611e0057611e00615332565b6020026020010151838381518110611e1a57611e1a615332565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d9c565b508082526107678686846134b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109cd57616e7360f01b816104d883610d1d565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ebc57611ebc615332565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261350c565b6000611efd8260101b90565b90506000611f1f71ffffffffffffffffffffffffffffffffffff1983166114d1565b80519091508015610b1457611f4182611f39600184615348565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611fd2576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611fe0600183615348565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561208d575061204883611f39836001615211565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120db576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611fd5565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061211c5761211c615332565b6020908102919091010152600061215c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a89565b90506115538160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061219e5761219e615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016121fd919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061226857612268615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161137491815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122f2576122f2615332565b602002602001018181525050816001600160a01b031660001b8160018151811061231e5761231e615332565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261350c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238957612389615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123e491906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135a7565b6000610428613658565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061243b5761243b615332565b6020908102919091010152600061143e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a89565b806124ca576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124d5826128a8565b9050600581111561251c576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061252783612876565b905060006125358383615211565b9050601c81111561257c576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156126275760ff601b82900360080287901c1660008190036125d4576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612612576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61261c8184615211565b925050600101612580565b5061263185613697565b811461267d5761264085613697565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107675760ff601b82900360080287901c1680156126d1576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161267f565b801580156126e6575081155b1561270757604051635318beb960e01b8152600060048201526024016103bc565b6000612712836128a8565b9050600581111561273957604051635318beb960e01b8152600481018290526024016103bc565b600061274484612876565b905060006127528383615211565b9050601c81111561277957604051635318beb960e01b8152600481018290526024016103bc565b6000805b838110156127e557600061279461114a89846128c5565b9050806000036127d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127da8184615211565b92505060010161277d565b506127ef86613697565b811461281a576127fe86613697565b604051635318beb960e01b81526004016103bc91815260200190565b825b828110156116cd57600061283361114a89846128c5565b9050801561286d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161281c565b60006008600161288860026020615348565b6128929190615348565b61289c919061535b565b8260ff911c1692915050565b600060086001806128bb60026020615348565b6128889190615348565b6000601b8290036008028360ff911c1660c58111156128e6576128e661529a565b9392505050565b6000808260c58111156129025761290261529a565b60ff169050606181101561291c57601f1660010192915050565b60618360c58111156129305761293061529a565b0361293e5750601492915050565b50600092915050565b50919050565b600061295a8686866136ba565b9050600061296884846136f0565b90506000612976858561370d565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129b0576129b0615332565b6020908102919091010152612a087f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612cf2565b50505050505050505050565b6104a08585612a238487613722565b85613753565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612a8190615199565b909114919050565b6000612ab6612a9886866139bb565b60ff858116601b0360080285901c16612ab18587613722565b613a11565b95945050505050565b6000612aca83613a62565b80156128e657506128e68383613aa3565b600060606000612aea86613b5b565b905060005b8151811015612bbd576000828281518110612b0c57612b0c615332565b60200260200101519050612b386001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612bb4576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612b81908c908c908c90600401615372565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050505b50600101612aef565b50612bca87858888613bfd565b909350915060005b8151811015612ca0576000828281518110612bef57612bef615332565b60200260200101519050612c1b6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612c97576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c64908c908c908c90600401615372565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b505050505b50600101612bd2565b505094509492505050565b805160208201fd5b60608282604051602001612cdb9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d4b57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d3e94939291906153d6565b60405180910390a2610767565b6000612d5687613ccf565b905060005b8151811015612e2f576000828281518110612d7857612d78615332565b60200260200101519050612da46001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612e26576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612df3908c908c908c908c908c908c90600401615415565b600060405180830381600087803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b505050505b50600101612d5b565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e6694939291906153d6565b60405180910390a26000612e7a88886139bb565b90506000602087019050612e92826000895184613d41565b6000612e9d856128a8565b1115612f21576000612eaf8a8a613e00565b878155905060208601915060008060005b612ec9886128a8565b8160ff161015612f1c57612ede8d8d83613e56565b9250612ef98a8260ff166028026038011c64ffffffffff1690565b9150612f088360008488613d41565b612f128286615211565b9450600101612ec0565b505050505b60005b8351811015612a08576000848281518110612f4157612f41615332565b60200260200101519050612f6d6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612fef576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fbc908e908e908e908e908e908e90600401615415565b600060405180830381600087803b158015612fd657600080fd5b505af1158015612fea573d6000803e3d6000fd5b505050505b50600101612f24565b60006103268251603881901b1790565b60608160405160200161301b919061546e565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b0319160361308457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613077919061548a565b60405180910390a2505050565b600061308f84613ccf565b905060005b81518110156131625760008282815181106130b1576130b1615332565b602002602001015190506130dd6040826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15613159576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906131269089908990899060040161549d565b600060405180830381600087803b15801561314057600080fd5b505af1158015613154573d6000803e3d6000fd5b505050505b50600101613094565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613193919061548a565b60405180910390a260006131a785856139bb565b90506132008160006131b886613697565b67ffffffffffffffff8111156131d0576131d0614d44565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b50613ed6565b600061320b846128a8565b111561322c57600061321d8686613e00565b905061322a816020613eec565b505b60005b825181101561076757600083828151811061324c5761324c615332565b602002602001015190506132786080826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156132f4576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132c1908a908a908a9060040161549d565b600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b505050505b5060010161322f565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cdb565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061336357613363615332565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133be91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f29565b60006060836001600160a01b031660006133ed858989613f64565b6040516133fa919061546e565b60006040518083038185875af1925050503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b606091505b509097909650945050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061348457613484615332565b602002602001018181525050600061349e85836000613f7b565b9050612ab66134b08260008451613fb5565b614043565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106134eb576134eb615332565b602002602001018181525050610b148482600061350786614054565b614064565b6000613516613658565b9050306001600160a01b03821603613532576104a3838361409f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061357990869086906004016154c6565b600060405180830381600087803b15801561359357600080fd5b505af11580156116cd573d6000803e3d6000fd5b60006135b1613658565b9050306001600160a01b038216036135d4576135cf85858585613f29565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061361f9088908890889088906004016154df565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613692573391505090565b919050565b600060086136a760026020615348565b6136b1919061535b565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128e6565b60608282604051602001612cdb929190615513565b600080805b8360ff168110156108955761374960ff601b83900360080287901c1683615211565b9150600101613727565b611bdd60f21b846001600160f01b031916036137aa57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161379d93929190615542565b60405180910390a2610b14565b60006137b685856139bb565b905060006137c386613ccf565b905060005b81518110156138985760008282815181106137e5576137e5615332565b602002602001015190506138116004826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561388f576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061385c908b908b908b908b90600401615575565b600060405180830381600087803b15801561387657600080fd5b505af115801561388a573d6000803e3d6000fd5b505050505b506001016137c8565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138cd93929190615542565b60405180910390a26138e8828565ffffffffffff1685613ed6565b60005b81518110156116cd57600082828151811061390857613908615332565b602002602001015190506139346008826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156139b2576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061397f908b908b908b908b90600401615575565b600060405180830381600087803b15801561399957600080fd5b505af11580156139ad573d6000803e3d6000fd5b505050505b506001016138eb565b600082826040516020016139d09291906155ae565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a3757602082048401935060208281613a3357613a336155ea565b0691505b508254600882021b602082900380841115610895576001850154600882021c82179150509392505050565b6000613a8e827f01ffc9a700000000000000000000000000000000000000000000000000000000613aa3565b801561032657506113a6826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b44575060208210155b8015613b505750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b9557613b95615332565b60209081029190910101526000613bcd7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613f7b565b90506115536134b08260008451613fb5565b60008160ff1682613bf08560581c90565b1660ff1614905092915050565b60006060600080613c0d866140b2565b90925090506001600160a01b038216613c2a5785610e4887610d1d565b80613c3957613c39868961416a565b8615613c7d576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c6582614181565b9050613c7a82613c758b84615211565b6141fa565b50505b6000613c898760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cb457613caf888884886133d2565b613cc0565b613cc088888488614279565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d0957613d09615332565b60209081029190910101526000613bcd7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613f7b565b8215613dbb5760208310613d6b57602083048401935060208381613d6757613d676155ea565b0692505b8215613dbb5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dac575050610b14565b50600194909401939182900391015b5b60208210613ddd5780518455600190930192601f1990910190602001613dbc565b8115610b14576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e159291906155ae565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e6b9291906155ae565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613ee78560200190565b613d41565b60006020613efb83601f615211565b613f059190615600565b613f0f9084615211565b90505b808310156104a35760008355600183019250613f12565b6000613f3585856142da565b90506000613f52828560ff166028026038011c64ffffffffff1690565b905061076786868684600088886142ed565b60608383836040516020016136d893929190615622565b6060611553613f8b858585613e56565b6000613fb085613f9b89896142da565b9060ff166028026038011c64ffffffffff1690565b614695565b600081831180613fc55750835182115b15614002578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc93929190615661565b602084016140108482615211565b9050600061401e8585615348565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128e683601560006146b8565b6060816128e68160156000614733565b600061407085856142da565b9050600061408d828560ff166028026038011c64ffffffffff1690565b905061076786868660008588886142ed565b61034f82826140ad85614787565b613031565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106140ec576140ec615332565b6020908102919091010152600080806141457f7462776f726c6400000000000000000053797374656d73000000000000000000857e1502001401000000000000000000000000000000000000000000000000000061480c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6141748282614914565b61034f57610ca682610d1d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141ba576141ba615332565b602090810291909101015260006115537f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061423057614230615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161137491815260200190565b60006060836001600160a01b0316614292848888613f64565b60405161429f919061546e565b600060405180830381855af49150503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b60006128e66142e98484613e00565b5490565b613a3160f11b876001600160f01b0319161461431d57613a3160f11b8788604051602001610ec991815260200190565b6000614338828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836143519190615348565b61435b9190615211565b905080821415801561437d5750816143738688615686565b64ffffffffff1614155b156143cd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561441e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061442b84898461494a565b905060006144388b613ccf565b905060005b815181101561450357600082828151811061445a5761445a615332565b602002602001015190506144866010826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156144fa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144c797969594939291906156ab565b600060405180830381600087803b1580156144e157600080fd5b505af11580156144f5573d6000803e3d6000fd5b505050505b5060010161443d565b5064ffffffffff881660005b8a60ff168160ff16101561454257614536878260ff166028026038011c64ffffffffff1690565b9091019060010161450f565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161457b959493929190615709565b60405180910390a25082841461459c5760006145978c8c613e00565b839055505b60006145a98c8c8c613e56565b90506145bd818a64ffffffffff1689613ed6565b5060005b81518110156146875760008282815181106145de576145de615332565b6020026020010151905061460a6020826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561467e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161464b97969594939291906156ab565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050505b506001016145c1565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261089585858584614a18565b606060006146c68560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816146ec576146ec6155ea565b04905060405193506020840160208202810160405281855260005b82811015614727578451871c825293870193602090910190600101614707565b50505050509392505050565b82516060906000614744858361535b565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614727578051871b83529187019160019190910190602001614766565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016147d657507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148037f746273746f72650000000000000000005461626c65730000000000000000000084614ae4565b60206000613a11565b606060006060600061481d85613697565b905061482a878783614b00565b93506000614837866128a8565b905080156149095761484988886142da565b935066ffffffffffffff841667ffffffffffffffff81111561486d5761486d614d44565b6040519080825280601f01601f191660200182016040528015614897576020820181803683370190505b5092506020830160005b828160ff1610156149065760006148b98b8b84613e56565b905060006148d6888460ff166028026038011c64ffffffffff1690565b90506148e58260008387614a18565b6148ef8185615211565b9350505080806148fe9061575b565b9150506148a1565b50505b505093509350939050565b600061493a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b39565b806128e657506128e68383614b39565b600064ffffffffff82111561498e576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149c057808503820191506149c8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614a9f5760208310614a4257602083048401935060208381614a3e57614a3e6155ea565b0692505b8215614a9f576020839003600081841015614a655750600019600884021c614a6f565b50600019600882021c5b8554600886021b818451168219821617845250818411614a90575050610b14565b50600194909401939182900391015b5b60208210614ac15783548152600190930192601f1990910190602001614aa0565b8115610b14576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139d0565b606081600003614b1f57506040805160208101909152600081526128e6565b6000614b2b85856139bb565b9050612ab681600085614695565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b7257614b72615332565b602002602001018181525050826001600160a01b031660001b81600181518110614b9e57614b9e615332565b60209081029190910101526000614bde7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a89565b9050612ab68160f81c90565b80356001600160e01b03198116811461369257600080fd5b600060208284031215614c1457600080fd5b6128e682614bea565b6001600160a01b03811681146109cd57600080fd5b60008060408385031215614c4557600080fd5b823591506020830135614c5781614c1d565b809150509250929050565b60008083601f840112614c7457600080fd5b50813567ffffffffffffffff811115614c8c57600080fd5b6020830191508360208260051b8501011115614ca757600080fd5b9250929050565b60008060008060008060008060c0898b031215614cca57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614cfe57600080fd5b614d0a8c838d01614c62565b909650945060a08b0135915080821115614d2357600080fd5b50614d308b828c01614c62565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614d8357614d83614d44565b604052919050565b600082601f830112614d9c57600080fd5b813567ffffffffffffffff811115614db657614db6614d44565b614dc96020601f19601f84011601614d5a565b818152846020838601011115614dde57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e1057600080fd5b8335614e1b81614c1d565b925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b614e4a86828701614d8b565b9150509250925092565b60008060408385031215614e6757600080fd5b82359150602083013567ffffffffffffffff811115614e8557600080fd5b614e9185828601614d8b565b9150509250929050565b600080600060608486031215614eb057600080fd5b833592506020840135614ec281614c1d565b915060408401358015158114614ed757600080fd5b809150509250925092565b803560ff8116811461369257600080fd5b600080600060608486031215614f0857600080fd5b833592506020840135614f1a81614c1d565b9150614f2860408501614ee2565b90509250925092565b600080600060608486031215614f4657600080fd5b83359250602084013567ffffffffffffffff811115614f6457600080fd5b614f7086828701614d8b565b925050614f2860408501614bea565b60008060408385031215614f9257600080fd5b8235614f9d81614c1d565b9150602083013567ffffffffffffffff811115614e8557600080fd5b600060208284031215614fcb57600080fd5b5035919050565b600080600060608486031215614fe757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b60006020828403121561501e57600080fd5b81356128e681614c1d565b60005b8381101561504457818101518382015260200161502c565b50506000910152565b60008151808452615065816020860160208601615029565b601f01601f19169290920160200192915050565b828152604060208201526000611553604083018461504d565b600067ffffffffffffffff808411156150ad576150ad614d44565b8360051b60206150bf60208301614d5a565b868152918501916020810190368411156150d857600080fd5b865b8481101561510c578035868111156150f25760008081fd5b6150fe36828b01614d8b565b8452509183019183016150da565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ab6606083018461504d565b60008351615153818460208801615029565b7f5f5f000000000000000000000000000000000000000000000000000000000000908301908152835161518d816002840160208801615029565b01600201949350505050565b805160208083015191908110156129475760001960209190910360031b1b16919050565b6020815260006128e6602083018461504d565b6040815260006151e3604083018561504d565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610326576103266151fb565b6001600160f01b03198416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161526d816003860160208901615029565b80840190508160038201528451915061528d826004830160208801615029565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615325577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261531385835161504d565b945092850192908501906001016152d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115610326576103266151fb565b8082028115828204841417610326576103266151fb565b6001600160a01b0384168152826020820152606060408201526000612ab6606083018461504d565b60008151808452602080850194506020840160005b838110156153cb578151875295820195908201906001016153af565b509495945050505050565b6080815260006153e9608083018761539a565b82810360208401526153fb818761504d565b90508460408401528281036060840152613b50818561504d565b86815260c06020820152600061542e60c083018861539a565b8281036040840152615440818861504d565b9050856060840152828103608084015261545a818661504d565b9150508260a0830152979650505050505050565b60008251615480818460208701615029565b9190910192915050565b6020815260006128e6602083018461539a565b8381526060602082015260006154b6606083018561539a565b9050826040830152949350505050565b828152604060208201526000611553604083018461539a565b8481526080602082015260006154f8608083018661539a565b60ff851660408401528281036060840152613b50818561504d565b60008351615525818460208801615029565b835190830190615539818360208801615029565b01949350505050565b606081526000615555606083018661539a565b65ffffffffffff8516602084015282810360408401526114c7818561504d565b84815260806020820152600061558e608083018661539a565b65ffffffffffff851660408401528281036060840152613b50818561504d565b8281526000602080830184516020860160005b828110156155dd578151845292840192908401906001016155c1565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261561d57634e487b7160e01b600052601260045260246000fd5b500490565b60008451615634818460208901615029565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615674606083018661504d565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156a4576156a46151fb565b5092915050565b87815260e0602082015260006156c460e083018961539a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526156fb818561504d565b9a9950505050505050505050565b60a08152600061571c60a083018861539a565b65ffffffffffff8716602084015264ffffffffff86166040840152846060840152828103608084015261574f818561504d565b98975050505050505050565b600060ff821660ff8103615771576157716151fb565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004d4f38038062004d4f833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614c216200012e60003960008181610701015281816115ac015261163b0152600061069901526000610631015260006105b0015260005050614c216000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a6100853660046143d5565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461442d565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461442d565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b610294610ca1565b61029c610f19565b6102a4610f82565b6102ac610fce565b6102b461101a565b6102bc611066565b6102c46110aa565b6102cc6110f6565b6102d461115a565b6102dc6111be565b6102e4611220565b6102ec611282565b6102f46112ce565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906144de565b600161132a565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906144de565b6103796101f4565b6113d0565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906144de565b6103c16101f4565b60016114ad565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906144de565b61156f565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614bf36022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b600481101561088c576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108849101604051602081830303815290604052610868906144de565b83836004811061087a5761087a614502565b602002015161162c565b600101610806565b506040805160a0810182526033918101828152600092829190614b9760608401398152602001604051806060016040528060318152602001614a66603191399052905060005b600281101561094f576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261094791015b604051602081830303815290604052610935906144de565b83836002811061087a5761087a614502565b6001016108d2565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614af2602891399052905060005b6002811015610a0f576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a07910161091d565b6001016109b8565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e08301528152815160608101835282815260009260208084019291906149b1908301398152602001604051806060016040528060288152602001614a9760289139815260200160405180606001604052806024815260200161498d6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614bca602991398152602001604051806060016040528060258152602001614b1a602591398152602001604051806060016040528060248152602001614a42602491398152602001604051806060016040528060288152602001614a1a602891398152602001604051806060016040528060338152602001614abf6033913981526020016040518060600160405280602981526020016149f16029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614b65603291398152602001604051806060016040528060268152602001614b3f602691399052905060005b600e811015610c90576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610c889101604051602081830303815290604052610c76906144de565b8383600e811061087a5761087a614502565b600101610c14565b5050505050565b60006101fe6116d3565b610cca7f746273746f72650000000000000000005461626c65730000000000000000000061171f565b15610d4857604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d3f9291600401614568565b60405180910390fd5b610d717f746273746f72650000000000000000005265736f75726365496473000000000061171f565b15610da957604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610cfe565b610e507f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610df56117ac565b610dfd611824565b610e05611973565b604051602001610e1591906145db565b604051602081830303815290604052610e2c6119f8565b604051602001610e3c91906145db565b604051602081830303815290604052611bc0565b610ebb7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610e846117ac565b610e8c611c87565b610e94611cc1565b604051602001610ea491906145db565b604051602081830303815290604052610e2c611d38565b610ee67f746273746f72650000000000000000005461626c657300000000000000000000600161132a565b610f117f746273746f72650000000000000000005265736f757263654964730000000000600161132a565b61056c611daf565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000610f656117ac565b610f6d611e11565b610f75611e4b565b610f7d611ec2565b611f39565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fb66117ac565b610fbe61200d565b610fc6611e4b565b610f7d612047565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b6110026120be565b61100a611c87565b61101261213d565b610f7d612207565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b61104e61227e565b6110566117ac565b61105e6122fd565b610f7d6123c7565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b61109a6117ac565b6110a26117ac565b61105e611e4b565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110de61243e565b6110e6611c87565b6110ee612478565b610f7d612542565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e150200140100000000000000000000000000000000000000000000000000006111426117ac565b61114a6125b9565b611152612638565b610f7d6126af565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111a6612779565b6111ae6127b3565b6111b6612832565b610f7d6128a9565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c0100000000000000000000000000000000000000000000000000000000611208612779565b611210612973565b611218612832565b610f7d6129ad565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061126a6117ac565b611272612a24565b61127a612638565b610f7d612a5e565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112b6611e11565b6112be6117ac565b6112c6612ad5565b610f7d612638565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000061131a612b4c565b611322611e11565b61127a612b65565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061136057611360614502565b6020026020010181815250506113cb7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113ae91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612b98565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061140657611406614502565b6020026020010181815250506113cb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001611478919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612b98565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114e2576114e2614502565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061151b5761151b614502565b6020026020010181815250506115697f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113ae91151560f81b815260010190565b50505050565b6113cb61157a6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612bad565b6113cb6116376101f4565b60007f000000000000000000000000000000000000000000000000000000000000000085858680519060200120604051602401611676939291906145ee565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612bad565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061171a573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061175857611758614502565b602090810291909101015260006117987f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612bda565b90506117a48160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106117e6576117e6614502565b602002602001019060c58111156117ff576117ff614639565b908160c581111561181257611812614639565b90525061181e81612c10565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f8160008151811061185f5761185f614502565b602002602001019060c581111561187857611878614639565b908160c581111561188b5761188b614639565b81525050605f816001815181106118a4576118a4614502565b602002602001019060c58111156118bd576118bd614639565b908160c58111156118d0576118d0614639565b81525050605f816002815181106118e9576118e9614502565b602002602001019060c581111561190257611902614639565b908160c581111561191557611915614639565b8152505060c48160038151811061192e5761192e614502565b602002602001019060c581111561194757611947614639565b908160c581111561195a5761195a614639565b8152505060c4816004815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161198a5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a105790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a7057611a70614502565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ac457611ac4614502565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b1857611b18614502565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b6c57611b6c614502565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119ea576119ea614502565b6000611bcd868686612dcb565b90506000611bdb8484612e01565b90506000611be98585612e21565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c2357611c23614502565b6020908102919091010152611c7b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612e4d565b50505050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cd85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611df96117ac565b611e01612a24565b611e09611973565b610f7d61318e565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e625790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed95790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6000611f436116d3565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f7557611f70878787878787613205565b612004565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611fd1908a908a908a908a908a908a9060040161464f565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161205e5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106120f8576120f8614502565b602002602001019060c581111561211157612111614639565b908160c581111561212457612124614639565b81525050605f816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816121535790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106121b3576121b3614502565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161221e5790505090506040518060400160405280600b81526020017f6973496e7374616c6c6564000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106122b8576122b8614502565b602002602001019060c58111156122d1576122d1614639565b908160c58111156122e4576122e4614639565b815250506061816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816123135790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061237357612373614502565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816123de5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119ea576119ea614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106122b8576122b8614502565b6040805160028082526060828101909352816020015b606081526020019060019003908161248e5790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106124ee576124ee614502565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816125595790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106125f3576125f3614502565b602002602001019060c581111561260c5761260c614639565b908160c581111561261f5761261f614639565b815250506060816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161264f5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816126c55790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061272557612725614502565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106117e6576117e6614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106127ed576127ed614502565b602002602001019060c581111561280657612806614639565b908160c581111561281957612819614639565b815250506043816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816128495790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816128bf5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061291f5761291f614502565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816129c45790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a755790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612aec5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160008082526020820190925261181e81612c10565b60408051600080825260208201909252606091612b92565b6060815260200190600190039081612b7d5790505b50905090565b610c908585612ba7848761363c565b85613675565b6060600080612bbe87878787613910565b9150915081612bd057612bd081613991565b9695505050505050565b6000612c07612be98686613999565b60ff858116601b0360080285901c16612c02858761363c565b6139ef565b95945050505050565b6000601c82511115612c3a578151604051635318beb960e01b8152600401610d3f91815260200190565b60008080805b8551811015612d15576000612c7e878381518110612c6057612c60614502565b602002602001015160c5811115612c7957612c79614639565b613a40565b905080600003612c9357600190920191612ccb565b8215612ccb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612cec57612cec614502565b602002602001015160c5811115612d0557612d05614639565b901b949094179350600101612c40565b506005811115612d3b57604051635318beb960e01b815260048101829052602401610d3f565b84518190036008612d4e600260206146af565b612d5891906146c2565b83901b939093179260086001612d70600260206146af565b612d7a91906146af565b612d8491906146c2565b81901b93909317926008600180612d9d600260206146af565b612da791906146af565b612db191906146af565b612dbb91906146c2565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612e369291906146d9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612ed957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612ecc9493929190614744565b60405180910390a2613186565b6000612ee487613aa0565b905060005b8151811015612fbd576000828281518110612f0657612f06614502565b60200260200101519050612f326001826affffffffffffffffffffff1916613b2990919063ffffffff16565b15612fb4576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612f81908c908c908c908c908c908c9060040161478e565b600060405180830381600087803b158015612f9b57600080fd5b505af1158015612faf573d6000803e3d6000fd5b505050505b50600101612ee9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612ff49493929190614744565b60405180910390a260006130088888613999565b90506000602087019050613020826000895184613b47565b600061302b85613c06565b11156130af57600061303d8a8a613c43565b878155905060208601915060008060005b61305788613c06565b8160ff1610156130aa5761306c8d8d83613c99565b92506130878a8260ff166028026038011c64ffffffffff1690565b91506130968360008488613b47565b6130a082866147e7565b945060010161304e565b505050505b60005b8351811015611c7b5760008482815181106130cf576130cf614502565b602002602001015190506130fb6002826affffffffffffffffffffff1916613b2990919063ffffffff16565b1561317d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061314a908e908e908e908e908e908e9060040161478e565b600060405180830381600087803b15801561316457600080fd5b505af1158015613178573d6000803e3d6000fd5b505050505b506001016130b2565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816131a55790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061329957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15613315577f746200000000000000000000000000000000000000000000000000000000000086876040516020016132d391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d3f9392916004016147fa565b61331e85613d19565b613329846001613f60565b613334836000613f60565b60e084901c60e885901c0160ff168251146133945760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff168151146133f45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461346c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b613475856140fc565b61347e846140fc565b146134d05761348c856140fc565b613495846140fc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b6134d985613c06565b6134e284613c06565b14613534576134f085613c06565b6134f984613c06565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60005b613540866140fc565b8110156135d657613565613554858361410e565b60c5811115612c7957612c79614639565b6008601b8390030287901c60ff16146135ce576008601b8290030286901c60ff16613593613554868461410e565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b600101613537565b506135e08661171f565b156135f9578586604051602001610cfe91815260200190565b613631868686868660405160200161361191906145db565b60405160208183030381529060405286604051602001610e3c91906145db565b61318686600161132a565b600080805b8360ff1681101561366d5761366360ff601b83900360080287901c16836147e7565b9150600101613641565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036136ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516136f29392919061483b565b60405180910390a2611569565b600061370b8585613999565b9050600061371886613aa0565b905060005b81518110156137ed57600082828151811061373a5761373a614502565b602002602001015190506137666004826affffffffffffffffffffff1916613b2990919063ffffffff16565b156137e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906137b1908b908b908b908b9060040161486e565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050505b5060010161371d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138229392919061483b565b60405180910390a261383d828565ffffffffffff168561412f565b60005b815181101561200457600082828151811061385d5761385d614502565b602002602001015190506138896008826affffffffffffffffffffff1916613b2990919063ffffffff16565b15613907576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906138d4908b908b908b908b9060040161486e565b600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b505050505b50600101613840565b600060608373ffffffffffffffffffffffffffffffffffffffff16613936848888614145565b60405161394391906148a7565b600060405180830381855af49150503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016139ae9291906148c3565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a1557602082048401935060208281613a1157613a116148ff565b0691505b508254600882021b60208290038084111561366d576001850154600882021c82179150509392505050565b6000808260c5811115613a5557613a55614639565b60ff1690506061811015613a6f57601f1660010192915050565b60618360c5811115613a8357613a83614639565b03613a915750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ada57613ada614502565b60209081029190910101526000613b127f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361415c565b90506117a4613b248260008451614196565b614224565b60008160ff1682613b3a8560581c90565b1660ff1614905092915050565b8215613bc15760208310613b7157602083048401935060208381613b6d57613b6d6148ff565b0692505b8215613bc15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613bb2575050611569565b50600194909401939182900391015b5b60208210613be35780518455600190930192601f1990910190602001613bc2565b8115611569576000600019600884021c8554835182191691161785555050505050565b60006008600180613c19600260206146af565b613c2391906146af565b613c2d91906146af565b613c3791906146c2565b8260ff911c1692915050565b60008282604051602001613c589291906148c3565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613cae9291906148c3565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613d50576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d5b82613c06565b90506005811115613da2576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d3f565b6000613dad836140fc565b90506000613dbb83836147e7565b9050601c811115613e02576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d3f565b6000805b83811015613ead5760ff601b82900360080287901c166000819003613e5a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b6020811115613e98576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b613ea281846147e7565b925050600101613e06565b50613eb785614235565b8114613f0357613ec685614235565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d3f565b825b601c8110156131865760ff601b82900360080287901c168015613f57576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b50600101613f05565b80158015613f6c575081155b15613f8d57604051635318beb960e01b815260006004820152602401610d3f565b6000613f9883613c06565b90506005811115613fbf57604051635318beb960e01b815260048101829052602401610d3f565b6000613fca846140fc565b90506000613fd883836147e7565b9050601c811115613fff57604051635318beb960e01b815260048101829052602401610d3f565b6000805b8381101561406b57600061401a613554898461410e565b905080600003614056576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61406081846147e7565b925050600101614003565b5061407586614235565b81146140a05761408486614235565b604051635318beb960e01b8152600401610d3f91815260200190565b825b828110156120045760006140b9613554898461410e565b905080156140f3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016140a2565b600060086001613c23600260206146af565b6000601b8290036008028360ff911c1660c5811115612e1a57612e1a614639565b6113cb838383516141408560200190565b613b47565b6060838383604051602001612de993929190614915565b60606117a461416c858585613c99565b60006141918561417c8989614258565b9060ff166028026038011c64ffffffffff1690565b61426b565b6000818311806141a65750835182115b156141e3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d3f93929190614967565b602084016141f184826147e7565b905060006141ff85856146af565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612e1a836015600061428e565b60006008614245600260206146af565b61424f91906146c2565b9190911c919050565b6000612e1a6142678484613c43565b5490565b60405160208101601f19603f848401011660405282825261366d85858584614309565b6060600061429c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816142c2576142c26148ff565b04905060405193506020840160208202810160405281855260005b828110156142fd578451871c8252938701936020909101906001016142dd565b50505050509392505050565b821561439057602083106143335760208304840193506020838161432f5761432f6148ff565b0692505b82156143905760208390036000818410156143565750600019600884021c614360565b50600019600882021c5b8554600886021b818451168219821617845250818411614381575050611569565b50600194909401939182900391015b5b602082106143b25783548152600190930192601f1990910190602001614391565b8115611569576000600019600884021c8251865482191691161782525050505050565b6000602082840312156143e757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561443f57600080fd5b813567ffffffffffffffff8082111561445757600080fd5b818401915084601f83011261446b57600080fd5b81358181111561447d5761447d614417565b604051601f8201601f19908116603f011681019083821181831017156144a5576144a5614417565b816040528281528760208487010111156144be57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613a9a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b8281526040602082015260006117a4604083018461453c565b60008282518085526020808601955060208260051b8401016020860160005b848110156145ce57601f198684030189526145bc83835161453c565b988401989250908301906001016145a0565b5090979650505050505050565b602081526000612e1a6020830184614581565b838152606060208201526000614607606083018561453c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061467a60c0830185614581565b82810360a084015261468c8185614581565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee614699565b80820281158282048414176101ee576101ee614699565b600083516146eb818460208801614518565b8351908301906146ff818360208801614518565b01949350505050565b60008151808452602080850194506020840160005b838110156147395781518752958201959082019060010161471d565b509495945050505050565b6080815260006147576080830187614708565b8281036020840152614769818761453c565b90508460408401528281036060840152614783818561453c565b979650505050505050565b86815260c0602082015260006147a760c0830188614708565b82810360408401526147b9818861453c565b905085606084015282810360808401526147d3818661453c565b9150508260a0830152979650505050505050565b808201808211156101ee576101ee614699565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612c07606083018461453c565b60608152600061484e6060830186614708565b65ffffffffffff851660208401528281036040840152612bd0818561453c565b8481526080602082015260006148876080830186614708565b65ffffffffffff851660408401528281036060840152614783818561453c565b600082516148b9818460208701614518565b9190910192915050565b8281526000602080830184516020860160005b828110156148f2578151845292840192908401906001016148d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614927818460208901614518565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b60608152600061497a606083018661453c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:203:-:0;;;1572:26:106;;;1594:4;-1:-1:-1;;1572:26:106;;;;;;;;3126:44:109;;;;;;;;;;;228:9:0;186:51;;1729:98:203;-1:-1:-1;;;;;;;;;1729:25:203;:98::i;:::-;1695:132;;1831:38;;;-1:-1:-1;;;;;;1831:38:203;;;1867:1;1831:38;;;;1873;;;;;;1909:1;1873:38;;;1555:5875;;;;;;;;;;;;980:257:59;1067:10;1196:26;438:6;385:5:16;1196:26:59;:::i;:::-;-1:-1:-1;;;;;;1123:15:59;;-1:-1:-1;;;;;;;385:5:16;1142:31:59;;;;1123:51;-1:-1:-1;;;;;;1178:13:59;;:45;;;1123:101;;-1:-1:-1;980:257:59;;;;;:::o;14:222:207:-;79:9;;;100:10;;;97:133;;;152:10;147:3;143:20;140:1;133:31;187:4;184:1;177:15;215:4;212:1;205:15;97:133;14:222;;;;:::o;:::-;1555:5875:203;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000455565b60405162000133919062002dbc565b60405180910390f35b62000124620004b9565b620001246200051b565b6200015a6200057d565b60405162000133919062002e0b565b6200017362000670565b60405162000133919062002f30565b620001186200074a565b6200015a62000f8f565b6200011862001079565b6200017362001392565b620001b46200146c565b604051901515815260200162000133565b62000118620015b8565b6200011862001b14565b62000124620020e0565b600054620001b49060ff1681565b620001fb62002142565b601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905560405163af068c9e90620002469062002d3e565b604051809103906000f08015801562000263573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16909152620002ae91906024810162002fc7565b600060405180830381600087803b158015620002c957600080fd5b505af1158015620002de573d6000803e3d6000fd5b505050506000604051620002f29062002d4c565b604051809103906000f0801580156200030f573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000373907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200039291815260200190565b600060405180830381600087803b158015620003ad57600080fd5b505af1158015620003c2573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b1580156200043957600080fd5b505af11580156200044e573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015620004af57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000490575b5050505050905090565b6060600f805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6060600e805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200064e57602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b031916815260200190600401906020826003010492830192600103820291508084116200060f5790505b50505050508152505081526020019060010190620005a1565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620006b69062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620006e49062002ff3565b8015620007355780601f10620007095761010080835404028352916020019162000735565b820191906000526020600020905b8154815290600101906020018083116200071757829003601f168201915b50505050508152602001906001019062000694565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b158015620007b557600080fd5b505af1158015620007ca573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200082857600080fd5b505af11580156200083d573d6000803e3d6000fd5b50505050620008816040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620008f69062003048565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000994939291906004016200306d565b600060405180830381600087803b158015620009af57600080fd5b505af1158015620009c4573d6000803e3d6000fd5b50505050620009d2620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000a2c57600080fd5b505af115801562000a41573d6000803e3d6000fd5b5050505062000a696040518060600160405280602881526020016201feb96028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000ad195919092169390929091016200306d565b6000604051808303816000875af115801562000af1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b1b91908101906200311d565b905062000b27620024c0565b60008180602001905181019062000b3f919062003181565b60215490915062000b5b9082906001600160a01b031662002750565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000bc257600080fd5b505af115801562000bd7573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000c3557600080fd5b505af115801562000c4a573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000cb395949094169391929091016200306d565b6000604051808303816000875af115801562000cd3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000cfd91908101906200311d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000d25856001620031d7565b6040518263ffffffff1660e01b815260040162000d4491815260200190565b600060405180830381600087803b15801562000d5f57600080fd5b505af115801562000d74573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000dd357600080fd5b505af115801562000de8573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000ea69190600401620031f3565b600060405180830381600087803b15801562000ec157600080fd5b505af115801562000ed6573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000f3f95949094169391929091016200306d565b6000604051808303816000875af115801562000f5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000f8991908101906200311d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b82821015620006675760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200106057602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010215790505b5050505050815250508152602001906001019062000fb3565b6000604051620010899062002d5a565b604051809103906000f080158015620010a6573d6000803e3d6000fd5b5090506000620010fd61737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620028e2565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200116e57600080fd5b505af115801562001183573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620011e157600080fd5b505af1158015620011f6573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527f1a86b5500000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620012cb9190600401620031f3565b600060405180830381600087803b158015620012e657600080fd5b505af1158015620012fb573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200135a939291906200306d565b600060405180830381600087803b1580156200137557600080fd5b505af11580156200138a573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b8282101562000667578382906000526020600020018054620013d89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014069062002ff3565b8015620014575780601f106200142b5761010080835404028352916020019162001457565b820191906000526020600020905b8154815290600101906020018083116200143957829003601f168201915b505050505081526020019060010190620013b6565b60008054610100900460ff16156200148d5750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620015b35760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000008284015282518083038401815260608301909352600092909162001535917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49160800162003208565b60408051601f1981840301815290829052620015519162003252565b6000604051808303816000865af19150503d806000811462001590576040519150601f19603f3d011682016040523d82523d6000602084013e62001595565b606091505b5091505080806020019051810190620015af919062003270565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200161257600080fd5b505af115801562001627573d6000803e3d6000fd5b505050506200164f6040518060600160405280602181526020016201fe706021913962002201565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620016c49062003048565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200176a939291906004016200306d565b600060405180830381600087803b1580156200178557600080fd5b505af11580156200179a573d6000803e3d6000fd5b50505050620017a8620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200180257600080fd5b505af115801562001817573d6000803e3d6000fd5b505050506200183f6040518060600160405280602a81526020016201fee1602a913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc5895620018a795919092169390929091016200306d565b6000604051808303816000875af1158015620018c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018f191908101906200311d565b9050620018fd620024c0565b60008180602001905181019062001915919062003181565b602154909150620019319082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b1580156200198b57600080fd5b505af1158015620019a0573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001a4f939291906004016200306d565b6000604051808303816000875af115801562001a6f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001a9991908101906200311d565b915060008280602001905181019062001ab3919062003294565b805160215491925062001acf916001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000db8565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001b6e57600080fd5b505af115801562001b83573d6000803e3d6000fd5b5050505062001bc76040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002201565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001c3c9062003048565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001c86946001600160a01b03169360019101620032f2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001d04939291906004016200306d565b600060405180830381600087803b15801562001d1f57600080fd5b505af115801562001d34573d6000803e3d6000fd5b5050505062001d42620024c0565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001d9c57600080fd5b505af115801562001db1573d6000803e3d6000fd5b5050505062001dd96040518060600160405280602881526020016201fe916028913962002201565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001e4195919092169390929091016200306d565b6000604051808303816000875af115801562001e61573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001e8b91908101906200311d565b905062001e97620024c0565b60008180602001905181019062001eaf919062003181565b60215490915062001ecb9082906001600160a01b031662002750565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001f2557600080fd5b505af115801562001f3a573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062001ff89190600401620031f3565b600060405180830381600087803b1580156200201357600080fd5b505af115801562002028573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200209195949094169391929091016200306d565b6000604051808303816000875af1158015620020b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620020db91908101906200311d565b505050565b6060600c805480602002602001604051908101604052809291908181526020018280548015620004af576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000490575050505050905090565b6000604051620021529062002d68565b604051809103906000f0801580156200216f573d6000803e3d6000fd5b509050806001600160a01b031663c4d66de86200218b6200296b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620021e557600080fd5b505af1158015620021fa573d6000803e3d6000fd5b5050505090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620022a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620022c9919062003270565b620022d15750565b601b8054620022e09062002ff3565b9050600014601b604051602001620022f99190620033c6565b604051602081830303815290604052906200234c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b60405180910390fd5b50601d816040516200235f919062003252565b908152602001604051809103902054600014816040516020016200238491906200344d565b60405160208183030381529060405290620023ce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620023439190620031f3565b50601b620023dd828262003507565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200243d57600080fd5b505af115801562002452573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b1580156200043957600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002568573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200258e919062003270565b620025965750565b600060a082601c54620025aa9190620035d4565b620025b69190620035d4565b620025c3906001620031d7565b90506000811162002631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002343565b80601d601b604051620026459190620035ea565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002694601b82620035f8565b5062002732601b8054620026a89062002ff3565b80601f0160208091040260200160405190810160405280929190818152602001828054620026d69062002ff3565b8015620027275780601f10620026fb5761010080835404028352916020019162002727565b820191906000526020600020905b8154815290600101906020018083116200270957829003601f168201915b505050505062002a76565b604080516020810190915260008152601b90620020db908262003507565b806001600160a01b0316826001600160a01b031614620028de577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620027f09060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620028de62002b7c565b5050565b6000620028f260706010620031d7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b60006040516200297b9062002d76565b604051809103906000f08015801562002998573d6000803e3d6000fd5b50604051620029a79062002d84565b604051809103906000f080158015620029c4573d6000803e3d6000fd5b50604051620029d39062002d92565b604051809103906000f080158015620029f0573d6000803e3d6000fd5b50604051620029ff9062002da0565b604051809103906000f08015801562002a1c573d6000803e3d6000fd5b5060405162002a2b9062002dae565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f08015801562002a70573d6000803e3d6000fd5b50905090565b62002b797f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002abe919062003252565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002b089160040190815260200190565b600060405180830381865afa15801562002b26573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b5091908101906200311d565b8260405160200162002b64929190620036da565b60405160208183030381529060405262002cc3565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c955760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c30929160200162003208565b60408051601f198184030181529082905262002c4c9162003252565b6000604051808303816000865af19150503d806000811462002c8b576040519150601f19603f3d011682016040523d82523d6000602084013e62002c90565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b798160405160240162002cda9190620031f3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61767e806200376083390190565b611668806200adde83390190565b61028c806200c44683390190565b615368806200c6d283390190565b611c688062011a3a83390190565b61178f80620136a283390190565b610b388062014e3183390190565b6157b8806201596983390190565b614d4f806201b12183390190565b6020808252825182820181905260009190848201906040850190845b8181101562002dff5783516001600160a01b03168352928401929184019160010162002dd8565b50909695505050505050565b600060208083018184528085518083526040925060408601915060408160051b8701018488016000805b8481101562002ecd57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002eb75783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e73565b50978a0197955050509187019160010162002e35565b50919998505050505050505050565b60005b8381101562002ef957818101518382015260200162002edf565b50506000910152565b6000815180845262002f1c81602086016020860162002edc565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101562002f8b57603f1988860301845262002f7885835162002f02565b9450928501929085019060010162002f59565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002feb604083018462002f02565b949350505050565b600181811c908216806200300857607f821691505b60208210810362003042577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030425760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003097606083018462002f02565b95945050505050565b600067ffffffffffffffff80841115620030be57620030be62002f98565b604051601f8501601f19908116603f01168101908282118183101715620030e957620030e962002f98565b816040528093508581528686860111156200310357600080fd5b6200311386602083018762002edc565b5050509392505050565b6000602082840312156200313057600080fd5b815167ffffffffffffffff8111156200314857600080fd5b8201601f810184136200315a57600080fd5b62002feb84825160208401620030a0565b6001600160a01b038116811462002b7957600080fd5b6000602082840312156200319457600080fd5b8151620031a1816200316b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031ed57620031ed620031a8565b92915050565b602081526000620031a1602083018462002f02565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200324481600485016020870162002edc565b919091016004019392505050565b600082516200326681846020870162002edc565b9190910192915050565b6000602082840312156200328357600080fd5b81518015158114620031a157600080fd5b600060408284031215620032a757600080fd5b6040516040810181811067ffffffffffffffff82111715620032cd57620032cd62002f98565b6040528251620032dd816200316b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200331c608083018562002f02565b905082606083015295945050505050565b600081546200333c8162002ff3565b600182811680156200335757600181146200338b57620033bc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033bc565b8560005260208060002060005b85811015620033b35781548a82015290840190820162003398565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033fa600c8301846200332d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200348781600c85016020870162002edc565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f821115620020db576000816000526020600020601f850160051c81016020861015620034e65750805b601f850160051c820191505b818110156200138a57828155600101620034f2565b815167ffffffffffffffff81111562003524576200352462002f98565b6200353c8162003535845462002ff3565b84620034bb565b602080601f8311600181146200357457600084156200355b5750858301515b600019600386901b1c1916600185901b1785556200138a565b600085815260208120601f198616915b82811015620035a55788860151825594840194600190910190840162003584565b5085821015620035c45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031ed57620031ed620031a8565b6000620031a182846200332d565b81810362003604575050565b62003610825462002ff3565b67ffffffffffffffff8111156200362b576200362b62002f98565b6200363c8162003535845462002ff3565b6000601f8211600181146200367357600083156200365a5750848201545b600019600385901b1c1916600184901b1784556200044e565b600085815260209020601f19841690600086815260209020845b83811015620036af57828601548255600195860195909101906020016200368d565b5085831015620035c45793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200371481600c85016020880162002edc565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200375381600d84016020880162002edc565b01600d0194935050505056fe6101006040819052306080526200001690620000c4565b604051809103906000f08015801562000033573d6000803e3d6000fd5b506001600160a01b031660a0526040516200004e90620000d2565b604051809103906000f0801580156200006b573d6000803e3d6000fd5b506001600160a01b031660c0526040516200008690620000e0565b604051809103906000f080158015620000a3573d6000803e3d6000fd5b506001600160a01b031660e052348015620000bd57600080fd5b50620000ee565b6119f3806200306a83390190565b61192d8062004a5d83390190565b6112f4806200638a83390190565b60805160a05160c05160e051612f456200012560003960006106130152600061049101526000610310015260005050612f456000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a610085366004612a14565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004612a6c565b610203565b005b604051601f193601358152602001610096565b6100df610102366004612a6c565b610235565b6100a76106e9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe6106f3565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061023f6106e9565b9050610249610725565b610251610790565b6102596107ec565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526102ee90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161038c9250612b65565b600060405180830381855af49150503d80600081146103c7576040519150601f19603f3d011682016040523d82523d6000602084013e6103cc565b606091505b5091509150816103df576103df81610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261046f90612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161050d9250612b65565b600060405180830381855af49150503d8060008114610548576040519150601f19603f3d011682016040523d82523d6000602084013e61054d565b606091505b509092509050816105615761056181610850565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526105f190612b1d565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161068f9250612b65565b600060405180830381855af49150503d80600081146106ca576040519150601f19603f3d011682016040523d82523d6000602084013e6106cf565b606091505b509092509050816106e3576106e381610850565b50505050565b60006101fe610858565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107225750335b90565b61078e7f7462000000000000000000000000000043616c6c626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610771610862565b6107796109aa565b6107816109e4565b610789610b66565b610bdd565b565b61078e7f7462000000000000000000000000000053797374656d626f756e6444656c65677e200100200000000000000000000000000000000000000000000000000000006107dc610cb1565b6107e46109aa565b610781610d76565b61078e7f7462000000000000000000000000000054696d65626f756e6444656c656761747e20010020000000000000000000000000000000000000000000000000000000610838610e96565b6108406109aa565b610848610f15565b610789610fdf565b805160208201fd5b60006101fe611056565b60408051600480825260a082019092526000918291906020820160808036833701905050905060618160008151811061089d5761089d612b81565b602002602001019060c58111156108b6576108b6612b97565b908160c58111156108c9576108c9612b97565b815250506061816001815181106108e2576108e2612b81565b602002602001019060c58111156108fb576108fb612b97565b908160c581111561090e5761090e612b97565b81525050605f8160028151811061092757610927612b81565b602002602001019060c581111561094057610940612b97565b908160c581111561095357610953612b97565b81525050605f8160038151811061096c5761096c612b81565b602002602001019060c581111561098557610985612b97565b908160c581111561099857610998612b97565b9052506109a4816110a2565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f8160008151811061096c5761096c612b81565b60408051600480825260a08201909252606091816020015b60608152602001906001900390816109fc5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610a5c57610a5c612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610ab057610ab0612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b0457610b04612b81565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610b5857610b58612b81565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b7d5790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b6000610be7611056565b90503073ffffffffffffffffffffffffffffffffffffffff821603610c1957610c14878787878787611266565b610ca8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610c75908a908a908a908a908a908a90600401612c33565b600060405180830381600087803b158015610c8f57600080fd5b505af1158015610ca3573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610cec57610cec612b81565b602002602001019060c5811115610d0557610d05612b97565b908160c5811115610d1857610d18612b97565b81525050606181600181518110610d3157610d31612b81565b602002602001019060c5811115610d4a57610d4a612b97565b908160c5811115610d5d57610d5d612b97565b81525050605f8160028151811061096c5761096c612b81565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610d8e5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610dee57610dee612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610e4257610e42612b81565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610b5857610b58612b81565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610ed057610ed0612b81565b602002602001019060c5811115610ee957610ee9612b97565b908160c5811115610efc57610efc612b97565b8152505060618160018151811061096c5761096c612b81565b6040805160028082526060828101909352816020015b6060815260200190600190039081610f2b5790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f8b57610f8b612b81565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610b5857610b58612b81565b604080516001808252818301909252606091816020015b6060815260200190600190039081610ff65790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610b5857610b58612b81565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061109d573391505090565b919050565b6000601c825111156110d5578151604051635318beb960e01b81526004016110cc91815260200190565b60405180910390fd5b60008080805b85518110156111b05760006111198783815181106110fb576110fb612b81565b602002602001015160c581111561111457611114612b97565b6116fa565b90508060000361112e57600190920191611166565b8215611166576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061118757611187612b81565b602002602001015160c58111156111a0576111a0612b97565b901b9490941793506001016110db565b5060058111156111d657604051635318beb960e01b8152600481018290526024016110cc565b845181900360086111e960026020612c93565b6111f39190612ca6565b83901b93909317926008600161120b60026020612c93565b6112159190612c93565b61121f9190612ca6565b81901b9390931792600860018061123860026020612c93565b6112429190612c93565b61124c9190612c93565b6112569190612ca6565b9190911b92909217949350505050565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016148015906112fa57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15611376577f7462000000000000000000000000000000000000000000000000000000000000868760405160200161133491815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526110cc939291600401612cbd565b61137f8561175a565b61138a8460016119a1565b6113958360006119a1565b60e084901c60e885901c0160ff168251146113f55760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff168151146114555760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146114cd5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b6114d685611b3d565b6114df84611b3d565b14611531576114ed85611b3d565b6114f684611b3d565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b61153a85611b6f565b61154384611b6f565b146115955761155185611b6f565b61155a84611b6f565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b60005b6115a186611b3d565b811015611637576115c66115b58583611b8c565b60c581111561111457611114612b97565b6008601b8390030287901c60ff161461162f576008601b8290030286901c60ff166115f46115b58684611b8c565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016110cc565b600101611598565b5061164186611bb4565b1561169b57858660405160200161165a91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526110cc9291600401612cfe565b6116e786868686866040516020016116b39190612d17565b604051602081830303815290604052866040516020016116d39190612d17565b604051602081830303815290604052611c59565b6116f2866001611d3c565b505050505050565b6000808260c581111561170f5761170f612b97565b60ff169050606181101561172957601f1660010192915050565b60618360c581111561173d5761173d612b97565b0361174b5750601492915050565b50600092915050565b50919050565b80611791576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061179c82611b6f565b905060058111156117e3576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016110cc565b60006117ee83611b3d565b905060006117fc8383612d2a565b9050601c811115611843576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016110cc565b6000805b838110156118ee5760ff601b82900360080287901c16600081900361189b576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b60208111156118d9576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b6118e38184612d2a565b925050600101611847565b506118f885611dfa565b81146119445761190785611dfa565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016110cc565b825b601c8110156116f25760ff601b82900360080287901c168015611998576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016110cc565b50600101611946565b801580156119ad575081155b156119ce57604051635318beb960e01b8152600060048201526024016110cc565b60006119d983611b6f565b90506005811115611a0057604051635318beb960e01b8152600481018290526024016110cc565b6000611a0b84611b3d565b90506000611a198383612d2a565b9050601c811115611a4057604051635318beb960e01b8152600481018290526024016110cc565b6000805b83811015611aac576000611a5b6115b58984611b8c565b905080600003611a97576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa18184612d2a565b925050600101611a44565b50611ab686611dfa565b8114611ae157611ac586611dfa565b604051635318beb960e01b81526004016110cc91815260200190565b825b82811015610ca8576000611afa6115b58984611b8c565b90508015611b34576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611ae3565b600060086001611b4f60026020612c93565b611b599190612c93565b611b639190612ca6565b8260ff911c1692915050565b60006008600180611b8260026020612c93565b611b4f9190612c93565b6000601b8290036008028360ff911c1660c5811115611bad57611bad612b97565b9392505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611bed57611bed612b81565b60209081029190910101526000611c457f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611e1d565b9050611c518160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611c908484611e53565b90506000611c9e8585611e70565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611cd857611cd8612b81565b6020908102919091010152611d307f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611e9c565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611d7257611d72612b81565b602002602001018181525050611df57f746273746f72650000000000000000005265736f75726365496473000000000060001b82600085604051602001611dc091151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006121d5565b505050565b60006008611e0a60026020612c93565b611e149190612ca6565b9190911c919050565b6000611e4a611e2c86866121f1565b60ff858116601b0360080285901c16611e458587612247565b612280565b95945050505050565b8151815160009181810160389190911b1760609190911b17611bad565b60608282604051602001611e85929190612d3d565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611f2857857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611f1b9493929190612da8565b60405180910390a26116f2565b6000611f33876122d1565b905060005b815181101561200c576000828281518110611f5557611f55612b81565b60200260200101519050611f816001826affffffffffffffffffffff191661235a90919063ffffffff16565b15612003576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611fd0908c908c908c908c908c908c90600401612df2565b600060405180830381600087803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050505b50600101611f38565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516120439493929190612da8565b60405180910390a2600061205788886121f1565b9050600060208701905061206f826000895184612378565b600061207a85611b6f565b11156120fe57600061208c8a8a612437565b878155905060208601915060008060005b6120a688611b6f565b8160ff1610156120f9576120bb8d8d8361248d565b92506120d68a8260ff166028026038011c64ffffffffff1690565b91506120e58360008488612378565b6120ef8286612d2a565b945060010161209d565b505050505b60005b8351811015611d3057600084828151811061211e5761211e612b81565b6020026020010151905061214a6002826affffffffffffffffffffff191661235a90919063ffffffff16565b156121cc576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612199908e908e908e908e908e908e90600401612df2565b600060405180830381600087803b1580156121b357600080fd5b505af11580156121c7573d6000803e3d6000fd5b505050505b50600101612101565b6121ea85856121e48487612247565b8561250d565b5050505050565b60008282604051602001612206929190612e4b565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156122785761226e60ff601b83900360080287901c1683612d2a565b915060010161224c565b509392505050565b6000602082106122a6576020820484019350602082816122a2576122a2612e87565b0691505b508254600882021b602082900380841115612278576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061230b5761230b612b81565b602090810291909101015260006123437f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836127a8565b9050611c5161235582600084516127e2565b612870565b60008160ff168261236b8560581c90565b1660ff1614905092915050565b82156123f257602083106123a25760208304840193506020838161239e5761239e612e87565b0692505b82156123f25760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116123e35750506106e3565b50600194909401939182900391015b5b602082106124145780518455600190930192601f19909101906020016123f3565b81156106e3576000600019600884021c8554835182191691161785555050505050565b6000828260405160200161244c929190612e4b565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600083836040516020016124a2929190612e4b565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361259757837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161258a93929190612e9d565b60405180910390a26106e3565b60006125a385856121f1565b905060006125b0866122d1565b905060005b81518110156126855760008282815181106125d2576125d2612b81565b602002602001015190506125fe6004826affffffffffffffffffffff191661235a90919063ffffffff16565b1561267c576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612649908b908b908b908b90600401612eda565b600060405180830381600087803b15801561266357600080fd5b505af1158015612677573d6000803e3d6000fd5b505050505b506001016125b5565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516126ba93929190612e9d565b60405180910390a26126d5828565ffffffffffff1685612881565b60005b8151811015610ca85760008282815181106126f5576126f5612b81565b602002602001015190506127216008826affffffffffffffffffffff191661235a90919063ffffffff16565b1561279f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061276c908b908b908b908b90600401612eda565b600060405180830381600087803b15801561278657600080fd5b505af115801561279a573d6000803e3d6000fd5b505050505b506001016126d8565b6060611c516127b885858561248d565b60006127dd856127c88989612897565b9060ff166028026038011c64ffffffffff1690565b6128aa565b6000818311806127f25750835182115b1561282f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016110cc93929190612f13565b6020840161283d8482612d2a565b9050600061284b8585612c93565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611bad83601560006128cd565b611df5838383516128928560200190565b612378565b6000611bad6128a68484612437565b5490565b60405160208101601f19603f848401011660405282825261227885858584612948565b606060006128db8560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161290157612901612e87565b04905060405193506020840160208202810160405281855260005b8281101561293c578451871c82529387019360209091019060010161291c565b50505050509392505050565b82156129cf57602083106129725760208304840193506020838161296e5761296e612e87565b0692505b82156129cf5760208390036000818410156129955750600019600884021c61299f565b50600019600882021c5b8554600886021b8184511682198216178452508184116129c05750506106e3565b50600194909401939182900391015b5b602082106129f15783548152600190930192601f19909101906020016129d0565b81156106e3576000600019600884021c8251865482191691161782525050505050565b600060208284031215612a2657600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611bad57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215612a7e57600080fd5b813567ffffffffffffffff80821115612a9657600080fd5b818401915084601f830112612aaa57600080fd5b813581811115612abc57612abc612a56565b604051601f8201601f19908116603f01168101908382118183101715612ae457612ae4612a56565b81604052828152876020848701011115612afd57600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156117545760001960209190910360031b1b16919050565b60005b83811015612b5c578181015183820152602001612b44565b50506000910152565b60008251612b77818460208701612b41565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612bc5816020860160208601612b41565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b84811015612c2657601f19868403018952612c14838351612bad565b98840198925090830190600101612bf8565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612c5e60c0830185612bd9565b82810360a0840152612c708185612bd9565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee612c7d565b80820281158282048414176101ee576101ee612c7d565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611e4a6060830184612bad565b828152604060208201526000611c516040830184612bad565b602081526000611bad6020830184612bd9565b808201808211156101ee576101ee612c7d565b60008351612d4f818460208801612b41565b835190830190612d63818360208801612b41565b01949350505050565b60008151808452602080850194506020840160005b83811015612d9d57815187529582019590820190600101612d81565b509495945050505050565b608081526000612dbb6080830187612d6c565b8281036020840152612dcd8187612bad565b90508460408401528281036060840152612de78185612bad565b979650505050505050565b86815260c060208201526000612e0b60c0830188612d6c565b8281036040840152612e1d8188612bad565b90508560608401528281036080840152612e378186612bad565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612e7a57815184529284019290840190600101612e5e565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612eb06060830186612d6c565b65ffffffffffff851660208401528281036040840152612ed08185612bad565b9695505050505050565b848152608060208201526000612ef36080830186612d6c565b65ffffffffffff851660408401528281036060840152612de78185612bad565b606081526000612f266060830186612bad565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506119d3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a61008536600461152b565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611627565b6101f6565b6100e56100e036600461167e565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b87856103dc565b600192505050610261565b801561025a5760001901610231866102526101e7565b8785856104c7565b6000925050505b9392505050565b6102836102736101e7565b85858580519060200120856104c7565b50505050565b60006101f16105fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376116dd565b6020026020010181815250508381600281518110610357576103576116dd565b6020026020010181815250508281600381518110610377576103776116dd565b602090810291909101015260006103cf7f7462000000000000000000000000000043616c6c626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610606565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061041f5761041f6116dd565b602002602001018181525050836001600160a01b031660001b8160018151811061044b5761044b6116dd565b602002602001018181525050828160028151811061046b5761046b6116dd565b602002602001018181525050818160038151811061048b5761048b6116dd565b60209081029190910101526104c07f7462000000000000000000000000000043616c6c626f756e6444656c65676174826106c3565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061050a5761050a6116dd565b602002602001018181525050846001600160a01b031660001b81600181518110610536576105366116dd565b6020026020010181815250508381600281518110610556576105566116dd565b6020026020010181815250508281600381518110610576576105766116dd565b6020026020010181815250506105f47f7462000000000000000000000000000043616c6c626f756e6444656c6567617460001b826000856040516020016105bf91815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061076c565b505050505050565b60006101f1610821565b600080610611610821565b9050306001600160a01b038216036106375761062f86868686610860565b9150506103d4565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061068290899089908990899060040161172f565b602060405180830381865afa15801561069f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061175e565b60006106cd610821565b9050306001600160a01b038216036106ee576106e98383610896565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906107359086908690600401611777565b600060405180830381600087803b15801561074f57600080fd5b505af1158015610763573d6000803e3d6000fd5b50505050505050565b6000610776610821565b9050306001600160a01b0382160361079a5761079586868686866108ad565b6105f4565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906107e790899089908990899089906004016117d6565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b50505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b03168061085b573391505090565b919050565b600061088d61086f86866108c2565b60ff858116601b0360080285901c166108888587610918565b610951565b95945050505050565b6108a982826108a4856109a2565b610a27565b5050565b6104c085856108bc8487610918565b85610d26565b600082826040516020016108d792919061181d565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109495761093f60ff601b83900360080287901c168361186f565b915060010161091d565b509392505050565b6000602082106109775760208204840193506020828161097357610973611882565b0691505b508254600882021b602082900380841115610949576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016109f157507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e1610a1e7f746273746f72650000000000000000005461626c65730000000000000000000084610fc1565b60206000610951565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610aad57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610aa09190611898565b60405180910390a2505050565b6000610ab884610fdd565b905060005b8151811015610b8b576000828281518110610ada57610ada6116dd565b60200260200101519050610b066040826affffffffffffffffffffff191661106690919063ffffffff16565b15610b82576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610b4f908990899089906004016118ab565b600060405180830381600087803b158015610b6957600080fd5b505af1158015610b7d573d6000803e3d6000fd5b505050505b50600101610abd565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610bbc9190611898565b60405180910390a26000610bd085856108c2565b9050610c29816000610be186611084565b67ffffffffffffffff811115610bf957610bf9611584565b6040519080825280601f01601f191660200182016040528015610c23576020820181803683370190505b506110a7565b6000610c34846110bd565b1115610c55576000610c4686866110fa565b9050610c53816020611150565b505b60005b82518110156105f4576000838281518110610c7557610c756116dd565b60200260200101519050610ca16080826affffffffffffffffffffff191661106690919063ffffffff16565b15610d1d576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610cea908a908a908a906004016118ab565b600060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050505b50600101610c58565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610db057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610da3939291906118d4565b60405180910390a2610283565b6000610dbc85856108c2565b90506000610dc986610fdd565b905060005b8151811015610e9e576000828281518110610deb57610deb6116dd565b60200260200101519050610e176004826affffffffffffffffffffff191661106690919063ffffffff16565b15610e95576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e62908b908b908b908b90600401611911565b600060405180830381600087803b158015610e7c57600080fd5b505af1158015610e90573d6000803e3d6000fd5b505050505b50600101610dce565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610ed3939291906118d4565b60405180910390a2610eee828565ffffffffffff16856110a7565b60005b8151811015610763576000828281518110610f0e57610f0e6116dd565b60200260200101519050610f3a6008826affffffffffffffffffffff191661106690919063ffffffff16565b15610fb8576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f85908b908b908b908b90600401611911565b600060405180830381600087803b158015610f9f57600080fd5b505af1158015610fb3573d6000803e3d6000fd5b505050505b50600101610ef1565b60408051602081018490529081018290526000906060016108d7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611017576110176116dd565b6020908102919091010152600061104f7f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361118d565b90506103d461106182600084516111c7565b61125e565b60008160ff16826110778560581c90565b1660ff1614905092915050565b6000600861109460026020611955565b61109e9190611968565b9190911c919050565b6106e9838383516110b88560200190565b61126f565b600060086001806110d060026020611955565b6110da9190611955565b6110e49190611955565b6110ee9190611968565b8260ff911c1692915050565b6000828260405160200161110f92919061181d565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061115f83601f61186f565b611169919061197f565b611173908461186f565b90505b808310156106e95760008355600183019250611176565b60606103d461119d85858561132e565b60006111c2856111ad89896113ae565b9060ff166028026038011c64ffffffffff1690565b6113c1565b6000818311806111d75750835182115b1561121d578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401611214939291906119a1565b60405180910390fd5b6020840161122b848261186f565b905060006112398585611955565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006113e4565b82156112e957602083106112995760208304840193506020838161129557611295611882565b0692505b82156112e95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116112da575050610283565b50600194909401939182900391015b5b6020821061130b5780518455600190930192601f19909101906020016112ea565b8115610283576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161134392919061181d565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102616113bd84846110fa565b5490565b60405160208101601f19603f84840101166040528282526109498585858461145f565b606060006113f28560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161141857611418611882565b04905060405193506020840160208202810160405281855260005b82811015611453578451871c825293870193602090910190600101611433565b50505050509392505050565b82156114e657602083106114895760208304840193506020838161148557611485611882565b0692505b82156114e65760208390036000818410156114ac5750600019600884021c6114b6565b50600019600882021c5b8554600886021b8184511682198216178452508184116114d7575050610283565b50600194909401939182900391015b5b602082106115085783548152600190930192601f19909101906020016114e7565b8115610283576000600019600884021c8251865482191691161782525050505050565b60006020828403121561153d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b038116811461085b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f8301126115ab57600080fd5b813567ffffffffffffffff808211156115c6576115c6611584565b604051601f8301601f19908116603f011681019082821181831017156115ee576115ee611584565b8160405283815286602085880101111561160757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561163c57600080fd5b6116458461156d565b925060208401359150604084013567ffffffffffffffff81111561166857600080fd5b6116748682870161159a565b9150509250925092565b6000806000806080858703121561169457600080fd5b61169d8561156d565b935060208501359250604085013567ffffffffffffffff8111156116c057600080fd5b6116cc8782880161159a565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b8381101561172457815187529582019590820190600101611708565b509495945050505050565b84815260806020820152600061174860808301866116f3565b60ff949094166040830152506060015292915050565b60006020828403121561177057600080fd5b5051919050565b8281526040602082015260006103d460408301846116f3565b6000815180845260005b818110156117b65760208185018101518683018201520161179a565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006117ef60a08301876116f3565b60ff86166040840152828103606084015261180a8186611790565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561184c57815184529284019290840190600101611830565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611859565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846116f3565b8381526060602082015260006118c460608301856116f3565b9050826040830152949350505050565b6060815260006118e760608301866116f3565b65ffffffffffff8516602084015282810360408401526119078185611790565b9695505050505050565b84815260806020820152600061192a60808301866116f3565b65ffffffffffff85166040840152828103606084015261194a8185611790565b979650505050505050565b818103818111156101e1576101e1611859565b80820281158282048414176101e1576101e1611859565b60008261199c57634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006119b46060830186611790565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061190d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046114b4565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd366004611523565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046115ee565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b55000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103a3565b6001915050610254565b801561024e5760001901610227856102476101e7565b868461046d565b60009150505b9392505050565b61026e6102666101e7565b84848461046d565b505050565b60006101f1610581565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f5611621565b602002602001018181525050836001600160a01b031660001b8160018151811061032157610321611621565b602002602001018181525050828160028151811061034157610341611621565b602090810291909101015260006103997f7462000000000000000000000000000053797374656d626f756e6444656c656783837e2001002000000000000000000000000000000000000000000000000000000061058b565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b816000815181106103e6576103e6611621565b602002602001018181525050826001600160a01b031660001b8160018151811061041257610412611621565b602002602001018181525050818160028151811061043257610432611621565b60209081029190910101526104677f7462000000000000000000000000000053797374656d626f756e6444656c656782610650565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b816000815181106104b0576104b0611621565b602002602001018181525050836001600160a01b031660001b816001815181106104dc576104dc611621565b60200260200101818152505082816002815181106104fc576104fc611621565b60200260200101818152505061057a7f7462000000000000000000000000000053797374656d626f756e6444656c656760001b8260008560405160200161054591815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006106f4565b5050505050565b60006101f16107aa565b6000806105966107aa565b9050306001600160a01b038216036105bc576105b4868686866107e9565b915050610648565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d5990610607908990899089908990600401611673565b602060405180830381865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906116a2565b949350505050565b600061065a6107aa565b9050306001600160a01b038216036106765761026e838361081f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d906106bd90869086906004016116bb565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050565b60006106fe6107aa565b9050306001600160a01b038216036107225761071d8686868686610836565b6107a2565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae09061076f908990899089908990899060040161171a565b600060405180830381600087803b15801561078957600080fd5b505af115801561079d573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806107e4573391505090565b919050565b60006108166107f8868661084b565b60ff858116601b0360080285901c1661081185876108a1565b6108da565b95945050505050565b610832828261082d8561092b565b6109b0565b5050565b61057a858561084584876108a1565b85610caf565b60008282604051602001610860929190611761565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156108d2576108c860ff601b83900360080287901c16836117b3565b91506001016108a6565b509392505050565b600060208210610900576020820484019350602082816108fc576108fc6117c6565b0691505b508254600882021b6020829003808411156108d2576001850154600882021c82179150509392505050565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161097a57507e60030220202000000000000000000000000000000000000000000000000000919050565b6101e16109a77f746273746f72650000000000000000005461626c65730000000000000000000084610f4a565b602060006108da565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610a3657827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610a2991906117dc565b60405180910390a2505050565b6000610a4184610f66565b905060005b8151811015610b14576000828281518110610a6357610a63611621565b60200260200101519050610a8f6040826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610b0b576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610ad8908990899089906004016117ef565b600060405180830381600087803b158015610af257600080fd5b505af1158015610b06573d6000803e3d6000fd5b505050505b50600101610a46565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610b4591906117dc565b60405180910390a26000610b59858561084b565b9050610bb2816000610b6a8661100d565b67ffffffffffffffff811115610b8257610b8261150d565b6040519080825280601f01601f191660200182016040528015610bac576020820181803683370190505b50611030565b6000610bbd84611046565b1115610bde576000610bcf8686611083565b9050610bdc8160206110d9565b505b60005b82518110156107a2576000838281518110610bfe57610bfe611621565b60200260200101519050610c2a6080826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610ca6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610c73908a908a908a906004016117ef565b600060405180830381600087803b158015610c8d57600080fd5b505af1158015610ca1573d6000803e3d6000fd5b505050505b50600101610be1565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d3957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d2c93929190611818565b60405180910390a2610467565b6000610d45858561084b565b90506000610d5286610f66565b905060005b8151811015610e27576000828281518110610d7457610d74611621565b60200260200101519050610da06004826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610e1e576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610deb908b908b908b908b9060040161184b565b600060405180830381600087803b158015610e0557600080fd5b505af1158015610e19573d6000803e3d6000fd5b505050505b50600101610d57565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5c93929190611818565b60405180910390a2610e77828565ffffffffffff1685611030565b60005b81518110156106eb576000828281518110610e9757610e97611621565b60200260200101519050610ec36008826affffffffffffffffffffff1916610fef90919063ffffffff16565b15610f41576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0e908b908b908b908b9060040161184b565b600060405180830381600087803b158015610f2857600080fd5b505af1158015610f3c573d6000803e3d6000fd5b505050505b50600101610e7a565b6040805160208101849052908101829052600090606001610860565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610fa057610fa0611621565b60209081029190910101526000610fd87f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611116565b9050610648610fea8260008451611150565b6111e7565b60008160ff16826110008560581c90565b1660ff1614905092915050565b6000600861101d6002602061188f565b61102791906118a2565b9190911c919050565b61026e838383516110418560200190565b6111f8565b600060086001806110596002602061188f565b611063919061188f565b61106d919061188f565b61107791906118a2565b8260ff911c1692915050565b60008282604051602001611098929190611761565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206110e883601f6117b3565b6110f291906118b9565b6110fc90846117b3565b90505b8083101561026e57600083556001830192506110ff565b60606106486111268585856112b7565b600061114b856111368989611337565b9060ff166028026038011c64ffffffffff1690565b61134a565b6000818311806111605750835182115b156111a6578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119d939291906118db565b60405180910390fd5b602084016111b484826117b3565b905060006111c2858561188f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061136d565b821561127257602083106112225760208304840193506020838161121e5761121e6117c6565b0692505b82156112725760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611263575050610467565b50600194909401939182900391015b5b602082106112945780518455600190930192601f1990910190602001611273565b8115610467576000600019600884021c8554835182191691161785555050505050565b600083836040516020016112cc929190611761565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546113468484611083565b5490565b60405160208101601f19603f84840101166040528282526108d2858585846113e8565b6060600061137b8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816113a1576113a16117c6565b04905060405193506020840160208202810160405281855260005b828110156113dc578451871c8252938701936020909101906001016113bc565b50505050509392505050565b821561146f57602083106114125760208304840193506020838161140e5761140e6117c6565b0692505b821561146f5760208390036000818410156114355750600019600884021c61143f565b50600019600882021c5b8554600886021b818451168219821617845250818411611460575050610467565b50600194909401939182900391015b5b602082106114915783548152600190930192601f1990910190602001611470565b8115610467576000600019600884021c8251865482191691161782525050505050565b6000602082840312156114c657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b03811681146107e457600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561153857600080fd5b611541846114f6565b925060208401359150604084013567ffffffffffffffff8082111561156557600080fd5b818601915086601f83011261157957600080fd5b81358181111561158b5761158b61150d565b604051601f8201601f19908116603f011681019083821181831017156115b3576115b361150d565b816040528281528960208487010111156115cc57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60008060006060848603121561160357600080fd5b61160c846114f6565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156116685781518752958201959082019060010161164c565b509495945050505050565b84815260806020820152600061168c6080830186611637565b60ff949094166040830152506060015292915050565b6000602082840312156116b457600080fd5b5051919050565b8281526040602082015260006106486040830184611637565b6000815180845260005b818110156116fa576020818501810151868301820152016116de565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061173360a0830187611637565b60ff86166040840152828103606084015261174e81866116d4565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b8281101561179057815184529284019290840190600101611774565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e161179d565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611637565b8381526060602082015260006118086060830185611637565b9050826040830152949350505050565b60608152600061182b6060830186611637565b65ffffffffffff85166020840152828103604084015261039981856116d4565b8481526080602082015260006118646080830186611637565b65ffffffffffff85166040840152828103606084015261188481856116d4565b979650505050505050565b818103818111156101e1576101e161179d565b80820281158282048414176101e1576101e161179d565b6000826118d657634e487b7160e01b600052601260045260246000fd5b500490565b6060815260006118ee60608301866116d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b506112d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a610085366004610efb565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da366004610f77565b610203565b604051601f193601358152602001610096565b610105610100366004611042565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1a86b5500000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b8383610361565b5050565b60006101fe61046c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061106c565b602090810291909101015260006103587f7462000000000000000000000000000054696d65626f756e6444656c6567617483837e20010020000000000000000000000000000000000000000000000000000000610476565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106103af576103af61106c565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103e8576103e861106c565b6020026020010181815250506104667f7462000000000000000000000000000054696d65626f756e6444656c6567617460001b8260008560405160200161043191815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610555565b50505050565b60006101fe610625565b600080610481610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104b4576104ac86868686610671565b91505061054d565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d599061050c9089908990899089906004016110be565b602060405180830381865afa158015610529573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ac91906110ed565b949350505050565b600061055f610625565b90503073ffffffffffffffffffffffffffffffffffffffff8216036105905761058b868686868661069e565b61061d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906105ea908990899089908990899060040161114c565b600060405180830381600087803b15801561060457600080fd5b505af1158015610618573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061066c573391505090565b919050565b600061035861068086866106ba565b60ff858116601b0360080285901c166106998587610710565b610749565b6106b385856106ad8487610710565b8561079a565b5050505050565b600082826040516020016106cf929190611193565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107415761073760ff601b83900360080287901c16836111e5565b9150600101610715565b509392505050565b60006020821061076f5760208204840193506020828161076b5761076b6111f8565b0691505b508254600882021b602082900380841115610741576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361082457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108179392919061120e565b60405180910390a2610466565b600061083085856106ba565b9050600061083d86610a3e565b905060005b815181101561091257600082828151811061085f5761085f61106c565b6020026020010151905061088b6004826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610909576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906108d6908b908b908b908b9060040161124b565b600060405180830381600087803b1580156108f057600080fd5b505af1158015610904573d6000803e3d6000fd5b505050505b50600101610842565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109479392919061120e565b60405180910390a2610962828565ffffffffffff1685610ae5565b60005b8151811015610a355760008282815181106109825761098261106c565b602002602001015190506109ae6008826affffffffffffffffffffff1916610ac790919063ffffffff16565b15610a2c576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906109f9908b908b908b908b9060040161124b565b600060405180830381600087803b158015610a1357600080fd5b505af1158015610a27573d6000803e3d6000fd5b505050505b50600101610965565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a7857610a7861106c565b60209081029190910101526000610ab07f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610b00565b905061054d610ac28260008451610b3a565b610bd1565b60008160ff1682610ad88560581c90565b1660ff1614905092915050565b610afb83838351610af68560200190565b610be9565b505050565b606061054d610b10858585610ca8565b6000610b3585610b208989610d28565b9060ff166028026038011c64ffffffffff1690565b610d3b565b600081831180610b4a5750835182115b15610b90578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610b879392919061128f565b60405180910390fd5b60208401610b9e84826111e5565b90506000610bac85856112b4565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610be28360156000610d5e565b9392505050565b8215610c635760208310610c1357602083048401935060208381610c0f57610c0f6111f8565b0692505b8215610c635760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610c54575050610466565b50600194909401939182900391015b5b60208210610c855780518455600190930192601f1990910190602001610c64565b8115610466576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610cbd929190611193565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610be2610d378484610dd9565b5490565b60405160208101601f19603f848401011660405282825261074185858584610e2f565b60606000610d6c8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610d9257610d926111f8565b04905060405193506020840160208202810160405281855260005b82811015610dcd578451871c825293870193602090910190600101610dad565b50505050509392505050565b60008282604051602001610dee929190611193565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610eb65760208310610e5957602083048401935060208381610e5557610e556111f8565b0692505b8215610eb6576020839003600081841015610e7c5750600019600884021c610e86565b50600019600882021c5b8554600886021b818451168219821617845250818411610ea7575050610466565b50600194909401939182900391015b5b60208210610ed85783548152600190930192601f1990910190602001610eb7565b8115610466576000600019600884021c8251865482191691161782525050505050565b600060208284031215610f0d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610be257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461066c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215610f8c57600080fd5b610f9584610f3d565b925060208401359150604084013567ffffffffffffffff80821115610fb957600080fd5b818601915086601f830112610fcd57600080fd5b813581811115610fdf57610fdf610f61565b604051601f8201601f19908116603f0116810190838211818310171561100757611007610f61565b8160405282815289602084870101111561102057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561105557600080fd5b61105e83610f3d565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b60008151808452602080850194506020840160005b838110156110b357815187529582019590820190600101611097565b509495945050505050565b8481526080602082015260006110d76080830186611082565b60ff949094166040830152506060015292915050565b6000602082840312156110ff57600080fd5b5051919050565b6000815180845260005b8181101561112c57602081850181015186830182015201611110565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061116560a0830187611082565b60ff8616604084015282810360608401526111808186611106565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156111c2578151845292840192908401906001016111a6565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee6111cf565b634e487b7160e01b600052601260045260246000fd5b6060815260006112216060830186611082565b65ffffffffffff8516602084015282810360408401526112418185611106565b9695505050505050565b8481526080602082015260006112646080830186611082565b65ffffffffffff8516604084015282810360608401526112848185611106565b979650505050505050565b6060815260006112a26060830186611106565b60208301949094525060400152919050565b818103818111156101ee576101ee6111cf56fea164736f6c6343000818000a608060405234801561001057600080fd5b50611648806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c146102b6578063ea29e3ba146102cb576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611165565b6102e0565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610379565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611233565b610388565b6040516101699190611300565b3480156101e557600080fd5b506101f96101f4366004611313565b61040c565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610559565b34801561023c57600080fd5b5061025061024b3660046113ad565b610563565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046113c6565b6105ad565b3480156102ad57600080fd5b506101876105ea565b3480156102c257600080fd5b506101876105f4565b3480156102d757600080fd5b506101f96105fe565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061037357507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006103836106ea565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516103b2919061140f565b600060405180830381855af49150503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50915091508161040457805181602001fd5b949350505050565b60408051600080825260208201909252906104487f7462000000000000000000000000000000000000000000000000000000000000868661071c565b9050306104536107a3565b73ffffffffffffffffffffffffffffffffffffffff16036104af576104aa81838560405160200161048b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107ef565b610552565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104e591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b815260040161051f959493929190611467565b600060405180830381600087803b15801561053957600080fd5b505af115801561054d573d6000803e3d6000fd5b505050505b5050505050565b60006103836107a3565b6040805180820190915260008082526020820152604051806040016040528061058a610379565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105e19190611300565b60405180910390fd5b6000610383610379565b6000610383610559565b306106076107a3565b73ffffffffffffffffffffffffffffffffffffffff160361068b577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610681906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106819060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806107195750335b90565b600061072a607060106114ce565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107ea573391505090565b919050565b61055285858585856108008b610805565b61088a565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d00000000000000000000820161085457507e60030220202000000000000000000000000000000000000000000000000000919050565b6103736108817f746273746f72650000000000000000005461626c65730000000000000000000084610bd0565b60206000610c29565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361091657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161090994939291906114e1565b60405180910390a2610bc8565b600061092187610c7b565b905060005b81518110156109fa5760008282815181106109435761094361152b565b6020026020010151905061096f6001826affffffffffffffffffffff1916610d0490919063ffffffff16565b156109f1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c906109be908c908c908c908c908c908c90600401611541565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b50600101610926565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610a3194939291906114e1565b60405180910390a26000610a458888610d22565b90506000602087019050610a5d826000895184610d37565b6000610a6885610df5565b1115610aec576000610a7a8a8a610e32565b878155905060208601915060008060005b610a9488610df5565b8160ff161015610ae757610aa98d8d83610e88565b9250610ac48a8260ff166028026038011c64ffffffffff1690565b9150610ad38360008488610d37565b610add82866114ce565b9450600101610a8b565b505050505b60005b8351811015610bc3576000848281518110610b0c57610b0c61152b565b60200260200101519050610b386002826affffffffffffffffffffff1916610d0490919063ffffffff16565b15610bba576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610b87908e908e908e908e908e908e90600401611541565b600060405180830381600087803b158015610ba157600080fd5b505af1158015610bb5573d6000803e3d6000fd5b505050505b50600101610aef565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610c4f57602082048401935060208281610c4b57610c4b61159a565b0691505b508254600882021b602082900380841115610c73576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610cb557610cb561152b565b60209081029190910101526000610ced7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f08565b9050610404610cff8260008451610f42565b610fd0565b60008160ff1682610d158560581c90565b1660ff1614905092915050565b60008282604051602001610be89291906115b0565b8215610db15760208310610d6157602083048401935060208381610d5d57610d5d61159a565b0692505b8215610db15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610da2575050610def565b50600194909401939182900391015b5b60208210610dd35780518455600190930192601f1990910190602001610db2565b8115610def5783548151600019600885021c9182169119161784555b50505050565b60006008600180610e08600260206115ec565b610e1291906115ec565b610e1c91906115ec565b610e2691906115ff565b8260ff911c1692915050565b60008282604051602001610e479291906115b0565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610e9d9291906115b0565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6060610404610f18858585610e88565b6000610f3d85610f288989610fe8565b9060ff166028026038011c64ffffffffff1690565b610ffb565b600081831180610f525750835182115b15610f8f578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105e193929190611616565b60208401610f9d84826114ce565b90506000610fab85856115ec565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610fe1836015600061101e565b9392505050565b6000610fe1610ff78484610e32565b5490565b60405160208101601f19603f8484010116604052828252610c7385858584611099565b6060600061102c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816110525761105261159a565b04905060405193506020840160208202810160405281855260005b8281101561108d578451871c82529387019360209091019060010161106d565b50505050509392505050565b821561112057602083106110c3576020830484019350602083816110bf576110bf61159a565b0692505b82156111205760208390036000818410156110e65750600019600884021c6110f0565b50600019600882021c5b8554600886021b818451168219821617845250818411611111575050610def565b50600194909401939182900391015b5b602082106111425783548152600190930192601f1990910190602001611121565b8115610def576000600019600884021c8251865482191691161782525050505050565b60006020828403121561117757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610fe157600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156111d8576111d86111a7565b604051601f8501601f19908116603f01168101908282118183101715611200576112006111a7565b8160405280935085815286868601111561121957600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561124657600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461126a57600080fd5b9150602083013567ffffffffffffffff81111561128657600080fd5b8301601f8101851361129757600080fd5b6112a6858235602084016111bd565b9150509250929050565b60005b838110156112cb5781810151838201526020016112b3565b50506000910152565b600081518084526112ec8160208601602086016112b0565b601f01601f19169290920160200192915050565b602081526000610fe160208301846112d4565b60008060006060848603121561132857600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461135857600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461138d57600080fd5b9150604084013580151581146113a257600080fd5b809150509250925092565b6000602082840312156113bf57600080fd5b5035919050565b6000602082840312156113d857600080fd5b813567ffffffffffffffff8111156113ef57600080fd5b8201601f8101841361140057600080fd5b610404848235602084016111bd565b600082516114218184602087016112b0565b9190910192915050565b60008151808452602080850194506020840160005b8381101561145c57815187529582019590820190600101611440565b509495945050505050565b85815260a06020820152600061148060a083018761142b565b828103604084015261149281876112d4565b905084606084015282810360808401526114ac81856112d4565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610373576103736114b8565b6080815260006114f4608083018761142b565b828103602084015261150681876112d4565b9050846040840152828103606084015261152081856112d4565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061155a60c083018861142b565b828103604084015261156c81886112d4565b9050856060840152828103608084015261158681866112d4565b9150508260a0830152979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8281526000602080830184516020860160005b828110156115df578151845292840192908401906001016115c3565b5091979650505050505050565b81810381811115610373576103736114b8565b8082028115828204841417610373576103736114b8565b60608152600061162960608301866112d4565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b5061026c806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f366004610216565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b60006101826000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff16905080610211573391505090565b919050565b60006020828403121561022857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025857600080fd5b939250505056fea164736f6c6343000818000a60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615280620000e86000396000818161036f01526112a801526152806000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b60208201526000602282018190526030820181905291610218910160405160208183030381529060405261021390614387565b610731565b60408051616e7360f01b60208201526000602282018190526030820152919250610264910160405160208183030381529060405261025590614387565b61025f34846143c4565b6107b2565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610853565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506109239050565b9050600061035333858434610956565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004614434565b610983565b6040516103a591906144ea565b3480156103e757600080fd5b506102646103f636600461453f565b6109c6565b34801561040757600080fd5b5061026461041636600461453f565b610a79565b34801561042757600080fd5b506103ce6104363660046145cc565b610b24565b34801561044757600080fd5b5061026461045636600461462a565b610b6e565b34801561046757600080fd5b506102646104763660046146d7565b610c57565b34801561048757600080fd5b506102646104963660046146d7565b610d0d565b3480156104a757600080fd5b506104bb6104b636600461476d565b610dba565b6040519081526020016103a5565b6103ce6104d736600461483d565b610dcb565b3480156104e857600080fd5b506104fc6104f7366004614884565b610e07565b6040516103a5939291906148d7565b34801561051757600080fd5b506103ce610526366004614977565b610e5c565b34801561053757600080fd5b506102646105463660046149e0565b610e6b565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614a41565b610ee0565b34801561059d57600080fd5b506104bb6105ac366004614434565b61103c565b3480156105bd57600080fd5b506104bb6105cc366004614a9a565b61107f565b3480156105dd57600080fd5b506104bb6105ec366004614af9565b61108d565b3480156105fd57600080fd5b5061026461060c366004614b50565b61109a565b34801561061d57600080fd5b5061026461062c366004614b8a565b611116565b34801561063d57600080fd5b5061026461064c366004614c19565b6111c1565b34801561065d57600080fd5b5061026461066c366004614ca6565b61126f565b34801561067d57600080fd5b506104fc61068c3660046149e0565b6113b1565b34801561069d57600080fd5b506103ce6106ac3660046145cc565b611403565b3480156106bd57600080fd5b506104bb6106cc36600461476d565b611444565b3480156106dd57600080fd5b506102646106ec366004614434565b61144f565b3480156106fd57600080fd5b506104bb61070c36600461476d565b6114cf565b34801561071d57600080fd5b5061026461072c36600461453f565b6114da565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614cc3565b602090810291909101015260006107aa7f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b611585565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107e8576107e8614cc3565b60200260200101818152505061084e7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161083191815260200190565b60408051601f19818403018152919052630100080160dd1b6115b2565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106108ac576108ac614cc3565b6020908102919091010152600080806109057f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72857e240200200400000000000000000000000000000000000000000000000000006115c7565b9250925092506109168383836116cf565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610967878787876116e7565b915091508161097957610979816118b7565b9695505050505050565b6060610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506118bf9050565b3033036109f4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6109fe8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061195092505050565b505050505050565b303303610aa7576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ab18633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061196b92505050565b6060610b65858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506119a6915050565b95945050505050565b303303610b9c576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ba68833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119e092505050565b5050505050505050565b303303610c85576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c8f8733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506119f6915050565b50505050505050565b303303610d3b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d458733611904565b610d048787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506115b2915050565b6000610dc582611a39565b92915050565b6060303303610dfb576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61094f33848434610956565b606060006060610e4c878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506115c7915050565b9250925092509450945094915050565b60606109798686868686611abe565b303303610e99576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610ea38333611904565b61084e83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611bc192505050565b6060303303610f10576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b03851603610f3357610f2c33848434610956565b905061094f565b6000610f3f8533611bd4565b9050610f4e8186338787611c85565b15610f6757610f5f85858534610956565b91505061094f565b6000610f74866000611bd4565b9050610f838187338888611c85565b15610f9d57610f9486868634610956565b9250505061094f565b6000610fcf616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611d5a565b9050610fde8188338989611c85565b15610ff957610fef87878734610956565b935050505061094f565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610979868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506115859050565b6000610b6585858585611dd3565b60006107aa848484611e1b565b3033036110c8576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b60208201526000602282018190526030820152611108910160405160208183030381529060405261110290614387565b33611e31565b6111128282611e82565b5050565b303303611144576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61114e8633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611f3592505050565b3033036111ef576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6111f98833611904565b610c4d8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506121d092505050565b30330361129d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113415760408051616e7360f01b6020820152600060228201819052603082015261130c910160405160208183030381529060405261130790614387565b6121e8565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b600061134b612325565b6001600160a01b03161461138b576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113948161238c565b6040805160008152602081019091526113ae908290611e82565b50565b6060600060606113f48686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061242792505050565b92509250925093509350939050565b6060610b658585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061244d915050565b6000610dc582612463565b30330361147d576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6114878533611904565b6114c8858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506124d79050565b5050505050565b6000610dc582612530565b303303611508576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115128633611904565b610a718686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061255692505050565b6000610b656115948686612591565b60ff858116601b0360080285901c166115ad85876125e7565b612620565b6114c885856115c184876125e7565b85611f35565b60606000606060006115d885612671565b90506115e5878783612694565b935060006115f2866126cd565b905080156116c457611604888861270a565b935066ffffffffffffff841667ffffffffffffffff81111561162857611628614786565b6040519080825280601f01601f191660200182016040528015611652576020820181803683370190505b5092506020830160005b828160ff1610156116c15760006116748b8b8461271d565b90506000611691888460ff166028026038011c64ffffffffff1690565b90506116a0826000838761279d565b6116aa81856143c4565b9350505080806116b990614d04565b91505061165c565b50505b505093509350939050565b6000806116db85612869565b90969095509350505050565b6000606060006116f68661287e565b905060005b81518110156117c957600082828151811061171857611718614cc3565b602002602001015190506117446001826affffffffffffffffffffff191661290790919063ffffffff16565b156117c0576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c33230319061178d908c908c908c90600401614d23565b600060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050505b506001016116fb565b506117d687858888612925565b909350915060005b81518110156118ac5760008282815181106117fb576117fb614cc3565b602002602001015190506118276002826affffffffffffffffffffff191661290790919063ffffffff16565b156118a3576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990611870908c908c908c90600401614d23565b600060405180830381600087803b15801561188a57600080fd5b505af115801561189e573d6000803e3d6000fd5b505050505b506001016117de565b505094509492505050565b805160208201fd5b60606118ca82612a40565b8360ff1610156118e7576118e085858585612a52565b90506107aa565b6118e085856118f585612a40565b6118ff9087614d4b565b6119a6565b61190e8282612a7f565b6111125761191b826121e8565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614cd9565b6119658484848461196089611a39565b6119f6565b50505050565b6000611977858561270a565b90506000611994828560ff166028026038011c64ffffffffff1690565b9050610a718686868460008888612ac2565b60606107aa6119b685858561271d565b60006119db856119c6898961270a565b9060ff166028026038011c64ffffffffff1690565b612efa565b6114c885858585856119f18b611a39565b612f1d565b6119ff81612a40565b8360ff161015611a1b57611a1685858585856115b2565b6114c8565b6114c88585611a2984612a40565b611a339087614d4b565b85612556565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d000000000000000000008201611a8857507e60030220202000000000000000000000000000000000000000000000000000919050565b610dc5611ab57f746273746f72650000000000000000005461626c65730000000000000000000084613262565b60206000612620565b606081831115611b04576040517fa8c547820000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604401610290565b6000611b10878761270a565b90506000611b2d828760ff166028026038011c64ffffffffff1690565b90508085101580611b3d57508084115b15611b98578081861015611b5b57611b56600186614d64565b611b5d565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ba589898961271d565b9050611bb48187888803612efa565b9998505050505050505050565b6111128282611bcf85611a39565b61327e565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611c1957611c19614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110611c4557611c45614cc3565b60209081029190910101526000610b657f7462776f726c640000000000000000005573657244656c65676174696f6e436f8383630100080160dd1b611585565b6000611c908661357d565b15611c9d57506001610b65565b85611caa57506000610b65565b600080611d268660008a8a8989604051602401611cc993929190614d23565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612925565b9150915081611d3a57600092505050610b65565b80806020019051810190611d4e9190614d77565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d9357611d93614cc3565b602090810291909101015260006107aa7f7462776f726c640000000000000000004e616d65737061636544656c656761748383630100080160dd1b611585565b600080611ddf83612a40565b90508060ff168460ff161015611e075760ff848116601b0360080284901c165b9150506107aa565b611dff8686611e168488614d4b565b6135f8565b60006107aa848484611e2c88611a39565b611dd3565b6001600160a01b038116611e6b616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617613608565b6001600160a01b0316146111125761191b826121e8565b611eac827f6fdd1c80000000000000000000000000000000000000000000000000000000006136a4565b611f213360008484604051602401611ec491906144ea565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b0335000000000000000000000000000000000000000000000000000000001790526136ff565b506111128282805190602001206001613710565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603611fbf57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051611fb293929190614dd5565b60405180910390a2611965565b6000611fcb8585612591565b90506000611fd8866137f4565b905060005b81518110156120ad576000828281518110611ffa57611ffa614cc3565b602002602001015190506120266004826affffffffffffffffffffff191661290790919063ffffffff16565b156120a4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612071908b908b908b908b90600401614e08565b600060405180830381600087803b15801561208b57600080fd5b505af115801561209f573d6000803e3d6000fd5b505050505b50600101611fdd565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516120e293929190614dd5565b60405180910390a26120fd828565ffffffffffff1685613866565b60005b8151811015610d0457600082828151811061211d5761211d614cc3565b602002602001015190506121496008826affffffffffffffffffffff191661290790919063ffffffff16565b156121c7576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612194908b908b908b908b90600401614e08565b600060405180830381600087803b1580156121ae57600080fd5b505af11580156121c2573d6000803e3d6000fd5b505050505b50600101612100565b610a718686868686866121e38d8d61270a565b612ac2565b606081601081901b60006121fb8361387c565b9050827fffffffffffffffffffffffffffff000000000000000000000000000000000000831615612256576122517fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613893565b61228d565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156122c3576122be83613893565b6122fa565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161230c93929190614e41565b6040516020818303038152906040529350505050919050565b6040805160008082526020820190925260006123827f7462776f726c64000000000000000000496e69744d6f64756c6541646472657383837e14010014000000000000000000000000000000000000000000000000000000613937565b60601c9392505050565b604080516000808252602082018352606084901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168284015282518083036034018152605483019093529091611112917f7462776f726c64000000000000000000496e69744d6f64756c65416464726573918491907e140100140000000000000000000000000000000000000000000000000000006139ec565b606060006060612440858561243b88611a39565b6115c7565b9250925092509250925092565b60606107aa84848461245e88611a39565b6118bf565b600061246e82613a95565b905061247982613b27565b6124d257818260405160200161249191815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401614ecf565b919050565b60006124e3858561270a565b90506000612500828560ff166028026038011c64ffffffffff1690565b9050610a718686866125198764ffffffffff8716614d64565b604080516000815260208101909152889088612ac2565b600061253b82613bc4565b9050806124d257818260405160200161249191815260200190565b6000612562858561270a565b9050600061257f828560ff166028026038011c64ffffffffff1690565b9050610a718686866000858888612ac2565b600082826040516020016125a6929190614ee8565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156126185761260e60ff601b83900360080287901c16836143c4565b91506001016125ec565b509392505050565b6000602082106126465760208204840193506020828161264257612642614f24565b0691505b508254600882021b602082900380841115612618576001850154600882021c82179150509392505050565b6000600861268160026020614d64565b61268b9190614f3a565b9190911c919050565b6060816000036126b3575060408051602081019091526000815261094f565b60006126bf8585612591565b9050610b6581600085612efa565b600060086001806126e060026020614d64565b6126ea9190614d64565b6126f49190614d64565b6126fe9190614f3a565b8260ff911c1692915050565b600061094f6127198484613c56565b5490565b60008383604051602001612732929190614ee8565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b821561282457602083106127c7576020830484019350602083816127c3576127c3614f24565b0692505b82156128245760208390036000818410156127ea5750600019600884021c6127f4565b50600019600882021c5b8554600886021b818451168219821617845250818411612815575050611965565b50600194909401939182900391015b5b602082106128465783548152600190930192601f1990910190602001612825565b8115611965576000600019600884021c8251865482191691161782525050505050565b602081015160408201516000905b9050915091565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106128b8576128b8614cc3565b602090810291909101015260006128f07f7462776f726c6400000000000000000053797374656d486f6f6b73000000000083836119a6565b90506107aa6129028260008451613cac565b613d3a565b60008160ff16826129188560581c90565b1660ff1614905092915050565b6000606060008061293586613d4b565b90925090506001600160a01b0382166129865785612952876121e8565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190614ecf565b80612995576129958689611904565b86156129e1577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b1760006129ce82610731565b90506129de8261025f8b846143c4565b50505b60006129ed8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612a2557612a2088888488613def565b612a31565b612a3188888488613e67565b90999098509650505050505050565b6000600860016126ea60026020614d64565b6060610b65612a618686612591565b612a6b84866125e7565b60ff868116601b0360080286901c16612efa565b6000612ab2616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161783613ec8565b8061094f575061094f8383613ec8565b7f7462000000000000000000000000000000000000000000000000000000000000877fffff0000000000000000000000000000000000000000000000000000000000001614612b82577f74620000000000000000000000000000000000000000000000000000000000008788604051602001612b4091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610290939291600401614f51565b6000612b9d828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612bb69190614d64565b612bc091906143c4565b9050808214158015612be2575081612bd88688614f92565b64ffffffffff1614155b15612c32576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612c83576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612c90848984613f91565b90506000612c9d8b6137f4565b905060005b8151811015612d68576000828281518110612cbf57612cbf614cc3565b60200260200101519050612ceb6010826affffffffffffffffffffff191661290790919063ffffffff16565b15612d5f57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612d2c9796959493929190614fb7565b600060405180830381600087803b158015612d4657600080fd5b505af1158015612d5a573d6000803e3d6000fd5b505050505b50600101612ca2565b5064ffffffffff881660005b8a60ff168160ff161015612da757612d9b878260ff166028026038011c64ffffffffff1690565b90910190600101612d74565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051612de0959493929190615015565b60405180910390a250828414612e01576000612dfc8c8c613c56565b839055505b6000612e0e8c8c8c61271d565b9050612e22818a64ffffffffff1689613866565b5060005b8151811015612eec576000828281518110612e4357612e43614cc3565b60200260200101519050612e6f6020826affffffffffffffffffffff191661290790919063ffffffff16565b15612ee357606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401612eb09796959493929190614fb7565b600060405180830381600087803b158015612eca57600080fd5b505af1158015612ede573d6000803e3d6000fd5b505050505b50600101612e26565b505050505050505050505050565b60405160208101601f19603f84840101166040528282526126188585858461279d565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612fa957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612f9c949392919061505b565b60405180910390a2610a71565b6000612fb4876137f4565b905060005b815181101561308d576000828281518110612fd657612fd6614cc3565b602002602001015190506130026001826affffffffffffffffffffff191661290790919063ffffffff16565b15613084576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613051908c908c908c908c908c908c9060040161509a565b600060405180830381600087803b15801561306b57600080fd5b505af115801561307f573d6000803e3d6000fd5b505050505b50600101612fb9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516130c4949392919061505b565b60405180910390a260006130d88888612591565b905060006020870190506130f082600089518461405f565b60006130fb856126cd565b111561317f57600061310d8a8a613c56565b878155905060208601915060008060005b613127886126cd565b8160ff16101561317a5761313c8d8d8361271d565b92506131578a8260ff166028026038011c64ffffffffff1690565b9150613166836000848861405f565b61317082866143c4565b945060010161311e565b505050505b60005b835181101561325657600084828151811061319f5761319f614cc3565b602002602001015190506131cb6002826affffffffffffffffffffff191661290790919063ffffffff16565b1561324d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061321a908e908e908e908e908e908e9060040161509a565b600060405180830381600087803b15801561323457600080fd5b505af1158015613248573d6000803e3d6000fd5b505050505b50600101613182565b50505050505050505050565b60408051602081018490529081018290526000906060016125a6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361330457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516132f791906150f3565b60405180910390a2505050565b600061330f846137f4565b905060005b81518110156133e257600082828151811061333157613331614cc3565b6020026020010151905061335d6040826affffffffffffffffffffff191661290790919063ffffffff16565b156133d9576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906133a690899089908990600401615106565b600060405180830381600087803b1580156133c057600080fd5b505af11580156133d4573d6000803e3d6000fd5b505050505b50600101613314565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161341391906150f3565b60405180910390a260006134278585612591565b905061348081600061343886612671565b67ffffffffffffffff81111561345057613450614786565b6040519080825280601f01601f19166020018201604052801561347a576020820181803683370190505b50613866565b600061348b846126cd565b11156134ac57600061349d8686613c56565b90506134aa81602061411e565b505b60005b8251811015610a715760008382815181106134cc576134cc614cc3565b602002602001015190506134f86080826affffffffffffffffffffff191661290790919063ffffffff16565b15613574576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90613541908a908a908a90600401615106565b600060405180830381600087803b15801561355b57600080fd5b505af115801561356f573d6000803e3d6000fd5b505050505b506001016134af565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526135f090614387565b909114919050565b60006107aa826119c6868661270a565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061364157613641614cc3565b602090810291909101015260006136997f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000611585565b60601c949350505050565b6136ae828261415b565b611112576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b606060008061096787878787613e67565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b8160008151811061375157613751614cc3565b602002602001018181525050828160018151811061377157613771614cc3565b6020026020010181815250506119657f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016137bf91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006115b2565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061382e5761382e614cc3565b602090810291909101015260006128f07f746273746f726500000000000000000053746f7265486f6f6b7300000000000083836119a6565b61084e838383516138778560200190565b61405f565b600061388a607060106143c4565b9190911b919050565b606060005b60108110156138f8577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156138f857600101613898565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806107aa565b600080613942614177565b9050306001600160a01b0382160361396057611dff86868686611585565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906139ab90899089908990899060040161512f565b602060405180830381865afa1580156139c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff919061515e565b60006139f6614177565b9050306001600160a01b03821603613a1a57613a1586868686866115b2565b610a71565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae090613a679089908990899089908990600401615177565b600060405180830381600087803b158015613a8157600080fd5b505af1158015613256573d6000803e3d6000fd5b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613ace57613ace614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360017e60030220202000000000000000000000000000000000000000000000000000611585565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613b6057613b60614cc3565b60209081029190910101526000613bb87f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000611585565b90506107aa8160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613bfd57613bfd614cc3565b602090810291909101015260006107aa7f746273746f72650000000000000000005461626c6573000000000000000000008360027e60030220202000000000000000000000000000000000000000000000000000611585565b60008282604051602001613c6b929190614ee8565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600081831180613cbc5750835182115b15613cf9578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610290939291906151be565b60208401613d0784826143c4565b90506000613d158585614d64565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061094f83601560006141b1565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613d8557613d85614cc3565b602090810291909101015260008080613dde7f7462776f726c6400000000000000000053797374656d73000000000000000000857e150200140100000000000000000000000000000000000000000000000000006115c7565b92509250925061091683838361422c565b60006060836001600160a01b03166000613e0a858989614238565b604051613e1791906151e3565b60006040518083038185875af1925050503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b606091505b509097909650945050505050565b60006060836001600160a01b0316613e80848888614238565b604051613e8d91906151e3565b600060405180830381855af49150503d8060008114613e54576040519150601f19603f3d011682016040523d82523d6000602084013e613e59565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110613f0157613f01614cc3565b602002602001018181525050826001600160a01b031660001b81600181518110613f2d57613f2d614cc3565b60209081029190910101526000613f857f7462776f726c640000000000000000005265736f75726365416363657373000083837e01010001000000000000000000000000000000000000000000000000000000611585565b9050610b658160f81c90565b600064ffffffffff821115613fd5576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614007578085038201915061400f565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b82156140d957602083106140895760208304840193506020838161408557614085614f24565b0692505b82156140d95760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116140ca575050611965565b50600194909401939182900391015b5b602082106140fb5780518455600190930192601f19909101906020016140da565b8115611965576000600019600884021c8554835182191691161785555050505050565b6000602061412d83601f6143c4565b61413791906151ff565b61414190846143c4565b90505b8083101561084e5760008355600183019250614144565b600061416683614267565b801561094f575061094f83836142b3565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806124d2573391505090565b606060006141bf8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141e5576141e5614f24565b04905060405193506020840160208202810160405281855260005b82811015614220578451871c825293870193602090910190600101614200565b50505050509392505050565b6000806116db8561436b565b606083838360405160200161424f93929190615221565b60405160208183030381529060405290509392505050565b6000614293827f01ffc9a7000000000000000000000000000000000000000000000000000000006142b3565b8015610dc557506142ac826001600160e01b03196142b3565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015614354575060208210155b80156143605750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612877565b805160208083015191908110156143a8576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610dc557610dc56143ae565b60008083601f8401126143e957600080fd5b50813567ffffffffffffffff81111561440157600080fd5b6020830191508360208260051b850101111561441c57600080fd5b9250929050565b803560ff811681146124d257600080fd5b60008060008060006080868803121561444c57600080fd5b85359450602086013567ffffffffffffffff81111561446a57600080fd5b614476888289016143d7565b9095509350614489905060408701614423565b949793965091946060013592915050565b60005b838110156144b557818101518382015260200161449d565b50506000910152565b600081518084526144d681602086016020860161449a565b601f01601f19169290920160200192915050565b60208152600061094f60208301846144be565b60008083601f84011261450f57600080fd5b50813567ffffffffffffffff81111561452757600080fd5b60208301915083602082850101111561441c57600080fd5b6000806000806000806080878903121561455857600080fd5b86359550602087013567ffffffffffffffff8082111561457757600080fd5b6145838a838b016143d7565b909750955085915061459760408a01614423565b945060608901359150808211156145ad57600080fd5b506145ba89828a016144fd565b979a9699509497509295939492505050565b600080600080606085870312156145e257600080fd5b84359350602085013567ffffffffffffffff81111561460057600080fd5b61460c878288016143d7565b909450925061461f905060408601614423565b905092959194509250565b60008060008060008060008060a0898b03121561464657600080fd5b88359750602089013567ffffffffffffffff8082111561466557600080fd5b6146718c838d016143d7565b909950975060408b013591508082111561468a57600080fd5b6146968c838d016144fd565b909750955060608b0135945060808b01359150808211156146b657600080fd5b506146c38b828c016144fd565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a0312156146f257600080fd5b87359650602088013567ffffffffffffffff8082111561471157600080fd5b61471d8b838c016143d7565b909850965086915061473160408b01614423565b955060608a013591508082111561474757600080fd5b506147548a828b016144fd565b989b979a50959894979596608090950135949350505050565b60006020828403121561477f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156147c5576147c5614786565b604052919050565b600082601f8301126147de57600080fd5b813567ffffffffffffffff8111156147f8576147f8614786565b61480b6020601f19601f8401160161479c565b81815284602083860101111561482057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561485057600080fd5b82359150602083013567ffffffffffffffff81111561486e57600080fd5b61487a858286016147cd565b9150509250929050565b6000806000806060858703121561489a57600080fd5b84359350602085013567ffffffffffffffff8111156148b857600080fd5b6148c4878288016143d7565b9598909750949560400135949350505050565b6060815260006148ea60608301866144be565b846020840152828103604084015261097981856144be565b600082601f83011261491357600080fd5b8135602067ffffffffffffffff82111561492f5761492f614786565b8160051b61493e82820161479c565b928352848101820192828101908785111561495857600080fd5b83870192505b848310156143605782358252918301919083019061495e565b600080600080600060a0868803121561498f57600080fd5b85359450602086013567ffffffffffffffff8111156149ad57600080fd5b6149b988828901614902565b9450506149c860408701614423565b94979396509394606081013594506080013592915050565b6000806000604084860312156149f557600080fd5b83359250602084013567ffffffffffffffff811115614a1357600080fd5b614a1f868287016143d7565b9497909650939450505050565b6001600160a01b03811681146113ae57600080fd5b600080600060608486031215614a5657600080fd5b8335614a6181614a2c565b925060208401359150604084013567ffffffffffffffff811115614a8457600080fd5b614a90868287016147cd565b9150509250925092565b60008060008060808587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada87828801614902565b935050614ae960408601614423565b9396929550929360600135925050565b600080600060608486031215614b0e57600080fd5b83359250602084013567ffffffffffffffff811115614b2c57600080fd5b614b3886828701614902565b925050614b4760408501614423565b90509250925092565b60008060408385031215614b6357600080fd5b8235614b6e81614a2c565b9150602083013567ffffffffffffffff81111561486e57600080fd5b60008060008060008060808789031215614ba357600080fd5b86359550602087013567ffffffffffffffff80821115614bc257600080fd5b614bce8a838b016143d7565b90975095506040890135915065ffffffffffff82168214614bee57600080fd5b909350606088013590808211156145ad57600080fd5b803564ffffffffff811681146124d257600080fd5b60008060008060008060008060c0898b031215614c3557600080fd5b88359750602089013567ffffffffffffffff80821115614c5457600080fd5b614c608c838d016143d7565b9099509750879150614c7460408c01614423565b9650614c8260608c01614c04565b9550614c9060808c01614c04565b945060a08b01359150808211156146b657600080fd5b600060208284031215614cb857600080fd5b813561094f81614a2c565b634e487b7160e01b600052603260045260246000fd5b604081526000614cec60408301856144be565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614d1a57614d1a6143ae565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610b6560608301846144be565b60ff8281168282160390811115610dc557610dc56143ae565b81810381811115610dc557610dc56143ae565b600060208284031215614d8957600080fd5b8151801515811461094f57600080fd5b60008151808452602080850194506020840160005b83811015614dca57815187529582019590820190600101614dae565b509495945050505050565b606081526000614de86060830186614d99565b65ffffffffffff85166020840152828103604084015261097981856144be565b848152608060208201526000614e216080830186614d99565b65ffffffffffff85166040840152828103606084015261436081856144be565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451614ea281600386016020890161449a565b808401905081600382015284519150614ec282600483016020880161449a565b0160040195945050505050565b8281526040602082015260006107aa60408301846144be565b8281526000602080830184516020860160005b82811015614f1757815184529284019290840190600101614efb565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610dc557610dc56143ae565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610b6560608301846144be565b64ffffffffff818116838216019080821115614fb057614fb06143ae565b5092915050565b87815260e060208201526000614fd060e0830189614d99565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261500781856144be565b9a9950505050505050505050565b60a08152600061502860a0830188614d99565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611d4e81856144be565b60808152600061506e6080830187614d99565b828103602084015261508081876144be565b9050846040840152828103606084015261436081856144be565b86815260c0602082015260006150b360c0830188614d99565b82810360408401526150c581886144be565b905085606084015282810360808401526150df81866144be565b9150508260a0830152979650505050505050565b60208152600061094f6020830184614d99565b83815260606020820152600061511f6060830185614d99565b9050826040830152949350505050565b8481526080602082015260006151486080830186614d99565b60ff949094166040830152506060015292915050565b60006020828403121561517057600080fd5b5051919050565b85815260a06020820152600061519060a0830187614d99565b60ff8616604084015282810360608401526151ab81866144be565b9150508260808301529695505050505050565b6060815260006151d160608301866144be565b60208301949094525060400152919050565b600082516151f581846020870161449a565b9190910192915050565b60008261521c57634e487b7160e01b600052601260045260246000fd5b500490565b6000845161523381846020890161449a565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051611c3861003060003960006103150152611c386000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806345ec93541161005b57806345ec93541461010a5780638d53b2081461011d578063e1af802c14610130578063ef5d6bbb1461013857600080fd5b806301ffc9a71461008d578063119df25f146100b5578063219adc2e146100e257806340554c3a146100f7575b600080fd5b6100a061009b366004611806565b61014b565b60405190151581526020015b60405180910390f35b6100bd6101e4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ac565b6100f56100f0366004611848565b6101f3565b005b6100f5610105366004611861565b61023b565b604051601f1936013581526020016100ac565b6100f561012b366004611861565b610268565b6100bd610286565b6100f5610146366004611861565b610290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101de57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101ee6102cc565b905090565b6101fb6102fe565b6102048161036f565b61020d81610421565b61021e816102196101e4565b61046c565b61022781610527565b610238816102336101e4565b6105b2565b50565b6102436102fe565b61024c82610421565b610258826102196101e4565b6102648282600161067a565b5050565b6102706102fe565b61027c826102196101e4565b61026482826105b2565b60006101ee610771565b6102986102fe565b6102a18261036f565b6102aa82610421565b6102b6826102196101e4565b6102c0828261077b565b610258826102336101e4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102fb5750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361036d576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610238577f6e73000000000000000000000000000000000000000000000000000000000000816103e383610858565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610418939291906118fa565b60405180910390fd5b61042a81610995565b610238578061043882610858565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161041892919061193b565b73ffffffffffffffffffffffffffffffffffffffff81166104ce7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff00000000000000000000000000000000851617610a3a565b73ffffffffffffffffffffffffffffffffffffffff1614610264576104f282610858565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610418929190611954565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061055d5761055d6119a2565b60209081029190910101526102647f7462776f726c640000000000000000004e616d6573706163654f776e65720000827e14010014000000000000000000000000000000000000000000000000000000610ad6565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106105e7576105e76119a2565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610620576106206119a2565b60209081029190910101526106757f7462776f726c640000000000000000005265736f757263654163636573730000827e01010001000000000000000000000000000000000000000000000000000000610ad6565b505050565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106106af576106af6119a2565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106106e8576106e86119a2565b60200260200101818152505061076b7f7462776f726c640000000000000000005265736f75726365416363657373000060001b8260008560405160200161073691151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000610ddd565b50505050565b60006101ee610df9565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106107b1576107b16119a2565b6020026020010181815250506106757f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001610823919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000610ddd565b606081601081901b600061086b83610e45565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156108c6576108c17fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610e5c565b6108fd565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156109335761092e83610e5c565b61096a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161097c939291906119b8565b6040516020818303038152906040529350505050919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106109ce576109ce6119a2565b60209081029190910101526000610a267f746273746f72650000000000000000005265736f75726365496473000000000083837e01010001000000000000000000000000000000000000000000000000000000610f00565b9050610a328160f81c90565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a7357610a736119a2565b60209081029190910101526000610acb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000610f00565b60601c949350505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b5c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b4f9190611a82565b60405180910390a2505050565b6000610b6784610f36565b905060005b8151811015610c3a576000828281518110610b8957610b896119a2565b60200260200101519050610bb56040826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610c31576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610bfe90899089908990600401611a95565b600060405180830381600087803b158015610c1857600080fd5b505af1158015610c2c573d6000803e3d6000fd5b505050505b50600101610b6c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c6b9190611a82565b60405180910390a26000610c7f8585610fdd565b9050610cd8816000610c9086611033565b67ffffffffffffffff811115610ca857610ca861198c565b6040519080825280601f01601f191660200182016040528015610cd2576020820181803683370190505b50611056565b6000610ce38461106c565b1115610d04576000610cf586866110a9565b9050610d028160206110ff565b505b60005b8251811015610dd5576000838281518110610d2457610d246119a2565b60200260200101519050610d506080826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15610dcc576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610d99908a908a908a90600401611a95565b600060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050505b50600101610d07565b505050505050565b610df28585610dec848761113c565b85611175565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610e40573391505090565b919050565b6000610e5360706010611ad4565b9190911b919050565b606060005b6010811015610ec1577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ec157600101610e61565b604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000851660208201528151603090910190915281815280610a32565b6000610f2d610f0f8686610fdd565b60ff858116601b0360080285901c16610f28858761113c565b611419565b95945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f7057610f706119a2565b60209081029190910101526000610fa87f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361146a565b9050610a32610fba82600084516114a4565b611532565b60008160ff1682610fd08560581c90565b1660ff1614905092915050565b60008282604051602001610ff2929190611ae7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861104360026020611b23565b61104d9190611b36565b9190911c919050565b610675838383516110678560200190565b61154a565b6000600860018061107f60026020611b23565b6110899190611b23565b6110939190611b23565b61109d9190611b36565b8260ff911c1692915050565b600082826040516020016110be929190611ae7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061110e83601f611ad4565b6111189190611b63565b6111229084611ad4565b90505b808310156106755760008355600183019250611125565b600080805b8360ff1681101561116d5761116360ff601b83900360080287901c1683611ad4565b9150600101611141565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036111ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516111f293929190611b85565b60405180910390a261076b565b600061120b8585610fdd565b9050600061121886610f36565b905060005b81518110156112ed57600082828151811061123a5761123a6119a2565b602002602001015190506112666004826affffffffffffffffffffff1916610fbf90919063ffffffff16565b156112e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906112b1908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050505b5060010161121d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161132293929190611b85565b60405180910390a261133d828565ffffffffffff1685611056565b60005b815181101561141057600082828151811061135d5761135d6119a2565b602002602001015190506113896008826affffffffffffffffffffff1916610fbf90919063ffffffff16565b15611407576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906113d4908b908b908b908b90600401611bc2565b600060405180830381600087803b1580156113ee57600080fd5b505af1158015611402573d6000803e3d6000fd5b505050505b50600101611340565b50505050505050565b60006020821061143f5760208204840193506020828161143b5761143b611b4d565b0691505b508254600882021b60208290038084111561116d576001850154600882021c82179150509392505050565b6060610a3261147a858585611609565b600061149f8561148a8989611689565b9060ff166028026038011c64ffffffffff1690565b61169c565b6000818311806114b45750835182115b156114f1578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161041893929190611c06565b602084016114ff8482611ad4565b9050600061150d8585611b23565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061154383601560006116bf565b9392505050565b82156115c457602083106115745760208304840193506020838161157057611570611b4d565b0692505b82156115c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116115b557505061076b565b50600194909401939182900391015b5b602082106115e65780518455600190930192601f19909101906020016115c5565b811561076b576000600019600884021c8554835182191691161785555050505050565b6000838360405160200161161e929190611ae7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061154361169884846110a9565b5490565b60405160208101601f19603f848401011660405282825261116d8585858461173a565b606060006116cd8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816116f3576116f3611b4d565b04905060405193506020840160208202810160405281855260005b8281101561172e578451871c82529387019360209091019060010161170e565b50505050509392505050565b82156117c157602083106117645760208304840193506020838161176057611760611b4d565b0692505b82156117c15760208390036000818410156117875750600019600884021c611791565b50600019600882021c5b8554600886021b8184511682198216178452508184116117b257505061076b565b50600194909401939182900391015b5b602082106117e35783548152600190930192601f19909101906020016117c2565b811561076b576000600019600884021c8251865482191691161782525050505050565b60006020828403121561181857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154357600080fd5b60006020828403121561185a57600080fd5b5035919050565b6000806040838503121561187457600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff8116811461189f57600080fd5b809150509250929050565b60005b838110156118c55781810151838201526020016118ad565b50506000910152565b600081518084526118e68160208601602086016118aa565b601f01601f19169290920160200192915050565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610f2d60608301846118ce565b828152604060208201526000610a3260408301846118ce565b60408152600061196760408301856118ce565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451611a198160038601602089016118aa565b808401905081600382015284519150611a398260048301602088016118aa565b0160040195945050505050565b60008151808452602080850194506020840160005b83811015611a7757815187529582019590820190600101611a5b565b509495945050505050565b6020815260006115436020830184611a46565b838152606060208201526000611aae6060830185611a46565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101de576101de611abe565b8281526000602080830184516020860160005b82811015611b1657815184529284019290840190600101611afa565b5091979650505050505050565b818103818111156101de576101de611abe565b80820281158282048414176101de576101de611abe565b634e487b7160e01b600052601260045260246000fd5b600082611b8057634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b986060830186611a46565b65ffffffffffff851660208401528281036040840152611bb881856118ce565b9695505050505050565b848152608060208201526000611bdb6080830186611a46565b65ffffffffffff851660408401528281036060840152611bfb81856118ce565b979650505050505050565b606081526000611c1960608301866118ce565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b5060805161175f61003060003960006103b3015261175f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611352565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da366004611394565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046113e5565b6102b4565b6100a7610360565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b261036a565b905090565b6101bf61039c565b6101d0836101cb6101a8565b61040d565b60006101db8461045d565b905080821115610226576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b610239846102348484611440565b6104f6565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d8060008114610294576040519150601f19603f3d011682016040523d82523d6000602084013e610299565b606091505b5091509150816102ac576102ac816105af565b505050505050565b6102bc61039c565b6102c5836105b7565b6102ce826105b7565b6102d782610663565b6102e3836101cb6101a8565b60006102ee8461045d565b905080821115610334576040517f0e0e2d4d000000000000000000000000000000000000000000000000000000008152600481018290526024810183905260440161021d565b610342846102348484611440565b61035a83836103508661045d565b6102349190611453565b50505050565b60006101b26106ae565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103995750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361040b576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61041782826106b8565b610459576104248261071d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161021d9291906114b6565b5050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610496576104966114ee565b602090810291909101015260006104ee7f7462776f726c6400000000000000000042616c616e636573000000000000000083837e2001002000000000000000000000000000000000000000000000000000000061085a565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061052c5761052c6114ee565b6020026020010181815250506105aa7f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161057591815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610890565b505050565b805160208201fd5b7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008216178114610660577f6e730000000000000000000000000000000000000000000000000000000000008161062b8361071d565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161021d9392919061151d565b50565b61066c816108ac565b610660578061067a8261071d565b6040517ffbf10ce600000000000000000000000000000000000000000000000000000000815260040161021d92919061155e565b60006101b2610949565b60006107067f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610995565b8061071657506107168383610995565b9392505050565b606081601081901b600061073083610a6b565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561078b576107867fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610a82565b6107c2565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107f8576107f383610a82565b61082f565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161084193929190611577565b6040516020818303038152906040529350505050919050565b60006108876108698686610b26565b60ff858116601b0360080285901c166108828587610b7c565b610bb5565b95945050505050565b6108a5858561089f8487610b7c565b85610c06565b5050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106108e5576108e56114ee565b6020908102919091010152600061093d7f746273746f72650000000000000000005265736f75726365496473000000000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506104ee8160f81c90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610990573391505090565b919050565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106109ce576109ce6114ee565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610a0757610a076114ee565b60209081029190910101526000610a5f7f7462776f726c640000000000000000005265736f75726365416363657373000083837e0101000100000000000000000000000000000000000000000000000000000061085a565b90506108878160f81c90565b6000610a7960706010611453565b9190911b919050565b606060005b6010811015610ae7577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ae757600101610a87565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152806104ee565b60008282604051602001610b3b929190611605565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610bad57610ba360ff601b83900360080287901c1683611453565b9150600101610b81565b509392505050565b600060208210610bdb57602082048401935060208281610bd757610bd7611641565b0691505b508254600882021b602082900380841115610bad576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610c9057837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610c83939291906116ac565b60405180910390a261035a565b6000610c9c8585610b26565b90506000610ca986610eaa565b905060005b8151811015610d7e576000828281518110610ccb57610ccb6114ee565b60200260200101519050610cf76004826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610d75576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610d42908b908b908b908b906004016116e9565b600060405180830381600087803b158015610d5c57600080fd5b505af1158015610d70573d6000803e3d6000fd5b505050505b50600101610cae565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610db3939291906116ac565b60405180910390a2610dce828565ffffffffffff1685610f51565b60005b8151811015610ea1576000828281518110610dee57610dee6114ee565b60200260200101519050610e1a6008826affffffffffffffffffffff1916610f3390919063ffffffff16565b15610e98576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610e65908b908b908b908b906004016116e9565b600060405180830381600087803b158015610e7f57600080fd5b505af1158015610e93573d6000803e3d6000fd5b505050505b50600101610dd1565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ee457610ee46114ee565b60209081029190910101526000610f1c7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610f67565b90506104ee610f2e8260008451610fa1565b61102f565b60008160ff1682610f448560581c90565b1660ff1614905092915050565b6105aa83838351610f628560200190565b611040565b60606104ee610f778585856110ff565b6000610f9c85610f87898961117f565b9060ff166028026038011c64ffffffffff1690565b611192565b600081831180610fb15750835182115b15610fee578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161021d9392919061172d565b60208401610ffc8482611453565b9050600061100a8585611440565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061071683601560006111b5565b82156110ba576020831061106a5760208304840193506020838161106657611066611641565b0692505b82156110ba5760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116110ab57505061035a565b50600194909401939182900391015b5b602082106110dc5780518455600190930192601f19909101906020016110bb565b811561035a576000600019600884021c8554835182191691161785555050505050565b60008383604051602001611114929190611605565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061071661118e8484611230565b5490565b60405160208101601f19603f8484010116604052828252610bad85858584611286565b606060006111c38560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816111e9576111e9611641565b04905060405193506020840160208202810160405281855260005b82811015611224578451871c825293870193602090910190600101611204565b50505050509392505050565b60008282604051602001611245929190611605565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561130d57602083106112b0576020830484019350602083816112ac576112ac611641565b0692505b821561130d5760208390036000818410156112d35750600019600884021c6112dd565b50600019600882021c5b8554600886021b8184511682198216178452508184116112fe57505061035a565b50600194909401939182900391015b5b6020821061132f5783548152600190930192601f199091019060200161130e565b811561035a576000600019600884021c8251865482191691161782525050505050565b60006020828403121561136457600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461071657600080fd5b6000806000606084860312156113a957600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146113d457600080fd5b929592945050506040919091013590565b6000806000606084860312156113fa57600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a2611411565b808201808211156101a2576101a2611411565b60005b83811015611481578181015183820152602001611469565b50506000910152565b600081518084526114a2816020860160208601611466565b601f01601f19169290920160200192915050565b6040815260006114c9604083018561148a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610887606083018461148a565b8281526040602082015260006104ee604083018461148a565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516115d8816003860160208901611466565b8084019050816003820152845191506115f8826004830160208801611466565b0160040195945050505050565b8281526000602080830184516020860160005b8281101561163457815184529284019290840190600101611618565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008151808452602080850194506020840160005b838110156116a157815187529582019590820190600101611685565b509495945050505050565b6060815260006116bf6060830186611670565b65ffffffffffff8516602084015282810360408401526116df818561148a565b9695505050505050565b8481526080602082015260006117026080830186611670565b65ffffffffffff851660408401528281036060840152611722818561148a565b979650505050505050565b606081526000611740606083018661148a565b6020830194909452506040015291905056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051610b0861003060003960006105fb0152610b086000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a6100853660046106b0565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed366004610745565b6101c2565b60405161009691906107ab565b6100f261010d366004610745565b6103d4565b6100a76105a8565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b2565b905090565b60606101cc6105e4565b60006101d66105a8565b90508267ffffffffffffffff8111156101f1576101f1610843565b60405190808252806020026020018201604052801561022457816020015b606081526020019060019003908161020f5790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061026457610264610872565b905060200281019061027691906108a1565b6102849060208101906108df565b8a8a8881811061029657610296610872565b90506020028101906102a891906108a1565b602001358b8b898181106102be576102be610872565b90506020028101906102d091906108a1565b6102de906040810190610915565b6040516024016102f194939291906109a5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161033e92506109e5565b600060405180830381855af49150503d8060008114610379576040519150601f19603f3d011682016040523d82523d6000602084013e61037e565b606091505b5091509150816103915761039181610655565b808060200190518101906103a591906109f7565b8584815181106103b7576103b7610872565b6020908102919091010152505060010161022a565b505092915050565b60606103de6105e4565b60006103e86105a8565b90508267ffffffffffffffff81111561040357610403610843565b60405190808252806020026020018201604052801561043657816020015b60608152602001906001900390816104215790505b50915060005b838110156103cc5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047657610476610872565b90506020028101906104889190610aa4565b358a8a8881811061049b5761049b610872565b90506020028101906104ad9190610aa4565b6104bb906020810190610915565b6040516024016104cd93929190610ad8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161051a92506109e5565b600060405180830381855af49150503d8060008114610555576040519150601f19603f3d011682016040523d82523d6000602084013e61055a565b606091505b50915091508161056d5761056d81610655565b8080602001905181019061058191906109f7565b85848151811061059357610593610872565b6020908102919091010152505060010161043c565b60006101bd61065d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e15750335b90565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610653576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805160208201fd5b60006101bd6000807f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755473ffffffffffffffffffffffffffffffffffffffff169050806106ab573391505090565b919050565b6000602082840312156106c257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146106f257600080fd5b9392505050565b60008083601f84011261070b57600080fd5b50813567ffffffffffffffff81111561072357600080fd5b6020830191508360208260051b850101111561073e57600080fd5b9250929050565b6000806020838503121561075857600080fd5b823567ffffffffffffffff81111561076f57600080fd5b61077b858286016106f9565b90969095509350505050565b60005b838110156107a257818101518382015260200161078a565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610836577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610817818989018a8501610787565b601f01601f1916959095018601945092850192908501906001016107d2565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126108d557600080fd5b9190910192915050565b6000602082840312156108f157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146106f257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261094a57600080fd5b83018035915067ffffffffffffffff82111561096557600080fd5b60200191503681900382131561073e57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526060604082015260006109db60608301848661097a565b9695505050505050565b600082516108d5818460208701610787565b600060208284031215610a0957600080fd5b815167ffffffffffffffff80821115610a2157600080fd5b818401915084601f830112610a3557600080fd5b815181811115610a4757610a47610843565b604051601f8201601f19908116603f01168101908382118183101715610a6f57610a6f610843565b81604052828152876020848701011115610a8857600080fd5b610a99836020830160208801610787565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126108d557600080fd5b838152604060208201526000610af260408301848661097a565b9594505050505056fea164736f6c6343000818000a60a06040523060805234801561001457600080fd5b50608051615787620000316000396000610c0801526157876000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063742d6118116100b2578063b29e408911610081578063cdc938c511610066578063cdc938c514610295578063d5f8337f146102a8578063e1af802c146102bb57600080fd5b8063b29e40891461026f578063bfdfaff71461028257600080fd5b8063742d6118146102235780638da798da14610236578063a92813ad14610249578063aa66e9c81461025c57600080fd5b80631d2257ba116101095780633350b6a9116100ee5780633350b6a9146101ea57806345ec9354146101fd578063530f4b601461021057600080fd5b80631d2257ba146101ab57806326d98102146101be57600080fd5b806301ffc9a71461013b57806305609129146101635780630ba51f4914610178578063119df25f1461018b575b600080fd5b61014e610149366004614c02565b6102c3565b60405190151581526020015b60405180910390f35b610176610171366004614c32565b61032c565b005b610176610186366004614cae565b610353565b61019361041e565b6040516001600160a01b03909116815260200161015a565b6101766101b9366004614dfb565b61042d565b6101d16101cc366004614e54565b6104a8565b6040516001600160e01b0319909116815260200161015a565b6101766101f8366004614e9b565b6105f4565b604051601f19360135815260200161015a565b61017661021e366004614ef3565b61076f565b6101d1610231366004614f31565b6107db565b610176610244366004614f7f565b61089d565b610176610257366004614c32565b61095f565b61017661026a366004614fb9565b61099e565b61017661027d366004614fb9565b6109d0565b610176610290366004614fd2565b610a65565b6101766102a336600461500c565b610b1a565b6101766102b6366004614ef3565b610b33565b610193610bf4565b60006001600160e01b031982167fb5dee12700000000000000000000000000000000000000000000000000000000148061032657506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b610334610bfe565b6103458261034061041e565b610c62565b61034f8282610cdb565b5050565b61035b610bfe565b600061036689610d06565b6fffffffffffffffffffffffffffffffff1916036103c5578761038889610d1d565b6040517fe4ac069e0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b60405180910390fd5b6103e8616e7360f01b6dffffffffffffffffffffffffffff60801b8a1617610e31565b6103f48861034061041e565b61041488888888610405888a615092565b61040f8789615092565b610e7c565b5050505050505050565b600061042861128c565b905090565b610435610bfe565b61044761044061041e565b84846112be565b61045082611391565b156104a3576000610460836113ad565b905061048c817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b6104a061049761041e565b848460006114a4565b50505b505050565b60006104b2610bfe565b61737960f01b836001600160f01b0319161461050d5761737960f01b836104d885610d1d565b6040517f5c30fb6f0000000000000000000000000000000000000000000000000000000081526004016103bc93929190615118565b61051683610e31565b6105228361034061041e565b600061054b6105318560101b90565b71ffffffffffffffffffffffffffffffffffff19166114d1565b905060008184604051602001610562929190615141565b60405160208183030381529060405290508080519060200120925060006105888461155b565b905080156105ce576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319851660048201526024016103bc565b845160208601206105e085888361160b565b6105ea85846116d6565b5050505092915050565b6105fc610bfe565b61737960f01b836001600160f01b031916146106225761737960f01b836104d885610d1d565b6dffffffffffffffffffffffffffff60801b8316616e7360f01b1761064681610e31565b6106528161034061041e565b61067c837fb5dee12700000000000000000000000000000000000000000000000000000000611449565b600061068785610d06565b6fffffffffffffffffffffffffffffffff1916036106a9578361038885610d1d565b60006106b48461179f565b905080158015906106c55750848114155b15610707576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016103bc565b6000610712866113ad565b90506001600160a01b0381161561073b5761072c81611824565b61073683826118a3565b610746565b610746866001611941565b6107518686866119e2565b61075b8587611a85565b61076783866001611b10565b505050505050565b610777610bfe565b6107a1827f1873396a00000000000000000000000000000000000000000000000000000000611449565b6107c4616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b6107d08361034061041e565b6104a3838383611bbf565b60006107e5610bfe565b60408051616e7360f01b60208201526000602282018190526030820152610827910160405160208183030381529060405261081f90615199565b61034061041e565b5081516020830120600061083a8261155b565b90508015610880576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b0319831660048201526024016103bc565b61088b82868561160b565b61089582856116d6565b509392505050565b6108a5610bfe565b6108cf827f6fdd1c8000000000000000000000000000000000000000000000000000000000611449565b61094b6108da61041e565b600084846040516024016108ee91906151bd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611c82565b5061034f8282805190602001206001611c93565b610967610bfe565b6109738261034061041e565b61034f7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383611d42565b6109a6610bfe565b6109af81611e55565b6109b881610e31565b6109c48161034061041e565b6109cd81611e86565b50565b6109d8610bfe565b6109e181611e55565b6109ea81611ef1565b6109f3816120e3565b15610a365780610a0282610d1d565b6040517f0dc28f6a0000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b610a41816001611941565b610a5281610a4d61041e565b612168565b6109cd81610a5e61041e565b6001611b10565b610a6d610bfe565b610a7683611e55565b610a7f82611391565b610ab5576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ac18361034061041e565b6000610acc836113ad565b9050610af8817f1a86b55000000000000000000000000000000000000000000000000000000000611449565b610b028484612232565b815115610b14576104a061049761041e565b50505050565b610b22610bfe565b6109cd610b2d61041e565b826122b1565b610b3b610bfe565b61737960f01b836001600160f01b03191614610b615761737960f01b836104d885610d1d565b610b8b827f540fbfa800000000000000000000000000000000000000000000000000000000611449565b610b9483610e31565b610bb7616e7360f01b6dffffffffffffffffffffffffffff60801b851617610e31565b610bc38361034061041e565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b1617612353565b60006104286123f8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c60576040517f9f03a02600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6001600160a01b038116610c8f616e7360f01b6dffffffffffffffffffffffffffff60801b851617612402565b6001600160a01b03161461034f57610ca682610d1d565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103bc9291906151d0565b61034f7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383611d42565b6000610d1460706010615211565b9190911b919050565b606081601081901b6000610d3083610d06565b90508271ffffffffffffffffffffffffffffffffffff19831615610d7157610d6c71ffffffffffffffffffffffffffffffffffff1984166114d1565b610da8565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610dcf57610dca836114d1565b610e06565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610e1893929190615224565b6040516020818303038152906040529350505050919050565b610e3a816120e3565b6109cd5780610e4882610d1d565b6040517ffbf10ce60000000000000000000000000000000000000000000000000000000081526004016103bc929190615079565b613a3160f11b866001600160f01b03191614801590610eaa5750611bdd60f21b866001600160f01b03191614155b15610f0b57613a3160f11b8687604051602001610ec991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526103bc939291600401615118565b610f1485612493565b610f1f8460016126da565b610f2a8360006126da565b60e084901c60e885901c0160ff16825114610f8a5760e084901c60e885901c0160ff1682516040517f0f72cb98000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff16815114610fea5760e085901c60e886901c0160ff1681516040517f7dec4c00000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146110625760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d88000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b61106b85612876565b61107484612876565b146110c65761108285612876565b61108b84612876565b6040517f65cc0adf000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b6110cf856128a8565b6110d8846128a8565b1461112a576110e6856128a8565b6110ef846128a8565b6040517fedea9587000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60005b61113686612876565b8110156111d15761116061114a85836128c5565b60c581111561115b5761115b61529a565b6128ed565b6008601b8390030287901c60ff16146111c9576008601b8290030286901c60ff1661118e61114a86846128c5565b6040517f254c7db4000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bc565b60010161112d565b506111db866120e3565b156112355785866040516020016111f491815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b611281868686868660405160200161124d91906152b0565b6040516020818303038152906040528660405160200161126d91906152b0565b60405160208183030381529060405261294d565b610767866001611941565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806112bb5750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106112ff576112ff615332565b602002602001018181525050826001600160a01b031660001b8160018151811061132b5761132b615332565b602002602001018181525050610b147f7462776f726c640000000000000000005573657244656c65676174696f6e436f60001b8260008560405160200161137491815260200190565b60408051601f19818403018152919052630100080160dd1b612a14565b6000811515801561032657506113a682612a29565b1592915050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106113e6576113e6615332565b6020908102919091010152600061143e7f7462776f726c6400000000000000000053797374656d7300000000000000000083837e15020014010000000000000000000000000000000000000000000000000000612a89565b60601c949350505050565b6114538282612abf565b61034f576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b0319821660248201526044016103bc565b60606000806114b587878787612adb565b91509150816114c7576114c781612cab565b9695505050505050565b606060005b6010811015611527576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615611527576001016114d6565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916816000815181106115b3576115b3615332565b602090810291909101015260006115537f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f7283837e24020020040000000000000000000000000000000000000000000000000000612a89565b60006116178383612cb3565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061167557611675615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f72828686867e24020020040000000000000000000000000000000000000000000000000000612cf2565b50505050505050565b606060006116e383612ff8565b905060006116f084613008565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061174957611749615332565b60209081029190910101526107677f6f74776f726c6400000000000000000046756e6374696f6e5369676e61747572828686867c0100000000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b816000815181106117e4576117e4615332565b602090810291909101015260006115537f7462776f726c6400000000000000000053797374656d526567697374727900008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b8160008151811061186657611866615332565b602090810291909101015261034f7f7462776f726c6400000000000000000053797374656d5265676973747279000082630100080160dd1b613031565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d8576118d8615332565b602002602001018181525050816001600160a01b031660001b8160018151811061190457611904615332565b60209081029190910101526104a37f7462776f726c640000000000000000005265736f75726365416363657373000082630101000160d81b613031565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061197757611977615332565b6020026020010181815250506104a37f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016119c591151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612a14565b60006119ee83836132fd565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611a2d57611a2d615332565b60209081029190910101526116cd7f7462776f726c6400000000000000000053797374656d73000000000000000000828686867e15020014010000000000000000000000000000000000000000000000000000612cf2565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611ac757611ac7615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d5265676973747279000060001b8260008560405160200161137491815260200190565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611b4557611b45615332565b602002602001018181525050826001600160a01b031660001b81600181518110611b7157611b71615332565b602002602001018181525050610b147f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016119c591151560f81b815260010190565b613a3160f11b836001600160f01b03191614611bef57613a3160f11b8384604051602001610ec991815260200190565b611bf8836120e3565b611c51578283604051602001611c1091815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526103bc9291600401615079565b6104a3836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761332d565b60606000806114b5878787876133d2565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b81600081518110611cd457611cd4615332565b6020026020010181815250508281600181518110611cf457611cf4615332565b602002602001018181525050610b147f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657360001b826000856040516020016119c591151560f81b815260010190565b6000611d4e848461344a565b90506000815167ffffffffffffffff811115611d6c57611d6c614d44565b604051908082528060200260200182016040528015611d95578160200160208202803683370190505b5090506000805b8351811015611e4657846001600160a01b0316611de0858381518110611dc457611dc4615332565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611e3e57838181518110611e0057611e00615332565b6020026020010151838381518110611e1a57611e1a615332565b6affffffffffffffffffffff19909216602092830291909101909101526001909101905b600101611d9c565b508082526107678686846134b5565b616e7360f01b6dffffffffffffffffffffffffffff60801b82161781146109cd57616e7360f01b816104d883610d1d565b604080516001808252818301909252600091602080830190803683370190505090508181600081518110611ebc57611ebc615332565b602090810291909101015261034f7f7462776f726c640000000000000000004e616d65737061636544656c656761748261350c565b6000611efd8260101b90565b90506000611f1f71ffffffffffffffffffffffffffffffffffff1983166114d1565b80519091508015610b1457611f4182611f39600184615348565b016020015190565b7fff00000000000000000000000000000000000000000000000000000000000000167f5f0000000000000000000000000000000000000000000000000000000000000003611fd2576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19841660048201526024016103bc565b60005b611fe0600183615348565b8110156104a057602081840101517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f0000000000000000000000000000000000000000000000000000000000000014801561208d575061204883611f39836001615211565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f5f00000000000000000000000000000000000000000000000000000000000000145b156120db576040517f0efb4b8500000000000000000000000000000000000000000000000000000000815271ffffffffffffffffffffffffffffffffffff19851660048201526024016103bc565b600101611fd5565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061211c5761211c615332565b6020908102919091010152600061215c7f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612a89565b90506115538160f81c90565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061219e5761219e615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b826000856040516020016121fd919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612a14565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061226857612268615332565b6020026020010181815250506104a37f7462776f726c640000000000000000004e616d65737061636544656c6567617460001b8260008560405160200161137491815260200190565b604080516002808252606082018352600092602083019080368337019050509050826001600160a01b031660001b816000815181106122f2576122f2615332565b602002602001018181525050816001600160a01b031660001b8160018151811061231e5761231e615332565b60209081029190910101526104a37f7462776f726c640000000000000000005573657244656c65676174696f6e436f8261350c565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061238957612389615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000053797374656d486f6f6b73000000000060001b826000856040516020016123e491906affffffffffffffffffffff1991909116815260150190565b6040516020818303038152906040526135a7565b6000610428613658565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061243b5761243b615332565b6020908102919091010152600061143e7f7462776f726c640000000000000000004e616d6573706163654f776e6572000083837e14010014000000000000000000000000000000000000000000000000000000612a89565b806124ca576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006124d5826128a8565b9050600581111561251c576040517f7f2372c300000000000000000000000000000000000000000000000000000000815260048101829052600560248201526044016103bc565b600061252783612876565b905060006125358383615211565b9050601c81111561257c576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c60248201526044016103bc565b6000805b838110156126275760ff601b82900360080287901c1660008190036125d4576040517f01f2a07c000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b6020811115612612576040517f24c85d58000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b61261c8184615211565b925050600101612580565b5061263185613697565b811461267d5761264085613697565b6040517f9365944a0000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016103bc565b825b601c8110156107675760ff601b82900360080287901c1680156126d1576040517fbb68821a000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b5060010161267f565b801580156126e6575081155b1561270757604051635318beb960e01b8152600060048201526024016103bc565b6000612712836128a8565b9050600581111561273957604051635318beb960e01b8152600481018290526024016103bc565b600061274484612876565b905060006127528383615211565b9050601c81111561277957604051635318beb960e01b8152600481018290526024016103bc565b6000805b838110156127e557600061279461114a89846128c5565b9050806000036127d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127da8184615211565b92505060010161277d565b506127ef86613697565b811461281a576127fe86613697565b604051635318beb960e01b81526004016103bc91815260200190565b825b828110156116cd57600061283361114a89846128c5565b9050801561286d576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161281c565b60006008600161288860026020615348565b6128929190615348565b61289c919061535b565b8260ff911c1692915050565b600060086001806128bb60026020615348565b6128889190615348565b6000601b8290036008028360ff911c1660c58111156128e6576128e661529a565b9392505050565b6000808260c58111156129025761290261529a565b60ff169050606181101561291c57601f1660010192915050565b60618360c58111156129305761293061529a565b0361293e5750601492915050565b50600092915050565b50919050565b600061295a8686866136ba565b9050600061296884846136f0565b90506000612976858561370d565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106129b0576129b0615332565b6020908102919091010152612a087f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612cf2565b50505050505050505050565b6104a08585612a238487613722565b85613753565b6040805161737960f01b60208201526000602282018190527f756e6c696d69746564000000000000000000000000000000000000000000000060308301529101604051602081830303815290604052612a8190615199565b909114919050565b6000612ab6612a9886866139bb565b60ff858116601b0360080285901c16612ab18587613722565b613a11565b95945050505050565b6000612aca83613a62565b80156128e657506128e68383613aa3565b600060606000612aea86613b5b565b905060005b8151811015612bbd576000828281518110612b0c57612b0c615332565b60200260200101519050612b386001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612bb4576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612b81908c908c908c90600401615372565b600060405180830381600087803b158015612b9b57600080fd5b505af1158015612baf573d6000803e3d6000fd5b505050505b50600101612aef565b50612bca87858888613bfd565b909350915060005b8151811015612ca0576000828281518110612bef57612bef615332565b60200260200101519050612c1b6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612c97576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612c64908c908c908c90600401615372565b600060405180830381600087803b158015612c7e57600080fd5b505af1158015612c92573d6000803e3d6000fd5b505050505b50600101612bd2565b505094509492505050565b805160208201fd5b60608282604051602001612cdb9291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612d4b57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612d3e94939291906153d6565b60405180910390a2610767565b6000612d5687613ccf565b905060005b8151811015612e2f576000828281518110612d7857612d78615332565b60200260200101519050612da46001826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612e26576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612df3908c908c908c908c908c908c90600401615415565b600060405180830381600087803b158015612e0d57600080fd5b505af1158015612e21573d6000803e3d6000fd5b505050505b50600101612d5b565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612e6694939291906153d6565b60405180910390a26000612e7a88886139bb565b90506000602087019050612e92826000895184613d41565b6000612e9d856128a8565b1115612f21576000612eaf8a8a613e00565b878155905060208601915060008060005b612ec9886128a8565b8160ff161015612f1c57612ede8d8d83613e56565b9250612ef98a8260ff166028026038011c64ffffffffff1690565b9150612f088360008488613d41565b612f128286615211565b9450600101612ec0565b505050505b60005b8351811015612a08576000848281518110612f4157612f41615332565b60200260200101519050612f6d6002826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15612fef576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612fbc908e908e908e908e908e908e90600401615415565b600060405180830381600087803b158015612fd657600080fd5b505af1158015612fea573d6000803e3d6000fd5b505050505b50600101612f24565b60006103268251603881901b1790565b60608160405160200161301b919061546e565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b0319160361308457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051613077919061548a565b60405180910390a2505050565b600061308f84613ccf565b905060005b81518110156131625760008282815181106130b1576130b1615332565b602002602001015190506130dd6040826affffffffffffffffffffff1916613bdf90919063ffffffff16565b15613159576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906131269089908990899060040161549d565b600060405180830381600087803b15801561314057600080fd5b505af1158015613154573d6000803e3d6000fd5b505050505b50600101613094565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051613193919061548a565b60405180910390a260006131a785856139bb565b90506132008160006131b886613697565b67ffffffffffffffff8111156131d0576131d0614d44565b6040519080825280601f01601f1916602001820160405280156131fa576020820181803683370190505b50613ed6565b600061320b846128a8565b111561322c57600061321d8686613e00565b905061322a816020613eec565b505b60005b825181101561076757600083828151811061324c5761324c615332565b602002602001015190506132786080826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156132f4576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906132c1908a908a908a9060040161549d565b600060405180830381600087803b1580156132db57600080fd5b505af11580156132ef573d6000803e3d6000fd5b505050505b5060010161322f565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612cdb565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061336357613363615332565b6020026020010181815250506104a37f746273746f726500000000000000000053746f7265486f6f6b7300000000000060001b826000856040516020016133be91906affffffffffffffffffffff1991909116815260150190565b604051602081830303815290604052613f29565b60006060836001600160a01b031660006133ed858989613f64565b6040516133fa919061546e565b60006040518083038185875af1925050503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b606091505b509097909650945050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061348457613484615332565b602002602001018181525050600061349e85836000613f7b565b9050612ab66134b08260008451613fb5565b614043565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106134eb576134eb615332565b602002602001018181525050610b148482600061350786614054565b614064565b6000613516613658565b9050306001600160a01b03821603613532576104a3838361409f565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061357990869086906004016154c6565b600060405180830381600087803b15801561359357600080fd5b505af11580156116cd573d6000803e3d6000fd5b60006135b1613658565b9050306001600160a01b038216036135d4576135cf85858585613f29565b6104a0565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061361f9088908890889088906004016154df565b600060405180830381600087803b15801561363957600080fd5b505af115801561364d573d6000803e3d6000fd5b505050505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680613692573391505090565b919050565b600060086136a760026020615348565b6136b1919061535b565b9190911c919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128e6565b60608282604051602001612cdb929190615513565b600080805b8360ff168110156108955761374960ff601b83900360080287901c1683615211565b9150600101613727565b611bdd60f21b846001600160f01b031916036137aa57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161379d93929190615542565b60405180910390a2610b14565b60006137b685856139bb565b905060006137c386613ccf565b905060005b81518110156138985760008282815181106137e5576137e5615332565b602002602001015190506138116004826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561388f576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061385c908b908b908b908b90600401615575565b600060405180830381600087803b15801561387657600080fd5b505af115801561388a573d6000803e3d6000fd5b505050505b506001016137c8565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138cd93929190615542565b60405180910390a26138e8828565ffffffffffff1685613ed6565b60005b81518110156116cd57600082828151811061390857613908615332565b602002602001015190506139346008826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156139b2576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061397f908b908b908b908b90600401615575565b600060405180830381600087803b15801561399957600080fd5b505af11580156139ad573d6000803e3d6000fd5b505050505b506001016138eb565b600082826040516020016139d09291906155ae565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a3757602082048401935060208281613a3357613a336155ea565b0691505b508254600882021b602082900380841115610895576001850154600882021c82179150509392505050565b6000613a8e827f01ffc9a700000000000000000000000000000000000000000000000000000000613aa3565b801561032657506113a6826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613b44575060208210155b8015613b505750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b9557613b95615332565b60209081029190910101526000613bcd7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000008383613f7b565b90506115536134b08260008451613fb5565b60008160ff1682613bf08560581c90565b1660ff1614905092915050565b60006060600080613c0d866140b2565b90925090506001600160a01b038216613c2a5785610e4887610d1d565b80613c3957613c39868961416a565b8615613c7d576dffffffffffffffffffffffffffff60801b8616616e7360f01b176000613c6582614181565b9050613c7a82613c758b84615211565b6141fa565b50505b6000613c898760101b90565b71ffffffffffffffffffffffffffffffffffff191614613cb457613caf888884886133d2565b613cc0565b613cc088888488614279565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613d0957613d09615332565b60209081029190910101526000613bcd7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383613f7b565b8215613dbb5760208310613d6b57602083048401935060208381613d6757613d676155ea565b0692505b8215613dbb5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613dac575050610b14565b50600194909401939182900391015b5b60208210613ddd5780518455600190930192601f1990910190602001613dbc565b8115610b14576000600019600884021c8554835182191691161785555050505050565b60008282604051602001613e159291906155ae565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613e6b9291906155ae565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6104a383838351613ee78560200190565b613d41565b60006020613efb83601f615211565b613f059190615600565b613f0f9084615211565b90505b808310156104a35760008355600183019250613f12565b6000613f3585856142da565b90506000613f52828560ff166028026038011c64ffffffffff1690565b905061076786868684600088886142ed565b60608383836040516020016136d893929190615622565b6060611553613f8b858585613e56565b6000613fb085613f9b89896142da565b9060ff166028026038011c64ffffffffff1690565b614695565b600081831180613fc55750835182115b15614002578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bc93929190615661565b602084016140108482615211565b9050600061401e8585615348565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128e683601560006146b8565b6060816128e68160156000614733565b600061407085856142da565b9050600061408d828560ff166028026038011c64ffffffffff1690565b905061076786868660008588886142ed565b61034f82826140ad85614787565b613031565b604080516001808252818301909252600091829182916020808301908036833701905050905083816000815181106140ec576140ec615332565b6020908102919091010152600080806141457f7462776f726c6400000000000000000053797374656d73000000000000000000857e1502001401000000000000000000000000000000000000000000000000000061480c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b6141748282614914565b61034f57610ca682610d1d565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106141ba576141ba615332565b602090810291909101015260006115537f7462776f726c6400000000000000000042616c616e63657300000000000000008383630100080160dd1b612a89565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061423057614230615332565b6020026020010181815250506104a37f7462776f726c6400000000000000000042616c616e636573000000000000000060001b8260008560405160200161137491815260200190565b60006060836001600160a01b0316614292848888613f64565b60405161429f919061546e565b600060405180830381855af49150503d8060008114613437576040519150601f19603f3d011682016040523d82523d6000602084013e61343c565b60006128e66142e98484613e00565b5490565b613a3160f11b876001600160f01b0319161461431d57613a3160f11b8788604051602001610ec991815260200190565b6000614338828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff16836143519190615348565b61435b9190615211565b905080821415801561437d5750816143738688615686565b64ffffffffff1614155b156143cd576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff80881660048301528087166024830152831660448201526064016103bc565b818664ffffffffff16111561441e576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff871660248201526044016103bc565b600061442b84898461494a565b905060006144388b613ccf565b905060005b815181101561450357600082828151811061445a5761445a615332565b602002602001015190506144866010826affffffffffffffffffffff1916613bdf90919063ffffffff16565b156144fa57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144c797969594939291906156ab565b600060405180830381600087803b1580156144e157600080fd5b505af11580156144f5573d6000803e3d6000fd5b505050505b5060010161443d565b5064ffffffffff881660005b8a60ff168160ff16101561454257614536878260ff166028026038011c64ffffffffff1690565b9091019060010161450f565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c60405161457b959493929190615709565b60405180910390a25082841461459c5760006145978c8c613e00565b839055505b60006145a98c8c8c613e56565b90506145bd818a64ffffffffff1689613ed6565b5060005b81518110156146875760008282815181106145de576145de615332565b6020026020010151905061460a6020826affffffffffffffffffffff1916613bdf90919063ffffffff16565b1561467e57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b815260040161464b97969594939291906156ab565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050505b506001016145c1565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261089585858584614a18565b606060006146c68560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816146ec576146ec6155ea565b04905060405193506020840160208202810160405281855260005b82811015614727578451871c825293870193602090910190600101614707565b50505050509392505050565b82516060906000614744858361535b565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614727578051871b83529187019160019190910190602001614766565b60007f8b9d8c8b908d9affffffffffffffffffab9e9d939a8d0000000000000000000082016147d657507e60030220202000000000000000000000000000000000000000000000000000919050565b6103266148037f746273746f72650000000000000000005461626c65730000000000000000000084614ae4565b60206000613a11565b606060006060600061481d85613697565b905061482a878783614b00565b93506000614837866128a8565b905080156149095761484988886142da565b935066ffffffffffffff841667ffffffffffffffff81111561486d5761486d614d44565b6040519080825280601f01601f191660200182016040528015614897576020820181803683370190505b5092506020830160005b828160ff1610156149065760006148b98b8b84613e56565b905060006148d6888460ff166028026038011c64ffffffffff1690565b90506148e58260008387614a18565b6148ef8185615211565b9350505080806148fe9061575b565b9150506148a1565b50505b505093509350939050565b600061493a616e7360f01b6dffffffffffffffffffffffffffff60801b85161783614b39565b806128e657506128e68383614b39565b600064ffffffffff82111561498e576040517f47670588000000000000000000000000000000000000000000000000000000008152600481018390526024016103bc565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff168085106149c057808503820191506149c8565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b8215614a9f5760208310614a4257602083048401935060208381614a3e57614a3e6155ea565b0692505b8215614a9f576020839003600081841015614a655750600019600884021c614a6f565b50600019600882021c5b8554600886021b818451168219821617845250818411614a90575050610b14565b50600194909401939182900391015b5b60208210614ac15783548152600190930192601f1990910190602001614aa0565b8115610b14576000600019600884021c8251865482191691161782525050505050565b60408051602081018490529081018290526000906060016139d0565b606081600003614b1f57506040805160208101909152600081526128e6565b6000614b2b85856139bb565b9050612ab681600085614695565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110614b7257614b72615332565b602002602001018181525050826001600160a01b031660001b81600181518110614b9e57614b9e615332565b60209081029190910101526000614bde7f7462776f726c640000000000000000005265736f7572636541636365737300008383630101000160d81b612a89565b9050612ab68160f81c90565b80356001600160e01b03198116811461369257600080fd5b600060208284031215614c1457600080fd5b6128e682614bea565b6001600160a01b03811681146109cd57600080fd5b60008060408385031215614c4557600080fd5b823591506020830135614c5781614c1d565b809150509250929050565b60008083601f840112614c7457600080fd5b50813567ffffffffffffffff811115614c8c57600080fd5b6020830191508360208260051b8501011115614ca757600080fd5b9250929050565b60008060008060008060008060c0898b031215614cca57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614cfe57600080fd5b614d0a8c838d01614c62565b909650945060a08b0135915080821115614d2357600080fd5b50614d308b828c01614c62565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614d8357614d83614d44565b604052919050565b600082601f830112614d9c57600080fd5b813567ffffffffffffffff811115614db657614db6614d44565b614dc96020601f19601f84011601614d5a565b818152846020838601011115614dde57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614e1057600080fd5b8335614e1b81614c1d565b925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b614e4a86828701614d8b565b9150509250925092565b60008060408385031215614e6757600080fd5b82359150602083013567ffffffffffffffff811115614e8557600080fd5b614e9185828601614d8b565b9150509250929050565b600080600060608486031215614eb057600080fd5b833592506020840135614ec281614c1d565b915060408401358015158114614ed757600080fd5b809150509250925092565b803560ff8116811461369257600080fd5b600080600060608486031215614f0857600080fd5b833592506020840135614f1a81614c1d565b9150614f2860408501614ee2565b90509250925092565b600080600060608486031215614f4657600080fd5b83359250602084013567ffffffffffffffff811115614f6457600080fd5b614f7086828701614d8b565b925050614f2860408501614bea565b60008060408385031215614f9257600080fd5b8235614f9d81614c1d565b9150602083013567ffffffffffffffff811115614e8557600080fd5b600060208284031215614fcb57600080fd5b5035919050565b600080600060608486031215614fe757600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614e3e57600080fd5b60006020828403121561501e57600080fd5b81356128e681614c1d565b60005b8381101561504457818101518382015260200161502c565b50506000910152565b60008151808452615065816020860160208601615029565b601f01601f19169290920160200192915050565b828152604060208201526000611553604083018461504d565b600067ffffffffffffffff808411156150ad576150ad614d44565b8360051b60206150bf60208301614d5a565b868152918501916020810190368411156150d857600080fd5b865b8481101561510c578035868111156150f25760008081fd5b6150fe36828b01614d8b565b8452509183019183016150da565b50979650505050505050565b6001600160f01b031984168152826020820152606060408201526000612ab6606083018461504d565b60008351615153818460208801615029565b7f5f5f000000000000000000000000000000000000000000000000000000000000908301908152835161518d816002840160208801615029565b01600201949350505050565b805160208083015191908110156129475760001960209190910360031b1b16919050565b6020815260006128e6602083018461504d565b6040815260006151e3604083018561504d565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610326576103266151fb565b6001600160f01b03198416815260007f3a00000000000000000000000000000000000000000000000000000000000000806002840152845161526d816003860160208901615029565b80840190508160038201528451915061528d826004830160208801615029565b0160040195945050505050565b634e487b7160e01b600052602160045260246000fd5b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615325577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261531385835161504d565b945092850192908501906001016152d9565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b81810381811115610326576103266151fb565b8082028115828204841417610326576103266151fb565b6001600160a01b0384168152826020820152606060408201526000612ab6606083018461504d565b60008151808452602080850194506020840160005b838110156153cb578151875295820195908201906001016153af565b509495945050505050565b6080815260006153e9608083018761539a565b82810360208401526153fb818761504d565b90508460408401528281036060840152613b50818561504d565b86815260c06020820152600061542e60c083018861539a565b8281036040840152615440818861504d565b9050856060840152828103608084015261545a818661504d565b9150508260a0830152979650505050505050565b60008251615480818460208701615029565b9190910192915050565b6020815260006128e6602083018461539a565b8381526060602082015260006154b6606083018561539a565b9050826040830152949350505050565b828152604060208201526000611553604083018461539a565b8481526080602082015260006154f8608083018661539a565b60ff851660408401528281036060840152613b50818561504d565b60008351615525818460208801615029565b835190830190615539818360208801615029565b01949350505050565b606081526000615555606083018661539a565b65ffffffffffff8516602084015282810360408401526114c7818561504d565b84815260806020820152600061558e608083018661539a565b65ffffffffffff851660408401528281036060840152613b50818561504d565b8281526000602080830184516020860160005b828110156155dd578151845292840192908401906001016155c1565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008261561d57634e487b7160e01b600052601260045260246000fd5b500490565b60008451615634818460208901615029565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b606081526000615674606083018661504d565b60208301949094525060400152919050565b64ffffffffff8181168382160190808211156156a4576156a46151fb565b5092915050565b87815260e0602082015260006156c460e083018961539a565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526156fb818561504d565b9a9950505050505050505050565b60a08152600061571c60a083018861539a565b65ffffffffffff8716602084015264ffffffffff86166040840152846060840152828103608084015261574f818561504d565b98975050505050505050565b600060ff821660ff8103615771576157716151fb565b6001019291505056fea164736f6c6343000818000a610120604052306080523480156200001657600080fd5b5060405162004d4f38038062004d4f833981016040819052620000399162000076565b6001600160a01b0393841660a05291831660c052821660e0521661010052620000de565b6001600160a01b03811681146200007357600080fd5b50565b600080600080608085870312156200008d57600080fd5b84516200009a816200005d565b6020860151909450620000ad816200005d565b6040860151909350620000c0816200005d565b6060860151909250620000d3816200005d565b939692955090935050565b60805160a05160c05160e05161010051614c216200012e60003960008181610701015281816115ac015261163b0152600061069901526000610631015260006105b0015260005050614c216000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e15780637c5b0335146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100cc575b600080fd5b61008a6100853660046143d5565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da36600461442d565b610203565b005b604051601f193601358152602001610096565b6100df61010236600461442d565b610235565b6100a7610250565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c800000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe61025a565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61023d61028c565b61024561056e565b61024d610727565b50565b60006101fe610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102895750335b90565b610294610ca1565b61029c610f19565b6102a4610f82565b6102ac610fce565b6102b461101a565b6102bc611066565b6102c46110aa565b6102cc6110f6565b6102d461115a565b6102dc6111be565b6102e4611220565b6102ec611282565b6102f46112ce565b60408051616e7360f01b6020820152600060228201819052603082015261033691015b60405160208183030381529060405261032f906144de565b600161132a565b60408051616e7360f01b6020820152600060228201819052603082015261037e91015b604051602081830303815290604052610371906144de565b6103796101f4565b6113d0565b60408051616e7360f01b602082015260006022820181905260308201526103c891015b6040516020818303038152906040526103b9906144de565b6103c16101f4565b60016114ad565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261040e9101610317565b60408051616e7360f01b60208201527f73746f72650000000000000000000000000000000000000000000000000000006022820152600060308201526104549101610359565b60408051616e7360f01b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201526000603082015261049a91016103a1565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526104e09101610317565b60408051616e7360f01b60208201527f776f726c640000000000000000000000000000000000000000000000000000006022820152600060308201526105269101610359565b60408051616e7360f01b60208201527f776f726c6400000000000000000000000000000000000000000000000000000060228201526000603082015261056c91016103a1565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526105ef917f000000000000000000000000000000000000000000000000000000000000000091015b6040516020818303038152906040526105ea906144de565b61156f565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e7366657200000000000000000000000000000000006030820152610657917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f426174636843616c6c000000000000000000000000000000000000000000000060308201526106bf917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b6040805161737960f01b6020820152600060228201527f526567697374726174696f6e0000000000000000000000000000000000000000603082015261056c917f000000000000000000000000000000000000000000000000000000000000000091016105d2565b600060405180608001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614bf36022913981526020016040518060400160405280601a81526020017f72656e6f756e63654f776e657273686970286279746573333229000000000000815250815250905060005b600481101561088c576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526108849101604051602081830303815290604052610868906144de565b83836004811061087a5761087a614502565b602002015161162c565b600101610806565b506040805160a0810182526033918101828152600092829190614b9760608401398152602001604051806060016040528060318152602001614a66603191399052905060005b600281101561094f576040805161737960f01b6020820152600060228201527f42616c616e63655472616e736665720000000000000000000000000000000000603082015261094791015b604051602081830303815290604052610935906144de565b83836002811061087a5761087a614502565b6001016108d2565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614af2602891399052905060005b6002811015610a0f576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610a07910161091d565b6001016109b8565b506040805161020081018252601c6101c082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101e08301528152815160608101835282815260009260208084019291906149b1908301398152602001604051806060016040528060288152602001614a9760289139815260200160405180606001604052806024815260200161498d6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614bca602991398152602001604051806060016040528060258152602001614b1a602591398152602001604051806060016040528060248152602001614a42602491398152602001604051806060016040528060288152602001614a1a602891398152602001604051806060016040528060338152602001614abf6033913981526020016040518060600160405280602981526020016149f16029913981526020016040518060400160405280601d81526020017f756e726567697374657244656c65676174696f6e2861646472657373290000008152508152602001604051806060016040528060328152602001614b65603291398152602001604051806060016040528060268152602001614b3f602691399052905060005b600e811015610c90576040805161737960f01b6020820152600060228201527f526567697374726174696f6e00000000000000000000000000000000000000006030820152610c889101604051602081830303815290604052610c76906144de565b8383600e811061087a5761087a614502565b600101610c14565b5050505050565b60006101fe6116d3565b610cca7f746273746f72650000000000000000005461626c65730000000000000000000061171f565b15610d4857604080517f746273746f72650000000000000000005461626c6573000000000000000000006020820181905291015b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d3f9291600401614568565b60405180910390fd5b610d717f746273746f72650000000000000000005265736f75726365496473000000000061171f565b15610da957604080517f746273746f72650000000000000000005265736f757263654964730000000000602082018190529101610cfe565b610e507f746273746f72650000000000000000005461626c6573000000000000000000007e60030220202000000000000000000000000000000000000000000000000000610df56117ac565b610dfd611824565b610e05611973565b604051602001610e1591906145db565b604051602081830303815290604052610e2c6119f8565b604051602001610e3c91906145db565b604051602081830303815290604052611bc0565b610ebb7f746273746f72650000000000000000005265736f757263654964730000000000630101000160d81b610e846117ac565b610e8c611c87565b610e94611cc1565b604051602001610ea491906145db565b604051602081830303815290604052610e2c611d38565b610ee67f746273746f72650000000000000000005461626c657300000000000000000000600161132a565b610f117f746273746f72650000000000000000005265736f757263654964730000000000600161132a565b61056c611daf565b61056c7f7462776f726c640000000000000000004e616d6573706163654f776e657200007e14010014000000000000000000000000000000000000000000000000000000610f656117ac565b610f6d611e11565b610f75611e4b565b610f7d611ec2565b611f39565b61056c7f7462776f726c6400000000000000000042616c616e6365730000000000000000630100080160dd1b610fb66117ac565b610fbe61200d565b610fc6611e4b565b610f7d612047565b61056c7f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c6573630101000160d81b6110026120be565b61100a611c87565b61101261213d565b610f7d612207565b61056c7f7462776f726c640000000000000000005573657244656c65676174696f6e436f630100080160dd1b61104e61227e565b6110566117ac565b61105e6122fd565b610f7d6123c7565b61056c7f7462776f726c640000000000000000004e616d65737061636544656c65676174630100080160dd1b61109a6117ac565b6110a26117ac565b61105e611e4b565b61056c7f7462776f726c640000000000000000005265736f757263654163636573730000630101000160d81b6110de61243e565b6110e6611c87565b6110ee612478565b610f7d612542565b61056c7f7462776f726c6400000000000000000053797374656d730000000000000000007e150200140100000000000000000000000000000000000000000000000000006111426117ac565b61114a6125b9565b611152612638565b610f7d6126af565b61056c7f7462776f726c6400000000000000000046756e6374696f6e53656c6563746f727e240200200400000000000000000000000000000000000000000000000000006111a6612779565b6111ae6127b3565b6111b6612832565b610f7d6128a9565b61056c7f6f74776f726c6400000000000000000046756e6374696f6e5369676e617475727c0100000000000000000000000000000000000000000000000000000000611208612779565b611210612973565b611218612832565b610f7d6129ad565b61056c7f7462776f726c6400000000000000000053797374656d486f6f6b7300000000007c010000000000000000000000000000000000000000000000000000000061126a6117ac565b611272612a24565b61127a612638565b610f7d612a5e565b61056c7f7462776f726c6400000000000000000053797374656d52656769737472790000630100080160dd1b6112b6611e11565b6112be6117ac565b6112c6612ad5565b610f7d612638565b61056c7f7462776f726c64000000000000000000496e69744d6f64756c654164647265737e1401001400000000000000000000000000000000000000000000000000000061131a612b4c565b611322611e11565b61127a612b65565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061136057611360614502565b6020026020010181815250506113cb7f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016113ae91151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b612b98565b505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061140657611406614502565b6020026020010181815250506113cb7f7462776f726c640000000000000000004e616d6573706163654f776e6572000060001b82600085604051602001611478919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b60408051601f198184030181529190527e14010014000000000000000000000000000000000000000000000000000000612b98565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114e2576114e2614502565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b8160018151811061151b5761151b614502565b6020026020010181815250506115697f7462776f726c640000000000000000005265736f75726365416363657373000060001b826000856040516020016113ae91151560f81b815260010190565b50505050565b6113cb61157a6101f4565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a900000000000000000000000000000000000000000000000000000000179052612bad565b6113cb6116376101f4565b60007f000000000000000000000000000000000000000000000000000000000000000085858680519060200120604051602401611676939291906145ee565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d611800000000000000000000000000000000000000000000000000000000179052612bad565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061171a573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061175857611758614502565b602090810291909101015260006117987f746273746f72650000000000000000005265736f7572636549647300000000008383630101000160d81b612bda565b90506117a48160f81c90565b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106117e6576117e6614502565b602002602001019060c58111156117ff576117ff614639565b908160c581111561181257611812614639565b90525061181e81612c10565b91505090565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f8160008151811061185f5761185f614502565b602002602001019060c581111561187857611878614639565b908160c581111561188b5761188b614639565b81525050605f816001815181106118a4576118a4614502565b602002602001019060c58111156118bd576118bd614639565b908160c58111156118d0576118d0614639565b81525050605f816002815181106118e9576118e9614502565b602002602001019060c581111561190257611902614639565b908160c581111561191557611915614639565b8152505060c48160038151811061192e5761192e614502565b602002602001019060c581111561194757611947614639565b908160c581111561195a5761195a614639565b8152505060c4816004815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161198a5790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b602002602001018190525090565b60408051600580825260c08201909252606091816020015b6060815260200190600190039081611a105790505090506040518060400160405280600b81526020017f6669656c644c61796f757400000000000000000000000000000000000000000081525081600081518110611a7057611a70614502565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110611ac457611ac4614502565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600281518110611b1857611b18614502565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d6573000000000000000000000000000081525081600381518110611b6c57611b6c614502565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119ea576119ea614502565b6000611bcd868686612dcb565b90506000611bdb8484612e01565b90506000611be98585612e21565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611c2357611c23614502565b6020908102919091010152611c7b7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000612e4d565b50505050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611cd85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b61056c7f746273746f726500000000000000000053746f7265486f6f6b730000000000007c0100000000000000000000000000000000000000000000000000000000611df96117ac565b611e01612a24565b611e09611973565b610f7d61318e565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611e625790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed95790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6000611f436116d3565b90503073ffffffffffffffffffffffffffffffffffffffff821603611f7557611f70878787878787613205565b612004565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611fd1908a908a908a908a908a908a9060040161464f565b600060405180830381600087803b158015611feb57600080fd5b505af1158015611fff573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161205e5790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106120f8576120f8614502565b602002602001019060c581111561211157612111614639565b908160c581111561212457612124614639565b81525050605f816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816121535790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106121b3576121b3614502565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161221e5790505090506040518060400160405280600b81526020017f6973496e7374616c6c6564000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106122b8576122b8614502565b602002602001019060c58111156122d1576122d1614639565b908160c58111156122e4576122e4614639565b815250506061816001815181106117e6576117e6614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816123135790505090506040518060400160405280600981526020017f64656c656761746f7200000000000000000000000000000000000000000000008152508160008151811061237357612373614502565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816123de5790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119ea576119ea614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106122b8576122b8614502565b6040805160028082526060828101909352816020015b606081526020019060019003908161248e5790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106124ee576124ee614502565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816125595790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106125f3576125f3614502565b602002602001019060c581111561260c5761260c614639565b908160c581111561261f5761261f614639565b815250506060816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b606081526020019060019003908161264f5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816126c55790505090506040518060400160405280600681526020017f73797374656d00000000000000000000000000000000000000000000000000008152508160008151811061272557612725614502565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119ea576119ea614502565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106117e6576117e6614502565b60408051600280825260608201835260009283929190602083019080368337019050509050605f816000815181106127ed576127ed614502565b602002602001019060c581111561280657612806614639565b908160c581111561281957612819614639565b815250506043816001815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816128495790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160028082526060828101909352816020015b60608152602001906001900390816128bf5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061291f5761291f614502565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b60608152602001906001900390816129c45790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106117e6576117e6614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a755790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b604080516001808252818301909252606091816020015b6060815260200190600190039081612aec5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b6040805160008082526020820190925261181e81612c10565b60408051600080825260208201909252606091612b92565b6060815260200190600190039081612b7d5790505b50905090565b610c908585612ba7848761363c565b85613675565b6060600080612bbe87878787613910565b9150915081612bd057612bd081613991565b9695505050505050565b6000612c07612be98686613999565b60ff858116601b0360080285901c16612c02858761363c565b6139ef565b95945050505050565b6000601c82511115612c3a578151604051635318beb960e01b8152600401610d3f91815260200190565b60008080805b8551811015612d15576000612c7e878381518110612c6057612c60614502565b602002602001015160c5811115612c7957612c79614639565b613a40565b905080600003612c9357600190920191612ccb565b8215612ccb576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612cec57612cec614502565b602002602001015160c5811115612d0557612d05614639565b901b949094179350600101612c40565b506005811115612d3b57604051635318beb960e01b815260048101829052602401610d3f565b84518190036008612d4e600260206146af565b612d5891906146c2565b83901b939093179260086001612d70600260206146af565b612d7a91906146af565b612d8491906146c2565b81901b93909317926008600180612d9d600260206146af565b612da791906146af565b612db191906146af565b612dbb91906146c2565b9190911b92909217949350505050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b175b9392505050565b60608282604051602001612e369291906146d9565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603612ed957857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612ecc9493929190614744565b60405180910390a2613186565b6000612ee487613aa0565b905060005b8151811015612fbd576000828281518110612f0657612f06614502565b60200260200101519050612f326001826affffffffffffffffffffff1916613b2990919063ffffffff16565b15612fb4576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612f81908c908c908c908c908c908c9060040161478e565b600060405180830381600087803b158015612f9b57600080fd5b505af1158015612faf573d6000803e3d6000fd5b505050505b50600101612ee9565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612ff49493929190614744565b60405180910390a260006130088888613999565b90506000602087019050613020826000895184613b47565b600061302b85613c06565b11156130af57600061303d8a8a613c43565b878155905060208601915060008060005b61305788613c06565b8160ff1610156130aa5761306c8d8d83613c99565b92506130878a8260ff166028026038011c64ffffffffff1690565b91506130968360008488613b47565b6130a082866147e7565b945060010161304e565b505050505b60005b8351811015611c7b5760008482815181106130cf576130cf614502565b602002602001015190506130fb6002826affffffffffffffffffffff1916613b2990919063ffffffff16565b1561317d576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf9061314a908e908e908e908e908e908e9060040161478e565b600060405180830381600087803b15801561316457600080fd5b505af1158015613178573d6000803e3d6000fd5b505050505b506001016130b2565b505050505050565b604080516001808252818301909252606091816020015b60608152602001906001900390816131a55790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119ea576119ea614502565b7f7462000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000161480159061329957507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15613315577f746200000000000000000000000000000000000000000000000000000000000086876040516020016132d391815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d3f9392916004016147fa565b61331e85613d19565b613329846001613f60565b613334836000613f60565b60e084901c60e885901c0160ff168251146133945760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff168151146133f45760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff161461346c5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b613475856140fc565b61347e846140fc565b146134d05761348c856140fc565b613495846140fc565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b6134d985613c06565b6134e284613c06565b14613534576134f085613c06565b6134f984613c06565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b60005b613540866140fc565b8110156135d657613565613554858361410e565b60c5811115612c7957612c79614639565b6008601b8390030287901c60ff16146135ce576008601b8290030286901c60ff16613593613554868461410e565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d3f565b600101613537565b506135e08661171f565b156135f9578586604051602001610cfe91815260200190565b613631868686868660405160200161361191906145db565b60405160208183030381529060405286604051602001610e3c91906145db565b61318686600161132a565b600080805b8360ff1681101561366d5761366360ff601b83900360080287901c16836147e7565b9150600101613641565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036136ff57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516136f29392919061483b565b60405180910390a2611569565b600061370b8585613999565b9050600061371886613aa0565b905060005b81518110156137ed57600082828151811061373a5761373a614502565b602002602001015190506137666004826affffffffffffffffffffff1916613b2990919063ffffffff16565b156137e4576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906137b1908b908b908b908b9060040161486e565b600060405180830381600087803b1580156137cb57600080fd5b505af11580156137df573d6000803e3d6000fd5b505050505b5060010161371d565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516138229392919061483b565b60405180910390a261383d828565ffffffffffff168561412f565b60005b815181101561200457600082828151811061385d5761385d614502565b602002602001015190506138896008826affffffffffffffffffffff1916613b2990919063ffffffff16565b15613907576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906138d4908b908b908b908b9060040161486e565b600060405180830381600087803b1580156138ee57600080fd5b505af1158015613902573d6000803e3d6000fd5b505050505b50600101613840565b600060608373ffffffffffffffffffffffffffffffffffffffff16613936848888614145565b60405161394391906148a7565b600060405180830381855af49150503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b509097909650945050505050565b805160208201fd5b600082826040516020016139ae9291906148c3565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210613a1557602082048401935060208281613a1157613a116148ff565b0691505b508254600882021b60208290038084111561366d576001850154600882021c82179150509392505050565b6000808260c5811115613a5557613a55614639565b60ff1690506061811015613a6f57601f1660010192915050565b60618360c5811115613a8357613a83614639565b03613a915750601492915050565b50600092915050565b50919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ada57613ada614502565b60209081029190910101526000613b127f746273746f726500000000000000000053746f7265486f6f6b73000000000000838361415c565b90506117a4613b248260008451614196565b614224565b60008160ff1682613b3a8560581c90565b1660ff1614905092915050565b8215613bc15760208310613b7157602083048401935060208381613b6d57613b6d6148ff565b0692505b8215613bc15760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613bb2575050611569565b50600194909401939182900391015b5b60208210613be35780518455600190930192601f1990910190602001613bc2565b8115611569576000600019600884021c8554835182191691161785555050505050565b60006008600180613c19600260206146af565b613c2391906146af565b613c2d91906146af565b613c3791906146c2565b8260ff911c1692915050565b60008282604051602001613c589291906148c3565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613cae9291906148c3565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b80613d50576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613d5b82613c06565b90506005811115613da2576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d3f565b6000613dad836140fc565b90506000613dbb83836147e7565b9050601c811115613e02576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d3f565b6000805b83811015613ead5760ff601b82900360080287901c166000819003613e5a576040517f01f2a07c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b6020811115613e98576040517f24c85d5800000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b613ea281846147e7565b925050600101613e06565b50613eb785614235565b8114613f0357613ec685614235565b6040517f9365944a000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d3f565b825b601c8110156131865760ff601b82900360080287901c168015613f57576040517fbb68821a00000000000000000000000000000000000000000000000000000000815260048101839052602401610d3f565b50600101613f05565b80158015613f6c575081155b15613f8d57604051635318beb960e01b815260006004820152602401610d3f565b6000613f9883613c06565b90506005811115613fbf57604051635318beb960e01b815260048101829052602401610d3f565b6000613fca846140fc565b90506000613fd883836147e7565b9050601c811115613fff57604051635318beb960e01b815260048101829052602401610d3f565b6000805b8381101561406b57600061401a613554898461410e565b905080600003614056576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61406081846147e7565b925050600101614003565b5061407586614235565b81146140a05761408486614235565b604051635318beb960e01b8152600401610d3f91815260200190565b825b828110156120045760006140b9613554898461410e565b905080156140f3576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016140a2565b600060086001613c23600260206146af565b6000601b8290036008028360ff911c1660c5811115612e1a57612e1a614639565b6113cb838383516141408560200190565b613b47565b6060838383604051602001612de993929190614915565b60606117a461416c858585613c99565b60006141918561417c8989614258565b9060ff166028026038011c64ffffffffff1690565b61426b565b6000818311806141a65750835182115b156141e3578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d3f93929190614967565b602084016141f184826147e7565b905060006141ff85856146af565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000612e1a836015600061428e565b60006008614245600260206146af565b61424f91906146c2565b9190911c919050565b6000612e1a6142678484613c43565b5490565b60405160208101601f19603f848401011660405282825261366d85858584614309565b6060600061429c8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816142c2576142c26148ff565b04905060405193506020840160208202810160405281855260005b828110156142fd578451871c8252938701936020909101906001016142dd565b50505050509392505050565b821561439057602083106143335760208304840193506020838161432f5761432f6148ff565b0692505b82156143905760208390036000818410156143565750600019600884021c614360565b50600019600882021c5b8554600886021b818451168219821617845250818411614381575050611569565b50600194909401939182900391015b5b602082106143b25783548152600190930192601f1990910190602001614391565b8115611569576000600019600884021c8251865482191691161782525050505050565b6000602082840312156143e757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612e1a57600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561443f57600080fd5b813567ffffffffffffffff8082111561445757600080fd5b818401915084601f83011261446b57600080fd5b81358181111561447d5761447d614417565b604051601f8201601f19908116603f011681019083821181831017156144a5576144a5614417565b816040528281528760208487010111156144be57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80516020808301519190811015613a9a5760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b8281526040602082015260006117a4604083018461453c565b60008282518085526020808601955060208260051b8401016020860160005b848110156145ce57601f198684030189526145bc83835161453c565b988401989250908301906001016145a0565b5090979650505050505050565b602081526000612e1a6020830184614581565b838152606060208201526000614607606083018561453c565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b86815285602082015284604082015283606082015260c06080820152600061467a60c0830185614581565b82810360a084015261468c8185614581565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156101ee576101ee614699565b80820281158282048414176101ee576101ee614699565b600083516146eb818460208801614518565b8351908301906146ff818360208801614518565b01949350505050565b60008151808452602080850194506020840160005b838110156147395781518752958201959082019060010161471d565b509495945050505050565b6080815260006147576080830187614708565b8281036020840152614769818761453c565b90508460408401528281036060840152614783818561453c565b979650505050505050565b86815260c0602082015260006147a760c0830188614708565b82810360408401526147b9818861453c565b905085606084015282810360808401526147d3818661453c565b9150508260a0830152979650505050505050565b808201808211156101ee576101ee614699565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000612c07606083018461453c565b60608152600061484e6060830186614708565b65ffffffffffff851660208401528281036040840152612bd0818561453c565b8481526080602082015260006148876080830186614708565b65ffffffffffff851660408401528281036060840152614783818561453c565b600082516148b9818460208701614518565b9190910192915050565b8281526000602080830184516020860160005b828110156148f2578151845292840192908401906001016148d6565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b60008451614927818460208901614518565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b60608152600061497a606083018661453c565b6020830194909452506040015291905056fe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c6164647265737329756e72656769737465724e616d65737061636544656c65676174696f6e28627974657333322972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000818000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000818000a","sourceMap":"1555:5875:203:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:320;;;:::i;:::-;;2170:134:112;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;5071:1492:203:-;;;:::i;2787:146:112:-;;;:::i;6567:861:203:-;;;:::i;1875:141:112:-;;;:::i;1819:584:106:-;;;:::i;:::-;;;4024:14:207;;4017:22;3999:41;;3987:2;3972:18;1819:584:106;3859:187:207;3475:1592:203;;;:::i;2240:1231::-;;;:::i;2022:142:112:-;;;:::i;1572:26:106:-;;;;;;;;;1916:320:203;1954:13;:11;:13::i;:::-;1946:5;:21;;;;-1:-1:-1;;;;;1946:21:203;;;;;;;;;1997:31;;1973:23;;1997:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2030:12:203;;;2040:1;2030:12;;;;;;;;;1973:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:22;2104:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2131:5:203;;2155:8;;2079:46;;-1:-1:-1;;;;;;2131:5:203;;:23;;2155:25;;578:36:59;2820:46;816:18:98;2819:74:59;;2708:191;2155:25:203;2131:50;;;;;;;;;;;;;4796:25:207;;4784:2;4769:18;;4619:208;2131:50:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2187:5:203;;2208:8;;2187:44;;;;;;;;5084:25:207;;;;-1:-1:-1;;;;;5145:55:207;;;5125:18;;;5118:83;2187:5:203;5217:18:207;;;5210:50;2187:5:203;;;;-1:-1:-1;2187:20:203;;-1:-1:-1;5057:18:207;;2187:44:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1940:296;1916:320::o;2170:134:112:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:112;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:112;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:112;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5071:1492:203;5199:10;;;;;5207:1;5199:10;;;4796:25:207;5150:4:203;;5199:7;;;;4769:18:207;;5199:10:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5266:9:203;;5257:19;;-1:-1:-1;;;5257:19:203;;-1:-1:-1;;;;;5266:9:203;;;5257:19;;;6049:74:207;5257:8:203;;-1:-1:-1;5257:8:203;;-1:-1:-1;6022:18:207;;5257:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5282:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;5337:5;;5369:9;;;719:71:185;;;-1:-1:-1;;;719:71:185;;;6317:92:207;5337:5:203;6425:11:207;;;6418:100;;;;769:20:185;6534:12:207;;;6527:101;-1:-1:-1;;;;;5337:5:203;;;;:24;;5369:9;;;6644:12:207;719:71:185;;;;;;;;;;;;711:80;;;:::i;:::-;5473:9:203;;5414:84;;-1:-1:-1;;;;;5473:9:203;;;5414:84;;;7203:74:207;7293:18;;;7286:34;;;7176:18;;5414:84:203;;;-1:-1:-1;;5414:84:203;;;;;;;;;;;;;;-1:-1:-1;;;;;5414:84:203;;;;;5337:167;;5414:84;5337:167;;;;;;;;;;5414:84;5337:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5510:14;:12;:14::i;:::-;5607:9;;5598:19;;-1:-1:-1;;;5598:19:203;;-1:-1:-1;;;;;5607:9:203;;;5598:19;;;6049:74:207;5598:8:203;;;;6022:18:207;;5598:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5623:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;5713:5;;5728:9;;5739:8;;;5749:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5749:45:203;-1:-1:-1;;;5749:45:203;;;5713:82;;-1:-1:-1;;;5713:82:203;;5687:23;;-1:-1:-1;;;;;5713:5:203;;;;:14;;:82;;5728:9;;;;;5739:8;;5749:45;;5713:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5713:82:203;;;;;;;;;;;;:::i;:::-;5687:108;;5801:14;:12;:14::i;:::-;5821:23;5858:10;5847:33;;;;;;;;;;;;:::i;:::-;5979:9;;5821:59;;-1:-1:-1;5953:36:203;;5821:59;;-1:-1:-1;;;;;5979:9:203;5953:8;:36::i;:::-;6081:21;;;;;;;;4796:25:207;;;6081:7:203;;;;4769:18:207;;6081:21:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6117:9:203;;6108:19;;-1:-1:-1;;;6108:19:203;;-1:-1:-1;;;;;6117:9:203;;;6108:19;;;6049:74:207;6108:8:203;;-1:-1:-1;6108:8:203;;-1:-1:-1;6022:18:207;;6108:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:5:203;;6148:9;;6159:8;;;6169:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6169:45:203;-1:-1:-1;;;6169:45:203;;;6133:82;;-1:-1:-1;;;6133:82:203;;-1:-1:-1;;;;;6133:5:203;;;;-1:-1:-1;6133:14:203;;-1:-1:-1;6133:82:203;;6148:9;;;;;6159:8;;6169:45;;6133:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6133:82:203;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6305:7:203;;6313:16;:12;6328:1;6313:16;:::i;:::-;6305:25;;;;;;;;;;;;;4796::207;;4784:2;4769:18;;4619:208;6305:25:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6345:9:203;;6336:19;;-1:-1:-1;;;6336:19:203;;-1:-1:-1;;;;;6345:9:203;;;6336:19;;;6049:74:207;6336:8:203;;-1:-1:-1;6336:8:203;;-1:-1:-1;6022:18:207;;6336:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6448:9:203;;6459;;6377:92;;;-1:-1:-1;;;;;6448:9:203;;;6377:92;;;10091:34:207;6459:9:203;;;;10141:18:207;;;;10134:43;;;;6377:92:203;;;;;;;;;;10003:18:207;;;;6377:92:203;;;;;;;-1:-1:-1;;;;;6377:92:203;6400:46;6377:92;;;6361:109;;;;:15;;-1:-1:-1;6361:15:203;;-1:-1:-1;6361:109:203;;6377:92;6361:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:5:203;;6491:9;;6502:8;;;6512:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6512:45:203;-1:-1:-1;;;6512:45:203;;;6476:82;;-1:-1:-1;;;6476:82:203;;-1:-1:-1;;;;;6476:5:203;;;;-1:-1:-1;6476:14:203;;-1:-1:-1;6476:82:203;;6491:9;;;;;6502:8;;6512:45;;6476:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6476:82:203;;;;;;;;;;;;:::i;:::-;;5121:1442;;;5071:1492::o;2787:146:112:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6567:861:203;6706:32;6741:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6706:47;;6759:32;6794:122;-1:-1:-1;;;6794:122:203;;:25;:122::i;:::-;6922:5;;:76;;;;;;;;5084:25:207;;;-1:-1:-1;;;;;5145:55:207;;;5125:18;;;5118:83;6922:5:203;5217:18:207;;;5210:50;6759:157:203;;-1:-1:-1;6922:5:203;;;:20;;5057:18:207;;6922:76:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7121:9:203;;7112:19;;-1:-1:-1;;;7112:19:203;;-1:-1:-1;;;;;7121:9:203;;;7112:19;;;6049:74:207;7112:8:203;;-1:-1:-1;7112:8:203;;-1:-1:-1;6022:18:207;;7112:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7160:179:203;;;-1:-1:-1;;;;;11031:55:207;;7160:179:203;;;11013:74:207;7295:36:203;11103:18:207;;;;11096:107;;;;7160:179:203;;;;;;;;;;10986:18:207;;;;7160:179:203;;;;;;;-1:-1:-1;;;;;7160:179:203;7192:49;7160:179;;;7137:208;;;;;:15;;-1:-1:-1;7137:15:203;;-1:-1:-1;7137:208:203;;7160:179;7137:208;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7351:5:203;;7376:9;;7410:12;;;7351:5;7410:12;;;;;;;;;-1:-1:-1;;;;;7351:5:203;;;;-1:-1:-1;7351:24:203;;-1:-1:-1;7376:9:203;;;;;7387:21;;7410:12;;;;;;;;;;-1:-1:-1;7410:12:203;7351:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6635:793;;6567:861::o;1875:141:112:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:106;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:106;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7203:74:207;;;2221:17:106;7293:18:207;;;7286:34;2196:43:106;;;;;;;;;7176:18:207;;;2196:43:106;;;-1:-1:-1;;1671:64:106;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:106;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:106:o;3475:1592:203:-;3628:9;;3619:19;;-1:-1:-1;;;3619:19:203;;-1:-1:-1;;;;;3628:9:203;;;3619:19;;;6049:74:207;3619:8:203;;;;6022:18:207;;3619:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3644:51;;;;;;;;;;;;;;;;;;:14;:51::i;:::-;3701:5;;3733:9;;;546:73:185;;;-1:-1:-1;;;546:73:185;;;6317:92:207;3701:5:203;6425:11:207;;;6418:100;;;;596:22:185;6534:12:207;;;6527:101;-1:-1:-1;;;;;3701:5:203;;;;:24;;3733:9;;;6644:12:207;546:73:185;;;;;;;;;;;;538:82;;;:::i;:::-;3841:9:203;;3852:8;;3780:85;;-1:-1:-1;;;;;3841:9:203;;;3780:85;;;12766:74:207;12856:18;;;12849:34;3862:1:203;12899:18:207;;;12892:34;12739:18;;3780:85:203;;;-1:-1:-1;;3780:85:203;;;;;;;;;;;;;;-1:-1:-1;;;;;3780:85:203;;;;;3701:170;;3780:85;3701:170;;;;;;;;;;3780:85;3701:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:14;:12;:14::i;:::-;3974:9;;3965:19;;-1:-1:-1;;;3965:19:203;;-1:-1:-1;;;;;3974:9:203;;;3965:19;;;6049:74:207;3965:8:203;;;;6022:18:207;;3965:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3990:60;;;;;;;;;;;;;;;;;;:14;:60::i;:::-;4082:5;;4097:9;;4108:8;;;4118:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4118:45:203;-1:-1:-1;;;4118:45:203;;;4082:82;;-1:-1:-1;;;4082:82:203;;4056:23;;-1:-1:-1;;;;;4082:5:203;;;;:14;;:82;;4097:9;;;;;4108:8;;4118:45;;4082:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4082:82:203;;;;;;;;;;;;:::i;:::-;4056:108;;4170:14;:12;:14::i;:::-;4190:23;4227:10;4216:33;;;;;;;;;;;;:::i;:::-;4348:9;;4190:59;;-1:-1:-1;4322:36:203;;4190:59;;-1:-1:-1;;;;;4348:9:203;4322:8;:36::i;:::-;4453:9;;4444:19;;-1:-1:-1;;;4444:19:203;;-1:-1:-1;;;;;4453:9:203;;;4444:19;;;6049:74:207;4444:8:203;;;;6022:18:207;;4444:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:5:203;;4497:9;;4508:8;;4518:50;;4482:5;4518:50;;;4796:25:207;-1:-1:-1;;;;;4482:5:203;;;;-1:-1:-1;4482:14:203;;-1:-1:-1;4497:9:203;;;;;4769:18:207;;4518:50:203;;;-1:-1:-1;;4518:50:203;;;;;;;;;;;;;;-1:-1:-1;;;;;4518:50:203;;;;;4482:87;;4518:50;4482:87;;;;;;;;;;4518:50;4482:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4482:87:203;;;;;;;;;;;;:::i;:::-;4469:100;;4575:43;4632:10;4621:47;;;;;;;;;;;;:::i;:::-;4750:21;;4773:9;;4575:93;;-1:-1:-1;4741:42:203;;-1:-1:-1;;;;;4773:9:203;4741:8;:42::i;:::-;4849:9;;4840:19;;-1:-1:-1;;;4840:19:203;;-1:-1:-1;;;;;4849:9:203;;;4840:19;;;6049:74:207;4840:8:203;;;;6022:18:207;;4840:19:203;5903:226:207;2240:1231:203;2394:9;;2385:19;;-1:-1:-1;;;2385:19:203;;-1:-1:-1;;;;;2394:9:203;;;2385:19;;;6049:74:207;2385:8:203;;;;6022:18:207;;2385:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2410:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;2465:5;;2497:9;;;371:71:185;;;-1:-1:-1;;;371:71:185;;;6317:92:207;2465:5:203;6425:11:207;;;6418:100;;;;421:20:185;6534:12:207;;;6527:101;-1:-1:-1;;;;;2465:5:203;;;;:24;;2497:9;;;6644:12:207;371:71:185;;;;;;;;;;;;363:80;;;:::i;:::-;2618:9:203;;2629:8;;;2639:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2639:45:203;-1:-1:-1;;;2639:45:203;;;2542:154;;;;-1:-1:-1;;;;;2618:9:203;;;;2542:154;;:::i;:::-;;;;-1:-1:-1;;2542:154:203;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:154:203;;;;;2465:237;;2542:154;2465:237;;;;;;;;;;2542:154;2465:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:14;:12;:14::i;:::-;2805:9;;2796:19;;-1:-1:-1;;;2796:19:203;;-1:-1:-1;;;;;2805:9:203;;;2796:19;;;6049:74:207;2796:8:203;;;;6022:18:207;;2796:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;2911:5;;2926:9;;2937:8;;;2947:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:45:203;-1:-1:-1;;;2947:45:203;;;2911:82;;-1:-1:-1;;;2911:82:203;;2885:23;;-1:-1:-1;;;;;2911:5:203;;;;:14;;:82;;2926:9;;;;;2937:8;;2947:45;;2911:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2911:82:203;;;;;;;;;;;;:::i;:::-;2885:108;;2999:14;:12;:14::i;:::-;3019:23;3056:10;3045:33;;;;;;;;;;;;:::i;:::-;3177:9;;3019:59;;-1:-1:-1;3151:36:203;;3019:59;;-1:-1:-1;;;;;3177:9:203;3151:8;:36::i;:::-;3253:9;;3244:19;;-1:-1:-1;;;3244:19:203;;-1:-1:-1;;;;;3253:9:203;;;3244:19;;;6049:74:207;3244:8:203;;;;6022:18:207;;3244:19:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3356:9:203;;3367;;3285:92;;;-1:-1:-1;;;;;3356:9:203;;;3285:92;;;10091:34:207;3367:9:203;;;;10141:18:207;;;;10134:43;;;;3285:92:203;;;;;;;;;;10003:18:207;;;;3285:92:203;;;;;;;-1:-1:-1;;;;;3285:92:203;3308:46;3285:92;;;3269:109;;;;:15;;-1:-1:-1;3269:15:203;;-1:-1:-1;3269:109:203;;3285:92;3269:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:5:203;;3399:9;;3410:8;;;3420:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3420:45:203;-1:-1:-1;;;3420:45:203;;;3384:82;;-1:-1:-1;;;3384:82:203;;-1:-1:-1;;;;;3384:5:203;;;;-1:-1:-1;3384:14:203;;-1:-1:-1;3384:82:203;;3399:9;;;;;3410:8;;3420:45;;3384:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3384:82:203;;;;;;;;;;;;:::i;:::-;;2290:1181;;2240:1231::o;2022:142:112:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:112;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;232:137:105:-;264:16;313:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;286:40;;330:5;-1:-1:-1;;;;;330:16:105;;347:18;:16;:18::i;:::-;330:36;;;;;;;;;;-1:-1:-1;;;;;6067:55:207;;;330:36:105;;;6049:74:207;6022:18;;330:36:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:137;:::o;330:580:0:-;394:39;;;;;;;;;14698:21:207;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:107;14869:20:207;;;14862:52;394:8:0;;;;14834:19:207;;394:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;389:53;;330:580;:::o;389:53::-;468:22;462:36;;;;;:::i;:::-;;;502:1;462:41;558:22;511:150;;;;;;;;:::i;:::-;;;;;;;;;;;;;447:220;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;681:12;694:4;681:18;;;;;;:::i;:::-;;;;;;;;;;;;;;703:1;681:23;736:4;706:67;;;;;;;;:::i;:::-;;;;;;;;;;;;;673:101;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;780:22:0;:29;805:4;780:22;:29;:::i;:::-;;317:28:107;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:107;;883:22:0;;;;;;;309:37:107;883:20:0;:22;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;14698:21:207;;;;14755:2;14735:18;;;14728:30;14794:22;14774:18;;;14767:50;309:37:107;14869:20:207;;;14862:52;953:23:0;;-1:-1:-1;987:8:0;;;;14834:19:207;;987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;982:53;;1028:7;914:534::o;982:53::-;1151:15;1201:3;1195;1169:23;;:29;;;;:::i;:::-;:35;;;;:::i;:::-;:39;;1207:1;1169:39;:::i;:::-;1151:57;;1232:1;1222:7;:11;1214:49;;;;;;;20307:2:207;1214:49:0;;;20289:21:207;20346:2;20326:18;;;20319:30;20385:27;20365:18;;;20358:55;20430:18;;1214:49:0;20105:349:207;1214:49:0;1308:7;1269:12;1282:22;1269:36;;;;;;:::i;:::-;;;;;;;;;;;;;;:46;1321:16;:45;;;;;;;-1:-1:-1;1321:45:0;;;;;;;1343:22;1321:45;;:::i;:::-;;1372:38;1387:22;1372:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:38::i;:::-;1416:27;;;;;;;;;-1:-1:-1;1416:27:0;;:22;;:27;;:22;:27;:::i;3622:277:106:-;3690:1;-1:-1:-1;;;;;3685:6:106;:1;-1:-1:-1;;;;;3685:6:106;;3681:212;;3712:44;;;;;22422:2:207;22404:21;;;22461:2;22441:18;;;22434:30;22500:34;22495:2;22480:18;;22473:62;22571:7;22566:2;22551:18;;22544:35;22611:3;22596:19;;22220:401;3712:44:106;;;;;;;;3775:34;;;22838:21:207;;;22895:2;22875:18;;;22868:30;22934:12;22929:2;22914:18;;22907:40;-1:-1:-1;;;;;23021:55:207;;23014:4;22999:20;;22992:85;3775:34:106;;;;;;;22979:3:207;3775:34:106;;;3828;;;23300:21:207;;;23357:2;23337:18;;;23330:30;23396:12;23391:2;23376:18;;23369:40;-1:-1:-1;;;;;23483:55:207;;23476:4;23461:20;;23454:85;3828:34:106;;;;;;;23441:3:207;3828:34:106;;;3876:6;:4;:6::i;:::-;3622:277;;:::o;980:257:59:-;1067:10;1196:26;438:6;385:5:16;1196:26:59;:::i;:::-;1123:15;;;1142:31;385:5:16;1142:31:59;;;;1123:51;1178:13;;;:45;;;1123:101;;-1:-1:-1;980:257:59;;;;;:::o;506:219:104:-;543:10;592:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;628:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;663:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;692:24;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;570:152;;;;;:::i;:::-;-1:-1:-1;;;;;23976:15:207;;;23958:34;;24028:15;;;24023:2;24008:18;;24001:43;24080:15;;;24075:2;24060:18;;24053:43;24132:15;;;24127:2;24112:18;;24105:43;23884:3;23869:19;570:152:104;;;;;;;;;;;;;;;;;;;;;;;559:163;;506:219;:::o;1754:155:0:-;1818:86;317:28:107;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;4796:25:207;;;4784:2;4769:18;;4619:208;1860:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1860:31:0;;;;;;;;;;;;:::i;:::-;1898:4;1830:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1818:11;:86::i;:::-;1754:155;:::o;2409:432:106:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;12766:74:207;;;2677:17:106;12856:18:207;;;12849:34;;;;2712:4:106;12899:18:207;;;12892:34;2489:11:106;;1671:64;2586:43;;12739:18:207;;2652:67:106;;;-1:-1:-1;;2652:67:106;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:106;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:106;2820:7;:14;;;;;;;;2409:432::o;5630:121:120:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:120;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:120;;;;;275:14;;131:42;448:2;435:16;;251:21;;275:14;435:16;131:42;484:5;473:68;464:77;;401:150;;181:376;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:681:207:-;185:2;237:21;;;307:13;;210:18;;;329:22;;;156:4;;185:2;408:15;;;;382:2;367:18;;;156:4;451:218;465:6;462:1;459:13;451:218;;;530:13;;-1:-1:-1;;;;;526:62:207;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:207;;14:681;-1:-1:-1;;;;;;14:681:207:o;700:1697::-;904:4;933:2;973;962:9;958:18;1003:2;992:9;985:21;1026:6;1061;1055:13;1092:6;1084;1077:22;1118:2;1108:12;;1151:2;1140:9;1136:18;1129:25;;1213:2;1203:6;1200:1;1196:14;1185:9;1181:30;1177:39;1251:2;1243:6;1239:15;1272:1;1293;1303:1065;1319:6;1314:3;1311:15;1303:1065;;;1388:22;;;-1:-1:-1;;1384:95:207;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:207;1571:74;;1684:11;;1678:18;1716:15;;;1709:27;;;1797:19;;1543:15;;;1829:24;;;1919:21;;;;1964:1;;1887:2;1875:15;;;1978:282;1994:8;1989:3;1986:17;1978:282;;;2075:15;;2092:66;2071:88;2057:103;;2229:17;;;;2022:1;2013:11;;;;;2186:14;;;;1978:282;;;-1:-1:-1;2346:12:207;;;;2283:5;-1:-1:-1;;;2311:15:207;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:207;;700:1697;-1:-1:-1;;;;;;;;;700:1697:207:o;2402:250::-;2487:1;2497:113;2511:6;2508:1;2505:13;2497:113;;;2587:11;;;2581:18;2568:11;;;2561:39;2533:2;2526:10;2497:113;;;-1:-1:-1;;2644:1:207;2626:16;;2619:27;2402:250::o;2657:330::-;2699:3;2737:5;2731:12;2764:6;2759:3;2752:19;2780:76;2849:6;2842:4;2837:3;2833:14;2826:4;2819:5;2815:16;2780:76;:::i;:::-;2901:2;2889:15;-1:-1:-1;;2885:88:207;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:207:o;2992:862::-;3154:4;3183:2;3223;3212:9;3208:18;3253:2;3242:9;3235:21;3276:6;3311;3305:13;3342:6;3334;3327:22;3380:2;3369:9;3365:18;3358:25;;3442:2;3432:6;3429:1;3425:14;3414:9;3410:30;3406:39;3392:53;;3480:2;3472:6;3468:15;3501:1;3511:314;3525:6;3522:1;3519:13;3511:314;;;-1:-1:-1;;3602:9:207;3594:6;3590:22;3586:95;3581:3;3574:108;3705:40;3738:6;3729;3723:13;3705:40;:::i;:::-;3695:50;-1:-1:-1;3803:12:207;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:207;;2992:862;-1:-1:-1;;;;;;;2992:862:207:o;4051:184::-;4103:77;4100:1;4093:88;4200:4;4197:1;4190:15;4224:4;4221:1;4214:15;4240:374;-1:-1:-1;;;;;4455:6:207;4451:55;4440:9;4433:74;4543:2;4538;4527:9;4523:18;4516:30;4414:4;4563:45;4604:2;4593:9;4589:18;4581:6;4563:45;:::i;:::-;4555:53;4240:374;-1:-1:-1;;;;4240:374:207:o;5271:437::-;5350:1;5346:12;;;;5393;;;5414:61;;5468:4;5460:6;5456:17;5446:27;;5414:61;5521:2;5513:6;5510:14;5490:18;5487:38;5484:218;;5558:77;5555:1;5548:88;5659:4;5656:1;5649:15;5687:4;5684:1;5677:15;5484:218;;5271:437;;;:::o;6667:357::-;6785:12;;6832:4;6821:16;;;6815:23;;6785:12;6850:16;;6847:171;;;-1:-1:-1;;6924:4:207;6920:17;;;;6917:1;6913:25;6909:98;6898:110;;6667:357;-1:-1:-1;6667:357:207:o;7331:440::-;-1:-1:-1;;;;;7569:6:207;7565:55;7554:9;7547:74;7657:6;7652:2;7641:9;7637:18;7630:34;7700:2;7695;7684:9;7680:18;7673:30;7528:4;7720:45;7761:2;7750:9;7746:18;7738:6;7720:45;:::i;:::-;7712:53;7331:440;-1:-1:-1;;;;;7331:440:207:o;7776:673::-;7851:5;7881:18;7922:2;7914:6;7911:14;7908:40;;;7928:18;;:::i;:::-;8062:2;8056:9;8128:2;8116:15;;-1:-1:-1;;8112:24:207;;;8138:2;8108:33;8104:42;8092:55;;;8162:18;;;8182:22;;;8159:46;8156:72;;;8208:18;;:::i;:::-;8248:10;8244:2;8237:22;8277:6;8268:15;;8307:6;8299;8292:22;8347:3;8338:6;8333:3;8329:16;8326:25;8323:45;;;8364:1;8361;8354:12;8323:45;8377:66;8436:6;8429:4;8421:6;8417:17;8412:3;8377:66;:::i;:::-;;;;7776:673;;;;;:::o;8454:457::-;8533:6;8586:2;8574:9;8565:7;8561:23;8557:32;8554:52;;;8602:1;8599;8592:12;8554:52;8635:9;8629:16;8668:18;8660:6;8657:30;8654:50;;;8700:1;8697;8690:12;8654:50;8723:22;;8776:4;8768:13;;8764:27;-1:-1:-1;8754:55:207;;8805:1;8802;8795:12;8754:55;8828:77;8897:7;8892:2;8886:9;8881:2;8877;8873:11;8828:77;:::i;8916:162::-;-1:-1:-1;;;;;9003:5:207;8999:54;8992:5;8989:65;8979:93;;9068:1;9065;9058:12;9083:267;9161:6;9214:2;9202:9;9193:7;9189:23;9185:32;9182:52;;;9230:1;9227;9220:12;9182:52;9262:9;9256:16;9281:39;9314:5;9281:39;:::i;:::-;9339:5;9083:267;-1:-1:-1;;;9083:267:207:o;9537:184::-;9589:77;9586:1;9579:88;9686:4;9683:1;9676:15;9710:4;9707:1;9700:15;9726:125;9791:9;;;9812:10;;;9809:36;;;9825:18;;:::i;:::-;9726:125;;;;:::o;10188:218::-;10335:2;10324:9;10317:21;10298:4;10355:45;10396:2;10385:9;10381:18;10373:6;10355:45;:::i;11516:430::-;11713:66;11705:6;11701:79;11696:3;11689:92;11671:3;11810:6;11804:13;11826:74;11893:6;11889:1;11884:3;11880:11;11873:4;11865:6;11861:17;11826:74;:::i;:::-;11920:16;;;;11938:1;11916:24;;11516:430;-1:-1:-1;;;11516:430:207:o;11951:287::-;12080:3;12118:6;12112:13;12134:66;12193:6;12188:3;12181:4;12173:6;12169:17;12134:66;:::i;:::-;12216:16;;;;;11951:287;-1:-1:-1;;11951:287:207:o;12243:277::-;12310:6;12363:2;12351:9;12342:7;12338:23;12334:32;12331:52;;;12379:1;12376;12369:12;12331:52;12411:9;12405:16;12464:5;12457:13;12450:21;12443:5;12440:32;12430:60;;12486:1;12483;12476:12;13119:591;13229:6;13282:2;13270:9;13261:7;13257:23;13253:32;13250:52;;;13298:1;13295;13288:12;13250:52;13331:2;13325:9;13373:2;13365:6;13361:15;13442:6;13430:10;13427:22;13406:18;13394:10;13391:34;13388:62;13385:88;;;13453:18;;:::i;:::-;13489:2;13482:22;13526:16;;13551:39;13526:16;13551:39;:::i;:::-;13599:21;;13674:2;13659:18;;;13653:25;13636:15;;;13629:50;;;;-1:-1:-1;13606:6:207;13119:591;-1:-1:-1;13119:591:207:o;13715:521::-;-1:-1:-1;;;;;13989:6:207;13985:55;13974:9;13967:74;14077:6;14072:2;14061:9;14057:18;14050:34;14120:3;14115:2;14104:9;14100:18;14093:31;13948:4;14141:46;14182:3;14171:9;14167:19;14159:6;14141:46;:::i;:::-;14133:54;;14223:6;14218:2;14207:9;14203:18;14196:34;13715:521;;;;;;;:::o;15051:781::-;15101:3;15142:5;15136:12;15171:36;15197:9;15171:36;:::i;:::-;15226:1;15243:17;;;15269:191;;;;15474:1;15469:357;;;;15236:590;;15269:191;15317:66;15306:9;15302:82;15297:3;15290:95;15440:6;15433:14;15426:22;15418:6;15414:35;15409:3;15405:45;15398:52;;15269:191;;15469:357;15500:5;15497:1;15490:16;15529:4;15574;15571:1;15561:18;15601:1;15615:165;15629:6;15626:1;15623:13;15615:165;;;15707:14;;15694:11;;;15687:35;15750:16;;;;15644:10;;15615:165;;;15619:3;;;15809:6;15804:3;15800:16;15793:23;;15236:590;;;;;15051:781;;;;:::o;15837:664::-;16187:66;16182:3;16175:79;16157:3;16273:47;16316:2;16311:3;16307:12;16299:6;16273:47;:::i;:::-;16340:66;16329:78;;16436:31;16431:2;16423:11;;16416:52;16492:2;16484:11;;15837:664;-1:-1:-1;;;15837:664:207:o;17025:694::-;17368:66;17363:3;17356:79;17338:3;17464:6;17458:13;17480:75;17548:6;17543:2;17538:3;17534:12;17527:4;17519:6;17515:17;17480:75;:::i;:::-;17619:66;17614:2;17574:16;;;;17606:11;;;17599:87;-1:-1:-1;17710:2:207;17702:11;;17025:694;-1:-1:-1;17025:694:207:o;17724:543::-;17826:2;17821:3;17818:11;17815:446;;;17862:1;17886:5;17883:1;17876:16;17930:4;17927:1;17917:18;18000:2;17988:10;17984:19;17981:1;17977:27;17971:4;17967:38;18036:4;18024:10;18021:20;18018:47;;;-1:-1:-1;18059:4:207;18018:47;18114:2;18109:3;18105:12;18102:1;18098:20;18092:4;18088:31;18078:41;;18169:82;18187:2;18180:5;18177:13;18169:82;;;18232:17;;;18213:1;18202:13;18169:82;;18503:1464;18629:3;18623:10;18656:18;18648:6;18645:30;18642:56;;;18678:18;;:::i;:::-;18707:97;18797:6;18757:38;18789:4;18783:11;18757:38;:::i;:::-;18751:4;18707:97;:::i;:::-;18859:4;;18916:2;18905:14;;18933:1;18928:782;;;;19754:1;19771:6;19768:89;;;-1:-1:-1;19823:19:207;;;19817:26;19768:89;-1:-1:-1;;18400:1:207;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;19870:81;;18898:1063;;18928:782;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;18964:79:207;;;19141:236;19155:7;19152:1;19149:14;19141:236;;;19244:19;;;19238:26;19223:42;;19336:27;;;;19304:1;19292:14;;;;19171:19;;19141:236;;;19145:3;19405:6;19396:7;19393:19;19390:261;;;19466:19;;;19460:26;-1:-1:-1;;19549:1:207;19545:14;;;19561:3;19541:24;19537:97;19533:102;19518:118;19503:134;;19390:261;-1:-1:-1;;;;;19697:1:207;19681:14;;;19677:22;19664:36;;-1:-1:-1;18503:1464:207:o;19972:128::-;20039:9;;;20060:11;;;20057:37;;;20074:18;;:::i;20459:197::-;20587:3;20612:38;20646:3;20638:6;20612:38;:::i;20661:1554::-;20780:3;20774:4;20771:13;20768:26;;20787:5;;20661:1554::o;20768:26::-;20817:37;20849:3;20843:10;20817:37;:::i;:::-;20877:18;20869:6;20866:30;20863:56;;;20899:18;;:::i;:::-;20928:97;21018:6;20978:38;21010:4;21004:11;20978:38;:::i;20928:97::-;21051:1;21079:2;21071:6;21068:14;21096:1;21091:867;;;;22002:1;22019:6;22016:89;;;-1:-1:-1;22071:19:207;;;22065:26;22016:89;-1:-1:-1;;18400:1:207;18396:11;;;18392:84;18388:89;18378:100;18484:1;18480:11;;;18375:117;22118:81;;21061:1148;;21091:867;14998:1;14991:14;;;15035:4;15022:18;;-1:-1:-1;;21127:79:207;;;14998:1;14991:14;;;15035:4;15022:18;;21350:9;21372:251;21386:7;21383:1;21380:14;21372:251;;;21468:21;;;21462:28;21447:44;;21518:1;21591:18;;;;21546:15;;;;21409:4;21402:12;21372:251;;;21376:3;21651:6;21642:7;21639:19;21636:263;;;21712:21;;21706:28;-1:-1:-1;;21809:3:207;21797:1;21793:14;;;21789:24;21785:97;21781:102;21766:118;21751:134;;;-1:-1:-1;;21945:1:207;21929:14;;;21925:22;21912:36;;-1:-1:-1;20661:1554:207:o;24622:764::-;25012:14;25007:3;25000:27;24982:3;25056:6;25050:13;25072:75;25140:6;25135:2;25130:3;25126:12;25119:4;25111:6;25107:17;25072:75;:::i;:::-;25211:3;25206:2;25166:16;;;25198:11;;;25191:24;25240:13;;25262:76;25240:13;25324:2;25316:11;;25309:4;25297:17;;25262:76;:::i;:::-;25358:17;25377:2;25354:26;;24622:764;-1:-1:-1;;;;24622:764:207:o","linkReferences":{}},"methodIdentifiers":{"IS_TEST()":"fa7626d4","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSenders()":"1ed7831c","failed()":"ba414fa6","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","testCallFromCallboundDelegation()":"e187dc8f","testCallFromSystemDelegation()":"d671f65b","testCallFromTimeboundDelegation()":"89403ab3","testRegisterDelegationRevertInterfaceNotSupported()":"9d4218e6"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromCallboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromSystemDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testCallFromTimeboundDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testRegisterDelegationRevertInterfaceNotSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/StandardDelegationsModule.t.sol\":\"StandardDelegationsModuleTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":3000},\"remappings\":[\":@latticexyz/=node_modules/@latticexyz/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\"]},\"sources\":{\"node_modules/@latticexyz/gas-report/src/GasReporter.sol\":{\"keccak256\":\"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798\",\"dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44\",\"dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55\",\"dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf\",\"dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4\",\"dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2\",\"dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b\",\"dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb\",\"dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84\",\"dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1\",\"dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e\",\"dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924\",\"dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67\",\"dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263\",\"dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912\",\"dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6\",\"dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2\",\"dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99\",\"dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a\",\"dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d\",\"dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3\",\"dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210\",\"dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A\"]},\"node_modules/@latticexyz/store/src/StoreHook.sol\":{\"keccak256\":\"0x7774e2176bbb9e259f71c62f41d07e6284fecd2af062a47d3c88a3e9cccb61b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1048129389b95fac80da3edd0f7bbfa18bd51c13531ee650f9c1cbe3433ae8e8\",\"dweb:/ipfs/QmaSaxfGPxmSZHSyuKsrNR1xx3RpLRJh5jykSj94WDBxei\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd\",\"dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff\",\"dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787\",\"dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551\",\"dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea\",\"dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4\",\"dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44\",\"dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2\",\"dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN\"]},\"node_modules/@latticexyz/store/src/rightMask.sol\":{\"keccak256\":\"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38\",\"dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64\",\"dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb\",\"dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4\",\"dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf\",\"dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205\",\"dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed\",\"dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU\"]},\"node_modules/@latticexyz/store/test/EchoSubscriber.sol\":{\"keccak256\":\"0x4fe4e9c11d863342fc19014de491ab28638fb9b5e7a0af143c86b0ab29fd3f84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57d7b059a932a4a411e7a25f95b4d41e3370bfedcf878960c14134fc78ba6eaa\",\"dweb:/ipfs/QmVmfUDyjfX4mLnU4HxkPg79ALfQwXXgfRrQsMCYbCGp7k\"]},\"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol\":{\"keccak256\":\"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3\",\"dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze\"]},\"node_modules/@latticexyz/store/test/RevertSubscriber.sol\":{\"keccak256\":\"0x1df97686c247408971bc08a4b8d36ac804da3b14965eae34a1f192f65eb2e902\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ff2fb2cf1b170d9de43fb6b530d9eba342a2a52720f5ca20d51abbf386c8d28\",\"dweb:/ipfs/QmYhQL9ZKcusiadLG1binasmyh4vjnRWXchniBgJ9iiGXY\"]},\"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol\":{\"keccak256\":\"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5\",\"dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c\",\"dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89\",\"dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6\",\"dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx\"]},\"node_modules/@latticexyz/world/src/ERC165Checker.sol\":{\"keccak256\":\"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1\",\"dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX\"]},\"node_modules/@latticexyz/world/src/IDelegationControl.sol\":{\"keccak256\":\"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d\",\"dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3\",\"dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd\",\"dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc\",\"dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xd3645ee90c73dd991659a140c0132c5a2aaf27a296c457737b212d87b2f66402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://519d81e2bc7233b1488339eaf9220f7eb57086dd3ee8e1831708ebc6e87f00db\",\"dweb:/ipfs/Qmf8RjMxuPXbteMeEB3vstjutsCrmveyBFCjVFt7nSYgtc\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0x149d3c2b4bbea21047fc8cf79236488764dd8dde6e440dbc37067a8ce8831bbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2f340a5616cafd1d80e6ef79f1620102d3d64730c6aa19ecdbb4ca86aaa59b2\",\"dweb:/ipfs/QmWoXP1BKj8U3ZXXoiTRENCxVaaCxrKAenwCZbCVbyfaZ7\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3\",\"dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020\",\"dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9\",\"dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d\",\"dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7\"]},\"node_modules/@latticexyz/world/src/SystemHook.sol\":{\"keccak256\":\"0xe960a82dbc824f1543d1113471040bb1c8d332508d9c362f6c433634dee86737\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8f43c0e555a3e2bfc59376b5af61147c136d718eee871972888630445287da4\",\"dweb:/ipfs/QmcxoLoyuqxFR32rb8CEL5TtsauqvFSFYUnuBmJt2Xrtk6\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x5f02e221a1f088b56d81894e210ccd97c097b8da2cdc677d073c2722f2a0564a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02134a975fb146c5b37ce8472245982120b13000a8628b99395200458e3fd5ef\",\"dweb:/ipfs/Qmd2Zq9LX1kkEE5UEA6oFWnSpBPTX9F9iU2Z74GHSaDwXX\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0x4b83d5791209b8f39773b07e5f162dfd0617f5f9b5b4bd371c087412e5ad01cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://033a3777136e6d5c581efc8bf2535403abe44874409c85d17a353fae6dc56006\",\"dweb:/ipfs/QmaXepBDVnmnMdVzuxbGT2qo5vqWnjB75KNCCdxRehrBMX\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74\",\"dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f\",\"dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4\",\"dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5\",\"dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45\",\"dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6\",\"dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol\":{\"keccak256\":\"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8\",\"dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478\",\"dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458\",\"dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd\",\"dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7\",\"dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol\":{\"keccak256\":\"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69\",\"dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e\",\"dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35\",\"dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e\",\"dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c\",\"dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2\",\"dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c\",\"dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7\",\"dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571\",\"dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22\",\"dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV\"]},\"node_modules/@latticexyz/world/src/modules/init/InitModule.sol\":{\"keccak256\":\"0x2350a2a13cdf3e5420fa9881506936bf32442e4ddfc181c2d499d989e3cd34b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24ec25478a659cca0c9529366bc139b80d302b5ac201abcec67316cf01e1f3d2\",\"dweb:/ipfs/QmegoDuhwLYsuoR1cXwEerUHkLUKyYC4C4TgZBNJXxAtik\"]},\"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol\":{\"keccak256\":\"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6\",\"dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc\"]},\"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol\":{\"keccak256\":\"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c\",\"dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9\"]},\"node_modules/@latticexyz/world/src/modules/init/constants.sol\":{\"keccak256\":\"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752\",\"dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8\",\"dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c\",\"dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160\",\"dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216\",\"dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7\",\"dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL\"]},\"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535\",\"dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw\"]},\"node_modules/@latticexyz/world/src/modules/init/types.sol\":{\"keccak256\":\"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411\",\"dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658\",\"dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C\"]},\"node_modules/@latticexyz/world/src/requireNamespace.sol\":{\"keccak256\":\"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6\",\"dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi\"]},\"node_modules/@latticexyz/world/src/requireValidNamespace.sol\":{\"keccak256\":\"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027\",\"dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8\",\"dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d\",\"dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e\",\"dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d\",\"dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12\"]},\"node_modules/@latticexyz/world/test/DelegationControlMock.sol\":{\"keccak256\":\"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d\",\"dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf\"]},\"node_modules/@latticexyz/world/test/World.t.sol\":{\"keccak256\":\"0x9741435a6d4b2ab65cb16b0ff1e46179012d51f33ec292188224f243c5918414\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://002db4ebf5ee5f69626d5905e22b192c41f8723774e3e7385d00ec7c3102d891\",\"dweb:/ipfs/QmbRRJpeWo528Nve5FyHE2jcCSjrgg1juTgnZFB55GyPk9\"]},\"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol\":{\"keccak256\":\"0x6a980c5814c0b4f581ac686a9957a4ee4aeebf944fbb7f3bcd747aa46e6711f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ca863d25e983ca61e718d22fa1118c41bb82237fe8c7ef715378a84da8f239\",\"dweb:/ipfs/QmWEELBroj9fSPvkpT8DJ6JeeYSNcAqTyTsv37pqrArQfc\"]},\"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol\":{\"keccak256\":\"0xfacef9348a1b8a406863449a5575ca653d9ee4c3b145349864c987fa7134de8c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://434dd592d088cc53df20ac637bd46d49facd071c661a68727e99a0ee4151eeaf\",\"dweb:/ipfs/QmaSLkwAAnWVwZzp4FntXo4N2qgxXtLNVeFU4fewTQ3wZe\"]},\"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol\":{\"keccak256\":\"0x3bb0aed7826ecbd8083d2694422c16922dcb5c0460ec5c6e26f2f8c091071136\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bd053f250292932423222426fb129931a7192d5b2cb294044098a23f0e7603\",\"dweb:/ipfs/QmduMJzo59L6biSEestyzzHUVEzj3cohA14rDNuMWr8ehX\"]},\"node_modules/@latticexyz/world/test/createInitModule.sol\":{\"keccak256\":\"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc\",\"dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa\"]},\"node_modules/@latticexyz/world/test/createWorld.sol\":{\"keccak256\":\"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4\",\"dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f\"]},\"node_modules/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"node_modules/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"node_modules/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"node_modules/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"node_modules/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"node_modules/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"node_modules/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"node_modules/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"node_modules/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"node_modules/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"node_modules/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"node_modules/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"node_modules/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"node_modules/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"node_modules/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"node_modules/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"node_modules/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"node_modules/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"src/modules/std-delegations/CallboundDelegationControl.sol\":{\"keccak256\":\"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44\",\"dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF\"]},\"src/modules/std-delegations/StandardDelegationsModule.sol\":{\"keccak256\":\"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67\",\"dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK\"]},\"src/modules/std-delegations/SystemboundDelegationControl.sol\":{\"keccak256\":\"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815\",\"dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq\"]},\"src/modules/std-delegations/TimeboundDelegationControl.sol\":{\"keccak256\":\"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb\",\"dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb\"]},\"src/modules/std-delegations/constants.sol\":{\"keccak256\":\"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b\",\"dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC\"]},\"src/modules/std-delegations/tables/CallboundDelegations.sol\":{\"keccak256\":\"0xff415bd15a84962a2e56a0768b554f3afca9a1e53539f2d34255e7cfa2e7fa22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a1fdadc45e7950047ae325a98345ea821e97eb52500934a026fd3ae8ea83a1f\",\"dweb:/ipfs/QmWxjjvpSpkU2zJu4Z5HFYjwXnZATDWeJEwQeE43LxtZSb\"]},\"src/modules/std-delegations/tables/SystemboundDelegations.sol\":{\"keccak256\":\"0xf4b5beed9f89b55c448245a14bccae045705036e83229964162617ec610e8529\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56d22e0cae215d83dffd1a355910c66cb291bf0ac8efc4af19174c678fe4b643\",\"dweb:/ipfs/QmSUdSn7sMN1gutnEwkcffkfGq4iurL3R9g3FzbUNiaXZg\"]},\"src/modules/std-delegations/tables/TimeboundDelegations.sol\":{\"keccak256\":\"0xe7136185cac83d57113c5500a7ec74d523357d24623c493fe8c6ec9c00d61d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://deffe13dd00f4c6b021d94d67209eb8f303e3fe496cfd85e6da1cef171b05cc6\",\"dweb:/ipfs/QmaJ3iV1nFcojWJF6Wxe4BBhf7AHpe6EesBjFLTsHvnTZh\"]},\"test/StandardDelegationsModule.t.sol\":{\"keccak256\":\"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812\",\"dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":false}],"type":"event","name":"log_address","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_array","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"log_bytes","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32","indexed":false}],"type":"event","name":"log_bytes32","anonymous":false},{"inputs":[{"internalType":"int256","name":"","type":"int256","indexed":false}],"type":"event","name":"log_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address","name":"val","type":"address","indexed":false}],"type":"event","name":"log_named_address","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256[]","name":"val","type":"uint256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256[]","name":"val","type":"int256[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"address[]","name":"val","type":"address[]","indexed":false}],"type":"event","name":"log_named_array","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes","name":"val","type":"bytes","indexed":false}],"type":"event","name":"log_named_bytes","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"val","type":"bytes32","indexed":false}],"type":"event","name":"log_named_bytes32","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false},{"internalType":"uint256","name":"decimals","type":"uint256","indexed":false}],"type":"event","name":"log_named_decimal_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"int256","name":"val","type":"int256","indexed":false}],"type":"event","name":"log_named_int","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"string","name":"val","type":"string","indexed":false}],"type":"event","name":"log_named_string","anonymous":false},{"inputs":[{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"uint256","name":"val","type":"uint256","indexed":false}],"type":"event","name":"log_named_uint","anonymous":false},{"inputs":[{"internalType":"string","name":"","type":"string","indexed":false}],"type":"event","name":"log_string","anonymous":false},{"inputs":[{"internalType":"uint256","name":"","type":"uint256","indexed":false}],"type":"event","name":"log_uint","anonymous":false},{"inputs":[{"internalType":"bytes","name":"","type":"bytes","indexed":false}],"type":"event","name":"logs","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeArtifacts","outputs":[{"internalType":"string[]","name":"excludedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeContracts","outputs":[{"internalType":"address[]","name":"excludedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifacts","outputs":[{"internalType":"string[]","name":"targetedArtifacts_","type":"string[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetContracts","outputs":[{"internalType":"address[]","name":"targetedContracts_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"targetedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"targetSenders","outputs":[{"internalType":"address[]","name":"targetedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromCallboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromSystemDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testCallFromTimeboundDelegation"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"testRegisterDelegationRevertInterfaceNotSupported"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@latticexyz/=node_modules/@latticexyz/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/"],"optimizer":{"enabled":true,"runs":3000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/StandardDelegationsModule.t.sol":"StandardDelegationsModuleTest"},"evmVersion":"paris","libraries":{}},"sources":{"node_modules/@latticexyz/gas-report/src/GasReporter.sol":{"keccak256":"0x2ce3fbd09098ce05ae68684405728c73470ff9ee8c9b1359ff230ecfa5d4d5dd","urls":["bzz-raw://7cf74103308e356e0f30d237f0fdc9864a9cee6a8bafe76baeb71f62b8c6d798","dweb:/ipfs/QmTcACXKUxBZTwfdvJxiHiU8zXMzk732HUzcdiTU9vh55W"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x650927696f7518fa216f2d6001835e9fdb419518034c781e86d2a2d33f4ecd2a","urls":["bzz-raw://72e91ac32ed00d36bd22fefeaf4ce1e9420143ddab7080eeb720c668a117bf44","dweb:/ipfs/QmdVqn18WZvx5p84MDJPsB5tfVoXDR86wzm4sLx6WrGYYL"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xf506b8e9521a2173ae51aca038b86f705ac6c10fc6361c5df32ea37c7218fdbd","urls":["bzz-raw://9ce5626141f377ea6c9477a27205fa23013c321423950a97f75a2685ac401c55","dweb:/ipfs/QmfYjQmUcQUm46dRHbiYkUnoBokHuS58WZUd8oSdGKKohy"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0xc6aa930fb9a3df986870e3c77e567cabff12ae5e7b2c2af69669390e018d3728","urls":["bzz-raw://a8d6d40675ddd6575538cfa915f73fc8379f4c154b034220df2cf6b7be6d9baf","dweb:/ipfs/QmS7RNEDNBq6YwVJ1gPfs36CJg9d6h5MaxPRtuL3726uEK"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0x6041a89e90293b15acf91378e329815cb857d79f0b384918cd97292378ed5c09","urls":["bzz-raw://0e263d3c8230b4a4852e3b66058e9c36e946cf64471ffd0ac7f54b7a37f329f4","dweb:/ipfs/QmdCnZE1G5PX4ZswUiR6t2DWMRDbVdJYaCzbCF4hbDTKc2"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x0efbf9afc716c585621482221f75e5bd60bcf0e813c9f7800d7c0309dcc3c927","urls":["bzz-raw://31b6aeb5446a0a0d5bd71be15a68c5bde94b08c961369203b83c8abe36f401d2","dweb:/ipfs/QmXhComne4es9ZMKaGNqHCdJZrFoFssxMYgLaqvCXPL1Mg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0xa95a7b8095a313078abe9b3953fa4512aac88ead4526e37023583cb5dc274cb3","urls":["bzz-raw://8a878403e5133ec5f250d752e7b7495e2b13420cd3a42fb59aa6d5f8ee6d188b","dweb:/ipfs/QmUGxeD5Y7B5goNNgFcgaAakjoSr4YtVaE3CMAypRUZGmc"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0x174b2e5a5f80094d752cd2a36f1fbdf50e81b1e203216b9e5a6f33e02d606cec","urls":["bzz-raw://59e6de780b55c1937a7148d3cc07ec137c3e2f243f331ba0b70f3262d919c1cb","dweb:/ipfs/QmTJbh6ybPsZE9pFziTztstWxmh6ogUgMa6E81M6PMTA6g"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0x4b471eb3b98a51f15992f7e4cfb7a7d8e842410f081ea03ef85d3a7b34c35f79","urls":["bzz-raw://e7e82faaea290036677562d8a3a8502f5f871b1368b58ac38897e0ef67216d84","dweb:/ipfs/QmfCj4CtNZ7LYkWUAYcMoyp3X7PFJkUjXgBwbzXkbkDFL6"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xfdeeba7e17c947285610d49d85d402cfe5286c046814f827c1aaa37636c16d8f","urls":["bzz-raw://5fde8b7c7caf4dcdcb524565cb8745d897d4d22d88fa0744f9db4b3d36a1eee1","dweb:/ipfs/QmbUe4pfJeRqiiPz31BKWbYv12cz8Lz3Ky5yKydtTb4FY9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x677224ab340753edf523ccff8c9d6ede987addbf0d7bc13d0e479306f3866a99","urls":["bzz-raw://6c0285a7684490d6e65d6f91b3631abdafb135d200ea9068e730dd98017a305e","dweb:/ipfs/QmcURHZiMGnSET9P2iSgph22F6iFdoDbN4WmJsHxTAT5G9"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xe246addf70a3fe65f19e2ab0048d48785bc2ef2f75884eeade151aef59ff5449","urls":["bzz-raw://389022221307160febdec33a7fbdd82fcfbdd1fa6f9b1c67ffe3bf0467d2c924","dweb:/ipfs/QmWunXryDsJZJBwdXxKetRH1vB4tkwTXsdzoM4nePGVvaA"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf6d2871ca67aacadfd5dd4caef45440a571d932e68a04466f2674e481e79e167","urls":["bzz-raw://260067ed037789d073f407db1d416171e33c79e9b584090794d05e990ee88b67","dweb:/ipfs/QmbAA4Ynfy5aQv71JkZrPcdt2iqc3NK8DcAL1mnx7M1WYC"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x7f6d8a25eea4a9d51de396ff64215e2567b29ce607538f04ec1a4ae2efb591bc","urls":["bzz-raw://8ae6e34ba2e92bd3cb8dd556838f4e3caa6c3feaf9e2d63649afa944cb5e3263","dweb:/ipfs/QmR1oNRLp87pnrnxrujdT7JU1Gzwq22rVukKUkXmwNBVSC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x79954fa7614943899ad13b27ca0c2bf27c996d7b82a0e347afa48d7a4bbc6e2d","urls":["bzz-raw://34f7d6e209bcc6e379e004ae5a03f909e23e4e87956205610f4e39969b968912","dweb:/ipfs/QmZQeHDwtUBEpTSWn9L7AZ1id6dUbEHmLo6Cj3f9jKRqVM"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0x6dc7a614a120b1940ca8de1924e59895a42ef5f0e22d81a9221790fd76687c2e","urls":["bzz-raw://b638521a9590a62c4e976f12be43d0370246836b90227cbf2e306888331986f6","dweb:/ipfs/QmcEpcjHhL9rawjJRuMJvtTv3YwN2ggYsQHXZeoF88VRFX"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xdca93829ef7e90c12678d3b7bcafee1d3ec9499abfc76c91edd188a8923f4f18","urls":["bzz-raw://3193518ae917765035c845266de41ccebde7a7a06ee6fd7f000534a530975ab2","dweb:/ipfs/QmYr9dCG2HKUMrXHevyRanqsPRHYpD2dnpgZkvwZYqWHe9"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x21d008da9dd112938ad5381264dce39be7855002076afa01d78dc6421a951fd8","urls":["bzz-raw://1af33c3d662d6ba193987ec62c865e05b53ced4904bff9a5729ab3ada2ca3a99","dweb:/ipfs/QmUSXF3R7LwQWW8P6BZCrt3MAgGN5UwiiaHB3DGCSBZLL5"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x1f04af14e5040f71bd3daa79b90245a275e52f8d0294c17ae5bfe9aa727651a5","urls":["bzz-raw://d76533959ded2f58434ae9f89fe8c3ff66095ec94e829f89914b362751799e3a","dweb:/ipfs/Qmb1e12g6Sku2u1R96qei1GhqSNi1sZhKRCb111SyNk1ta"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x48c9749d33f06406b8033b3df67002836d1b356c6ae8282865e7b437941ed61f","urls":["bzz-raw://931e1275db62ba2f9410ee8a8ab384ece2a7031cdf446c50696078f9da24a04d","dweb:/ipfs/QmTXzyjLNj5KuJUHfe1T3awroK5DLkCU4dm6RR4pSUVrfE"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x7cafc150d77cb46ecb49b1a1a7d43cc17e21a095596cf544cc8ba6bfe7ed7f20","urls":["bzz-raw://889cadacfbc667e10a7a83ac34e858c76d0472d04cad72c7691a84879e503ce3","dweb:/ipfs/Qmcm6GFFoGFw2nmuz3Z2NRAgqfBPFZixHppmQzZM4Fy3sR"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x9d740905a6bd4e322f7cc6f7837fe80d7733f7604d2077e45b58b8c3e84b67dd","urls":["bzz-raw://c53f83af2b84c740ede7fa379d92d86ab2e94341296d930114fa58c0380fd210","dweb:/ipfs/QmTUf3nL1fqKQXuTQF9HyjeWXdXYGemD2EzXUB3BjaNS2A"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreHook.sol":{"keccak256":"0x7774e2176bbb9e259f71c62f41d07e6284fecd2af062a47d3c88a3e9cccb61b1","urls":["bzz-raw://1048129389b95fac80da3edd0f7bbfa18bd51c13531ee650f9c1cbe3433ae8e8","dweb:/ipfs/QmaSaxfGPxmSZHSyuKsrNR1xx3RpLRJh5jykSj94WDBxei"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0x9fdfe426fd74b31fe309efbd9bf30bcfea7457366f8c8138cf0ee0bd983d6c28","urls":["bzz-raw://5bba26fa27f64c5560708391c09da78a1e8bbaa6b5d515aa7692a57516319ecd","dweb:/ipfs/QmQmDtwG742BMqW8qgiMAccdpZbzxQyyVnW9LMETP2NBVF"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xbe5cb815a5d073d1d94fc73a3a02a151ffb4e9ce299f00580c6c2d9cd339d7c9","urls":["bzz-raw://b7416ec2aeef38b06c4e559dc3e76fa8cd51f54c06cc58aeed613f44dfd3c3ff","dweb:/ipfs/QmRp6ZmUckpmGKG31wyZSxtgmUJZS2y85sRP2UU9Foajn7"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xa59c43271d363f2366d6f6732ae586b1a36a3ffa4906b8f5cbbf19d3d314562c","urls":["bzz-raw://2bd7c9f8f9ad579a8dfec566b2bd2e646f8065ce8a07e6732e11a4a3a2be7787","dweb:/ipfs/QmWBwZGnYYxEiRjFKSsu1mFtCWJYw3XSojhn7zmc5YE4vG"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x2e81480e081ce6ad4917ecc634e5c9b7a5674068992ae8d9088f0f6296da3bf7","urls":["bzz-raw://2acfdee4dd4c0347ec214273184f267db0e7edc82e586600501d13581dbb5551","dweb:/ipfs/QmcD945zNdGfkwKVvKHA2fpBGictaz4cVMnNm96SmTG5qY"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x29ed1bd962e594e00a9b921ddbbb202a47206adbece718721483a69593b88763","urls":["bzz-raw://786df2eca996d18660a4ea7d059dfb8c8476fe5cc8f14e0ce5c8f237e08444ea","dweb:/ipfs/QmQ8dbVA2rMgcb9rznHVjn8DGH9U8bZuHmebukjkYxs2Av"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0xe9c42e51b6d20496dde8e8013680ec4a4ea1229fd57f0364a2a061c14c1c115b","urls":["bzz-raw://2bcbeeb7b3de32fc68102f7875d71348d5a0171dbb50937d6ebeb28dd10d4ed4","dweb:/ipfs/QmPY91z4D25KGLU2nhnZgb538Mh1mi46RbwHQB8kZvXd4h"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xf80e355b361d29b0169483074b73e2502b228d539d5b3511239edfa9644ae270","urls":["bzz-raw://067d0b61a94453ed29f985cee8d237b46ef1c95f790848a927951e951ebe5a44","dweb:/ipfs/QmVjF2vEnRXzq1GHXwXd9iHJAfyrZNA2wAuygpZv6dGRTB"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x2fe1752ecfb01c2de84cd9ae0c47fef85f9f0a7668ae31dc8b19724570eaad50","urls":["bzz-raw://cb90fb960543d00b37df49274c3b7bda6f2c8fb1b363226610f6de7f5bffc7c2","dweb:/ipfs/Qmc1ZQ6xPm8jXaWbc9Lakq2uZxY3pqtVC8r3WnNDFgLGTN"],"license":"MIT"},"node_modules/@latticexyz/store/src/rightMask.sol":{"keccak256":"0xbde7a13eb04663ffd62c3eac929abde4bf8d4fb4c434e510782af01045b78410","urls":["bzz-raw://3b629c78d8e194824b07bbf66f62d5bb94ce883100f5523cb545d3e980792f38","dweb:/ipfs/QmWCRbCT55mnusK1abavXvwM4uN9QStcML4ZgjUG9L6V8S"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0xcc16f330a9cb5f9f095e2bfc62c67818f2b91a229223c64c87891f1cebfc0305","urls":["bzz-raw://1384e4acac4553089859ff1368f358e5c81ceba986a902e5ec082801de097f64","dweb:/ipfs/QmXcEESML4KRKCfwxvC3tsW9jiA8PE7pxPuZ8L1t1wiNby"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0x515001322ebb9b58c62be0bd96ba65dc82841cc550533f283813ad24baaf2554","urls":["bzz-raw://b014d298897dfc75189c10f5e3d970d8368db734c545f6c7d4833cec9c7117eb","dweb:/ipfs/Qmcs7rTdh6zVyDHczXW6mEJqVmndZZTDSjNC1jouf43hTX"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0xcf8e6e16b76972b6a96ea6b428d7298fc174a840fc8c5c09b6fe2030d31600d7","urls":["bzz-raw://025cf5112618018efd416155c9df257cd28447629bd79c0c37655a8e22c0e4f4","dweb:/ipfs/QmaqeqzGVrAK6rQqQgCzs8UJMWrWmR52jqzN8jqRdaY1kT"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x248c35b8efaf6a0b0229fd81cafcb8fac6a54662187b56b49574b10e9c3ebf29","urls":["bzz-raw://63b6c95da7d63346db3b741f836b20e23f8e46a6245efdfa6443b204edecabcf","dweb:/ipfs/QmY79DfLgvMsTSZJzwbYmzGYE2ajCumu3ruQ2GpDyYbVqY"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0x08f257c62602117fe4943580b0a19f19cf696b22000afd927a2159e24625a13a","urls":["bzz-raw://40ee497f86d4192794a5592264e356dcda27bbe275f6a110dfbc3c3b67798205","dweb:/ipfs/QmW98aRsWSvUzwvX8FkweFDrgGS9YKr8KvfnFrT5HkMtvT"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x1cf2e205960520ded9a1ac8a6f4e4e25b5153114939adc7acb66122aba88af61","urls":["bzz-raw://7b41a9da0859000750196a14db7352e12fbe0d55e3849a468fe41b23ffa847ed","dweb:/ipfs/QmTjkrru4tcqXx38k49C2ris5ednawtkfdcW5EVRNJYBKU"],"license":"MIT"},"node_modules/@latticexyz/store/test/EchoSubscriber.sol":{"keccak256":"0x4fe4e9c11d863342fc19014de491ab28638fb9b5e7a0af143c86b0ab29fd3f84","urls":["bzz-raw://57d7b059a932a4a411e7a25f95b4d41e3370bfedcf878960c14134fc78ba6eaa","dweb:/ipfs/QmVmfUDyjfX4mLnU4HxkPg79ALfQwXXgfRrQsMCYbCGp7k"],"license":"MIT"},"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol":{"keccak256":"0xca832d2e9d5217bf68a595f88f386af4c93792e026d6a5e35c8120177c2d70bd","urls":["bzz-raw://d73175b5bfd13e163bb886a72e0cc5389ee234f2eb660590f4508376543455b3","dweb:/ipfs/QmeFFmoqzPJnc4m9kCzrFzR3GyT6ovF7CGKHC3GYGZSJze"],"license":"MIT"},"node_modules/@latticexyz/store/test/RevertSubscriber.sol":{"keccak256":"0x1df97686c247408971bc08a4b8d36ac804da3b14965eae34a1f192f65eb2e902","urls":["bzz-raw://6ff2fb2cf1b170d9de43fb6b530d9eba342a2a52720f5ca20d51abbf386c8d28","dweb:/ipfs/QmYhQL9ZKcusiadLG1binasmyh4vjnRWXchniBgJ9iiGXY"],"license":"MIT"},"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol":{"keccak256":"0x6621aa9749cc9027300face60473d447eef463c178a1480874b476f9a2da5b02","urls":["bzz-raw://c4f7c13f51e6c242c417d9a4bde8f7916071eea049172174f2feb46c1012e7e5","dweb:/ipfs/QmWTtcatFPRfGGmGb14XXqnUmqFd2iJib999Z6XAia2b6H"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0xc1b9fa9167dc3d39d5591d0b2d5f7c3c12ad6aeaa0a1b83b1e326ebd104de439","urls":["bzz-raw://ed0ff59e3240fc85509fc5a1bc9c158f2056bd4be82ba88100ed138afc08d60c","dweb:/ipfs/QmZScS3xhT8EMX4RrnVEqWm1VrGBG9JiA6aiZWtWMphF7q"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0xd049053827c730ad69585c1c7eb52b4fd9774370063aab461021a111ee0bc86a","urls":["bzz-raw://e5a05e41e45c0054e835565046276d830581ca181e7ff3d83b15c71b6e01af89","dweb:/ipfs/QmZYGFT621rS5fE2WXKX5wqBMENguMuY7DqaXPkZ2rcEfZ"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x8cb98a092891f05e855c9bc4705f0c6ad5d5c82be731afd3591c091ef91530a3","urls":["bzz-raw://66e589610bcf3a79d5a158a3ce6d4a894b96575826a16fd817bd80721625e3d6","dweb:/ipfs/QmTDFR47F5Cq82LRXMxBt6j8omobm9cZtmBBnWycBnmjPx"],"license":"MIT"},"node_modules/@latticexyz/world/src/ERC165Checker.sol":{"keccak256":"0x26204bcfddbc272eae391f4512a629f53697867d582ea8cabcd6a8e04a255270","urls":["bzz-raw://46944bac8253250ba3f645a6164df8e996738bc76a544867677e54ede57619a1","dweb:/ipfs/QmY1XSxQY9MuQSEvGaeQT6kqmeJ3VhYyRRTfzCkRmdsWsX"],"license":"MIT"},"node_modules/@latticexyz/world/src/IDelegationControl.sol":{"keccak256":"0x9f0dcc1cd281b51a5d3d8f75a55ce8cfb2577c88a9b6644ee144fe260c14e60e","urls":["bzz-raw://85d99d96c33512968e2c3ef68777bdf65305de0b01597e182750ce2c152e089d","dweb:/ipfs/QmZwB163CzPuHJGPW8LPL8pHsEdvkYmBuoEVbu3JqNSTkC"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0xe00be0c676fa14949ecc4324ae3e932834b0550e2fabbc813b5aa49cf0e2b695","urls":["bzz-raw://700a595ee72389add0e9aef8ae6c2cafc5336b0dc2c43e580ce4d9546ca0dee3","dweb:/ipfs/QmPfRtR5591tJPSvu9mz9J26qSwEjFm5FK8D99jA3qHZCe"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x6c11c44fef08d46ca9f291551a42b8576259f65b7e957aef92540ba0acd72909","urls":["bzz-raw://0ffbc3646ea495350939319f5418ba2dd45b6ec809d6b84ed3264e592a9385bd","dweb:/ipfs/QmPCjuQUMWVUPv7vSVfztnymYA9hUP1xRS62FD6iwzGMuo"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0xad31c270fe5bf23869fe4a55a9a8d3372871c595f6b0f9a197e810051ab1bfdc","urls":["bzz-raw://af7acd6a86410c6d2586739e370134265521cf522fec0c3091804c0d0f99a0fc","dweb:/ipfs/QmRRbUbw89Z3tva95UTvxKhFwn5ddYNMiHbVs6Nnmpsty3"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xd3645ee90c73dd991659a140c0132c5a2aaf27a296c457737b212d87b2f66402","urls":["bzz-raw://519d81e2bc7233b1488339eaf9220f7eb57086dd3ee8e1831708ebc6e87f00db","dweb:/ipfs/Qmf8RjMxuPXbteMeEB3vstjutsCrmveyBFCjVFt7nSYgtc"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0x149d3c2b4bbea21047fc8cf79236488764dd8dde6e440dbc37067a8ce8831bbd","urls":["bzz-raw://d2f340a5616cafd1d80e6ef79f1620102d3d64730c6aa19ecdbb4ca86aaa59b2","dweb:/ipfs/QmWoXP1BKj8U3ZXXoiTRENCxVaaCxrKAenwCZbCVbyfaZ7"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0xf15243b03fdc6e5222aefdaad74fffc909f9058f9d8d6ba06acb797197f74635","urls":["bzz-raw://c3f4ecb21499e677697dbe71002a5e96651fb0d8c279c4065e6441f13a9c75b3","dweb:/ipfs/QmZ7oEHWK85aetzt9uJ3bmJJKLZkK5PoaakxiEDq4xEEww"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xfdfdbdb1373ff83d8529865e21bbe796025861140a0a96c7183bcc6999ba63dd","urls":["bzz-raw://1c1d003f9a28bc9098cc669406f569905a7726fc17cb07a6a6027531aebe5020","dweb:/ipfs/QmPrEP9SRfKRouAQmVn6dq4MgguBPboMdMPg88WqBjsjgn"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x1d380574763b720a8950dc0a14d519c2532f9f27c8115116f0a6f7916c9606b3","urls":["bzz-raw://a395df820ee46be3dcdb36682183811a86cdc848dbd56ecc2a21785a42785cf9","dweb:/ipfs/QmeiuzuHjQuv4GHXXiRkBkxhyN7e9Vy19TYfAccnxWej91"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x9c3e1e5eb40d130e90726ca4bfabd748d190d076ecd95c668f038635f751cad2","urls":["bzz-raw://40ba8d4ea85cdac5b622117bf70f56466bfd8b3b693fbb4ab266630768f8865d","dweb:/ipfs/QmQ8ttFdCFJdw1thyDJHheoWNkdpQUM2u7kZzi4zj6mYh7"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemHook.sol":{"keccak256":"0xe960a82dbc824f1543d1113471040bb1c8d332508d9c362f6c433634dee86737","urls":["bzz-raw://c8f43c0e555a3e2bfc59376b5af61147c136d718eee871972888630445287da4","dweb:/ipfs/QmcxoLoyuqxFR32rb8CEL5TtsauqvFSFYUnuBmJt2Xrtk6"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x5f02e221a1f088b56d81894e210ccd97c097b8da2cdc677d073c2722f2a0564a","urls":["bzz-raw://02134a975fb146c5b37ce8472245982120b13000a8628b99395200458e3fd5ef","dweb:/ipfs/Qmd2Zq9LX1kkEE5UEA6oFWnSpBPTX9F9iU2Z74GHSaDwXX"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0x4b83d5791209b8f39773b07e5f162dfd0617f5f9b5b4bd371c087412e5ad01cf","urls":["bzz-raw://033a3777136e6d5c581efc8bf2535403abe44874409c85d17a353fae6dc56006","dweb:/ipfs/QmaXepBDVnmnMdVzuxbGT2qo5vqWnjB75KNCCdxRehrBMX"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0xf668eeaecd294a2b8b9e1a771161373af84abe42b8a9820cf9d3092a9a1e64bd","urls":["bzz-raw://01f2939361e51497304e66bdcd9cb33bfea95737fce41ca731f20d3b5dbd5f74","dweb:/ipfs/QmayLveLBSq8axMgbouD411V5BTiYXKbg9ddEpxjcMU4ez"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xea5256f37d5f373dc0d008b30a44f46f85d5aa4826c9c9702e3a62cafe4fc00d","urls":["bzz-raw://5f34c70731153f300c4d89b4ddcfd0b02834abf208fcd2ec5863fb1dc5bde74f","dweb:/ipfs/QmdmCzFDr6WmSQ23b2T3aaJhJ6Qvzhc9UaE5z33adciAd4"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xd9ead56302e6ce3f7958983f6652c2712df74ce83cd002248b235769bd5f87d4","urls":["bzz-raw://a925eab29746fdcff87662142f61565d64bfa108ee14a9a5d496413c150533c4","dweb:/ipfs/QmaFXKnfuMbkaZCEz3e2J3Nx49keqvmaGa7QLBvbj1ntYt"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0x7451726394ea4c39dcca268895499a7d908bd868092cf9b133772077ad5c6a6a","urls":["bzz-raw://c102f036a0ce081255c1088c75e823e5eb5dfdf36ade55d45a6c3914e2a4a5e5","dweb:/ipfs/QmUWEstc4kRhqvUc5sbPyCvy3kvH3hzmH1GrP8MjyQYy3v"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xd71d9a5a1ee5969cbfc548ddcd01814293d57b5c7f40df0a8ff926df43ec9d9b","urls":["bzz-raw://c6377994ebe168759b1f8ed17d4621720d66259c3ebff77acc2f7cc7dd9fec45","dweb:/ipfs/QmeNaatg7JTe6tLc2RbC28SLEQTJFddXy5xZHmqi9zQ9Jx"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0xba969b5b252d1eb26f22908e4581456a6791e02e693cb14f48de35feb31b56f4","urls":["bzz-raw://34fcc11f5a70bcb51ea1ca76587e7dea7dfb940f522c820988212573a9ca32b6","dweb:/ipfs/QmQSgQdJiXMVVSU5woFMC1mAGJBicBeoQUZ5UVX94UjJbX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IRegistrationSystem.sol":{"keccak256":"0x90d05ad5b6ce321f2d15d93cc6d126c0332afd161cebd008ea115a552bb0e772","urls":["bzz-raw://9a6bd7a337b1a8ca9ce2c853db9003352895697d43bdf8c49da850ee19990aa8","dweb:/ipfs/QmbvpN53672EQZMAfmDEC8bP6MRYUnAqLDRUmkkv6DMrAT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xfe79af16bea789b894c322b3796b7a5fd3042d2da0ea808768e1588bff53056c","urls":["bzz-raw://15a2c7d26d21773fa41dd3891553ad57520f0c401627da8f79c11751b0fca478","dweb:/ipfs/QmZYpNkSXqqz5tUeqNwppY7Q75ec9gGPv7BkjUJc87AZFE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x705f45c60cd9f5cf5ed2b92d73bef71f2c234ec281297dae79779860cfdf9e6f","urls":["bzz-raw://b927d760e5f09c72c421ad62ab8da11a38a2a47d321e6b023e3d7c2a4a46a458","dweb:/ipfs/QmXMDWhE5gVHURzFAL7cyA7EeFJRkykZRZwRV9qrTBj13Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x88a0bc28aa9ef62f524fd2592cc0aaaf3e33a8cb0c7674c6dba7f2115be551f8","urls":["bzz-raw://c64f10d7f97971fca0b7b2ab5b38f8d06d85d54b7b34d8ddc90da17264dae7dd","dweb:/ipfs/QmeMgiefFv9fvetswGBG3q2LzL1SJ6zNwBwupSgVpSmpDG"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xfcaedc1b1a23f7b2c40fbc5cc71d1781de18f0b1cfbc40a83876852659137d2b","urls":["bzz-raw://d8bad7219652c0f76a46107facc5fdcde7c1d3798d201499d87a7f584ac46db7","dweb:/ipfs/Qma1yhF31Q9wxDYjQ8eCYdjpLVXjC2VVHMCipUjPVrRVdF"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InitModuleAddress.sol":{"keccak256":"0x4d0a317051e00a64696a4f9a749f95953dda5ce6fc086b194f54276af1510395","urls":["bzz-raw://5e96a02aa8a528d9d18d741a5cac7c19200ee5739ec92d42faafbf64efeeeb69","dweb:/ipfs/QmXkeMC6EyH3b6px685Dgfd5uGnrkfBUAQ4n1S8bsicEWd"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x6d247eea47c3566ea8e71b39e662607509f7a2080eabddf83c9f6b0682d27edc","urls":["bzz-raw://ab03d2cf026d39902ec68c3665a6779053e82e0f60bccfe2810be4b43f05894e","dweb:/ipfs/Qmdzg8bmkWjN4mw9EfnHFqYHpTJACGm9YoYZDZhX1MMamY"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x05b07d7a06c7e801fb0c0143dde8fce02907d9940f2862b63dcf085d43e54fdf","urls":["bzz-raw://18eaa2e74e9db4d142a7743c6ab9bfa5e9ff5c3700c0db148840266c4ac8ad35","dweb:/ipfs/QmRiBMxuzDRTST9C4nu8jo6z2D44HYG6VEpKNyDPa6HMhS"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0x1bf6746d0154dc5464f394e5b3d8d66398a55eaff68f6e2c3f3f964d8daf39cd","urls":["bzz-raw://b902e62ea9758145aaa0677c04b764cf721ba103b8294191cdc4ba6c25f3ba9e","dweb:/ipfs/QmT3m18HiJd8BT1j5pWeXkGMQjqRCfKDiFvoBTBJ8ZKruv"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0x57b12c2ff2649db6dd7e2acacece0c5fbdcc0f0bff9b28c685c93d4372688568","urls":["bzz-raw://3a9c39f46cf1e43b13b4a94fad22fde80223f6b5e39c87ca5a8f5d76432d1a3c","dweb:/ipfs/QmNdEEiM7acceMy4ojy9oFKvba7Yjm3MXF1hpnRoWTaAsD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x65c5544ed57f2e01d6729339461496fa3db50dd843db6de163e6cca2b9b17c68","urls":["bzz-raw://9d8acc162ac647954ffcfd98f6083823713b10d8dc4a05defc18199e9929faf2","dweb:/ipfs/QmVEwCPrDFcQ84qbJyfm3dNEXuqMbUVVqi5DddmJUREriD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0x98b313c90edc060aed54e1728c5931e104914d485dfb0099099dc469773c6194","urls":["bzz-raw://595d820d40e7faceb413613f24d56e82d13e3e53dd86c69627f1c0f134b5705c","dweb:/ipfs/QmUosi7xfNsg5ehaPNZ7tpU3UxyBMbfQW1ESyqH8Bk73JU"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0xb9b4eada80dfde28cc334d7a8ede2a57b92f3b42f3501af693ba981ba38b8f21","urls":["bzz-raw://c6edf1eb4a0d1730b331eff58f3f26aa037fed7767b6d420a28b905134908bf7","dweb:/ipfs/QmXyZNb5SvwLJ7eG2mrFLDyC6Q2wKPGiHyeQQ21cQLujJR"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0x25c8832ec6db8bc83d0a3c274d8cb49f93bfc57e2b0125c739caf19c1a2c8a51","urls":["bzz-raw://a226cf322efa14384b1191263136af4792d5e6285a7ffa9030218a44ec97d571","dweb:/ipfs/QmYC19AoGU6v15mzTKq2oHWMKUeRnzxGEkKgHVEUcUKw91"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0xb8320f88ed5519a4fe2554ad94815ce328a50fef7719932375d6ce695265c2f5","urls":["bzz-raw://a8f5de30fbcc63e469e46ad4a4d4bcd7d8e4b4f2d31fcf62a04aca48d999af22","dweb:/ipfs/QmXw1jDQM2szfRY3tAGrRy6fEzte6yVFgebJAqCLMDHndV"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/InitModule.sol":{"keccak256":"0x2350a2a13cdf3e5420fa9881506936bf32442e4ddfc181c2d499d989e3cd34b6","urls":["bzz-raw://24ec25478a659cca0c9529366bc139b80d302b5ac201abcec67316cf01e1f3d2","dweb:/ipfs/QmegoDuhwLYsuoR1cXwEerUHkLUKyYC4C4TgZBNJXxAtik"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/LimitedCallContext.sol":{"keccak256":"0x95e23ed6d143242d8232f484f86c5ed14964d3b3b592a83ac8ad22239a9001aa","urls":["bzz-raw://2974121de686e47139d8adb6bdc7fd0854a56c745cc0497b8a8d88b55a3e77d6","dweb:/ipfs/QmcXGbZL3wnFdJA8cvj9NnQtrnmkj2co84u3CJphYMg2Lc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/RegistrationSystem.sol":{"keccak256":"0x10711eaec9cf4f8b64dea5d1956bc80a3bd3c20cf33163a37aefc93d7f9d0be9","urls":["bzz-raw://5129961b6452d3215fb3c1453da366e5b87cacb9373300879757d48b3c067e9c","dweb:/ipfs/QmRidqUXVZ5jKZes37RWv9MqTmigMUAL1mbMNyeUm1Q3f9"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/constants.sol":{"keccak256":"0xe7eb58bdb9ebaf16162db44d7b02d7e95f70ac46910c19649bb57b835f96dad9","urls":["bzz-raw://23227e603db835db6390e872d11569749c8c8f22de770aa775ab7c99f450a752","dweb:/ipfs/QmZkGgdNqbno253umMW8sCHC3QKd5WLjrQi7CbH74x36Z8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/AccessManagementSystem.sol":{"keccak256":"0xfe822e975fe2c517969c869cfbdf93a3b19ac592f1b8fc1506df406a06de7ad2","urls":["bzz-raw://dd871128dcdfe0d6e1e94e850697f5a3ba92cba7c73ddadfdcfdf662764685c8","dweb:/ipfs/QmakCjH7YD5onmsRXvz3uF8J2rYLyZuKp7Hnudb2ujmR2n"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BalanceTransferSystem.sol":{"keccak256":"0xd8e708ee700909e384843edde3d9838463829f5ef241935c7cf9a4369142d50b","urls":["bzz-raw://6ab83e7fe45851c2eb2e42a1710a3fb72afae67c081160d9b2cae781db8b0d9c","dweb:/ipfs/QmWCwbEVWLazh7y41pBFrMe66NW7bmWYJrkJSizvZLvSm8"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/BatchCallSystem.sol":{"keccak256":"0xcdcc115c3c0e23f385e4821beba4d3ec1c091d34edacc6b3ca7d0d53c5429ad7","urls":["bzz-raw://b63292fd9897da4068d6821b7e8fcc5a7da42b695501c8c3113816f271e89160","dweb:/ipfs/QmPfVA8VrydLvmWFDTWAthuH7wakGCRR9BL2i5UcBMaTqC"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xe00ff4886f017f75372be42ced66025a2d200d780198a89022bda32424927f93","urls":["bzz-raw://cb75902a76ab392bd46170a64ab575232ae172f47bc7ec095016fe2cf344a216","dweb:/ipfs/QmRJsK7ZtS4mm3JmXDW5uLaeCdBPShMVYmDmNjCKiv1k9z"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/StoreRegistrationSystem.sol":{"keccak256":"0x6de6e033845658f714e478982b9125bedb74d4db4e5794e647bc3c4fb6b5f84f","urls":["bzz-raw://4c22d4ee79114f3a59bc7da6bc74e9ca0412a5c0bd606ccf79b141064699d2a7","dweb:/ipfs/QmRuVPECJGZTw9k2PfAdDbbUUnptAF4e9VcqMkzhJ9mBBL"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xe4b91af36de3852dea10f354ee91b7e6c8a78a0f4c40f72b94bdca411599ca6e","urls":["bzz-raw://fd5e616104f0eb8c261f55901579b09871e91784995e3cb1055ac575995f7535","dweb:/ipfs/QmYinJme183sz4QXH642734s62U8YkGWZ5fNPPfC6GzJmw"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/init/types.sol":{"keccak256":"0x1876630a009a39e1a771e5d05d420731b85523b4fe091ce04a72f6f283f5e9b3","urls":["bzz-raw://1166a3d9f7db80d2e041def918fa54baa0f4d51edb35731a8b2bf6ee76810411","dweb:/ipfs/Qmf5VmgLsWJy3Tea5JM9mzCKJ49NJC1fRcgWGVFruusBgJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x95e9469529f790727966c513ed19b42abf065a2cd482faba4b8e3404edfb8730","urls":["bzz-raw://da63bf514679a87134d2c36563c9c398906e1e06b27cb17eed10895cd7c87658","dweb:/ipfs/QmUrfkw8YTs6zUq5eaWPgdLmTUJVsp1CRBGQz6kdh7bs3C"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireNamespace.sol":{"keccak256":"0x3a98f80c6438d8670281c5ef1ecfc7ddc9c7c0d09fa66d54dda4fa812c89baa1","urls":["bzz-raw://fb7093a4816d52af381d8959601046a1d307fb32b11dfb787813144eb01ca9c6","dweb:/ipfs/QmUj9hw39TNTtamhWvYAe647CYvNuTfxwsYSu2H4QmHfPi"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireValidNamespace.sol":{"keccak256":"0x75f4a72a942bd59d237e6a1329da8f9a582b8d3d94ffeeb2ee4d7cfe992881bc","urls":["bzz-raw://5d6d3c0bb90663d8d411ef056faf0a126727fdeba806efea4403815943b94027","dweb:/ipfs/QmXrAEDnRrqj3137fXPc91jyDMHFZHHJ39NmMUEh1y2AgL"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x0e18f180961360de71b9374363cf31bf97e489fc895ff900946b515eeb7ecb3a","urls":["bzz-raw://e85a5e2c0e79ef39a6e367b3b653d475f702fb8f4e14f5817ca3091480e21eb8","dweb:/ipfs/QmeoYVTLo3LncJRD3mqc5bMSHY3Rc9N3yveu6pH2uRVCGW"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xf312c694828e49cd263d1df8ba82beb0376ce8dce1337f9e62ec52e3ed36a145","urls":["bzz-raw://2b060c176e46fa6e55d2f525d1f1c64e3c371e6bf24b6d0ff05ae20b3c0c0c0d","dweb:/ipfs/QmdLfnBQrYnLq1iwjX9UyzpDqe6EyJ21T56ZWUVJr1VQCy"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x940fa33f2a4986bda788f9418fe4e51ae206a6e4954721443cec11ebf2e700be","urls":["bzz-raw://3aacb56ffa02e40a60b9343aae4fe7c0d9623b74c6ee70b9a42f8428e64e4d4e","dweb:/ipfs/QmNXwHcUzNEvqjaSTdooSV3hhCkGadpT9peQAmhLaQTj2k"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0x3478328afa3363bcb25271cdcd4c23355f53be785ae0aab5159490122831b8ed","urls":["bzz-raw://5192c5d7dbe1e5521fc9af4830c991be7209652080c507ee6860cc3746dce96d","dweb:/ipfs/Qmbf6ge8pEwaGhjei7MKFCNk9UbCb55AvUadbbeqyNKJ12"],"license":"MIT"},"node_modules/@latticexyz/world/test/DelegationControlMock.sol":{"keccak256":"0x6b082653824a9c242d9e92a006f4cdf46642f0645f943c0a3ae81d91304d9a3e","urls":["bzz-raw://c5d20696e8c46f889f6227421a8c6e4db80c449ac8f27a2d72b56308e3b3f81d","dweb:/ipfs/QmNbv54H6gC5ymKkJeJNtwRVZZVGEVymdNLJz6wCgJ9spf"],"license":"MIT"},"node_modules/@latticexyz/world/test/World.t.sol":{"keccak256":"0x9741435a6d4b2ab65cb16b0ff1e46179012d51f33ec292188224f243c5918414","urls":["bzz-raw://002db4ebf5ee5f69626d5905e22b192c41f8723774e3e7385d00ec7c3102d891","dweb:/ipfs/QmbRRJpeWo528Nve5FyHE2jcCSjrgg1juTgnZFB55GyPk9"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol":{"keccak256":"0x6a980c5814c0b4f581ac686a9957a4ee4aeebf944fbb7f3bcd747aa46e6711f6","urls":["bzz-raw://75ca863d25e983ca61e718d22fa1118c41bb82237fe8c7ef715378a84da8f239","dweb:/ipfs/QmWEELBroj9fSPvkpT8DJ6JeeYSNcAqTyTsv37pqrArQfc"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol":{"keccak256":"0xfacef9348a1b8a406863449a5575ca653d9ee4c3b145349864c987fa7134de8c","urls":["bzz-raw://434dd592d088cc53df20ac637bd46d49facd071c661a68727e99a0ee4151eeaf","dweb:/ipfs/QmaSLkwAAnWVwZzp4FntXo4N2qgxXtLNVeFU4fewTQ3wZe"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol":{"keccak256":"0x3bb0aed7826ecbd8083d2694422c16922dcb5c0460ec5c6e26f2f8c091071136","urls":["bzz-raw://99bd053f250292932423222426fb129931a7192d5b2cb294044098a23f0e7603","dweb:/ipfs/QmduMJzo59L6biSEestyzzHUVEzj3cohA14rDNuMWr8ehX"],"license":"MIT"},"node_modules/@latticexyz/world/test/createInitModule.sol":{"keccak256":"0x33c10482c6b5ef633dcf13d189c5e2784c46a9546fe77e3ca1817319cf88c383","urls":["bzz-raw://d6b34b376720cde9198eaf0580ae627d0b6cb1288dcc3c1d25f239f91a57ebdc","dweb:/ipfs/QmSYrvgzwd5tmwRta3DAEhokbXAyEX9ZGwpM44S1X2S6Wa"],"license":"MIT"},"node_modules/@latticexyz/world/test/createWorld.sol":{"keccak256":"0x59bb3ecd3c665237a7f2a21220c8526bcf3b12475af458bea0ad7d7403e31196","urls":["bzz-raw://4c7ba0904844102cf553f2986f910ba9c143c7a38aa6ce27280a13e68a058ee4","dweb:/ipfs/QmYFgCZt9CDaoAeqjLy8LbujQntZLB58mbdLECEnV5Uq8f"],"license":"MIT"},"node_modules/ds-test/src/test.sol":{"keccak256":"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b","urls":["bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240","dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k"],"license":"GPL-3.0-or-later"},"node_modules/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"node_modules/forge-std/src/StdAssertions.sol":{"keccak256":"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60","urls":["bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b","dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL"],"license":"MIT"},"node_modules/forge-std/src/StdChains.sol":{"keccak256":"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6","urls":["bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d","dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx"],"license":"MIT"},"node_modules/forge-std/src/StdCheats.sol":{"keccak256":"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5","urls":["bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a","dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe"],"license":"MIT"},"node_modules/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"node_modules/forge-std/src/StdInvariant.sol":{"keccak256":"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1","urls":["bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c","dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss"],"license":"MIT"},"node_modules/forge-std/src/StdJson.sol":{"keccak256":"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b","urls":["bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c","dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV"],"license":"MIT"},"node_modules/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"node_modules/forge-std/src/StdStorage.sol":{"keccak256":"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d","urls":["bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26","dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9"],"license":"MIT"},"node_modules/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"node_modules/forge-std/src/StdUtils.sol":{"keccak256":"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1","urls":["bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140","dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi"],"license":"MIT"},"node_modules/forge-std/src/Test.sol":{"keccak256":"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24","urls":["bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb","dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x"],"license":"MIT"},"node_modules/forge-std/src/Vm.sol":{"keccak256":"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5","urls":["bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c","dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw"],"license":"MIT"},"node_modules/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"node_modules/forge-std/src/console2.sol":{"keccak256":"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea","urls":["bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973","dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF"],"license":"MIT"},"node_modules/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"node_modules/forge-std/src/safeconsole.sol":{"keccak256":"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381","urls":["bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae","dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq"],"license":"MIT"},"src/modules/std-delegations/CallboundDelegationControl.sol":{"keccak256":"0xef94f8999af4cc9d46f5df8a333f67fb2f0cc57aeb4b4189d3acc75bf9a74202","urls":["bzz-raw://0e32389011e7dfb3c3cd33a1cbd3ac3c8fbae44ea001c0128ca0d4b001873e44","dweb:/ipfs/QmWtjY6NRo2yGVBpaLLAThBXKynjW9iVk1CK9VAUMcRCTF"],"license":"MIT"},"src/modules/std-delegations/StandardDelegationsModule.sol":{"keccak256":"0x3d855ab89664ed36348ff44d9c759386480b25fe6a3d2fea41b8e6a8f2e19d75","urls":["bzz-raw://1cc1d721e0002d72e4771df0dca6304a0878cdfdca9abca3805f6f1a7e73bc67","dweb:/ipfs/QmScrcj9TKVwKLVrXSzZuyV7aYjMaL74uPHuy2KGM5FBBK"],"license":"MIT"},"src/modules/std-delegations/SystemboundDelegationControl.sol":{"keccak256":"0xf81b8346d6ae5d5ffb542959a176d5a9130942f05c55541987f1d7ad8e52a7ad","urls":["bzz-raw://500862baf96750c5a13851b6bc0a2ddf9752a213d2a5a4f21101121302ee1815","dweb:/ipfs/QmRieZCuYbkSTE7wjXwTgxyk1NhpTgLk1A8CfYweciFiMq"],"license":"MIT"},"src/modules/std-delegations/TimeboundDelegationControl.sol":{"keccak256":"0x9cace876fa9b6fa32c5e1ca2cd8e7f520f7b17fa3dadf1185ad72577ee704093","urls":["bzz-raw://3f67c4e6213d9bdfc32f920c5db69e2c24baea1e1ef6d17b5916b4fb389f84eb","dweb:/ipfs/QmYkdj5DMYkRKbFfTnSsXoKu2ha2faZ7F8E3zUkxRo5ccb"],"license":"MIT"},"src/modules/std-delegations/constants.sol":{"keccak256":"0xd8aa71d55cee3e37793462d59976d2b796416252951259f199fa398999f2d89d","urls":["bzz-raw://d3f35c9525137bb442c6b24b7f540fa5e7e42b23bd58e0eb3dbedc020601a33b","dweb:/ipfs/QmbrgMKejR7GogXP3rrhLuEijyigJWqh3qtvuhh4sd5LxC"],"license":"MIT"},"src/modules/std-delegations/tables/CallboundDelegations.sol":{"keccak256":"0xff415bd15a84962a2e56a0768b554f3afca9a1e53539f2d34255e7cfa2e7fa22","urls":["bzz-raw://3a1fdadc45e7950047ae325a98345ea821e97eb52500934a026fd3ae8ea83a1f","dweb:/ipfs/QmWxjjvpSpkU2zJu4Z5HFYjwXnZATDWeJEwQeE43LxtZSb"],"license":"MIT"},"src/modules/std-delegations/tables/SystemboundDelegations.sol":{"keccak256":"0xf4b5beed9f89b55c448245a14bccae045705036e83229964162617ec610e8529","urls":["bzz-raw://56d22e0cae215d83dffd1a355910c66cb291bf0ac8efc4af19174c678fe4b643","dweb:/ipfs/QmSUdSn7sMN1gutnEwkcffkfGq4iurL3R9g3FzbUNiaXZg"],"license":"MIT"},"src/modules/std-delegations/tables/TimeboundDelegations.sol":{"keccak256":"0xe7136185cac83d57113c5500a7ec74d523357d24623c493fe8c6ec9c00d61d3e","urls":["bzz-raw://deffe13dd00f4c6b021d94d67209eb8f303e3fe496cfd85e6da1cef171b05cc6","dweb:/ipfs/QmaJ3iV1nFcojWJF6Wxe4BBhf7AHpe6EesBjFLTsHvnTZh"],"license":"MIT"},"test/StandardDelegationsModule.t.sol":{"keccak256":"0xb51afee0612d498008512b121e4eb736b111a7be9224a4f87d818766be9db22a","urls":["bzz-raw://85a2fbb796d5032d56c7b23c06e6ff0ab9213b88f2363c56ad17503b66c7b812","dweb:/ipfs/QmTyXatF4QS62QL8FwzoL68eimVDkNdkgPqhuAA8EVk4NN"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/StandardDelegationsModule.t.sol","id":136152,"exportedSymbols":{"CALLBOUND_DELEGATION":[122288],"CallboundDelegationControl":[121939],"GasReporter":[226],"IBaseWorld":[24554],"IDelegationControl":[22347],"IWorldErrors":[22547],"RESOURCE_SYSTEM":[38079],"ResourceId":[2782],"SYSTEMBOUND_DELEGATION":[122306],"StandardDelegationsModule":[122109],"StandardDelegationsModuleTest":[136151],"System":[22727],"SystemboundDelegationControl":[122205],"Systems":[34474],"TIMEBOUND_DELEGATION":[122324],"Test":[60480],"TimeboundDelegationControl":[122262],"World":[23867],"WorldResourceIdInstance":[24417],"WorldResourceIdLib":[24290],"WorldTestSystem":[38479],"WorldTestSystemReturn":[38275],"createWorld":[48581]},"nodeType":"SourceUnit","src":"32:7399:203","nodes":[{"id":135558,"nodeType":"PragmaDirective","src":"32:25:203","nodes":[],"literals":["solidity",">=","0.8",".24"]},{"id":135560,"nodeType":"ImportDirective","src":"59:42:203","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":60481,"symbolAliases":[{"foreign":{"id":135559,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60480,"src":"68:4:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135562,"nodeType":"ImportDirective","src":"102:73:203","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":135561,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135564,"nodeType":"ImportDirective","src":"177:56:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":23868,"symbolAliases":[{"foreign":{"id":135563,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23867,"src":"186:5:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135568,"nodeType":"ImportDirective","src":"234:116:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":24418,"symbolAliases":[{"foreign":{"id":135565,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"243:10:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135566,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24290,"src":"255:18:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135567,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24417,"src":"275:23:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135570,"nodeType":"ImportDirective","src":"351:58:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":22728,"symbolAliases":[{"foreign":{"id":135569,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22727,"src":"360:6:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135572,"nodeType":"ImportDirective","src":"410:79:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":38086,"symbolAliases":[{"foreign":{"id":135571,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38079,"src":"419:15:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135574,"nodeType":"ImportDirective","src":"491:85:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":24555,"symbolAliases":[{"foreign":{"id":135573,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24554,"src":"500:10:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135576,"nodeType":"ImportDirective","src":"577:70:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IWorldErrors.sol","file":"@latticexyz/world/src/IWorldErrors.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":22548,"symbolAliases":[{"foreign":{"id":135575,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"586:12:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135578,"nodeType":"ImportDirective","src":"648:82:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IDelegationControl.sol","file":"@latticexyz/world/src/IDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":22348,"symbolAliases":[{"foreign":{"id":135577,"name":"IDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22347,"src":"657:18:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135580,"nodeType":"ImportDirective","src":"732:69:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createWorld.sol","file":"@latticexyz/world/test/createWorld.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":48582,"symbolAliases":[{"foreign":{"id":135579,"name":"createWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48581,"src":"741:11:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135582,"nodeType":"ImportDirective","src":"802:75:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol","file":"@latticexyz/world/src/codegen/tables/Systems.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":34485,"symbolAliases":[{"foreign":{"id":135581,"name":"Systems","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":34474,"src":"811:7:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135584,"nodeType":"ImportDirective","src":"879:105:203","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":122110,"symbolAliases":[{"foreign":{"id":135583,"name":"StandardDelegationsModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122109,"src":"888:25:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135586,"nodeType":"ImportDirective","src":"985:107:203","nodes":[],"absolutePath":"src/modules/std-delegations/CallboundDelegationControl.sol","file":"../src/modules/std-delegations/CallboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":121940,"symbolAliases":[{"foreign":{"id":135585,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121939,"src":"994:26:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135588,"nodeType":"ImportDirective","src":"1093:111:203","nodes":[],"absolutePath":"src/modules/std-delegations/SystemboundDelegationControl.sol","file":"../src/modules/std-delegations/SystemboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":122206,"symbolAliases":[{"foreign":{"id":135587,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122205,"src":"1102:28:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135590,"nodeType":"ImportDirective","src":"1205:107:203","nodes":[],"absolutePath":"src/modules/std-delegations/TimeboundDelegationControl.sol","file":"../src/modules/std-delegations/TimeboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":122263,"symbolAliases":[{"foreign":{"id":135589,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122262,"src":"1214:26:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135594,"nodeType":"ImportDirective","src":"1313:146:203","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":122110,"symbolAliases":[{"foreign":{"id":135591,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122288,"src":"1322:20:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135592,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122306,"src":"1344:22:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135593,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122324,"src":"1368:20:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":135597,"nodeType":"ImportDirective","src":"1461:92:203","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/World.t.sol","file":"@latticexyz/world/test/World.t.sol","nameLocation":"-1:-1:-1","scope":136152,"sourceUnit":45183,"symbolAliases":[{"foreign":{"id":135595,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"1470:15:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":135596,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38275,"src":"1487:21:203","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":136151,"nodeType":"ContractDefinition","src":"1555:5875:203","nodes":[{"id":135605,"nodeType":"UsingForDirective","src":"1619:45:203","nodes":[],"global":false,"libraryName":{"id":135602,"name":"WorldResourceIdInstance","nameLocations":["1625:23:203"],"nodeType":"IdentifierPath","referencedDeclaration":24417,"src":"1625:23:203"},"typeName":{"id":135604,"nodeType":"UserDefinedTypeName","pathNode":{"id":135603,"name":"ResourceId","nameLocations":["1653:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1653:10:203"},"referencedDeclaration":2782,"src":"1653:10:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":135608,"nodeType":"VariableDeclaration","src":"1667:24:203","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1686:5:203","scope":136151,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"},"typeName":{"id":135607,"nodeType":"UserDefinedTypeName","pathNode":{"id":135606,"name":"IBaseWorld","nameLocations":["1667:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":24554,"src":"1667:10:203"},"referencedDeclaration":24554,"src":"1667:10:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"visibility":"private"},{"id":135617,"nodeType":"VariableDeclaration","src":"1695:132:203","nodes":[],"constant":false,"mutability":"mutable","name":"systemId","nameLocation":"1714:8:203","scope":136151,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":135610,"nodeType":"UserDefinedTypeName","pathNode":{"id":135609,"name":"ResourceId","nameLocations":["1695:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1695:10:203"},"referencedDeclaration":2782,"src":"1695:10:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"value":{"arguments":[{"id":135613,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38079,"src":"1765:15:203","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":135614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1793:11:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"7465737453797374656d","id":135615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1812:12:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_8d96422d2b097e05a277285f0fc83c2e15de737c7943b8faa9a1568e10dd25b0","typeString":"literal_string \"testSystem\""},"value":"testSystem"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},{"typeIdentifier":"t_stringliteral_8d96422d2b097e05a277285f0fc83c2e15de737c7943b8faa9a1568e10dd25b0","typeString":"literal_string \"testSystem\""}],"expression":{"id":135611,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24290,"src":"1729:18:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24290_$","typeString":"type(library WorldResourceIdLib)"}},"id":135612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1748:6:203","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24218,"src":"1729:25:203","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":135616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1757:6:203","1782:9:203","1806:4:203"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"1729:98:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"private"},{"id":135623,"nodeType":"VariableDeclaration","src":"1831:38:203","nodes":[],"constant":false,"mutability":"mutable","name":"delegator","nameLocation":"1847:9:203","scope":136151,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135618,"name":"address","nodeType":"ElementaryTypeName","src":"1831:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"31","id":135621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1867:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":135620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1859:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135619,"name":"address","nodeType":"ElementaryTypeName","src":"1859:7:203","typeDescriptions":{}}},"id":135622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1859:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":135629,"nodeType":"VariableDeclaration","src":"1873:38:203","nodes":[],"constant":false,"mutability":"mutable","name":"delegatee","nameLocation":"1889:9:203","scope":136151,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135624,"name":"address","nodeType":"ElementaryTypeName","src":"1873:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"32","id":135627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1909:1:203","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":135626,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1901:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135625,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:203","typeDescriptions":{}}},"id":135628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1901:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":135675,"nodeType":"FunctionDefinition","src":"1916:320:203","nodes":[],"body":{"id":135674,"nodeType":"Block","src":"1940:296:203","nodes":[],"statements":[{"expression":{"id":135635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135632,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"1946:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":135633,"name":"createWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48581,"src":"1954:11:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_IBaseWorld_$24554_$","typeString":"function () returns (contract IBaseWorld)"}},"id":135634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:13:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"src":"1946:21:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135636,"nodeType":"ExpressionStatement","src":"1946:21:203"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":135642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1997:29:203","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_StandardDelegationsModule_$122109_$","typeString":"function () returns (contract StandardDelegationsModule)"},"typeName":{"id":135641,"nodeType":"UserDefinedTypeName","pathNode":{"id":135640,"name":"StandardDelegationsModule","nameLocations":["2001:25:203"],"nodeType":"IdentifierPath","referencedDeclaration":122109,"src":"2001:25:203"},"referencedDeclaration":122109,"src":"2001:25:203","typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$122109","typeString":"contract StandardDelegationsModule"}}},"id":135643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1997:31:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$122109","typeString":"contract StandardDelegationsModule"}},{"arguments":[{"hexValue":"30","id":135646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2040:1:203","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2030:9:203","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":135644,"name":"bytes","nodeType":"ElementaryTypeName","src":"2034:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":135647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2030:12:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardDelegationsModule_$122109","typeString":"contract StandardDelegationsModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135637,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"1973:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1979:17:203","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22565,"src":"1973:23:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22390_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":135648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1973:70:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135649,"nodeType":"ExpressionStatement","src":"1973:70:203"},{"assignments":[135652],"declarations":[{"constant":false,"id":135652,"mutability":"mutable","name":"system","nameLocation":"2095:6:203","nodeType":"VariableDeclaration","scope":135674,"src":"2079:22:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"},"typeName":{"id":135651,"nodeType":"UserDefinedTypeName","pathNode":{"id":135650,"name":"WorldTestSystem","nameLocations":["2079:15:203"],"nodeType":"IdentifierPath","referencedDeclaration":38479,"src":"2079:15:203"},"referencedDeclaration":38479,"src":"2079:15:203","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}},"visibility":"internal"}],"id":135657,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":135655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2104:19:203","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_WorldTestSystem_$38479_$","typeString":"function () returns (contract WorldTestSystem)"},"typeName":{"id":135654,"nodeType":"UserDefinedTypeName","pathNode":{"id":135653,"name":"WorldTestSystem","nameLocations":["2108:15:203"],"nodeType":"IdentifierPath","referencedDeclaration":38479,"src":"2108:15:203"},"referencedDeclaration":38479,"src":"2108:15:203","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}}},"id":135656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2104:21:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}},"nodeType":"VariableDeclarationStatement","src":"2079:46:203"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":135661,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"2155:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":135662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2164:14:203","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24336,"src":"2155:23:203","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ResourceId_$2782_$returns$_t_userDefinedValueType$_ResourceId_$2782_$attached_to$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (ResourceId) pure returns (ResourceId)"}},"id":135663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2155:25:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":135658,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"2131:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2137:17:203","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24614,"src":"2131:23:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":135664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2131:50:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135665,"nodeType":"ExpressionStatement","src":"2131:50:203"},{"expression":{"arguments":[{"id":135669,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"2208:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":135670,"name":"system","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135652,"src":"2218:6:203","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"}},{"hexValue":"74727565","id":135671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2226:4:203","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_WorldTestSystem_$38479","typeString":"contract WorldTestSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":135666,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"2187:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2193:14:203","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24645,"src":"2187:20:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_System_$22727_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract System,bool) external"}},"id":135672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2187:44:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135673,"nodeType":"ExpressionStatement","src":"2187:44:203"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1925:5:203","parameters":{"id":135630,"nodeType":"ParameterList","parameters":[],"src":"1930:2:203"},"returnParameters":{"id":135631,"nodeType":"ParameterList","parameters":[],"src":"1940:0:203"},"scope":136151,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135788,"nodeType":"FunctionDefinition","src":"2240:1231:203","nodes":[],"body":{"id":135787,"nodeType":"Block","src":"2290:1181:203","nodes":[],"statements":[{"expression":{"arguments":[{"id":135681,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"2394:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135678,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"2385:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2388:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"2385:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2385:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135683,"nodeType":"ExpressionStatement","src":"2385:19:203"},{"expression":{"arguments":[{"hexValue":"726567697374657220612063616c6c626f756e642064656c65676174696f6e","id":135685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2425:33:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_f6260935f8df4ca5d4db1fdcb0f11e6b7e615bb106d1f9b366f1b807fcba509d","typeString":"literal_string \"register a callbound delegation\""},"value":"register a callbound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f6260935f8df4ca5d4db1fdcb0f11e6b7e615bb106d1f9b366f1b807fcba509d","typeString":"literal_string \"register a callbound delegation\""}],"id":135684,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2410:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2410:49:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135687,"nodeType":"ExpressionStatement","src":"2410:49:203"},{"expression":{"arguments":[{"id":135691,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"2497:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135692,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122288,"src":"2514:20:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135695,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121939,"src":"2566:26:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallboundDelegationControl_$121939_$","typeString":"type(contract CallboundDelegationControl)"}},"id":135696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2593:14:203","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":121938,"src":"2566:41:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function CallboundDelegationControl.initDelegation(address,ResourceId,bytes memory,uint256)"}},{"components":[{"id":135697,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"2618:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135698,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"2629:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135701,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"2654:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2670:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"2654:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135703,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2681:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135699,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2639:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135700,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2643:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"2639:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"31","id":135705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2686:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":135706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2617:71:203","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_rational_1_by_1_$","typeString":"tuple(address,ResourceId,bytes memory,int_const 1)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function CallboundDelegationControl.initDelegation(address,ResourceId,bytes memory,uint256)"},{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$_t_rational_1_by_1_$","typeString":"tuple(address,ResourceId,bytes memory,int_const 1)"}],"expression":{"id":135693,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2542:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2546:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"2542:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2542:154:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135688,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"2465:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2471:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"2465:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":135708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2465:237:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135709,"nodeType":"ExpressionStatement","src":"2465:237:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135710,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2708:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2708:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135712,"nodeType":"ExpressionStatement","src":"2708:14:203"},{"expression":{"arguments":[{"id":135716,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"2805:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135713,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"2796:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2799:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"2796:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2796:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135718,"nodeType":"ExpressionStatement","src":"2796:19:203"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e","id":135720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2836:42:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c8886cd270f067a21390dbb98d4b26fa947f2a083c84eb610dfa8977f643ec8","typeString":"literal_string \"call a system via a callbound delegation\""},"value":"call a system via a callbound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2c8886cd270f067a21390dbb98d4b26fa947f2a083c84eb610dfa8977f643ec8","typeString":"literal_string \"call a system via a callbound delegation\""}],"id":135719,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2821:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2821:58:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135722,"nodeType":"ExpressionStatement","src":"2821:58:203"},{"assignments":[135724],"declarations":[{"constant":false,"id":135724,"mutability":"mutable","name":"returnData","nameLocation":"2898:10:203","nodeType":"VariableDeclaration","scope":135787,"src":"2885:23:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135723,"name":"bytes","nodeType":"ElementaryTypeName","src":"2885:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135736,"initialValue":{"arguments":[{"id":135727,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"2926:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135728,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"2937:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135731,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"2962:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2978:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"2962:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135733,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2989:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135729,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2947:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2951:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"2947:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2947:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135725,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"2911:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2917:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"2911:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2911:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2885:108:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135737,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2999:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2999:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135739,"nodeType":"ExpressionStatement","src":"2999:14:203"},{"assignments":[135741],"declarations":[{"constant":false,"id":135741,"mutability":"mutable","name":"returnedAddress","nameLocation":"3027:15:203","nodeType":"VariableDeclaration","scope":135787,"src":"3019:23:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135740,"name":"address","nodeType":"ElementaryTypeName","src":"3019:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135749,"initialValue":{"arguments":[{"id":135744,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135724,"src":"3056:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3069:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135745,"name":"address","nodeType":"ElementaryTypeName","src":"3069:7:203","typeDescriptions":{}}}],"id":135747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3068:9:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135742,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3045:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3049:6:203","memberName":"decode","nodeType":"MemberAccess","src":"3045:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3045:33:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"3019:59:203"},{"expression":{"arguments":[{"id":135751,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135741,"src":"3160:15:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135752,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"3177:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135750,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"3151:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3151:36:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135754,"nodeType":"ExpressionStatement","src":"3151:36:203"},{"expression":{"arguments":[{"id":135758,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"3253:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135755,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3244:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3247:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"3244:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135760,"nodeType":"ExpressionStatement","src":"3244:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":135766,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"3308:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":135767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3321:24:203","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22514,"src":"3308:37:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":135768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3346:8:203","memberName":"selector","nodeType":"MemberAccess","src":"3308:46:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":135769,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"3356:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135770,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"3367:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135764,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3285:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3289:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3285:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:92:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135761,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3269:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3272:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"3269:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":135772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3269:109:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135773,"nodeType":"ExpressionStatement","src":"3269:109:203"},{"expression":{"arguments":[{"id":135777,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"3399:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135778,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"3410:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135781,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"3435:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3451:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"3435:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135783,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3462:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135779,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3420:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3424:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"3420:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3420:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135774,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"3384:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3390:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"3384:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3384:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":135786,"nodeType":"ExpressionStatement","src":"3384:82:203"}]},"functionSelector":"e187dc8f","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromCallboundDelegation","nameLocation":"2249:31:203","parameters":{"id":135676,"nodeType":"ParameterList","parameters":[],"src":"2280:2:203"},"returnParameters":{"id":135677,"nodeType":"ParameterList","parameters":[],"src":"2290:0:203"},"scope":136151,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":135935,"nodeType":"FunctionDefinition","src":"3475:1592:203","nodes":[],"body":{"id":135934,"nodeType":"Block","src":"3522:1545:203","nodes":[],"statements":[{"expression":{"arguments":[{"id":135794,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"3628:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135791,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3619:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3622:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"3619:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3619:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135796,"nodeType":"ExpressionStatement","src":"3619:19:203"},{"expression":{"arguments":[{"hexValue":"726567697374657220612073797374656d626f756e642064656c65676174696f6e","id":135798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3659:35:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_21df7fcd4cd4c86bbb9480ea7a308ceed3582004c5112b61c86ca150ef4797f8","typeString":"literal_string \"register a systembound delegation\""},"value":"register a systembound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_21df7fcd4cd4c86bbb9480ea7a308ceed3582004c5112b61c86ca150ef4797f8","typeString":"literal_string \"register a systembound delegation\""}],"id":135797,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3644:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3644:51:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135800,"nodeType":"ExpressionStatement","src":"3644:51:203"},{"expression":{"arguments":[{"id":135804,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"3733:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135805,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122306,"src":"3750:22:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135808,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122205,"src":"3795:28:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemboundDelegationControl_$122205_$","typeString":"type(contract SystemboundDelegationControl)"}},"id":135809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3824:14:203","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":122204,"src":"3795:43:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function SystemboundDelegationControl.initDelegation(address,ResourceId,uint256)"}},{"components":[{"id":135810,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"3841:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135811,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"3852:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"32","id":135812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3862:1:203","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":135813,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3840:24:203","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_rational_2_by_1_$","typeString":"tuple(address,ResourceId,int_const 2)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function SystemboundDelegationControl.initDelegation(address,ResourceId,uint256)"},{"typeIdentifier":"t_tuple$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_rational_2_by_1_$","typeString":"tuple(address,ResourceId,int_const 2)"}],"expression":{"id":135806,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3780:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3784:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"3780:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3780:85:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135801,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"3701:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3707:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"3701:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":135815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3701:170:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135816,"nodeType":"ExpressionStatement","src":"3701:170:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135817,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3877:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3877:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135819,"nodeType":"ExpressionStatement","src":"3877:14:203"},{"expression":{"arguments":[{"id":135823,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"3974:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135820,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"3965:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3968:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"3965:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3965:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135825,"nodeType":"ExpressionStatement","src":"3965:19:203"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6e","id":135827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4005:44:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_f40209918385b29b5009bd87849d768acbbb7f73f1ba1c7b889be488acf74997","typeString":"literal_string \"call a system via a systembound delegation\""},"value":"call a system via a systembound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f40209918385b29b5009bd87849d768acbbb7f73f1ba1c7b889be488acf74997","typeString":"literal_string \"call a system via a systembound delegation\""}],"id":135826,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3990:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3990:60:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135829,"nodeType":"ExpressionStatement","src":"3990:60:203"},{"assignments":[135831],"declarations":[{"constant":false,"id":135831,"mutability":"mutable","name":"returnData","nameLocation":"4069:10:203","nodeType":"VariableDeclaration","scope":135934,"src":"4056:23:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135830,"name":"bytes","nodeType":"ElementaryTypeName","src":"4056:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135843,"initialValue":{"arguments":[{"id":135834,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"4097:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135835,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"4108:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135838,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"4133:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4149:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"4133:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4160:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135836,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4118:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4122:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"4118:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4118:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135832,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"4082:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4088:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"4082:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4082:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4056:108:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135844,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4170:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4170:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135846,"nodeType":"ExpressionStatement","src":"4170:14:203"},{"assignments":[135848],"declarations":[{"constant":false,"id":135848,"mutability":"mutable","name":"returnedAddress","nameLocation":"4198:15:203","nodeType":"VariableDeclaration","scope":135934,"src":"4190:23:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":135847,"name":"address","nodeType":"ElementaryTypeName","src":"4190:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":135856,"initialValue":{"arguments":[{"id":135851,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135831,"src":"4227:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4240:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":135852,"name":"address","nodeType":"ElementaryTypeName","src":"4240:7:203","typeDescriptions":{}}}],"id":135854,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4239:9:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":135849,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4216:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4220:6:203","memberName":"decode","nodeType":"MemberAccess","src":"4216:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4216:33:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"4190:59:203"},{"expression":{"arguments":[{"id":135858,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135848,"src":"4331:15:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135859,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"4348:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135857,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"4322:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4322:36:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135861,"nodeType":"ExpressionStatement","src":"4322:36:203"},{"expression":{"arguments":[{"id":135865,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"4453:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135862,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"4444:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4447:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"4444:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4444:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135867,"nodeType":"ExpressionStatement","src":"4444:19:203"},{"expression":{"id":135884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":135868,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135831,"src":"4469:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":135871,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"4497:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135872,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"4508:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135875,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"4533:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4549:4:203","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":38319,"src":"4533:20:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$38275_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"}},{"components":[{"arguments":[{"hexValue":"30","id":135879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4564:1:203","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4556:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":135877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4556:7:203","typeDescriptions":{}}},"id":135880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4556:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":135881,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4555:12:203","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$38275_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":135873,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4518:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4522:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"4518:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4518:50:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135869,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"4482:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4488:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"4482:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4482:87:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4469:100:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":135885,"nodeType":"ExpressionStatement","src":"4469:100:203"},{"assignments":[135888],"declarations":[{"constant":false,"id":135888,"mutability":"mutable","name":"returnedStruct","nameLocation":"4604:14:203","nodeType":"VariableDeclaration","scope":135934,"src":"4575:43:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_memory_ptr","typeString":"struct WorldTestSystemReturn"},"typeName":{"id":135887,"nodeType":"UserDefinedTypeName","pathNode":{"id":135886,"name":"WorldTestSystemReturn","nameLocations":["4575:21:203"],"nodeType":"IdentifierPath","referencedDeclaration":38275,"src":"4575:21:203"},"referencedDeclaration":38275,"src":"4575:21:203","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_storage_ptr","typeString":"struct WorldTestSystemReturn"}},"visibility":"internal"}],"id":135895,"initialValue":{"arguments":[{"id":135891,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135831,"src":"4632:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":135892,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38275,"src":"4645:21:203","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$38275_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"id":135893,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4644:23:203","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$38275_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$38275_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}],"expression":{"id":135889,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4621:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4625:6:203","memberName":"decode","nodeType":"MemberAccess","src":"4621:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":135894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4621:47:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"nodeType":"VariableDeclarationStatement","src":"4575:93:203"},{"expression":{"arguments":[{"expression":{"id":135897,"name":"returnedStruct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135888,"src":"4750:14:203","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$38275_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"id":135898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4765:6:203","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":38272,"src":"4750:21:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135899,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"4773:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":135896,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"4741:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":135900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4741:42:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135901,"nodeType":"ExpressionStatement","src":"4741:42:203"},{"expression":{"arguments":[{"id":135905,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"4849:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135902,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"4840:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4843:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"4840:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4840:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135907,"nodeType":"ExpressionStatement","src":"4840:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":135913,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"4904:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":135914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4917:24:203","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22514,"src":"4904:37:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":135915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4942:8:203","memberName":"selector","nodeType":"MemberAccess","src":"4904:46:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":135916,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"4952:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135917,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"4963:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135911,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4881:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135912,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4885:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4881:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":135918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4881:92:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135908,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"4865:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4868:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"4865:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":135919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4865:109:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135920,"nodeType":"ExpressionStatement","src":"4865:109:203"},{"expression":{"arguments":[{"id":135924,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"4995:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135925,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"5006:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135928,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"5031:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5047:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"5031:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135930,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5058:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135926,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5016:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5020:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"5016:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5016:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135921,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"4980:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4986:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"4980:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4980:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":135933,"nodeType":"ExpressionStatement","src":"4980:82:203"}]},"functionSelector":"d671f65b","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromSystemDelegation","nameLocation":"3484:28:203","parameters":{"id":135789,"nodeType":"ParameterList","parameters":[],"src":"3512:2:203"},"returnParameters":{"id":135790,"nodeType":"ParameterList","parameters":[],"src":"3522:0:203"},"scope":136151,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136084,"nodeType":"FunctionDefinition","src":"5071:1492:203","nodes":[],"body":{"id":136083,"nodeType":"Block","src":"5121:1442:203","nodes":[],"statements":[{"assignments":[135939],"declarations":[{"constant":false,"id":135939,"mutability":"mutable","name":"maxTimestamp","nameLocation":"5135:12:203","nodeType":"VariableDeclaration","scope":136083,"src":"5127:20:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":135938,"name":"uint256","nodeType":"ElementaryTypeName","src":"5127:7:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":135941,"initialValue":{"hexValue":"34323432","id":135940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5150:4:203","typeDescriptions":{"typeIdentifier":"t_rational_4242_by_1","typeString":"int_const 4242"},"value":"4242"},"nodeType":"VariableDeclarationStatement","src":"5127:27:203"},{"expression":{"arguments":[{"hexValue":"31","id":135945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5207:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":135942,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"5199:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5202:4:203","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":61542,"src":"5199:7:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":135946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5199:10:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135947,"nodeType":"ExpressionStatement","src":"5199:10:203"},{"expression":{"arguments":[{"id":135951,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"5266:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135948,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"5257:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5260:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"5257:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5257:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135953,"nodeType":"ExpressionStatement","src":"5257:19:203"},{"expression":{"arguments":[{"hexValue":"726567697374657220612074696d65626f756e642064656c65676174696f6e","id":135955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5297:33:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_b870c0af94dffd3a0feb69bdce5240693ab9885f0519d461ae7512ecc1dc3be8","typeString":"literal_string \"register a timebound delegation\""},"value":"register a timebound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b870c0af94dffd3a0feb69bdce5240693ab9885f0519d461ae7512ecc1dc3be8","typeString":"literal_string \"register a timebound delegation\""}],"id":135954,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5282:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:49:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135957,"nodeType":"ExpressionStatement","src":"5282:49:203"},{"expression":{"arguments":[{"id":135961,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"5369:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135962,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122324,"src":"5386:20:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135965,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122262,"src":"5429:26:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TimeboundDelegationControl_$122262_$","typeString":"type(contract TimeboundDelegationControl)"}},"id":135966,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5456:14:203","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":122261,"src":"5429:41:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function TimeboundDelegationControl.initDelegation(address,uint256)"}},{"components":[{"id":135967,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"5473:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135968,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135939,"src":"5484:12:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":135969,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5472:25:203","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function TimeboundDelegationControl.initDelegation(address,uint256)"},{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$","typeString":"tuple(address,uint256)"}],"expression":{"id":135963,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5414:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135964,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5418:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"5414:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5414:84:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135958,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"5337:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5343:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"5337:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":135971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5337:167:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135972,"nodeType":"ExpressionStatement","src":"5337:167:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":135973,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5510:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":135974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5510:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135975,"nodeType":"ExpressionStatement","src":"5510:14:203"},{"expression":{"arguments":[{"id":135979,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"5607:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":135976,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"5598:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":135978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5601:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"5598:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":135980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5598:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135981,"nodeType":"ExpressionStatement","src":"5598:19:203"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e","id":135983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5638:42:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_93de4703438ef657447a5305bfa94d1465e07b6821152bf759261ed1d08b050b","typeString":"literal_string \"call a system via a timebound delegation\""},"value":"call a system via a timebound delegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_93de4703438ef657447a5305bfa94d1465e07b6821152bf759261ed1d08b050b","typeString":"literal_string \"call a system via a timebound delegation\""}],"id":135982,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5623:14:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":135984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5623:58:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":135985,"nodeType":"ExpressionStatement","src":"5623:58:203"},{"assignments":[135987],"declarations":[{"constant":false,"id":135987,"mutability":"mutable","name":"returnData","nameLocation":"5700:10:203","nodeType":"VariableDeclaration","scope":136083,"src":"5687:23:203","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":135986,"name":"bytes","nodeType":"ElementaryTypeName","src":"5687:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":135999,"initialValue":{"arguments":[{"id":135990,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"5728:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":135991,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"5739:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":135994,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"5764:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":135995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5780:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"5764:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":135996,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5791:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":135992,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5749:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5753:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"5749:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":135997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5749:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":135988,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"5713:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":135989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5719:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"5713:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":135998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5713:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5687:108:203"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":136000,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5801:12:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":136001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5801:14:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136002,"nodeType":"ExpressionStatement","src":"5801:14:203"},{"assignments":[136004],"declarations":[{"constant":false,"id":136004,"mutability":"mutable","name":"returnedAddress","nameLocation":"5829:15:203","nodeType":"VariableDeclaration","scope":136083,"src":"5821:23:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136003,"name":"address","nodeType":"ElementaryTypeName","src":"5821:7:203","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":136012,"initialValue":{"arguments":[{"id":136007,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135987,"src":"5858:10:203","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":136009,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5871:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":136008,"name":"address","nodeType":"ElementaryTypeName","src":"5871:7:203","typeDescriptions":{}}}],"id":136010,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5870:9:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"}],"expression":{"id":136005,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5847:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5851:6:203","memberName":"decode","nodeType":"MemberAccess","src":"5847:10:203","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":136011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5847:33:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5821:59:203"},{"expression":{"arguments":[{"id":136014,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136004,"src":"5962:15:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136015,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"5979:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":136013,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[51067,51092,51105,51121,51163,51205,51247,51284,51321,51358,48902,48927,48957,48982,49041,49066,49096,49121,50594,50629],"referencedDeclaration":48902,"src":"5953:8:203","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":136016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5953:36:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136017,"nodeType":"ExpressionStatement","src":"5953:36:203"},{"expression":{"arguments":[{"id":136021,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135939,"src":"6089:12:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":136018,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6081:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6084:4:203","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":61542,"src":"6081:7:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":136022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6081:21:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136023,"nodeType":"ExpressionStatement","src":"6081:21:203"},{"expression":{"arguments":[{"id":136027,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"6117:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136024,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6108:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6111:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"6108:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6108:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136029,"nodeType":"ExpressionStatement","src":"6108:19:203"},{"expression":{"arguments":[{"id":136033,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"6148:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136034,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"6159:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136037,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"6184:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":136038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6200:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"6184:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":136039,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6211:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136035,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6169:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6173:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"6169:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6169:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136030,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"6133:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6139:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"6133:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6133:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":136042,"nodeType":"ExpressionStatement","src":"6133:82:203"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":136048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":136046,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135939,"src":"6313:12:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":136047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6328:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6313:16:203","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":136043,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6305:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6308:4:203","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":61542,"src":"6305:7:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":136049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6305:25:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136050,"nodeType":"ExpressionStatement","src":"6305:25:203"},{"expression":{"arguments":[{"id":136054,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"6345:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136051,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6336:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6339:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"6336:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6336:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136056,"nodeType":"ExpressionStatement","src":"6336:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":136062,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"6400:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":136063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6413:24:203","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22514,"src":"6400:37:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":136064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6438:8:203","memberName":"selector","nodeType":"MemberAccess","src":"6400:46:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":136065,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"6448:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136066,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"6459:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136060,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6377:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136061,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6381:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6377:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":136067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6377:92:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136057,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"6361:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6364:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"6361:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":136068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6361:109:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136069,"nodeType":"ExpressionStatement","src":"6361:109:203"},{"expression":{"arguments":[{"id":136073,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"6491:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136074,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135617,"src":"6502:8:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":136077,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38479,"src":"6527:15:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$38479_$","typeString":"type(contract WorldTestSystem)"}},"id":136078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6543:9:203","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":38304,"src":"6527:25:203","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":136079,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6554:2:203","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"},{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}],"expression":{"id":136075,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6512:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6516:10:203","memberName":"encodeCall","nodeType":"MemberAccess","src":"6512:14:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":136080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6512:45:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136070,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"6476:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6482:8:203","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22591,"src":"6476:14:203","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,ResourceId,bytes memory) payable external returns (bytes memory)"}},"id":136081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6476:82:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":136082,"nodeType":"ExpressionStatement","src":"6476:82:203"}]},"functionSelector":"89403ab3","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromTimeboundDelegation","nameLocation":"5080:31:203","parameters":{"id":135936,"nodeType":"ParameterList","parameters":[],"src":"5111:2:203"},"returnParameters":{"id":135937,"nodeType":"ParameterList","parameters":[],"src":"5121:0:203"},"scope":136151,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":136150,"nodeType":"FunctionDefinition","src":"6567:861:203","nodes":[],"body":{"id":136149,"nodeType":"Block","src":"6635:793:203","nodes":[],"statements":[{"assignments":[136089],"declarations":[{"constant":false,"id":136089,"mutability":"mutable","name":"noDelegationControlSystem","nameLocation":"6713:25:203","nodeType":"VariableDeclaration","scope":136149,"src":"6706:32:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"},"typeName":{"id":136088,"nodeType":"UserDefinedTypeName","pathNode":{"id":136087,"name":"System","nameLocations":["6706:6:203"],"nodeType":"IdentifierPath","referencedDeclaration":22727,"src":"6706:6:203"},"referencedDeclaration":22727,"src":"6706:6:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}},"visibility":"internal"}],"id":136094,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":136092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"6741:10:203","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_System_$22727_$","typeString":"function () returns (contract System)"},"typeName":{"id":136091,"nodeType":"UserDefinedTypeName","pathNode":{"id":136090,"name":"System","nameLocations":["6745:6:203"],"nodeType":"IdentifierPath","referencedDeclaration":22727,"src":"6745:6:203"},"referencedDeclaration":22727,"src":"6745:6:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}}},"id":136093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6741:12:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}},"nodeType":"VariableDeclarationStatement","src":"6706:47:203"},{"assignments":[136097],"declarations":[{"constant":false,"id":136097,"mutability":"mutable","name":"noDelegationControlId","nameLocation":"6770:21:203","nodeType":"VariableDeclaration","scope":136149,"src":"6759:32:203","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":136096,"nodeType":"UserDefinedTypeName","pathNode":{"id":136095,"name":"ResourceId","nameLocations":["6759:10:203"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"6759:10:203"},"referencedDeclaration":2782,"src":"6759:10:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":136104,"initialValue":{"arguments":[{"id":136100,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38079,"src":"6836:15:203","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":136101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6870:11:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"6e6f44656c65676174696f6e","id":136102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6895:14:203","typeDescriptions":{"typeIdentifier":"t_stringliteral_a3618eed64dac34fd8772db6ba7c85c8f42265bcb4045d386eac06aef5980c55","typeString":"literal_string \"noDelegation\""},"value":"noDelegation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes2","typeString":"bytes2"},{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},{"typeIdentifier":"t_stringliteral_a3618eed64dac34fd8772db6ba7c85c8f42265bcb4045d386eac06aef5980c55","typeString":"literal_string \"noDelegation\""}],"expression":{"id":136098,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24290,"src":"6794:18:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24290_$","typeString":"type(library WorldResourceIdLib)"}},"id":136099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6813:6:203","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24218,"src":"6794:25:203","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes2_$_t_bytes14_$_t_bytes16_$returns$_t_userDefinedValueType$_ResourceId_$2782_$","typeString":"function (bytes2,bytes14,bytes16) pure returns (ResourceId)"}},"id":136103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["6828:6:203","6859:9:203","6889:4:203"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"6794:122:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"6759:157:203"},{"expression":{"arguments":[{"id":136108,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136097,"src":"6943:21:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":136109,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136089,"src":"6966:25:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}},{"hexValue":"74727565","id":136110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6993:4:203","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":136105,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"6922:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6928:14:203","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24645,"src":"6922:20:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_System_$22727_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract System,bool) external"}},"id":136111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6922:76:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136112,"nodeType":"ExpressionStatement","src":"6922:76:203"},{"expression":{"arguments":[{"id":136116,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135623,"src":"7121:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":136113,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"7112:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7115:5:203","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":61605,"src":"7112:8:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":136117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7112:19:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136118,"nodeType":"ExpressionStatement","src":"7112:19:203"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":136124,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22547,"src":"7192:12:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22547_$","typeString":"type(contract IWorldErrors)"}},"id":136125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7205:27:203","memberName":"World_InterfaceNotSupported","nodeType":"MemberAccess","referencedDeclaration":22531,"src":"7192:40:203","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4) pure"}},"id":136126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7233:8:203","memberName":"selector","nodeType":"MemberAccess","src":"7192:49:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"id":136129,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136089,"src":"7259:25:203","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_System_$22727","typeString":"contract System"}],"id":136128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7251:7:203","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":136127,"name":"address","nodeType":"ElementaryTypeName","src":"7251:7:203","typeDescriptions":{}}},"id":136130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7251:34:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":136132,"name":"IDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22347,"src":"7300:18:203","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IDelegationControl_$22347_$","typeString":"type(contract IDelegationControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IDelegationControl_$22347_$","typeString":"type(contract IDelegationControl)"}],"id":136131,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7295:4:203","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":136133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7295:24:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IDelegationControl_$22347","typeString":"type(contract IDelegationControl)"}},"id":136134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7320:11:203","memberName":"interfaceId","nodeType":"MemberAccess","src":"7295:36:203","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":136122,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7160:3:203","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":136123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7164:18:203","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7160:22:203","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":136135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7160:179:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136119,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50932,"src":"7137:2:203","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$62007","typeString":"contract Vm"}},"id":136121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7140:12:203","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":61661,"src":"7137:15:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":136136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7137:208:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136137,"nodeType":"ExpressionStatement","src":"7137:208:203"},{"expression":{"arguments":[{"id":136141,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135629,"src":"7376:9:203","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":136142,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":136097,"src":"7387:21:203","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"hexValue":"31","id":136145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7420:1:203","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":136144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7410:9:203","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":136143,"name":"bytes","nodeType":"ElementaryTypeName","src":"7414:5:203","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":136146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7410:12:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":136138,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":135608,"src":"7351:5:203","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24554","typeString":"contract IBaseWorld"}},"id":136140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7357:18:203","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24677,"src":"7351:24:203","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,ResourceId,bytes memory) external"}},"id":136147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7351:72:203","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":136148,"nodeType":"ExpressionStatement","src":"7351:72:203"}]},"functionSelector":"9d4218e6","implemented":true,"kind":"function","modifiers":[],"name":"testRegisterDelegationRevertInterfaceNotSupported","nameLocation":"6576:49:203","parameters":{"id":136085,"nodeType":"ParameterList","parameters":[],"src":"6625:2:203"},"returnParameters":{"id":136086,"nodeType":"ParameterList","parameters":[],"src":"6635:0:203"},"scope":136151,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":135598,"name":"Test","nameLocations":["1597:4:203"],"nodeType":"IdentifierPath","referencedDeclaration":60480,"src":"1597:4:203"},"id":135599,"nodeType":"InheritanceSpecifier","src":"1597:4:203"},{"baseName":{"id":135600,"name":"GasReporter","nameLocations":["1603:11:203"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1603:11:203"},"id":135601,"nodeType":"InheritanceSpecifier","src":"1603:11:203"}],"canonicalName":"StandardDelegationsModuleTest","contractDependencies":[22727,23867,36077,36132,36394,36570,36767,38479,122109],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[136151,226,60480,50939,50936,60429,56167,55877,55113,53059,52366,50873],"name":"StandardDelegationsModuleTest","nameLocation":"1564:29:203","scope":136152,"usedErrors":[],"usedEvents":[48587,48591,48595,48599,48603,48607,48611,48615,48621,48627,48635,48643,48649,48655,48661,48667,50961,50966,50971,50978,50985,50992]}],"license":"MIT"},"id":203}
|