@latticexyz/world-modules 2.0.0-main-57d8965d → 2.0.0-main-de2decea
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/ERC721.t.sol/ERC721Recipient.json +1 -1
- package/out/ERC721.t.sol/ERC721Test.abi.json +1 -1
- package/out/ERC721.t.sol/ERC721Test.abi.json.d.ts +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.t.sol/EchoSystem.json +1 -1
- package/out/SystemSwitch.t.sol/SystemSwitchTest.json +1 -1
- package/out/UniqueEntityModule.t.sol/UniqueEntityModuleTest.json +1 -1
- package/out/UniqueEntityModule.t.sol/UniqueEntityTestSystem.json +1 -1
- package/out/query.t.sol/QueryTest.json +1 -1
- package/package.json +8 -8
@@ -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":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556200005061737960f01b686e616d65737061636560b81b697465737453797374656d60b01b62000089565b602055602180546001600160a01b03199081166001179091556022805490911660021790553480156200008257600080fd5b50620000f6565b60006200009960706010620000ce565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b80820180821115620000f057634e487b7160e01b600052601160045260246000fd5b92915050565b6202040f80620001076000396000f3fe60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000508565b60405162000133919062002db0565b60405180910390f35b620001246200056c565b62000124620005ce565b6200015a62000630565b60405162000133919062002dff565b6200017362000723565b60405162000133919062002f22565b62000118620007fd565b6200015a62001042565b620001186200112c565b6200017362001445565b620001b46200151f565b604051901515815260200162000133565b620001186200166b565b6200011862001bc7565b6200012462002193565b600054620001b49060ff1681565b604051620001ff9062002d32565b604051809103906000f0801580156200021c573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de862000263620021f5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002bd57600080fd5b505af1158015620002d2573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925063af068c9e9150620002f99062002d40565b604051809103906000f08015801562000316573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b169091526200036191906024810162002fb7565b600060405180830381600087803b1580156200037c57600080fd5b505af115801562000391573d6000803e3d6000fd5b505050506000604051620003a59062002d4e565b604051809103906000f080158015620003c2573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000426907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200044591815260200190565b600060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b158015620004ec57600080fd5b505af115801562000501573d6000803e3d6000fd5b5050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200056257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000543575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200070157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620006c25790505b5050505050815250508152602001906001019062000654565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200071a578382906000526020600020018054620007699062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620007979062002fe3565b8015620007e85780601f10620007bc57610100808354040283529160200191620007e8565b820191906000526020600020905b815481529060010190602001808311620007ca57829003601f168201915b50505050508152602001906001019062000747565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200086857600080fd5b505af11580156200087d573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620008db57600080fd5b505af1158015620008f0573d6000803e3d6000fd5b50505050620009346040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620009a99062003038565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000a47939291906004016200305d565b600060405180830381600087803b15801562000a6257600080fd5b505af115801562000a77573d6000803e3d6000fd5b5050505062000a85620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000adf57600080fd5b505af115801562000af4573d6000803e3d6000fd5b5050505062000b1c604051806060016040528060288152602001620203b16028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000b8495919092169390929091016200305d565b6000604051808303816000875af115801562000ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bce91908101906200310d565b905062000bda620025bf565b60008180602001905181019062000bf2919062003171565b60215490915062000c0e9082906001600160a01b03166200284f565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000c7557600080fd5b505af115801562000c8a573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000ce857600080fd5b505af115801562000cfd573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000d6695949094169391929091016200305d565b6000604051808303816000875af115801562000d86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000db091908101906200310d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000dd8856001620031c7565b6040518263ffffffff1660e01b815260040162000df791815260200190565b600060405180830381600087803b15801562000e1257600080fd5b505af115801562000e27573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000e8657600080fd5b505af115801562000e9b573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000f599190600401620031e3565b600060405180830381600087803b15801562000f7457600080fd5b505af115801562000f89573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000ff295949094169391929091016200305d565b6000604051808303816000875af115801562001012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200103c91908101906200310d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200111357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010d45790505b5050505050815250508152602001906001019062001066565b60006040516200113c9062002d5c565b604051809103906000f08015801562001159573d6000803e3d6000fd5b5090506000620011b061737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620029e1565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200122157600080fd5b505af115801562001236573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200129457600080fd5b505af1158015620012a9573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527faf5854770000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200137e9190600401620031e3565b600060405180830381600087803b1580156200139957600080fd5b505af1158015620013ae573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200140d939291906200305d565b600060405180830381600087803b1580156200142857600080fd5b505af11580156200143d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200071a5783829060005260206000200180546200148b9062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014b99062002fe3565b80156200150a5780601f10620014de576101008083540402835291602001916200150a565b820191906000526020600020905b815481529060010190602001808311620014ec57829003601f168201915b50505050508152602001906001019062001469565b60008054610100900460ff1615620015405750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016665760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620015e8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620031f8565b60408051601f1981840301815290829052620016049162003242565b6000604051808303816000865af19150503d806000811462001643576040519150601f19603f3d011682016040523d82523d6000602084013e62001648565b606091505b509150508080602001905181019062001662919062003260565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620016c557600080fd5b505af1158015620016da573d6000803e3d6000fd5b5050505062001702604051806060016040528060218152602001620203686021913962002300565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620017779062003038565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200181d939291906004016200305d565b600060405180830381600087803b1580156200183857600080fd5b505af11580156200184d573d6000803e3d6000fd5b505050506200185b620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018b557600080fd5b505af1158015620018ca573d6000803e3d6000fd5b50505050620018f26040518060600160405280602a8152602001620203d9602a913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc58956200195a95919092169390929091016200305d565b6000604051808303816000875af11580156200197a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a491908101906200310d565b9050620019b0620025bf565b600081806020019051810190620019c8919062003171565b602154909150620019e49082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a3e57600080fd5b505af115801562001a53573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001b02939291906004016200305d565b6000604051808303816000875af115801562001b22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b4c91908101906200310d565b915060008280602001905181019062001b66919062003284565b805160215491925062001b82916001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000e6b565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001c2157600080fd5b505af115801562001c36573d6000803e3d6000fd5b5050505062001c7a6040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001cef9062003038565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001d39946001600160a01b03169360019101620032e2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001db7939291906004016200305d565b600060405180830381600087803b15801562001dd257600080fd5b505af115801562001de7573d6000803e3d6000fd5b5050505062001df5620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001e4f57600080fd5b505af115801562001e64573d6000803e3d6000fd5b5050505062001e8c604051806060016040528060288152602001620203896028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001ef495919092169390929091016200305d565b6000604051808303816000875af115801562001f14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f3e91908101906200310d565b905062001f4a620025bf565b60008180602001905181019062001f62919062003171565b60215490915062001f7e9082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001fd857600080fd5b505af115801562001fed573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620020ab9190600401620031e3565b600060405180830381600087803b158015620020c657600080fd5b505af1158015620020db573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200214495949094169391929091016200305d565b6000604051808303816000875af115801562002164573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200218e91908101906200310d565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6000604051620022059062002d6a565b604051809103906000f08015801562002222573d6000803e3d6000fd5b50604051620022319062002d78565b604051809103906000f0801580156200224e573d6000803e3d6000fd5b506040516200225d9062002d86565b604051809103906000f0801580156200227a573d6000803e3d6000fd5b50604051620022899062002d94565b604051809103906000f080158015620022a6573d6000803e3d6000fd5b50604051620022b59062002da2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022fa573d6000803e3d6000fd5b50905090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620023a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c8919062003260565b620023d05750565b601b8054620023df9062002fe3565b9050600014601b604051602001620023f89190620033b6565b604051602081830303815290604052906200244b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b60405180910390fd5b50601d816040516200245e919062003242565b908152602001604051809103902054600014816040516020016200248391906200343d565b60405160208183030381529060405290620024cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b50601b620024dc8282620034f5565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200253c57600080fd5b505af115801562002551573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b158015620004ec57600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002667573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200268d919062003260565b620026955750565b600060a082601c54620026a99190620035c2565b620026b59190620035c2565b620026c2906001620031c7565b90506000811162002730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002442565b80601d601b604051620027449190620035d8565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002793601b82620035e6565b5062002831601b8054620027a79062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620027d59062002fe3565b8015620028265780601f10620027fa5761010080835404028352916020019162002826565b820191906000526020600020905b8154815290600101906020018083116200280857829003601f168201915b505050505062002a6a565b604080516020810190915260008152601b906200218e9082620034f5565b806001600160a01b0316826001600160a01b031614620029dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620028ef9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620029dd62002b70565b5050565b6000620029f160706010620031c7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b62002b6d7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002ab2919062003242565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002afc9160040190815260200190565b600060405180830381865afa15801562002b1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b4491908101906200310d565b8260405160200162002b58929190620036c8565b60405160208183030381529060405262002cb7565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c895760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c249291602001620031f8565b60408051601f198184030181529082905262002c409162003242565b6000604051808303816000865af19150503d806000811462002c7f576040519150601f19603f3d011682016040523d82523d6000602084013e62002c84565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b6d8160405160240162002cce9190620031e3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200374e83390190565b617b928062008c8883390190565b611786806201081a83390190565b6102858062011fa083390190565b611a79806201222583390190565b6118cc8062013c9e83390190565b610b15806201556a83390190565b61567c806201607f83390190565b614c6d806201b6fb83390190565b6020808252825182820181905260009190848201906040850190845b8181101562002df35783516001600160a01b03168352928401929184019160010162002dcc565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002ebf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ea95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e65565b50978a0197955050509187019160010162002e27565b50919998505050505050505050565b60005b8381101562002eeb57818101518382015260200162002ed1565b50506000910152565b6000815180845262002f0e81602086016020860162002ece565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7b57603f1988860301845262002f6885835162002ef4565b9450928501929085019060010162002f49565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002fdb604083018462002ef4565b949350505050565b600181811c9082168062002ff857607f821691505b60208210810362003032577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030325760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003087606083018462002ef4565b95945050505050565b600067ffffffffffffffff80841115620030ae57620030ae62002f88565b604051601f8501601f19908116603f01168101908282118183101715620030d957620030d962002f88565b81604052809350858152868686011115620030f357600080fd5b6200310386602083018762002ece565b5050509392505050565b6000602082840312156200312057600080fd5b815167ffffffffffffffff8111156200313857600080fd5b8201601f810184136200314a57600080fd5b62002fdb8482516020840162003090565b6001600160a01b038116811462002b6d57600080fd5b6000602082840312156200318457600080fd5b815162003191816200315b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031dd57620031dd62003198565b92915050565b60208152600062003191602083018462002ef4565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200323481600485016020870162002ece565b919091016004019392505050565b600082516200325681846020870162002ece565b9190910192915050565b6000602082840312156200327357600080fd5b815180151581146200319157600080fd5b6000604082840312156200329757600080fd5b6040516040810181811067ffffffffffffffff82111715620032bd57620032bd62002f88565b6040528251620032cd816200315b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200330c608083018562002ef4565b905082606083015295945050505050565b600081546200332c8162002fe3565b600182811680156200334757600181146200337b57620033ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033ac565b8560005260208060002060005b85811015620033a35781548a82015290840190820162003388565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033ea600c8301846200331d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200347781600c85016020870162002ece565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f8211156200218e57600081815260208120601f850160051c81016020861015620034d45750805b601f850160051c820191505b818110156200143d57828155600101620034e0565b815167ffffffffffffffff81111562003512576200351262002f88565b6200352a8162003523845462002fe3565b84620034ab565b602080601f831160018114620035625760008415620035495750858301515b600019600386901b1c1916600185901b1785556200143d565b600085815260208120601f198616915b82811015620035935788860151825594840194600190910190840162003572565b5085821015620035b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031dd57620031dd62003198565b60006200319182846200331d565b818103620035f2575050565b620035fe825462002fe3565b67ffffffffffffffff81111562003619576200361962002f88565b6200362a8162003523845462002fe3565b6000601f821160018114620036615760008315620036485750848201545b600019600385901b1c1916600184901b17845562000501565b600085815260209020601f19841690600086815260209020845b838110156200369d57828601548255600195860195909101906020016200367b565b5085831015620035b25793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200370281600c85016020880162002ece565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200374181600d84016020880162002ece565b01600d0194935050505056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a60e06040526040516200001290620000c0565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080526040516200004a90620000ce565b604051809103906000f08015801562000067573d6000803e3d6000fd5b506001600160a01b031660a0526040516200008290620000dc565b604051809103906000f0801580156200009f573d6000803e3d6000fd5b506001600160a01b031660c052348015620000b957600080fd5b50620000ea565b611c058062002fea83390190565b611b3f8062004bef83390190565b611464806200672e83390190565b60805160a05160c051612ed06200011a600039600061064c015260006104ca015260006103490152612ed06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b61009561009036600461298f565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046129e7565b61023c565b005b6040517f73746464656c65676174696f6e732e6d0000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b3660046129e7565b61026e565b6100b2610722565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061023761072c565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610278610722565b905061028261075e565b61028a6107fe565b61029261088f565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261032790612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103c59250612ae0565b600060405180830381855af49150503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b5091509150816104185761041881610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526104a890612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105469250612ae0565b600060405180830381855af49150503d8060008114610581576040519150601f19603f3d011682016040523d82523d6000602084013e610586565b606091505b5090925090508161059a5761059a81610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261062a90612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106c89250612ae0565b600060405180830381855af49150503d8060008114610703576040519150601f19603f3d011682016040523d82523d6000602084013e610708565b606091505b5090925090508161071c5761071c81610928565b50505050565b6000610237610930565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061075b5750335b90565b60408051613a3160f11b6020820152600060228201527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526107b790612a98565b7e200100200000000000000000000000000000000000000000000000000000006107df61097c565b6107e7610ac4565b6107ef610afe565b6107f7610c80565b610cf7565b565b60408051613a3160f11b6020820152600060228201527f53797374656d626f756e6444656c65670000000000000000000000000000000060308201526107fc910160405160208183030381529060405261085790612a98565b7e2001002000000000000000000000000000000000000000000000000000000061087f610dcb565b610887610ac4565b6107ef610e90565b60408051613a3160f11b6020820152600060228201527f54696d65626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526108e890612a98565b7e20010020000000000000000000000000000000000000000000000000000000610910610fb0565b610918610ac4565b61092061102f565b6107f76110f9565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610977573391505090565b919050565b60408051600480825260a08201909252600091829190602082016080803683370190505090506061816000815181106109b7576109b7612afc565b602002602001019060c58111156109d0576109d0612b12565b908160c58111156109e3576109e3612b12565b815250506061816001815181106109fc576109fc612afc565b602002602001019060c5811115610a1557610a15612b12565b908160c5811115610a2857610a28612b12565b81525050605f81600281518110610a4157610a41612afc565b602002602001019060c5811115610a5a57610a5a612b12565b908160c5811115610a6d57610a6d612b12565b81525050605f81600381518110610a8657610a86612afc565b602002602001019060c5811115610a9f57610a9f612b12565b908160c5811115610ab257610ab2612b12565b905250610abe81611170565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610a8657610a86612afc565b60408051600480825260a08201909252606091816020015b6060815260200190600190039081610b165790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610b7657610b76612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610bca57610bca612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c1e57610c1e612afc565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610c7257610c72612afc565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610c975790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000610d01610930565b90503073ffffffffffffffffffffffffffffffffffffffff821603610d3357610d2e878787878787611334565b610dc2565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610d8f908a908a908a908a908a908a90600401612ba6565b600060405180830381600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610e0657610e06612afc565b602002602001019060c5811115610e1f57610e1f612b12565b908160c5811115610e3257610e32612b12565b81525050606181600181518110610e4b57610e4b612afc565b602002602001019060c5811115610e6457610e64612b12565b908160c5811115610e7757610e77612b12565b81525050605f81600281518110610a8657610a86612afc565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610ea85790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f0857610f08612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610f5c57610f5c612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c7257610c72612afc565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610fea57610fea612afc565b602002602001019060c581111561100357611003612b12565b908160c581111561101657611016612b12565b81525050606181600181518110610a8657610a86612afc565b6040805160028082526060828101909352816020015b60608152602001906001900390816110455790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106110a5576110a5612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610c7257610c72612afc565b604080516001808252818301909252606091816020015b60608152602001906001900390816111105790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000601c825111156111a3578151604051635318beb960e01b815260040161119a91815260200190565b60405180910390fd5b60008080805b855181101561127e5760006111e78783815181106111c9576111c9612afc565b602002602001015160c58111156111e2576111e2612b12565b611627565b9050806000036111fc57600190920191611234565b8215611234576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061125557611255612afc565b602002602001015160c581111561126e5761126e612b12565b901b9490941793506001016111a9565b5060058111156112a457604051635318beb960e01b81526004810182905260240161119a565b845181900360086112b760026020612c06565b6112c19190612c19565b83901b9390931792600860016112d960026020612c06565b6112e39190612c06565b6112ed9190612c19565b81901b9390931792600860018061130660026020612c06565b6113109190612c06565b61131a9190612c06565b6113249190612c19565b9190911b92909217949350505050565b613a3160f11b867fffff00000000000000000000000000000000000000000000000000000000000016148015906113ad57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b1561140e57613a3160f11b86876040516020016113cc91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261119a939291600401612c30565b61141785611687565b61142284600161180f565b61142d83600061180f565b60e084901c60e885901c0160ff1682511461148d5760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff168151146114ed5760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146115655760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b61156e866119b6565b156115c857858660405160200161158791815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261119a9291600401612c71565b61161486868686866040516020016115e09190612c8a565b604051602081830303815290604052866040516020016116009190612c8a565b604051602081830303815290604052611a9a565b61161f866001611bba565b505050505050565b6000808260c581111561163c5761163c612b12565b60ff169050606181101561165657601f1660010192915050565b60618360c581111561166a5761166a612b12565b036116785750601492915050565b50600092915050565b50919050565b806116be576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116c982611cb1565b90506005811115611710576040517f7f2372c3000000000000000000000000000000000000000000000000000000008152600481018290526005602482015260440161119a565b600061171b83611cee565b905060006117298383612c9d565b9050601c811115611770576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c602482015260440161119a565b60005b828110156118085760ff601b82900360080286901c1660008190036117c4576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208111156117ff576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611773565b5050505050565b8015801561181b575081155b1561183c57604051635318beb960e01b81526000600482015260240161119a565b600061184783611cb1565b9050600581111561186e57604051635318beb960e01b81526004810182905260240161119a565b600061187984611cee565b905060006118878383612c9d565b9050601c8111156118ae57604051635318beb960e01b81526004810182905260240161119a565b60008060005b8381101561196f5760006118dc6118cb8a84611d00565b60c58111156111e2576111e2612b12565b11156119265784811061191b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191611967565b84811015611960576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016118b4565b5083821461199357604051635318beb960e01b81526004810183905260240161119a565b848114610dc257604051635318beb960e01b81526004810182905260240161119a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106119ef576119ef612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090611a8690611a5e90612a98565b8360007e01010001000000000000000000000000000000000000000000000000000000611d28565b9050611a928160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611ad18484611d5e565b90506000611adf8585611d7b565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611b1957611b19612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611bae90611b8590612a98565b828686867e60030220202000000000000000000000000000000000000000000000000000611da7565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611bf057611bf0612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052611cac90611c5c90612a98565b82600085604051602001611c7791151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006120f4565b505050565b60006008600180611cc460026020612c06565b611cce9190612c06565b611cd89190612c06565b611ce29190612c19565b8260ff911c1692915050565b600060086001611cce60026020612c06565b6000601b8290036008028360ff911c1660c5811115611d2157611d21612b12565b9392505050565b6000611d55611d378686612109565b60ff858116601b0360080285901c16611d50858761215f565b6121a2565b95945050505050565b8151815160009181810160389190911b1760609190911b17611d21565b60608282604051602001611d90929190612cb0565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611e3357857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611e269493929190612d1a565b60405180910390a261161f565b6000611e3e876121f3565b905060005b8151811015611f21576000828281518110611e6057611e60612afc565b60200260200101519050611e8c6001826affffffffffffffffffffff19166122bb90919063ffffffff16565b15611f0e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611edb908c908c908c908c908c908c90600401612d64565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b505050505b5080611f1981612dbd565b915050611e43565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611f589493929190612d1a565b60405180910390a26000611f6c8888612109565b90506000602087019050611f848260008951846122d9565b6000611f8f85611cb1565b1115612013576000611fa18a8a612399565b878155905060208601915060008060005b611fbb88611cb1565b8160ff16101561200e57611fd08d8d836123ef565b9250611feb8a8260ff166028026038011c64ffffffffff1690565b9150611ffa83600084886122d9565b6120048286612c9d565b9450600101611fb2565b505050505b60005b8351811015611bae57600084828151811061203357612033612afc565b6020026020010151905061205f6002826affffffffffffffffffffff19166122bb90919063ffffffff16565b156120e1576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906120ae908e908e908e908e908e908e90600401612d64565b600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b505050505b50806120ec81612dbd565b915050612016565b6118088585612103848761215f565b8561246f565b6000828260405160200161211e929190612dd7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561219a5761218660ff601b83900360080287901c1683612c9d565b91508061219281612dbd565b915050612164565b509392505050565b6000602082106121c8576020820484019350602082816121c4576121c4612e12565b0691505b508254600882021b60208290038084111561219a576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061222d5761222d612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906122a49061229c90612a98565b83600061271e565b9050611a926122b68260008451612758565b6127e8565b60008160ff16826122cc8560581c90565b1660ff1614905092915050565b82156123535760208310612303576020830484019350602083816122ff576122ff612e12565b0692505b82156123535760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161234457505061071c565b50600194909401939182900391015b5b602082106123755780518455600190930192601f1990910190602001612354565b811561071c576000600019600884021c198554835182169119161785555050505050565b600082826040516020016123ae929190612dd7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612404929190612dd7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036124f957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516124ec93929190612e28565b60405180910390a261071c565b60006125058585612109565b90506000612512866121f3565b905060005b81518110156125f157600082828151811061253457612534612afc565b602002602001015190506125606004826affffffffffffffffffffff19166122bb90919063ffffffff16565b156125de576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906125ab908b908b908b908b90600401612e65565b600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b505050505b50806125e981612dbd565b915050612517565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161262693929190612e28565b60405180910390a2612641828565ffffffffffff16856127f9565b60005b8151811015610dc257600082828151811061266157612661612afc565b6020026020010151905061268d6008826affffffffffffffffffffff19166122bb90919063ffffffff16565b1561270b576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906126d8908b908b908b908b90600401612e65565b600060405180830381600087803b1580156126f257600080fd5b505af1158015612706573d6000803e3d6000fd5b505050505b508061271681612dbd565b915050612644565b6060611a9261272e8585856123ef565b60006127538561273e898961280f565b9060ff166028026038011c64ffffffffff1690565b612822565b600081831115801561276b575083518211155b6127a7578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119a93929190612e9e565b602084016127b58482612c9d565b905060006127c38585612c06565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611d218360156000612845565b611cac8383835161280a8560200190565b6122d9565b6000611d2161281e8484612399565b5490565b60405160208101601f19603f848401011660405282825261219a858585846128c0565b606060006128538560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161287957612879612e12565b04905060405193506020840160208202810160405281855260005b828110156128b4578451871c825293870193602090910190600101612894565b50505050509392505050565b821561294957602083106128ea576020830484019350602083816128e6576128e6612e12565b0692505b821561294957602083900360008184101561290e5750600019600884021c19612919565b50600019600882021c195b8554600886021b81198451168282161784525081841161293a57505061071c565b50600194909401939182900391015b5b6020821061296b5783548152600190930192601f199091019060200161294a565b811561071c576000600019600884021c198251865482169119161782525050505050565b6000602082840312156129a157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156129f957600080fd5b813567ffffffffffffffff80821115612a1157600080fd5b818401915084601f830112612a2557600080fd5b813581811115612a3757612a376129d1565b604051601f8201601f19908116603f01168101908382118183101715612a5f57612a5f6129d1565b81604052828152876020848701011115612a7857600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156116815760001960209190910360031b1b16919050565b60005b83811015612ad7578181015183820152602001612abf565b50506000910152565b60008251612af2818460208701612abc565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612b40816020860160208601612abc565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b85811015612b99578383038952612b87838351612b28565b98850198925090840190600101612b6f565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612bd160c0830185612b54565b82810360a0840152612be38185612b54565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561022757610227612bf0565b808202811582820484141761022757610227612bf0565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611d556060830184612b28565b828152604060208201526000611a926040830184612b28565b602081526000611d216020830184612b54565b8082018082111561022757610227612bf0565b60008351612cc2818460208801612abc565b835190830190612cd6818360208801612abc565b01949350505050565b600081518084526020808501945080840160005b83811015612d0f57815187529582019590820190600101612cf3565b509495945050505050565b608081526000612d2d6080830187612cdf565b8281036020840152612d3f8187612b28565b90508460408401528281036060840152612d598185612b28565b979650505050505050565b86815260c060208201526000612d7d60c0830188612cdf565b8281036040840152612d8f8188612b28565b90508560608401528281036080840152612da98186612b28565b9150508260a0830152979650505050505050565b60006000198203612dd057612dd0612bf0565b5060010190565b82815260006020808301845182860160005b82811015612e0557815184529284019290840190600101612de9565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612e3b6060830186612cdf565b65ffffffffffff851660208401528281036040840152612e5b8185612b28565b9695505050505050565b848152608060208201526000612e7e6080830186612cdf565b65ffffffffffff851660408401528281036060840152612d598185612b28565b606081526000612eb16060830186612b28565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611be5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046116fe565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046117fa565b6101f6565b6100e56100e0366004611851565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b8785610419565b600192505050610261565b801561025a5760001901610231866102526101e7565b87858561053a565b6000925050505b9392505050565b6102836102736101e7565b858585805190602001208561053a565b50505050565b60006101f16106a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6118b0565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376118b0565b6020026020010181815250508381600281518110610357576103576118b0565b6020026020010181815250508281600381518110610377576103776118b0565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308401529161040c91016040516020818303038152906040526103e4906118c6565b8360007e200100200000000000000000000000000000000000000000000000000000006106e0565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061045c5761045c6118b0565b602002602001018181525050836001600160a01b031660001b81600181518110610488576104886118b0565b60200260200101818152505082816002815181106104a8576104a86118b0565b60200260200101818152505081816003815181106104c8576104c86118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526105339061052d906118c6565b8261079d565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061057d5761057d6118b0565b602002602001018181525050846001600160a01b031660001b816001815181106105a9576105a96118b0565b60200260200101818152505083816002815181106105c9576105c96118b0565b60200260200101818152505082816003815181106105e9576105e96118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526106999061064e906118c6565b8260008560405160200161066491815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610846565b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806106db573391505090565b919050565b6000806106eb6106a1565b9050306001600160a01b0382160361071157610709868686866108fb565b915050610411565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061075c908990899089908990600401611928565b602060405180830381865afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190611957565b60006107a76106a1565b9050306001600160a01b038216036107c8576107c38383610931565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061080f9086908690600401611970565b600060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b50505050505050565b60006108506106a1565b9050306001600160a01b038216036108745761086f8686868686610948565b610699565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108c190899089908990899089906004016119cf565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b50505050505050505050565b600061092861090a868661095d565b60ff858116601b0360080285901c1661092385876109b3565b6109f6565b95945050505050565b610944828261093f85610a47565b610b75565b5050565b610533858561095784876109b3565b85610e88565b60008282604051602001610972929190611a16565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109ee576109da60ff601b83900360080287901c1683611a67565b9150806109e681611a7a565b9150506109b8565b509392505050565b600060208210610a1c57602082048401935060208281610a1857610a18611a94565b0691505b508254600882021b6020829003808411156109ee576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610abe906118c6565b8203610aea57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610b6c9101604051602081830303815290604052610b66906118c6565b84611137565b602060006109f6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610bfb57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610bee9190611aaa565b60405180910390a2505050565b6000610c0684611153565b905060005b8151811015610ce3576000828281518110610c2857610c286118b0565b60200260200101519050610c546040826affffffffffffffffffffff191661123390919063ffffffff16565b15610cd0576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c9d90899089908990600401611abd565b600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b505050505b5080610cdb81611a7a565b915050610c0b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610d149190611aaa565b60405180910390a26000610d28858561095d565b9050610d81816000610d3986611251565b67ffffffffffffffff811115610d5157610d51611757565b6040519080825280601f01601f191660200182016040528015610d7b576020820181803683370190505b50611274565b6000610d8c8461128a565b1115610dad576000610d9e86866112c7565b9050610dab81602061131d565b505b60005b8251811015610699576000838281518110610dcd57610dcd6118b0565b60200260200101519050610df96080826affffffffffffffffffffff191661123390919063ffffffff16565b15610e75576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610e42908a908a908a90600401611abd565b600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b505050505b5080610e8081611a7a565b915050610db0565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610f1257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610f0593929190611ae6565b60405180910390a2610283565b6000610f1e858561095d565b90506000610f2b86611153565b905060005b815181101561100a576000828281518110610f4d57610f4d6118b0565b60200260200101519050610f796004826affffffffffffffffffffff191661123390919063ffffffff16565b15610ff7576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610fc4908b908b908b908b90600401611b23565b600060405180830381600087803b158015610fde57600080fd5b505af1158015610ff2573d6000803e3d6000fd5b505050505b508061100281611a7a565b915050610f30565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161103f93929190611ae6565b60405180910390a261105a828565ffffffffffff1685611274565b60005b815181101561083d57600082828151811061107a5761107a6118b0565b602002602001015190506110a66008826affffffffffffffffffffff191661123390919063ffffffff16565b15611124576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906110f1908b908b908b908b90600401611b23565b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505b508061112f81611a7a565b91505061105d565b6040805160208101849052908101829052600090606001610972565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061118d5761118d6118b0565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061121c90611214906118c6565b83600061135a565b905061041161122e8260008451611394565b61142d565b60008160ff16826112448560581c90565b1660ff1614905092915050565b6000600861126160026020611b67565b61126b9190611b7a565b9190911c919050565b6107c3838383516112858560200190565b61143e565b6000600860018061129d60026020611b67565b6112a79190611b67565b6112b19190611b67565b6112bb9190611b7a565b8260ff911c1692915050565b600082826040516020016112dc929190611a16565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061132c83601f611a67565b6113369190611b91565b6113409084611a67565b90505b808310156107c35760008355600183019250611343565b606061041161136a8585856114fe565b600061138f8561137a898961157e565b9060ff166028026038011c64ffffffffff1690565b611591565b60008183111580156113a7575083518211155b6113ec578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016113e393929190611bb3565b60405180910390fd5b602084016113fa8482611a67565b905060006114088585611b67565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006115b4565b82156114b857602083106114685760208304840193506020838161146457611464611a94565b0692505b82156114b85760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114a9575050610283565b50600194909401939182900391015b5b602082106114da5780518455600190930192601f19909101906020016114b9565b8115610283576000600019600884021c198554835182169119161785555050505050565b60008383604051602001611513929190611a16565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061026161158d84846112c7565b5490565b60405160208101601f19603f84840101166040528282526109ee8585858461162f565b606060006115c28560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816115e8576115e8611a94565b04905060405193506020840160208202810160405281855260005b82811015611623578451871c825293870193602090910190600101611603565b50505050509392505050565b82156116b857602083106116595760208304840193506020838161165557611655611a94565b0692505b82156116b857602083900360008184101561167d5750600019600884021c19611688565b50600019600882021c195b8554600886021b8119845116828216178452508184116116a9575050610283565b50600194909401939182900391015b5b602082106116da5783548152600190930192601f19909101906020016116b9565b8115610283576000600019600884021c198251865482169119161782525050505050565b60006020828403121561171057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b03811681146106db57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177e57600080fd5b813567ffffffffffffffff8082111561179957611799611757565b604051601f8301601f19908116603f011681019082821181831017156117c1576117c1611757565b816040528381528660208588010111156117da57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561180f57600080fd5b61181884611740565b925060208401359150604084013567ffffffffffffffff81111561183b57600080fd5b6118478682870161176d565b9150509250925092565b6000806000806080858703121561186757600080fd5b61187085611740565b935060208501359250604085013567ffffffffffffffff81111561189357600080fd5b61189f8782880161176d565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156118e7576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561191d57815187529582019590820190600101611901565b509495945050505050565b84815260806020820152600061194160808301866118ed565b60ff949094166040830152506060015292915050565b60006020828403121561196957600080fd5b5051919050565b82815260406020820152600061041160408301846118ed565b6000815180845260005b818110156119af57602081850181015186830182015201611993565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006119e860a08301876118ed565b60ff861660408401528281036060840152611a038186611989565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611a4457815184529284019290840190600101611a28565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611a51565b60006000198203611a8d57611a8d611a51565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846118ed565b838152606060208201526000611ad660608301856118ed565b9050826040830152949350505050565b606081526000611af960608301866118ed565b65ffffffffffff851660208401528281036040840152611b198185611989565b9695505050505050565b848152608060208201526000611b3c60808301866118ed565b65ffffffffffff851660408401528281036060840152611b5c8185611989565b979650505050505050565b818103818111156101e1576101e1611a51565b80820281158282048414176101e1576101e1611a51565b600082611bae57634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611bc66060830186611989565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611b1f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a610085366004611687565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046116f6565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046117c1565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103e0565b6001915050610254565b801561024e5760001901610227856102476101e7565b86846104e0565b60009150505b9392505050565b61026e6102666101e7565b8484846104e0565b505050565b60006101f1610626565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f56117f4565b602002602001018181525050836001600160a01b031660001b81600181518110610321576103216117f4565b6020026020010181815250508281600281518110610341576103416117f4565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f53797374656d626f756e6444656c6567000000000000000000000000000000006030840152916103d691016040516020818303038152906040526103ae9061180a565b8360007e20010020000000000000000000000000000000000000000000000000000000610665565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b81600081518110610423576104236117f4565b602002602001018181525050826001600160a01b031660001b8160018151811061044f5761044f6117f4565b602002602001018181525050818160028151811061046f5761046f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c656700000000000000000000000000000000603082015281518082039093018352810190526104da906104d49061180a565b8261072a565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b81600081518110610523576105236117f4565b602002602001018181525050836001600160a01b031660001b8160018151811061054f5761054f6117f4565b602002602001018181525050828160028151811061056f5761056f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c6567000000000000000000000000000000006030820152815180820390930183528101905261061f906105d49061180a565b826000856040516020016105ea91815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006107ce565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610660573391505090565b919050565b600080610670610626565b9050306001600160a01b038216036106965761068e86868686610884565b915050610722565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906106e190899089908990899060040161186c565b602060405180830381865afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068e919061189b565b949350505050565b6000610734610626565b9050306001600160a01b038216036107505761026e83836108ba565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061079790869086906004016118b4565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050505050565b60006107d8610626565b9050306001600160a01b038216036107fc576107f786868686866108d1565b61087c565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108499089908990899089908990600401611913565b600060405180830381600087803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050505b505050505050565b60006108b161089386866108e6565b60ff858116601b0360080285901c166108ac858761093c565b61097f565b95945050505050565b6108cd82826108c8856109d0565b610afe565b5050565b61061f85856108e0848761093c565b85610e11565b600082826040516020016108fb92919061195a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109775761096360ff601b83900360080287901c16836119ab565b91508061096f816119be565b915050610941565b509392505050565b6000602082106109a5576020820484019350602082816109a1576109a16119d8565b0691505b508254600882021b602082900380841115610977576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610a479061180a565b8203610a7357507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610af59101604051602081830303815290604052610aef9061180a565b846110c0565b6020600061097f565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b8457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b7791906119ee565b60405180910390a2505050565b6000610b8f846110dc565b905060005b8151811015610c6c576000828281518110610bb157610bb16117f4565b60200260200101519050610bdd6040826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610c59576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c2690899089908990600401611a01565b600060405180830381600087803b158015610c4057600080fd5b505af1158015610c54573d6000803e3d6000fd5b505050505b5080610c64816119be565b915050610b94565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c9d91906119ee565b60405180910390a26000610cb185856108e6565b9050610d0a816000610cc2866111da565b67ffffffffffffffff811115610cda57610cda6116e0565b6040519080825280601f01601f191660200182016040528015610d04576020820181803683370190505b506111fd565b6000610d1584611213565b1115610d36576000610d278686611250565b9050610d348160206112a6565b505b60005b825181101561087c576000838281518110610d5657610d566117f4565b60200260200101519050610d826080826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610dfe576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610dcb908a908a908a90600401611a01565b600060405180830381600087803b158015610de557600080fd5b505af1158015610df9573d6000803e3d6000fd5b505050505b5080610e09816119be565b915050610d39565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610e9b57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610e8e93929190611a2a565b60405180910390a26104da565b6000610ea785856108e6565b90506000610eb4866110dc565b905060005b8151811015610f93576000828281518110610ed657610ed66117f4565b60200260200101519050610f026004826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610f80576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610f4d908b908b908b908b90600401611a5d565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b505050505b5080610f8b816119be565b915050610eb9565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610fc893929190611a2a565b60405180910390a2610fe3828565ffffffffffff16856111fd565b60005b81518110156107c5576000828281518110611003576110036117f4565b6020026020010151905061102f6008826affffffffffffffffffffff19166111bc90919063ffffffff16565b156110ad576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061107a908b908b908b908b90600401611a5d565b600060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050505b50806110b8816119be565b915050610fe6565b60408051602081018490529081018290526000906060016108fb565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611116576111166117f4565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906111a59061119d9061180a565b8360006112e3565b90506107226111b7826000845161131d565b6113b6565b60008160ff16826111cd8560581c90565b1660ff1614905092915050565b600060086111ea60026020611aa1565b6111f49190611ab4565b9190911c919050565b61026e8383835161120e8560200190565b6113c7565b6000600860018061122660026020611aa1565b6112309190611aa1565b61123a9190611aa1565b6112449190611ab4565b8260ff911c1692915050565b6000828260405160200161126592919061195a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206112b583601f6119ab565b6112bf9190611acb565b6112c990846119ab565b90505b8083101561026e57600083556001830192506112cc565b60606107226112f3858585611487565b6000611318856113038989611507565b9060ff166028026038011c64ffffffffff1690565b61151a565b6000818311158015611330575083518211155b611375578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161136c93929190611aed565b60405180910390fd5b6020840161138384826119ab565b905060006113918585611aa1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061153d565b821561144157602083106113f1576020830484019350602083816113ed576113ed6119d8565b0692505b82156114415760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114325750506104da565b50600194909401939182900391015b5b602082106114635780518455600190930192601f1990910190602001611442565b81156104da576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161149c92919061195a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546115168484611250565b5490565b60405160208101601f19603f8484010116604052828252610977858585846115b8565b6060600061154b8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611571576115716119d8565b04905060405193506020840160208202810160405281855260005b828110156115ac578451871c82529387019360209091019060010161158c565b50505050509392505050565b821561164157602083106115e2576020830484019350602083816115de576115de6119d8565b0692505b82156116415760208390036000818410156116065750600019600884021c19611611565b50600019600882021c195b8554600886021b8119845116828216178452508184116116325750506104da565b50600194909401939182900391015b5b602082106116635783548152600190930192601f1990910190602001611642565b81156104da576000600019600884021c198251865482169119161782525050505050565b60006020828403121561169957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b038116811461066057600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561170b57600080fd5b611714846116c9565b925060208401359150604084013567ffffffffffffffff8082111561173857600080fd5b818601915086601f83011261174c57600080fd5b81358181111561175e5761175e6116e0565b604051601f8201601f19908116603f01168101908382118183101715611786576117866116e0565b8160405282815289602084870101111561179f57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806000606084860312156117d657600080fd5b6117df846116c9565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b8051602080830151919081101561182b576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561186157815187529582019590820190600101611845565b509495945050505050565b8481526080602082015260006118856080830186611831565b60ff949094166040830152506060015292915050565b6000602082840312156118ad57600080fd5b5051919050565b8281526040602082015260006107226040830184611831565b6000815180845260005b818110156118f3576020818501810151868301820152016118d7565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061192c60a0830187611831565b60ff86166040840152828103606084015261194781866118cd565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156119885781518452928401929084019060010161196c565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611995565b600060001982036119d1576119d1611995565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611831565b838152606060208201526000611a1a6060830185611831565b9050826040830152949350505050565b606081526000611a3d6060830186611831565b65ffffffffffff8516602084015282810360408401526103d681856118cd565b848152608060208201526000611a766080830186611831565b65ffffffffffff851660408401528281036060840152611a9681856118cd565b979650505050505050565b818103818111156101e1576101e1611995565b80820281158282048414176101e1576101e1611995565b600082611ae857634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b0060608301866118cd565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611444806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a61008536600461102c565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da3660046110a8565b610203565b604051601f193601358152602001610096565b610105610100366004611173565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf5854770000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b83836103b9565b5050565b60006101fe610511565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000928101929092526000602283018190527f54696d65626f756e6444656c65676174000000000000000000000000000000006030840152916103b09101604051602081830303815290604052610388906111b3565b8360007e2001002000000000000000000000000000000000000000000000000000000061055d565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106104075761040761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104405761044061119d565b602090810291909101810191909152604080517f746200000000000000000000000000000000000000000000000000000000000081840152600060228201527f54696d65626f756e6444656c65676174000000000000000000000000000000006030820152815180820390930183528101905261050b906104c0906111b3565b826000856040516020016104d691815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061063c565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610558573391505090565b919050565b600080610568610511565b90503073ffffffffffffffffffffffffffffffffffffffff82160361059b576105938686868661070c565b915050610634565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906105f3908990899089908990600401611215565b602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611244565b949350505050565b6000610646610511565b90503073ffffffffffffffffffffffffffffffffffffffff821603610677576106728686868686610739565b610704565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906106d190899089908990899089906004016112a3565b600060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050505b505050505050565b60006103b061071b8686610755565b60ff858116601b0360080285901c1661073485876107ab565b6107ee565b61074e858561074884876107ab565b8561083f565b5050505050565b6000828260405160200161076a9291906112ea565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107e6576107d260ff601b83900360080287901c168361133b565b9150806107de8161134e565b9150506107b0565b509392505050565b6000602082106108145760208204840193506020828161081057610810611368565b0691505b508254600882021b6020829003808411156107e6576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036108c957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108bc9392919061137e565b60405180910390a261050b565b60006108d58585610755565b905060006108e286610af7565b905060005b81518110156109c15760008282815181106109045761090461119d565b602002602001015190506109306004826affffffffffffffffffffff1916610bf290919063ffffffff16565b156109ae576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061097b908b908b908b908b906004016113bb565b600060405180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050505b50806109b98161134e565b9150506108e7565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109f69392919061137e565b60405180910390a2610a11828565ffffffffffff1685610c10565b60005b8151811015610aee576000828281518110610a3157610a3161119d565b60200260200101519050610a5d6008826affffffffffffffffffffff1916610bf290919063ffffffff16565b15610adb576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610aa8908b908b908b908b906004016113bb565b600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b505050505b5080610ae68161134e565b915050610a14565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b3157610b3161119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610bdb90610bd3906111b3565b836000610c2b565b9050610634610bed8260008451610c65565b610cfe565b60008160ff1682610c038560581c90565b1660ff1614905092915050565b610c2683838351610c218560200190565b610d16565b505050565b6060610634610c3b858585610dd6565b6000610c6085610c4b8989610e56565b9060ff166028026038011c64ffffffffff1690565b610e69565b6000818311158015610c78575083518211155b610cbd578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610cb4939291906113ff565b60405180910390fd5b60208401610ccb848261133b565b90506000610cd98585611424565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610d0f8360156000610e8c565b9392505050565b8215610d905760208310610d4057602083048401935060208381610d3c57610d3c611368565b0692505b8215610d905760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610d8157505061050b565b50600194909401939182900391015b5b60208210610db25780518455600190930192601f1990910190602001610d91565b811561050b576000600019600884021c198554835182169119161785555050505050565b60008383604051602001610deb9291906112ea565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610d0f610e658484610f07565b5490565b60405160208101601f19603f84840101166040528282526107e685858584610f5d565b60606000610e9a8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610ec057610ec0611368565b04905060405193506020840160208202810160405281855260005b82811015610efb578451871c825293870193602090910190600101610edb565b50505050509392505050565b60008282604051602001610f1c9291906112ea565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610fe65760208310610f8757602083048401935060208381610f8357610f83611368565b0692505b8215610fe6576020839003600081841015610fab5750600019600884021c19610fb6565b50600019600882021c195b8554600886021b811984511682821617845250818411610fd757505061050b565b50600194909401939182900391015b5b602082106110085783548152600190930192601f1990910190602001610fe7565b811561050b576000600019600884021c198251865482169119161782525050505050565b60006020828403121561103e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461055857600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156110bd57600080fd5b6110c68461106e565b925060208401359150604084013567ffffffffffffffff808211156110ea57600080fd5b818601915086601f8301126110fe57600080fd5b81358181111561111057611110611092565b604051601f8201601f19908116603f0116810190838211818310171561113857611138611092565b8160405282815289602084870101111561115157600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561118657600080fd5b61118f8361106e565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156111d4576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561120a578151875295820195908201906001016111ee565b509495945050505050565b84815260806020820152600061122e60808301866111da565b60ff949094166040830152506060015292915050565b60006020828403121561125657600080fd5b5051919050565b6000815180845260005b8181101561128357602081850181015186830182015201611267565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006112bc60a08301876111da565b60ff8616604084015282810360608401526112d7818661125d565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611318578151845292840192908401906001016112fc565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee611325565b6000600019820361136157611361611325565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60608152600061139160608301866111da565b65ffffffffffff8516602084015282810360408401526113b1818561125d565b9695505050505050565b8481526080602082015260006113d460808301866111da565b65ffffffffffff8516604084015282810360608401526113f4818561125d565b979650505050505050565b606081526000611412606083018661125d565b60208301949094525060400152919050565b818103818111156101ee576101ee61132556fea164736f6c6343000815000a608060405234801561001057600080fd5b50611766806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c1461021b578063ea29e3ba146102b6576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611244565b6102cb565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610364565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611312565b610373565b60405161016991906113df565b3480156101e557600080fd5b506101f96101f43660046113f2565b6103f7565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610529565b34801561023c57600080fd5b5061025061024b36600461148c565b610533565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046114a5565b61057d565b3480156102ad57600080fd5b506101876105ba565b3480156102c257600080fd5b506101f96105c4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061035e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061036e6106b0565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161039d91906114ee565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5091509150816103ef57805181602001fd5b949350505050565b6040805160008082526020820190925290610418613a3160f11b86866106e2565b905030610423610769565b73ffffffffffffffffffffffffffffffffffffffff160361047f5761047a81838560405160200161045b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107b5565b610522565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104b591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b81526004016104ef959493929190611545565b600060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050505b5050505050565b600061036e610769565b6040805180820190915260008082526020820152604051806040016040528061055a610364565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105b191906113df565b60405180910390fd5b600061036e610364565b306105cd610769565b73ffffffffffffffffffffffffffffffffffffffff1603610651577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610647906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106479060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106df5750335b90565b60006106f0607060106115ac565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107b0573391505090565b919050565b61052285858585856107c68b6107cb565b6108f9565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610842906115bf565b820361086e57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261035e916108f091016040516020818303038152906040526108ea906115bf565b84610c53565b60206000610cac565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361098557857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161097894939291906115e6565b60405180910390a2610c4b565b600061099087610cfe565b905060005b8151811015610a735760008282815181106109b2576109b2611630565b602002602001015190506109de6001826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610a60576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90610a2d908c908c908c908c908c908c90600401611646565b600060405180830381600087803b158015610a4757600080fd5b505af1158015610a5b573d6000803e3d6000fd5b505050505b5080610a6b8161169f565b915050610995565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610aaa94939291906115e6565b60405180910390a26000610abe8888610dfc565b90506000602087019050610ad6826000895184610e11565b6000610ae185610ecf565b1115610b65576000610af38a8a610f0c565b878155905060208601915060008060005b610b0d88610ecf565b8160ff161015610b6057610b228d8d83610f62565b9250610b3d8a8260ff166028026038011c64ffffffffff1690565b9150610b4c8360008488610e11565b610b5682866115ac565b9450600101610b04565b505050505b60005b8351811015610c46576000848281518110610b8557610b85611630565b60200260200101519050610bb16002826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610c33576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610c00908e908e908e908e908e908e90600401611646565b600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050505b5080610c3e8161169f565b915050610b68565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610cd257602082048401935060208281610cce57610cce6116b9565b0691505b508254600882021b602082900380841115610cf6576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d3857610d38611630565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610dc790610dbf906115bf565b836000610fe2565b90506103ef610dd9826000845161101c565b6110ac565b60008160ff1682610def8560581c90565b1660ff1614905092915050565b60008282604051602001610c6b9291906116cf565b8215610e8b5760208310610e3b57602083048401935060208381610e3757610e376116b9565b0692505b8215610e8b5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610e7c575050610ec9565b50600194909401939182900391015b5b60208210610ead5780518455600190930192601f1990910190602001610e8c565b8115610ec95783548151600019600885021c9182169119161784555b50505050565b60006008600180610ee26002602061170a565b610eec919061170a565b610ef6919061170a565b610f00919061171d565b8260ff911c1692915050565b60008282604051602001610f219291906116cf565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610f779291906116cf565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60606103ef610ff2858585610f62565b60006110178561100289896110c4565b9060ff166028026038011c64ffffffffff1690565b6110d7565b600081831115801561102f575083518211155b61106b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105b193929190611734565b6020840161107984826115ac565b90506000611087858561170a565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006110bd83601560006110fa565b9392505050565b60006110bd6110d38484610f0c565b5490565b60405160208101601f19603f8484010116604052828252610cf685858584611175565b606060006111088560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161112e5761112e6116b9565b04905060405193506020840160208202810160405281855260005b82811015611169578451871c825293870193602090910190600101611149565b50505050509392505050565b82156111fe576020831061119f5760208304840193506020838161119b5761119b6116b9565b0692505b82156111fe5760208390036000818410156111c35750600019600884021c196111ce565b50600019600882021c195b8554600886021b8119845116828216178452508184116111ef575050610ec9565b50600194909401939182900391015b5b602082106112205783548152600190930192601f19909101906020016111ff565b8115610ec9576000600019600884021c198251865482169119161782525050505050565b60006020828403121561125657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110bd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156112b7576112b7611286565b604051601f8501601f19908116603f011681019082821181831017156112df576112df611286565b816040528093508581528686860111156112f857600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561132557600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461134957600080fd5b9150602083013567ffffffffffffffff81111561136557600080fd5b8301601f8101851361137657600080fd5b6113858582356020840161129c565b9150509250929050565b60005b838110156113aa578181015183820152602001611392565b50506000910152565b600081518084526113cb81602086016020860161138f565b601f01601f19169290920160200192915050565b6020815260006110bd60208301846113b3565b60008060006060848603121561140757600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461143757600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461146c57600080fd5b91506040840135801515811461148157600080fd5b809150509250925092565b60006020828403121561149e57600080fd5b5035919050565b6000602082840312156114b757600080fd5b813567ffffffffffffffff8111156114ce57600080fd5b8201601f810184136114df57600080fd5b6103ef8482356020840161129c565b6000825161150081846020870161138f565b9190910192915050565b600081518084526020808501945080840160005b8381101561153a5781518752958201959082019060010161151e565b509495945050505050565b85815260a06020820152600061155e60a083018761150a565b828103604084015261157081876113b3565b9050846060840152828103608084015261158a81856113b3565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561035e5761035e611596565b805160208083015191908110156115e0576000198160200360031b1b821691505b50919050565b6080815260006115f9608083018761150a565b828103602084015261160b81876113b3565b9050846040840152828103606084015261162581856113b3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061165f60c083018861150a565b828103604084015261167181886113b3565b9050856060840152828103608084015261168b81866113b3565b9150508260a0830152979650505050505050565b600060001982036116b2576116b2611596565b5060010190565b634e487b7160e01b600052601260045260246000fd5b82815260006020808301845182860160005b828110156116fd578151845292840192908401906001016116e1565b5091979650505050505050565b8181038181111561035e5761035e611596565b808202811582820484141761035e5761035e611596565b60608152600061174760608301866113b3565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610265806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f36600461020f565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061020a573391505090565b919050565b60006020828403121561022157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025157600080fd5b939250505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000815000a","sourceMap":"1578:5931:199:-:0;;;1572:26:101;;;1594:4;-1:-1:-1;;1572:26:101;;;;;;;;3126:44:104;;;;;;;;;;;228:9:0;186:51;;1752:98:199;-1:-1:-1;;;;;;;;;1752:25:199;:98::i;:::-;1718:132;;1854:38;;;-1:-1:-1;;;;;;1854:38:199;;;1890:1;1854:38;;;;1896;;;;;;1932:1;1896:38;;;1578:5931;;;;;;;;;;;;941:257:59;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;-1:-1:-1;;;;;;1084:15:59;;-1:-1:-1;;;;;;;336:5:16;1103:31:59;;;;1084:51;-1:-1:-1;;;;;;1139:13:59;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;14:222:203:-;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;:::-;1578:5931:199;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000508565b60405162000133919062002db0565b60405180910390f35b620001246200056c565b62000124620005ce565b6200015a62000630565b60405162000133919062002dff565b6200017362000723565b60405162000133919062002f22565b62000118620007fd565b6200015a62001042565b620001186200112c565b6200017362001445565b620001b46200151f565b604051901515815260200162000133565b620001186200166b565b6200011862001bc7565b6200012462002193565b600054620001b49060ff1681565b604051620001ff9062002d32565b604051809103906000f0801580156200021c573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de862000263620021f5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002bd57600080fd5b505af1158015620002d2573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925063af068c9e9150620002f99062002d40565b604051809103906000f08015801562000316573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b169091526200036191906024810162002fb7565b600060405180830381600087803b1580156200037c57600080fd5b505af115801562000391573d6000803e3d6000fd5b505050506000604051620003a59062002d4e565b604051809103906000f080158015620003c2573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000426907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200044591815260200190565b600060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b158015620004ec57600080fd5b505af115801562000501573d6000803e3d6000fd5b5050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200056257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000543575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200070157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620006c25790505b5050505050815250508152602001906001019062000654565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200071a578382906000526020600020018054620007699062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620007979062002fe3565b8015620007e85780601f10620007bc57610100808354040283529160200191620007e8565b820191906000526020600020905b815481529060010190602001808311620007ca57829003601f168201915b50505050508152602001906001019062000747565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200086857600080fd5b505af11580156200087d573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620008db57600080fd5b505af1158015620008f0573d6000803e3d6000fd5b50505050620009346040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620009a99062003038565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000a47939291906004016200305d565b600060405180830381600087803b15801562000a6257600080fd5b505af115801562000a77573d6000803e3d6000fd5b5050505062000a85620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000adf57600080fd5b505af115801562000af4573d6000803e3d6000fd5b5050505062000b1c604051806060016040528060288152602001620203b16028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000b8495919092169390929091016200305d565b6000604051808303816000875af115801562000ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bce91908101906200310d565b905062000bda620025bf565b60008180602001905181019062000bf2919062003171565b60215490915062000c0e9082906001600160a01b03166200284f565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000c7557600080fd5b505af115801562000c8a573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000ce857600080fd5b505af115801562000cfd573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000d6695949094169391929091016200305d565b6000604051808303816000875af115801562000d86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000db091908101906200310d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000dd8856001620031c7565b6040518263ffffffff1660e01b815260040162000df791815260200190565b600060405180830381600087803b15801562000e1257600080fd5b505af115801562000e27573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000e8657600080fd5b505af115801562000e9b573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000f599190600401620031e3565b600060405180830381600087803b15801562000f7457600080fd5b505af115801562000f89573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000ff295949094169391929091016200305d565b6000604051808303816000875af115801562001012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200103c91908101906200310d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200111357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010d45790505b5050505050815250508152602001906001019062001066565b60006040516200113c9062002d5c565b604051809103906000f08015801562001159573d6000803e3d6000fd5b5090506000620011b061737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620029e1565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200122157600080fd5b505af115801562001236573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200129457600080fd5b505af1158015620012a9573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527faf5854770000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200137e9190600401620031e3565b600060405180830381600087803b1580156200139957600080fd5b505af1158015620013ae573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200140d939291906200305d565b600060405180830381600087803b1580156200142857600080fd5b505af11580156200143d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200071a5783829060005260206000200180546200148b9062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014b99062002fe3565b80156200150a5780601f10620014de576101008083540402835291602001916200150a565b820191906000526020600020905b815481529060010190602001808311620014ec57829003601f168201915b50505050508152602001906001019062001469565b60008054610100900460ff1615620015405750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016665760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620015e8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620031f8565b60408051601f1981840301815290829052620016049162003242565b6000604051808303816000865af19150503d806000811462001643576040519150601f19603f3d011682016040523d82523d6000602084013e62001648565b606091505b509150508080602001905181019062001662919062003260565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620016c557600080fd5b505af1158015620016da573d6000803e3d6000fd5b5050505062001702604051806060016040528060218152602001620203686021913962002300565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620017779062003038565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200181d939291906004016200305d565b600060405180830381600087803b1580156200183857600080fd5b505af11580156200184d573d6000803e3d6000fd5b505050506200185b620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018b557600080fd5b505af1158015620018ca573d6000803e3d6000fd5b50505050620018f26040518060600160405280602a8152602001620203d9602a913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc58956200195a95919092169390929091016200305d565b6000604051808303816000875af11580156200197a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a491908101906200310d565b9050620019b0620025bf565b600081806020019051810190620019c8919062003171565b602154909150620019e49082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a3e57600080fd5b505af115801562001a53573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001b02939291906004016200305d565b6000604051808303816000875af115801562001b22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b4c91908101906200310d565b915060008280602001905181019062001b66919062003284565b805160215491925062001b82916001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000e6b565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001c2157600080fd5b505af115801562001c36573d6000803e3d6000fd5b5050505062001c7a6040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001cef9062003038565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001d39946001600160a01b03169360019101620032e2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001db7939291906004016200305d565b600060405180830381600087803b15801562001dd257600080fd5b505af115801562001de7573d6000803e3d6000fd5b5050505062001df5620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001e4f57600080fd5b505af115801562001e64573d6000803e3d6000fd5b5050505062001e8c604051806060016040528060288152602001620203896028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001ef495919092169390929091016200305d565b6000604051808303816000875af115801562001f14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f3e91908101906200310d565b905062001f4a620025bf565b60008180602001905181019062001f62919062003171565b60215490915062001f7e9082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001fd857600080fd5b505af115801562001fed573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620020ab9190600401620031e3565b600060405180830381600087803b158015620020c657600080fd5b505af1158015620020db573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200214495949094169391929091016200305d565b6000604051808303816000875af115801562002164573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200218e91908101906200310d565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6000604051620022059062002d6a565b604051809103906000f08015801562002222573d6000803e3d6000fd5b50604051620022319062002d78565b604051809103906000f0801580156200224e573d6000803e3d6000fd5b506040516200225d9062002d86565b604051809103906000f0801580156200227a573d6000803e3d6000fd5b50604051620022899062002d94565b604051809103906000f080158015620022a6573d6000803e3d6000fd5b50604051620022b59062002da2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022fa573d6000803e3d6000fd5b50905090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620023a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c8919062003260565b620023d05750565b601b8054620023df9062002fe3565b9050600014601b604051602001620023f89190620033b6565b604051602081830303815290604052906200244b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b60405180910390fd5b50601d816040516200245e919062003242565b908152602001604051809103902054600014816040516020016200248391906200343d565b60405160208183030381529060405290620024cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b50601b620024dc8282620034f5565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200253c57600080fd5b505af115801562002551573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b158015620004ec57600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002667573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200268d919062003260565b620026955750565b600060a082601c54620026a99190620035c2565b620026b59190620035c2565b620026c2906001620031c7565b90506000811162002730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002442565b80601d601b604051620027449190620035d8565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002793601b82620035e6565b5062002831601b8054620027a79062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620027d59062002fe3565b8015620028265780601f10620027fa5761010080835404028352916020019162002826565b820191906000526020600020905b8154815290600101906020018083116200280857829003601f168201915b505050505062002a6a565b604080516020810190915260008152601b906200218e9082620034f5565b806001600160a01b0316826001600160a01b031614620029dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620028ef9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620029dd62002b70565b5050565b6000620029f160706010620031c7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b62002b6d7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002ab2919062003242565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002afc9160040190815260200190565b600060405180830381865afa15801562002b1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b4491908101906200310d565b8260405160200162002b58929190620036c8565b60405160208183030381529060405262002cb7565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c895760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c249291602001620031f8565b60408051601f198184030181529082905262002c409162003242565b6000604051808303816000865af19150503d806000811462002c7f576040519150601f19603f3d011682016040523d82523d6000602084013e62002c84565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b6d8160405160240162002cce9190620031e3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200374e83390190565b617b928062008c8883390190565b611786806201081a83390190565b6102858062011fa083390190565b611a79806201222583390190565b6118cc8062013c9e83390190565b610b15806201556a83390190565b61567c806201607f83390190565b614c6d806201b6fb83390190565b6020808252825182820181905260009190848201906040850190845b8181101562002df35783516001600160a01b03168352928401929184019160010162002dcc565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002ebf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ea95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e65565b50978a0197955050509187019160010162002e27565b50919998505050505050505050565b60005b8381101562002eeb57818101518382015260200162002ed1565b50506000910152565b6000815180845262002f0e81602086016020860162002ece565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7b57603f1988860301845262002f6885835162002ef4565b9450928501929085019060010162002f49565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002fdb604083018462002ef4565b949350505050565b600181811c9082168062002ff857607f821691505b60208210810362003032577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030325760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003087606083018462002ef4565b95945050505050565b600067ffffffffffffffff80841115620030ae57620030ae62002f88565b604051601f8501601f19908116603f01168101908282118183101715620030d957620030d962002f88565b81604052809350858152868686011115620030f357600080fd5b6200310386602083018762002ece565b5050509392505050565b6000602082840312156200312057600080fd5b815167ffffffffffffffff8111156200313857600080fd5b8201601f810184136200314a57600080fd5b62002fdb8482516020840162003090565b6001600160a01b038116811462002b6d57600080fd5b6000602082840312156200318457600080fd5b815162003191816200315b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031dd57620031dd62003198565b92915050565b60208152600062003191602083018462002ef4565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200323481600485016020870162002ece565b919091016004019392505050565b600082516200325681846020870162002ece565b9190910192915050565b6000602082840312156200327357600080fd5b815180151581146200319157600080fd5b6000604082840312156200329757600080fd5b6040516040810181811067ffffffffffffffff82111715620032bd57620032bd62002f88565b6040528251620032cd816200315b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200330c608083018562002ef4565b905082606083015295945050505050565b600081546200332c8162002fe3565b600182811680156200334757600181146200337b57620033ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033ac565b8560005260208060002060005b85811015620033a35781548a82015290840190820162003388565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033ea600c8301846200331d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200347781600c85016020870162002ece565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f8211156200218e57600081815260208120601f850160051c81016020861015620034d45750805b601f850160051c820191505b818110156200143d57828155600101620034e0565b815167ffffffffffffffff81111562003512576200351262002f88565b6200352a8162003523845462002fe3565b84620034ab565b602080601f831160018114620035625760008415620035495750858301515b600019600386901b1c1916600185901b1785556200143d565b600085815260208120601f198616915b82811015620035935788860151825594840194600190910190840162003572565b5085821015620035b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031dd57620031dd62003198565b60006200319182846200331d565b818103620035f2575050565b620035fe825462002fe3565b67ffffffffffffffff81111562003619576200361962002f88565b6200362a8162003523845462002fe3565b6000601f821160018114620036615760008315620036485750848201545b600019600385901b1c1916600184901b17845562000501565b600085815260209020601f19841690600086815260209020845b838110156200369d57828601548255600195860195909101906020016200367b565b5085831015620035b25793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200370281600c85016020880162002ece565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200374181600d84016020880162002ece565b01600d0194935050505056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a60e06040526040516200001290620000c0565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080526040516200004a90620000ce565b604051809103906000f08015801562000067573d6000803e3d6000fd5b506001600160a01b031660a0526040516200008290620000dc565b604051809103906000f0801580156200009f573d6000803e3d6000fd5b506001600160a01b031660c052348015620000b957600080fd5b50620000ea565b611c058062002fea83390190565b611b3f8062004bef83390190565b611464806200672e83390190565b60805160a05160c051612ed06200011a600039600061064c015260006104ca015260006103490152612ed06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b61009561009036600461298f565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046129e7565b61023c565b005b6040517f73746464656c65676174696f6e732e6d0000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b3660046129e7565b61026e565b6100b2610722565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061023761072c565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610278610722565b905061028261075e565b61028a6107fe565b61029261088f565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261032790612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103c59250612ae0565b600060405180830381855af49150503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b5091509150816104185761041881610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526104a890612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105469250612ae0565b600060405180830381855af49150503d8060008114610581576040519150601f19603f3d011682016040523d82523d6000602084013e610586565b606091505b5090925090508161059a5761059a81610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261062a90612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106c89250612ae0565b600060405180830381855af49150503d8060008114610703576040519150601f19603f3d011682016040523d82523d6000602084013e610708565b606091505b5090925090508161071c5761071c81610928565b50505050565b6000610237610930565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061075b5750335b90565b60408051613a3160f11b6020820152600060228201527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526107b790612a98565b7e200100200000000000000000000000000000000000000000000000000000006107df61097c565b6107e7610ac4565b6107ef610afe565b6107f7610c80565b610cf7565b565b60408051613a3160f11b6020820152600060228201527f53797374656d626f756e6444656c65670000000000000000000000000000000060308201526107fc910160405160208183030381529060405261085790612a98565b7e2001002000000000000000000000000000000000000000000000000000000061087f610dcb565b610887610ac4565b6107ef610e90565b60408051613a3160f11b6020820152600060228201527f54696d65626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526108e890612a98565b7e20010020000000000000000000000000000000000000000000000000000000610910610fb0565b610918610ac4565b61092061102f565b6107f76110f9565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610977573391505090565b919050565b60408051600480825260a08201909252600091829190602082016080803683370190505090506061816000815181106109b7576109b7612afc565b602002602001019060c58111156109d0576109d0612b12565b908160c58111156109e3576109e3612b12565b815250506061816001815181106109fc576109fc612afc565b602002602001019060c5811115610a1557610a15612b12565b908160c5811115610a2857610a28612b12565b81525050605f81600281518110610a4157610a41612afc565b602002602001019060c5811115610a5a57610a5a612b12565b908160c5811115610a6d57610a6d612b12565b81525050605f81600381518110610a8657610a86612afc565b602002602001019060c5811115610a9f57610a9f612b12565b908160c5811115610ab257610ab2612b12565b905250610abe81611170565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610a8657610a86612afc565b60408051600480825260a08201909252606091816020015b6060815260200190600190039081610b165790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610b7657610b76612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610bca57610bca612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c1e57610c1e612afc565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610c7257610c72612afc565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610c975790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000610d01610930565b90503073ffffffffffffffffffffffffffffffffffffffff821603610d3357610d2e878787878787611334565b610dc2565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610d8f908a908a908a908a908a908a90600401612ba6565b600060405180830381600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610e0657610e06612afc565b602002602001019060c5811115610e1f57610e1f612b12565b908160c5811115610e3257610e32612b12565b81525050606181600181518110610e4b57610e4b612afc565b602002602001019060c5811115610e6457610e64612b12565b908160c5811115610e7757610e77612b12565b81525050605f81600281518110610a8657610a86612afc565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610ea85790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f0857610f08612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610f5c57610f5c612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c7257610c72612afc565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610fea57610fea612afc565b602002602001019060c581111561100357611003612b12565b908160c581111561101657611016612b12565b81525050606181600181518110610a8657610a86612afc565b6040805160028082526060828101909352816020015b60608152602001906001900390816110455790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106110a5576110a5612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610c7257610c72612afc565b604080516001808252818301909252606091816020015b60608152602001906001900390816111105790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000601c825111156111a3578151604051635318beb960e01b815260040161119a91815260200190565b60405180910390fd5b60008080805b855181101561127e5760006111e78783815181106111c9576111c9612afc565b602002602001015160c58111156111e2576111e2612b12565b611627565b9050806000036111fc57600190920191611234565b8215611234576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061125557611255612afc565b602002602001015160c581111561126e5761126e612b12565b901b9490941793506001016111a9565b5060058111156112a457604051635318beb960e01b81526004810182905260240161119a565b845181900360086112b760026020612c06565b6112c19190612c19565b83901b9390931792600860016112d960026020612c06565b6112e39190612c06565b6112ed9190612c19565b81901b9390931792600860018061130660026020612c06565b6113109190612c06565b61131a9190612c06565b6113249190612c19565b9190911b92909217949350505050565b613a3160f11b867fffff00000000000000000000000000000000000000000000000000000000000016148015906113ad57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b1561140e57613a3160f11b86876040516020016113cc91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261119a939291600401612c30565b61141785611687565b61142284600161180f565b61142d83600061180f565b60e084901c60e885901c0160ff1682511461148d5760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff168151146114ed5760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146115655760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b61156e866119b6565b156115c857858660405160200161158791815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261119a9291600401612c71565b61161486868686866040516020016115e09190612c8a565b604051602081830303815290604052866040516020016116009190612c8a565b604051602081830303815290604052611a9a565b61161f866001611bba565b505050505050565b6000808260c581111561163c5761163c612b12565b60ff169050606181101561165657601f1660010192915050565b60618360c581111561166a5761166a612b12565b036116785750601492915050565b50600092915050565b50919050565b806116be576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116c982611cb1565b90506005811115611710576040517f7f2372c3000000000000000000000000000000000000000000000000000000008152600481018290526005602482015260440161119a565b600061171b83611cee565b905060006117298383612c9d565b9050601c811115611770576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c602482015260440161119a565b60005b828110156118085760ff601b82900360080286901c1660008190036117c4576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208111156117ff576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611773565b5050505050565b8015801561181b575081155b1561183c57604051635318beb960e01b81526000600482015260240161119a565b600061184783611cb1565b9050600581111561186e57604051635318beb960e01b81526004810182905260240161119a565b600061187984611cee565b905060006118878383612c9d565b9050601c8111156118ae57604051635318beb960e01b81526004810182905260240161119a565b60008060005b8381101561196f5760006118dc6118cb8a84611d00565b60c58111156111e2576111e2612b12565b11156119265784811061191b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191611967565b84811015611960576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016118b4565b5083821461199357604051635318beb960e01b81526004810183905260240161119a565b848114610dc257604051635318beb960e01b81526004810182905260240161119a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106119ef576119ef612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090611a8690611a5e90612a98565b8360007e01010001000000000000000000000000000000000000000000000000000000611d28565b9050611a928160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611ad18484611d5e565b90506000611adf8585611d7b565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611b1957611b19612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611bae90611b8590612a98565b828686867e60030220202000000000000000000000000000000000000000000000000000611da7565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611bf057611bf0612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052611cac90611c5c90612a98565b82600085604051602001611c7791151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006120f4565b505050565b60006008600180611cc460026020612c06565b611cce9190612c06565b611cd89190612c06565b611ce29190612c19565b8260ff911c1692915050565b600060086001611cce60026020612c06565b6000601b8290036008028360ff911c1660c5811115611d2157611d21612b12565b9392505050565b6000611d55611d378686612109565b60ff858116601b0360080285901c16611d50858761215f565b6121a2565b95945050505050565b8151815160009181810160389190911b1760609190911b17611d21565b60608282604051602001611d90929190612cb0565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611e3357857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611e269493929190612d1a565b60405180910390a261161f565b6000611e3e876121f3565b905060005b8151811015611f21576000828281518110611e6057611e60612afc565b60200260200101519050611e8c6001826affffffffffffffffffffff19166122bb90919063ffffffff16565b15611f0e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611edb908c908c908c908c908c908c90600401612d64565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b505050505b5080611f1981612dbd565b915050611e43565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611f589493929190612d1a565b60405180910390a26000611f6c8888612109565b90506000602087019050611f848260008951846122d9565b6000611f8f85611cb1565b1115612013576000611fa18a8a612399565b878155905060208601915060008060005b611fbb88611cb1565b8160ff16101561200e57611fd08d8d836123ef565b9250611feb8a8260ff166028026038011c64ffffffffff1690565b9150611ffa83600084886122d9565b6120048286612c9d565b9450600101611fb2565b505050505b60005b8351811015611bae57600084828151811061203357612033612afc565b6020026020010151905061205f6002826affffffffffffffffffffff19166122bb90919063ffffffff16565b156120e1576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906120ae908e908e908e908e908e908e90600401612d64565b600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b505050505b50806120ec81612dbd565b915050612016565b6118088585612103848761215f565b8561246f565b6000828260405160200161211e929190612dd7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561219a5761218660ff601b83900360080287901c1683612c9d565b91508061219281612dbd565b915050612164565b509392505050565b6000602082106121c8576020820484019350602082816121c4576121c4612e12565b0691505b508254600882021b60208290038084111561219a576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061222d5761222d612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906122a49061229c90612a98565b83600061271e565b9050611a926122b68260008451612758565b6127e8565b60008160ff16826122cc8560581c90565b1660ff1614905092915050565b82156123535760208310612303576020830484019350602083816122ff576122ff612e12565b0692505b82156123535760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161234457505061071c565b50600194909401939182900391015b5b602082106123755780518455600190930192601f1990910190602001612354565b811561071c576000600019600884021c198554835182169119161785555050505050565b600082826040516020016123ae929190612dd7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612404929190612dd7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036124f957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516124ec93929190612e28565b60405180910390a261071c565b60006125058585612109565b90506000612512866121f3565b905060005b81518110156125f157600082828151811061253457612534612afc565b602002602001015190506125606004826affffffffffffffffffffff19166122bb90919063ffffffff16565b156125de576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906125ab908b908b908b908b90600401612e65565b600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b505050505b50806125e981612dbd565b915050612517565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161262693929190612e28565b60405180910390a2612641828565ffffffffffff16856127f9565b60005b8151811015610dc257600082828151811061266157612661612afc565b6020026020010151905061268d6008826affffffffffffffffffffff19166122bb90919063ffffffff16565b1561270b576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906126d8908b908b908b908b90600401612e65565b600060405180830381600087803b1580156126f257600080fd5b505af1158015612706573d6000803e3d6000fd5b505050505b508061271681612dbd565b915050612644565b6060611a9261272e8585856123ef565b60006127538561273e898961280f565b9060ff166028026038011c64ffffffffff1690565b612822565b600081831115801561276b575083518211155b6127a7578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119a93929190612e9e565b602084016127b58482612c9d565b905060006127c38585612c06565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611d218360156000612845565b611cac8383835161280a8560200190565b6122d9565b6000611d2161281e8484612399565b5490565b60405160208101601f19603f848401011660405282825261219a858585846128c0565b606060006128538560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161287957612879612e12565b04905060405193506020840160208202810160405281855260005b828110156128b4578451871c825293870193602090910190600101612894565b50505050509392505050565b821561294957602083106128ea576020830484019350602083816128e6576128e6612e12565b0692505b821561294957602083900360008184101561290e5750600019600884021c19612919565b50600019600882021c195b8554600886021b81198451168282161784525081841161293a57505061071c565b50600194909401939182900391015b5b6020821061296b5783548152600190930192601f199091019060200161294a565b811561071c576000600019600884021c198251865482169119161782525050505050565b6000602082840312156129a157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156129f957600080fd5b813567ffffffffffffffff80821115612a1157600080fd5b818401915084601f830112612a2557600080fd5b813581811115612a3757612a376129d1565b604051601f8201601f19908116603f01168101908382118183101715612a5f57612a5f6129d1565b81604052828152876020848701011115612a7857600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156116815760001960209190910360031b1b16919050565b60005b83811015612ad7578181015183820152602001612abf565b50506000910152565b60008251612af2818460208701612abc565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612b40816020860160208601612abc565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b85811015612b99578383038952612b87838351612b28565b98850198925090840190600101612b6f565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612bd160c0830185612b54565b82810360a0840152612be38185612b54565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561022757610227612bf0565b808202811582820484141761022757610227612bf0565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611d556060830184612b28565b828152604060208201526000611a926040830184612b28565b602081526000611d216020830184612b54565b8082018082111561022757610227612bf0565b60008351612cc2818460208801612abc565b835190830190612cd6818360208801612abc565b01949350505050565b600081518084526020808501945080840160005b83811015612d0f57815187529582019590820190600101612cf3565b509495945050505050565b608081526000612d2d6080830187612cdf565b8281036020840152612d3f8187612b28565b90508460408401528281036060840152612d598185612b28565b979650505050505050565b86815260c060208201526000612d7d60c0830188612cdf565b8281036040840152612d8f8188612b28565b90508560608401528281036080840152612da98186612b28565b9150508260a0830152979650505050505050565b60006000198203612dd057612dd0612bf0565b5060010190565b82815260006020808301845182860160005b82811015612e0557815184529284019290840190600101612de9565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612e3b6060830186612cdf565b65ffffffffffff851660208401528281036040840152612e5b8185612b28565b9695505050505050565b848152608060208201526000612e7e6080830186612cdf565b65ffffffffffff851660408401528281036060840152612d598185612b28565b606081526000612eb16060830186612b28565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611be5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046116fe565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046117fa565b6101f6565b6100e56100e0366004611851565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b8785610419565b600192505050610261565b801561025a5760001901610231866102526101e7565b87858561053a565b6000925050505b9392505050565b6102836102736101e7565b858585805190602001208561053a565b50505050565b60006101f16106a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6118b0565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376118b0565b6020026020010181815250508381600281518110610357576103576118b0565b6020026020010181815250508281600381518110610377576103776118b0565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308401529161040c91016040516020818303038152906040526103e4906118c6565b8360007e200100200000000000000000000000000000000000000000000000000000006106e0565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061045c5761045c6118b0565b602002602001018181525050836001600160a01b031660001b81600181518110610488576104886118b0565b60200260200101818152505082816002815181106104a8576104a86118b0565b60200260200101818152505081816003815181106104c8576104c86118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526105339061052d906118c6565b8261079d565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061057d5761057d6118b0565b602002602001018181525050846001600160a01b031660001b816001815181106105a9576105a96118b0565b60200260200101818152505083816002815181106105c9576105c96118b0565b60200260200101818152505082816003815181106105e9576105e96118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526106999061064e906118c6565b8260008560405160200161066491815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610846565b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806106db573391505090565b919050565b6000806106eb6106a1565b9050306001600160a01b0382160361071157610709868686866108fb565b915050610411565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061075c908990899089908990600401611928565b602060405180830381865afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190611957565b60006107a76106a1565b9050306001600160a01b038216036107c8576107c38383610931565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061080f9086908690600401611970565b600060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b50505050505050565b60006108506106a1565b9050306001600160a01b038216036108745761086f8686868686610948565b610699565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108c190899089908990899089906004016119cf565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b50505050505050505050565b600061092861090a868661095d565b60ff858116601b0360080285901c1661092385876109b3565b6109f6565b95945050505050565b610944828261093f85610a47565b610b75565b5050565b610533858561095784876109b3565b85610e88565b60008282604051602001610972929190611a16565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109ee576109da60ff601b83900360080287901c1683611a67565b9150806109e681611a7a565b9150506109b8565b509392505050565b600060208210610a1c57602082048401935060208281610a1857610a18611a94565b0691505b508254600882021b6020829003808411156109ee576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610abe906118c6565b8203610aea57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610b6c9101604051602081830303815290604052610b66906118c6565b84611137565b602060006109f6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610bfb57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610bee9190611aaa565b60405180910390a2505050565b6000610c0684611153565b905060005b8151811015610ce3576000828281518110610c2857610c286118b0565b60200260200101519050610c546040826affffffffffffffffffffff191661123390919063ffffffff16565b15610cd0576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c9d90899089908990600401611abd565b600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b505050505b5080610cdb81611a7a565b915050610c0b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610d149190611aaa565b60405180910390a26000610d28858561095d565b9050610d81816000610d3986611251565b67ffffffffffffffff811115610d5157610d51611757565b6040519080825280601f01601f191660200182016040528015610d7b576020820181803683370190505b50611274565b6000610d8c8461128a565b1115610dad576000610d9e86866112c7565b9050610dab81602061131d565b505b60005b8251811015610699576000838281518110610dcd57610dcd6118b0565b60200260200101519050610df96080826affffffffffffffffffffff191661123390919063ffffffff16565b15610e75576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610e42908a908a908a90600401611abd565b600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b505050505b5080610e8081611a7a565b915050610db0565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610f1257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610f0593929190611ae6565b60405180910390a2610283565b6000610f1e858561095d565b90506000610f2b86611153565b905060005b815181101561100a576000828281518110610f4d57610f4d6118b0565b60200260200101519050610f796004826affffffffffffffffffffff191661123390919063ffffffff16565b15610ff7576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610fc4908b908b908b908b90600401611b23565b600060405180830381600087803b158015610fde57600080fd5b505af1158015610ff2573d6000803e3d6000fd5b505050505b508061100281611a7a565b915050610f30565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161103f93929190611ae6565b60405180910390a261105a828565ffffffffffff1685611274565b60005b815181101561083d57600082828151811061107a5761107a6118b0565b602002602001015190506110a66008826affffffffffffffffffffff191661123390919063ffffffff16565b15611124576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906110f1908b908b908b908b90600401611b23565b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505b508061112f81611a7a565b91505061105d565b6040805160208101849052908101829052600090606001610972565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061118d5761118d6118b0565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061121c90611214906118c6565b83600061135a565b905061041161122e8260008451611394565b61142d565b60008160ff16826112448560581c90565b1660ff1614905092915050565b6000600861126160026020611b67565b61126b9190611b7a565b9190911c919050565b6107c3838383516112858560200190565b61143e565b6000600860018061129d60026020611b67565b6112a79190611b67565b6112b19190611b67565b6112bb9190611b7a565b8260ff911c1692915050565b600082826040516020016112dc929190611a16565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061132c83601f611a67565b6113369190611b91565b6113409084611a67565b90505b808310156107c35760008355600183019250611343565b606061041161136a8585856114fe565b600061138f8561137a898961157e565b9060ff166028026038011c64ffffffffff1690565b611591565b60008183111580156113a7575083518211155b6113ec578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016113e393929190611bb3565b60405180910390fd5b602084016113fa8482611a67565b905060006114088585611b67565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006115b4565b82156114b857602083106114685760208304840193506020838161146457611464611a94565b0692505b82156114b85760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114a9575050610283565b50600194909401939182900391015b5b602082106114da5780518455600190930192601f19909101906020016114b9565b8115610283576000600019600884021c198554835182169119161785555050505050565b60008383604051602001611513929190611a16565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061026161158d84846112c7565b5490565b60405160208101601f19603f84840101166040528282526109ee8585858461162f565b606060006115c28560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816115e8576115e8611a94565b04905060405193506020840160208202810160405281855260005b82811015611623578451871c825293870193602090910190600101611603565b50505050509392505050565b82156116b857602083106116595760208304840193506020838161165557611655611a94565b0692505b82156116b857602083900360008184101561167d5750600019600884021c19611688565b50600019600882021c195b8554600886021b8119845116828216178452508184116116a9575050610283565b50600194909401939182900391015b5b602082106116da5783548152600190930192601f19909101906020016116b9565b8115610283576000600019600884021c198251865482169119161782525050505050565b60006020828403121561171057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b03811681146106db57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177e57600080fd5b813567ffffffffffffffff8082111561179957611799611757565b604051601f8301601f19908116603f011681019082821181831017156117c1576117c1611757565b816040528381528660208588010111156117da57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561180f57600080fd5b61181884611740565b925060208401359150604084013567ffffffffffffffff81111561183b57600080fd5b6118478682870161176d565b9150509250925092565b6000806000806080858703121561186757600080fd5b61187085611740565b935060208501359250604085013567ffffffffffffffff81111561189357600080fd5b61189f8782880161176d565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156118e7576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561191d57815187529582019590820190600101611901565b509495945050505050565b84815260806020820152600061194160808301866118ed565b60ff949094166040830152506060015292915050565b60006020828403121561196957600080fd5b5051919050565b82815260406020820152600061041160408301846118ed565b6000815180845260005b818110156119af57602081850181015186830182015201611993565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006119e860a08301876118ed565b60ff861660408401528281036060840152611a038186611989565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611a4457815184529284019290840190600101611a28565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611a51565b60006000198203611a8d57611a8d611a51565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846118ed565b838152606060208201526000611ad660608301856118ed565b9050826040830152949350505050565b606081526000611af960608301866118ed565b65ffffffffffff851660208401528281036040840152611b198185611989565b9695505050505050565b848152608060208201526000611b3c60808301866118ed565b65ffffffffffff851660408401528281036060840152611b5c8185611989565b979650505050505050565b818103818111156101e1576101e1611a51565b80820281158282048414176101e1576101e1611a51565b600082611bae57634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611bc66060830186611989565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611b1f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a610085366004611687565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046116f6565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046117c1565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103e0565b6001915050610254565b801561024e5760001901610227856102476101e7565b86846104e0565b60009150505b9392505050565b61026e6102666101e7565b8484846104e0565b505050565b60006101f1610626565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f56117f4565b602002602001018181525050836001600160a01b031660001b81600181518110610321576103216117f4565b6020026020010181815250508281600281518110610341576103416117f4565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f53797374656d626f756e6444656c6567000000000000000000000000000000006030840152916103d691016040516020818303038152906040526103ae9061180a565b8360007e20010020000000000000000000000000000000000000000000000000000000610665565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b81600081518110610423576104236117f4565b602002602001018181525050826001600160a01b031660001b8160018151811061044f5761044f6117f4565b602002602001018181525050818160028151811061046f5761046f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c656700000000000000000000000000000000603082015281518082039093018352810190526104da906104d49061180a565b8261072a565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b81600081518110610523576105236117f4565b602002602001018181525050836001600160a01b031660001b8160018151811061054f5761054f6117f4565b602002602001018181525050828160028151811061056f5761056f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c6567000000000000000000000000000000006030820152815180820390930183528101905261061f906105d49061180a565b826000856040516020016105ea91815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006107ce565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610660573391505090565b919050565b600080610670610626565b9050306001600160a01b038216036106965761068e86868686610884565b915050610722565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906106e190899089908990899060040161186c565b602060405180830381865afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068e919061189b565b949350505050565b6000610734610626565b9050306001600160a01b038216036107505761026e83836108ba565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061079790869086906004016118b4565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050505050565b60006107d8610626565b9050306001600160a01b038216036107fc576107f786868686866108d1565b61087c565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108499089908990899089908990600401611913565b600060405180830381600087803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050505b505050505050565b60006108b161089386866108e6565b60ff858116601b0360080285901c166108ac858761093c565b61097f565b95945050505050565b6108cd82826108c8856109d0565b610afe565b5050565b61061f85856108e0848761093c565b85610e11565b600082826040516020016108fb92919061195a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109775761096360ff601b83900360080287901c16836119ab565b91508061096f816119be565b915050610941565b509392505050565b6000602082106109a5576020820484019350602082816109a1576109a16119d8565b0691505b508254600882021b602082900380841115610977576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610a479061180a565b8203610a7357507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610af59101604051602081830303815290604052610aef9061180a565b846110c0565b6020600061097f565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b8457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b7791906119ee565b60405180910390a2505050565b6000610b8f846110dc565b905060005b8151811015610c6c576000828281518110610bb157610bb16117f4565b60200260200101519050610bdd6040826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610c59576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c2690899089908990600401611a01565b600060405180830381600087803b158015610c4057600080fd5b505af1158015610c54573d6000803e3d6000fd5b505050505b5080610c64816119be565b915050610b94565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c9d91906119ee565b60405180910390a26000610cb185856108e6565b9050610d0a816000610cc2866111da565b67ffffffffffffffff811115610cda57610cda6116e0565b6040519080825280601f01601f191660200182016040528015610d04576020820181803683370190505b506111fd565b6000610d1584611213565b1115610d36576000610d278686611250565b9050610d348160206112a6565b505b60005b825181101561087c576000838281518110610d5657610d566117f4565b60200260200101519050610d826080826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610dfe576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610dcb908a908a908a90600401611a01565b600060405180830381600087803b158015610de557600080fd5b505af1158015610df9573d6000803e3d6000fd5b505050505b5080610e09816119be565b915050610d39565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610e9b57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610e8e93929190611a2a565b60405180910390a26104da565b6000610ea785856108e6565b90506000610eb4866110dc565b905060005b8151811015610f93576000828281518110610ed657610ed66117f4565b60200260200101519050610f026004826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610f80576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610f4d908b908b908b908b90600401611a5d565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b505050505b5080610f8b816119be565b915050610eb9565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610fc893929190611a2a565b60405180910390a2610fe3828565ffffffffffff16856111fd565b60005b81518110156107c5576000828281518110611003576110036117f4565b6020026020010151905061102f6008826affffffffffffffffffffff19166111bc90919063ffffffff16565b156110ad576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061107a908b908b908b908b90600401611a5d565b600060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050505b50806110b8816119be565b915050610fe6565b60408051602081018490529081018290526000906060016108fb565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611116576111166117f4565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906111a59061119d9061180a565b8360006112e3565b90506107226111b7826000845161131d565b6113b6565b60008160ff16826111cd8560581c90565b1660ff1614905092915050565b600060086111ea60026020611aa1565b6111f49190611ab4565b9190911c919050565b61026e8383835161120e8560200190565b6113c7565b6000600860018061122660026020611aa1565b6112309190611aa1565b61123a9190611aa1565b6112449190611ab4565b8260ff911c1692915050565b6000828260405160200161126592919061195a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206112b583601f6119ab565b6112bf9190611acb565b6112c990846119ab565b90505b8083101561026e57600083556001830192506112cc565b60606107226112f3858585611487565b6000611318856113038989611507565b9060ff166028026038011c64ffffffffff1690565b61151a565b6000818311158015611330575083518211155b611375578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161136c93929190611aed565b60405180910390fd5b6020840161138384826119ab565b905060006113918585611aa1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061153d565b821561144157602083106113f1576020830484019350602083816113ed576113ed6119d8565b0692505b82156114415760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114325750506104da565b50600194909401939182900391015b5b602082106114635780518455600190930192601f1990910190602001611442565b81156104da576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161149c92919061195a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546115168484611250565b5490565b60405160208101601f19603f8484010116604052828252610977858585846115b8565b6060600061154b8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611571576115716119d8565b04905060405193506020840160208202810160405281855260005b828110156115ac578451871c82529387019360209091019060010161158c565b50505050509392505050565b821561164157602083106115e2576020830484019350602083816115de576115de6119d8565b0692505b82156116415760208390036000818410156116065750600019600884021c19611611565b50600019600882021c195b8554600886021b8119845116828216178452508184116116325750506104da565b50600194909401939182900391015b5b602082106116635783548152600190930192601f1990910190602001611642565b81156104da576000600019600884021c198251865482169119161782525050505050565b60006020828403121561169957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b038116811461066057600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561170b57600080fd5b611714846116c9565b925060208401359150604084013567ffffffffffffffff8082111561173857600080fd5b818601915086601f83011261174c57600080fd5b81358181111561175e5761175e6116e0565b604051601f8201601f19908116603f01168101908382118183101715611786576117866116e0565b8160405282815289602084870101111561179f57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806000606084860312156117d657600080fd5b6117df846116c9565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b8051602080830151919081101561182b576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561186157815187529582019590820190600101611845565b509495945050505050565b8481526080602082015260006118856080830186611831565b60ff949094166040830152506060015292915050565b6000602082840312156118ad57600080fd5b5051919050565b8281526040602082015260006107226040830184611831565b6000815180845260005b818110156118f3576020818501810151868301820152016118d7565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061192c60a0830187611831565b60ff86166040840152828103606084015261194781866118cd565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156119885781518452928401929084019060010161196c565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611995565b600060001982036119d1576119d1611995565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611831565b838152606060208201526000611a1a6060830185611831565b9050826040830152949350505050565b606081526000611a3d6060830186611831565b65ffffffffffff8516602084015282810360408401526103d681856118cd565b848152608060208201526000611a766080830186611831565b65ffffffffffff851660408401528281036060840152611a9681856118cd565b979650505050505050565b818103818111156101e1576101e1611995565b80820281158282048414176101e1576101e1611995565b600082611ae857634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b0060608301866118cd565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611444806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a61008536600461102c565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da3660046110a8565b610203565b604051601f193601358152602001610096565b610105610100366004611173565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf5854770000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b83836103b9565b5050565b60006101fe610511565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000928101929092526000602283018190527f54696d65626f756e6444656c65676174000000000000000000000000000000006030840152916103b09101604051602081830303815290604052610388906111b3565b8360007e2001002000000000000000000000000000000000000000000000000000000061055d565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106104075761040761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104405761044061119d565b602090810291909101810191909152604080517f746200000000000000000000000000000000000000000000000000000000000081840152600060228201527f54696d65626f756e6444656c65676174000000000000000000000000000000006030820152815180820390930183528101905261050b906104c0906111b3565b826000856040516020016104d691815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061063c565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610558573391505090565b919050565b600080610568610511565b90503073ffffffffffffffffffffffffffffffffffffffff82160361059b576105938686868661070c565b915050610634565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906105f3908990899089908990600401611215565b602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611244565b949350505050565b6000610646610511565b90503073ffffffffffffffffffffffffffffffffffffffff821603610677576106728686868686610739565b610704565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906106d190899089908990899089906004016112a3565b600060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050505b505050505050565b60006103b061071b8686610755565b60ff858116601b0360080285901c1661073485876107ab565b6107ee565b61074e858561074884876107ab565b8561083f565b5050505050565b6000828260405160200161076a9291906112ea565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107e6576107d260ff601b83900360080287901c168361133b565b9150806107de8161134e565b9150506107b0565b509392505050565b6000602082106108145760208204840193506020828161081057610810611368565b0691505b508254600882021b6020829003808411156107e6576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036108c957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108bc9392919061137e565b60405180910390a261050b565b60006108d58585610755565b905060006108e286610af7565b905060005b81518110156109c15760008282815181106109045761090461119d565b602002602001015190506109306004826affffffffffffffffffffff1916610bf290919063ffffffff16565b156109ae576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061097b908b908b908b908b906004016113bb565b600060405180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050505b50806109b98161134e565b9150506108e7565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109f69392919061137e565b60405180910390a2610a11828565ffffffffffff1685610c10565b60005b8151811015610aee576000828281518110610a3157610a3161119d565b60200260200101519050610a5d6008826affffffffffffffffffffff1916610bf290919063ffffffff16565b15610adb576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610aa8908b908b908b908b906004016113bb565b600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b505050505b5080610ae68161134e565b915050610a14565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b3157610b3161119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610bdb90610bd3906111b3565b836000610c2b565b9050610634610bed8260008451610c65565b610cfe565b60008160ff1682610c038560581c90565b1660ff1614905092915050565b610c2683838351610c218560200190565b610d16565b505050565b6060610634610c3b858585610dd6565b6000610c6085610c4b8989610e56565b9060ff166028026038011c64ffffffffff1690565b610e69565b6000818311158015610c78575083518211155b610cbd578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610cb4939291906113ff565b60405180910390fd5b60208401610ccb848261133b565b90506000610cd98585611424565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610d0f8360156000610e8c565b9392505050565b8215610d905760208310610d4057602083048401935060208381610d3c57610d3c611368565b0692505b8215610d905760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610d8157505061050b565b50600194909401939182900391015b5b60208210610db25780518455600190930192601f1990910190602001610d91565b811561050b576000600019600884021c198554835182169119161785555050505050565b60008383604051602001610deb9291906112ea565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610d0f610e658484610f07565b5490565b60405160208101601f19603f84840101166040528282526107e685858584610f5d565b60606000610e9a8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610ec057610ec0611368565b04905060405193506020840160208202810160405281855260005b82811015610efb578451871c825293870193602090910190600101610edb565b50505050509392505050565b60008282604051602001610f1c9291906112ea565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610fe65760208310610f8757602083048401935060208381610f8357610f83611368565b0692505b8215610fe6576020839003600081841015610fab5750600019600884021c19610fb6565b50600019600882021c195b8554600886021b811984511682821617845250818411610fd757505061050b565b50600194909401939182900391015b5b602082106110085783548152600190930192601f1990910190602001610fe7565b811561050b576000600019600884021c198251865482169119161782525050505050565b60006020828403121561103e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461055857600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156110bd57600080fd5b6110c68461106e565b925060208401359150604084013567ffffffffffffffff808211156110ea57600080fd5b818601915086601f8301126110fe57600080fd5b81358181111561111057611110611092565b604051601f8201601f19908116603f0116810190838211818310171561113857611138611092565b8160405282815289602084870101111561115157600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561118657600080fd5b61118f8361106e565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156111d4576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561120a578151875295820195908201906001016111ee565b509495945050505050565b84815260806020820152600061122e60808301866111da565b60ff949094166040830152506060015292915050565b60006020828403121561125657600080fd5b5051919050565b6000815180845260005b8181101561128357602081850181015186830182015201611267565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006112bc60a08301876111da565b60ff8616604084015282810360608401526112d7818661125d565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611318578151845292840192908401906001016112fc565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee611325565b6000600019820361136157611361611325565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60608152600061139160608301866111da565b65ffffffffffff8516602084015282810360408401526113b1818561125d565b9695505050505050565b8481526080602082015260006113d460808301866111da565b65ffffffffffff8516604084015282810360608401526113f4818561125d565b979650505050505050565b606081526000611412606083018661125d565b60208301949094525060400152919050565b818103818111156101ee576101ee61132556fea164736f6c6343000815000a608060405234801561001057600080fd5b50611766806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c1461021b578063ea29e3ba146102b6576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611244565b6102cb565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610364565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611312565b610373565b60405161016991906113df565b3480156101e557600080fd5b506101f96101f43660046113f2565b6103f7565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610529565b34801561023c57600080fd5b5061025061024b36600461148c565b610533565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046114a5565b61057d565b3480156102ad57600080fd5b506101876105ba565b3480156102c257600080fd5b506101f96105c4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061035e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061036e6106b0565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161039d91906114ee565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5091509150816103ef57805181602001fd5b949350505050565b6040805160008082526020820190925290610418613a3160f11b86866106e2565b905030610423610769565b73ffffffffffffffffffffffffffffffffffffffff160361047f5761047a81838560405160200161045b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107b5565b610522565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104b591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b81526004016104ef959493929190611545565b600060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050505b5050505050565b600061036e610769565b6040805180820190915260008082526020820152604051806040016040528061055a610364565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105b191906113df565b60405180910390fd5b600061036e610364565b306105cd610769565b73ffffffffffffffffffffffffffffffffffffffff1603610651577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610647906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106479060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106df5750335b90565b60006106f0607060106115ac565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107b0573391505090565b919050565b61052285858585856107c68b6107cb565b6108f9565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610842906115bf565b820361086e57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261035e916108f091016040516020818303038152906040526108ea906115bf565b84610c53565b60206000610cac565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361098557857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161097894939291906115e6565b60405180910390a2610c4b565b600061099087610cfe565b905060005b8151811015610a735760008282815181106109b2576109b2611630565b602002602001015190506109de6001826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610a60576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90610a2d908c908c908c908c908c908c90600401611646565b600060405180830381600087803b158015610a4757600080fd5b505af1158015610a5b573d6000803e3d6000fd5b505050505b5080610a6b8161169f565b915050610995565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610aaa94939291906115e6565b60405180910390a26000610abe8888610dfc565b90506000602087019050610ad6826000895184610e11565b6000610ae185610ecf565b1115610b65576000610af38a8a610f0c565b878155905060208601915060008060005b610b0d88610ecf565b8160ff161015610b6057610b228d8d83610f62565b9250610b3d8a8260ff166028026038011c64ffffffffff1690565b9150610b4c8360008488610e11565b610b5682866115ac565b9450600101610b04565b505050505b60005b8351811015610c46576000848281518110610b8557610b85611630565b60200260200101519050610bb16002826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610c33576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610c00908e908e908e908e908e908e90600401611646565b600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050505b5080610c3e8161169f565b915050610b68565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610cd257602082048401935060208281610cce57610cce6116b9565b0691505b508254600882021b602082900380841115610cf6576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d3857610d38611630565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610dc790610dbf906115bf565b836000610fe2565b90506103ef610dd9826000845161101c565b6110ac565b60008160ff1682610def8560581c90565b1660ff1614905092915050565b60008282604051602001610c6b9291906116cf565b8215610e8b5760208310610e3b57602083048401935060208381610e3757610e376116b9565b0692505b8215610e8b5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610e7c575050610ec9565b50600194909401939182900391015b5b60208210610ead5780518455600190930192601f1990910190602001610e8c565b8115610ec95783548151600019600885021c9182169119161784555b50505050565b60006008600180610ee26002602061170a565b610eec919061170a565b610ef6919061170a565b610f00919061171d565b8260ff911c1692915050565b60008282604051602001610f219291906116cf565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610f779291906116cf565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60606103ef610ff2858585610f62565b60006110178561100289896110c4565b9060ff166028026038011c64ffffffffff1690565b6110d7565b600081831115801561102f575083518211155b61106b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105b193929190611734565b6020840161107984826115ac565b90506000611087858561170a565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006110bd83601560006110fa565b9392505050565b60006110bd6110d38484610f0c565b5490565b60405160208101601f19603f8484010116604052828252610cf685858584611175565b606060006111088560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161112e5761112e6116b9565b04905060405193506020840160208202810160405281855260005b82811015611169578451871c825293870193602090910190600101611149565b50505050509392505050565b82156111fe576020831061119f5760208304840193506020838161119b5761119b6116b9565b0692505b82156111fe5760208390036000818410156111c35750600019600884021c196111ce565b50600019600882021c195b8554600886021b8119845116828216178452508184116111ef575050610ec9565b50600194909401939182900391015b5b602082106112205783548152600190930192601f19909101906020016111ff565b8115610ec9576000600019600884021c198251865482169119161782525050505050565b60006020828403121561125657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110bd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156112b7576112b7611286565b604051601f8501601f19908116603f011681019082821181831017156112df576112df611286565b816040528093508581528686860111156112f857600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561132557600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461134957600080fd5b9150602083013567ffffffffffffffff81111561136557600080fd5b8301601f8101851361137657600080fd5b6113858582356020840161129c565b9150509250929050565b60005b838110156113aa578181015183820152602001611392565b50506000910152565b600081518084526113cb81602086016020860161138f565b601f01601f19169290920160200192915050565b6020815260006110bd60208301846113b3565b60008060006060848603121561140757600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461143757600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461146c57600080fd5b91506040840135801515811461148157600080fd5b809150509250925092565b60006020828403121561149e57600080fd5b5035919050565b6000602082840312156114b757600080fd5b813567ffffffffffffffff8111156114ce57600080fd5b8201601f810184136114df57600080fd5b6103ef8482356020840161129c565b6000825161150081846020870161138f565b9190910192915050565b600081518084526020808501945080840160005b8381101561153a5781518752958201959082019060010161151e565b509495945050505050565b85815260a06020820152600061155e60a083018761150a565b828103604084015261157081876113b3565b9050846060840152828103608084015261158a81856113b3565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561035e5761035e611596565b805160208083015191908110156115e0576000198160200360031b1b821691505b50919050565b6080815260006115f9608083018761150a565b828103602084015261160b81876113b3565b9050846040840152828103606084015261162581856113b3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061165f60c083018861150a565b828103604084015261167181886113b3565b9050856060840152828103608084015261168b81866113b3565b9150508260a0830152979650505050505050565b600060001982036116b2576116b2611596565b5060010190565b634e487b7160e01b600052601260045260246000fd5b82815260006020808301845182860160005b828110156116fd578151845292840192908401906001016116e1565b5091979650505050505050565b8181038181111561035e5761035e611596565b808202811582820484141761035e5761035e611596565b60608152600061174760608301866113b3565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610265806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f36600461020f565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061020a573391505090565b919050565b60006020828403121561022157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025157600080fd5b939250505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000815000a","sourceMap":"1578:5931:199:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:381;;;:::i;:::-;;2170:134:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;5155:1492:199:-;;;:::i;2787:146:107:-;;;:::i;6651:856:199:-;;;:::i;1875:141:107:-;;;:::i;1819:584:101:-;;;:::i;:::-;;;4024:14:203;;4017:22;3999:41;;3987:2;3972:18;1819:584:101;3859:187:203;3559:1592:199;;;:::i;2324:1231::-;;;:::i;2022:142:107:-;;;:::i;1572:26:101:-;;;;;;;;;1939:381:199;1996:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1969:5:199;:40;;;;-1:-1:-1;;;;;1969:40:199;;;;;;;;;2015:16;2032:18;:16;:18::i;:::-;2015:36;;;;;;;;;;-1:-1:-1;;;;;4235:55:203;;;2015:36:199;;;4217:74:203;4190:18;;2015:36:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2057:5:199;;2081:31;;-1:-1:-1;;;;;2057:5:199;;;;-1:-1:-1;2057:23:199;;-1:-1:-1;2081:31:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2114:12:199;;;2124:1;2114:12;;;;;;;;;2057:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2163:22;2188:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2215:5:199;;2239:8;;2163:46;;-1:-1:-1;;;;;;2215:5:199;;:23;;2239:25;;539:36:59;2781:46;816:18:94;2780:74:59;;2669:191;2239:25:199;2215:50;;;;;;;;;;;;;5047:25:203;;5035:2;5020:18;;4870:208;2215:50:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2271:5:199;;2292:8;;2271:44;;;;;;;;5335:25:203;;;;-1:-1:-1;;;;;5396:55:203;;;5376:18;;;5369:83;2271:5:199;5468:18:203;;;5461:50;2271:5:199;;;;-1:-1:-1;2271:20:199;;-1:-1:-1;5308:18:203;;2271:44:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:357;1939:381::o;2170:134:107:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:107;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:107;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:107;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5155:1492:199;5283:10;;;;;5291:1;5283:10;;;5047:25:203;5234:4:199;;5283:7;;;;5020:18:203;;5283:10:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5350:9:199;;5341:19;;-1:-1:-1;;;5341:19:199;;-1:-1:-1;;;;;5350:9:199;;;5341:19;;;4217:74:203;5341:8:199;;-1:-1:-1;5341:8:199;;-1:-1:-1;4190:18:203;;5341:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5366:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;5421:5;;5453:9;;;780:71:181;;;-1:-1:-1;;;780:71:181;;;6568:92:203;5421:5:199;6676:11:203;;;6669:100;;;;830:20:181;6785:12:203;;;6778:101;-1:-1:-1;;;;;5421:5:199;;;;:24;;5453:9;;;6895:12:203;780:71:181;;;;;;;;;;;;772:80;;;:::i;:::-;5557:9:199;;5498:84;;-1:-1:-1;;;;;5557:9:199;;;5498:84;;;7454:74:203;7544:18;;;7537:34;;;7427:18;;5498:84:199;;;-1:-1:-1;;5498:84:199;;;;;;;;;;;;;;-1:-1:-1;;;;;5498:84:199;;;;;5421:167;;5498:84;5421:167;;;;;;;;;;5498:84;5421:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5594:14;:12;:14::i;:::-;5691:9;;5682:19;;-1:-1:-1;;;5682:19:199;;-1:-1:-1;;;;;5691:9:199;;;5682:19;;;4217:74:203;5682:8:199;;;;4190:18:203;;5682:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5707:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;5797:5;;5812:9;;5823:8;;;5833:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5833:45:199;-1:-1:-1;;;5833:45:199;;;5797:82;;-1:-1:-1;;;5797:82:199;;5771:23;;-1:-1:-1;;;;;5797:5:199;;;;:14;;:82;;5812:9;;;;;5823:8;;5833:45;;5797:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5797:82:199;;;;;;;;;;;;:::i;:::-;5771:108;;5885:14;:12;:14::i;:::-;5905:23;5942:10;5931:33;;;;;;;;;;;;:::i;:::-;6063:9;;5905:59;;-1:-1:-1;6037:36:199;;5905:59;;-1:-1:-1;;;;;6063:9:199;6037:8;:36::i;:::-;6165:21;;;;;;;;5047:25:203;;;6165:7:199;;;;5020:18:203;;6165:21:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6201:9:199;;6192:19;;-1:-1:-1;;;6192:19:199;;-1:-1:-1;;;;;6201:9:199;;;6192:19;;;4217:74:203;6192:8:199;;-1:-1:-1;6192:8:199;;-1:-1:-1;4190:18:203;;6192:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6217:5:199;;6232:9;;6243:8;;;6253:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6253:45:199;-1:-1:-1;;;6253:45:199;;;6217:82;;-1:-1:-1;;;6217:82:199;;-1:-1:-1;;;;;6217:5:199;;;;-1:-1:-1;6217:14:199;;-1:-1:-1;6217:82:199;;6232:9;;;;;6243:8;;6253:45;;6217:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6217:82:199;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6389:7:199;;6397:16;:12;6412:1;6397:16;:::i;:::-;6389:25;;;;;;;;;;;;;5047::203;;5035:2;5020:18;;4870:208;6389:25:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6429:9:199;;6420:19;;-1:-1:-1;;;6420:19:199;;-1:-1:-1;;;;;6429:9:199;;;6420:19;;;4217:74:203;6420:8:199;;-1:-1:-1;6420:8:199;;-1:-1:-1;4190:18:203;;6420:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6532:9:199;;6543;;6461:92;;;-1:-1:-1;;;;;6532:9:199;;;6461:92;;;10342:34:203;6543:9:199;;;;10392:18:203;;;;10385:43;;;;6461:92:199;;;;;;;;;;10254:18:203;;;;6461:92:199;;;;;;;-1:-1:-1;;;;;6461:92:199;6484:46;6461:92;;;6445:109;;;;:15;;-1:-1:-1;6445:15:199;;-1:-1:-1;6445:109:199;;6461:92;6445:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6560:5:199;;6575:9;;6586:8;;;6596:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6596:45:199;-1:-1:-1;;;6596:45:199;;;6560:82;;-1:-1:-1;;;6560:82:199;;-1:-1:-1;;;;;6560:5:199;;;;-1:-1:-1;6560:14:199;;-1:-1:-1;6560:82:199;;6575:9;;;;;6586:8;;6596:45;;6560:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6560:82:199;;;;;;;;;;;;:::i;:::-;;5205:1442;;;5155:1492::o;2787:146:107:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:856:199;6790:32;6825:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6790:47;;6843:32;6878:122;-1:-1:-1;;;6878:122:199;;:25;:122::i;:::-;7006:5;;:76;;;;;;;;5335:25:203;;;-1:-1:-1;;;;;5396:55:203;;;5376:18;;;5369:83;7006:5:199;5468:18:203;;;5461:50;6843:157:199;;-1:-1:-1;7006:5:199;;;:20;;5308:18:203;;7006:76:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7205:9:199;;7196:19;;-1:-1:-1;;;7196:19:199;;-1:-1:-1;;;;;7205:9:199;;;7196:19;;;4217:74:203;7196:8:199;;-1:-1:-1;7196:8:199;;-1:-1:-1;4190:18:203;;7196:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7244:174:199;;;-1:-1:-1;;;;;11282:55:203;;7244:174:199;;;11264:74:203;457::46;11354:18:203;;;;11347:107;;;;7244:174:199;;;;;;;;;;11237:18:203;;;;7244:174:199;;;;;;;-1:-1:-1;;;;;7244:174:199;7276:49;7244:174;;;7221:203;;;;;:15;;-1:-1:-1;7221:15:199;;-1:-1:-1;7221:203:199;;7244:174;7221:203;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7430:5:199;;7455:9;;7489:12;;;7430:5;7489:12;;;;;;;;;-1:-1:-1;;;;;7430:5:199;;;;-1:-1:-1;7430:24:199;;-1:-1:-1;7455:9:199;;;;;7466:21;;7489:12;;;;;;;;;;-1:-1:-1;7489:12:199;7430:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:788;;6651:856::o;1875:141:107:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:101;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:101;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7454:74:203;;;2221:17:101;7544:18:203;;;7537:34;2196:43:101;;;;;;;;;7427:18:203;;;2196:43:101;;;-1:-1:-1;;1671:64:101;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:101;;;;;;;;;;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:101:o;3559:1592:199:-;3712:9;;3703:19;;-1:-1:-1;;;3703:19:199;;-1:-1:-1;;;;;3712:9:199;;;3703:19;;;4217:74:203;3703:8:199;;;;4190:18:203;;3703:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3728:51;;;;;;;;;;;;;;;;;;:14;:51::i;:::-;3785:5;;3817:9;;;607:73:181;;;-1:-1:-1;;;607:73:181;;;6568:92:203;3785:5:199;6676:11:203;;;6669:100;;;;657:22:181;6785:12:203;;;6778:101;-1:-1:-1;;;;;3785:5:199;;;;:24;;3817:9;;;6895:12:203;607:73:181;;;;;;;;;;;;599:82;;;:::i;:::-;3925:9:199;;3936:8;;3864:85;;-1:-1:-1;;;;;3925:9:199;;;3864:85;;;13017:74:203;13107:18;;;13100:34;3946:1:199;13150:18:203;;;13143:34;12990:18;;3864:85:199;;;-1:-1:-1;;3864:85:199;;;;;;;;;;;;;;-1:-1:-1;;;;;3864:85:199;;;;;3785:170;;3864:85;3785:170;;;;;;;;;;3864:85;3785:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3961:14;:12;:14::i;:::-;4058:9;;4049:19;;-1:-1:-1;;;4049:19:199;;-1:-1:-1;;;;;4058:9:199;;;4049:19;;;4217:74:203;4049:8:199;;;;4190:18:203;;4049:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4074:60;;;;;;;;;;;;;;;;;;:14;:60::i;:::-;4166:5;;4181:9;;4192:8;;;4202:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4202:45:199;-1:-1:-1;;;4202:45:199;;;4166:82;;-1:-1:-1;;;4166:82:199;;4140:23;;-1:-1:-1;;;;;4166:5:199;;;;:14;;:82;;4181:9;;;;;4192:8;;4202:45;;4166:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:82:199;;;;;;;;;;;;:::i;:::-;4140:108;;4254:14;:12;:14::i;:::-;4274:23;4311:10;4300:33;;;;;;;;;;;;:::i;:::-;4432:9;;4274:59;;-1:-1:-1;4406:36:199;;4274:59;;-1:-1:-1;;;;;4432:9:199;4406:8;:36::i;:::-;4537:9;;4528:19;;-1:-1:-1;;;4528:19:199;;-1:-1:-1;;;;;4537:9:199;;;4528:19;;;4217:74:203;4528:8:199;;;;4190:18:203;;4528:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4566:5:199;;4581:9;;4592:8;;4602:50;;4566:5;4602:50;;;5047:25:203;-1:-1:-1;;;;;4566:5:199;;;;-1:-1:-1;4566:14:199;;-1:-1:-1;4581:9:199;;;;;5020:18:203;;4602:50:199;;;-1:-1:-1;;4602:50:199;;;;;;;;;;;;;;-1:-1:-1;;;;;4602:50:199;;;;;4566:87;;4602:50;4566:87;;;;;;;;;;4602:50;4566:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4566:87:199;;;;;;;;;;;;:::i;:::-;4553:100;;4659:43;4716:10;4705:47;;;;;;;;;;;;:::i;:::-;4834:21;;4857:9;;4659:93;;-1:-1:-1;4825:42:199;;-1:-1:-1;;;;;4857:9:199;4825:8;:42::i;:::-;4933:9;;4924:19;;-1:-1:-1;;;4924:19:199;;-1:-1:-1;;;;;4933:9:199;;;4924:19;;;4217:74:203;4924:8:199;;;;4190:18:203;;4924:19:199;4051:246:203;2324:1231:199;2478:9;;2469:19;;-1:-1:-1;;;2469:19:199;;-1:-1:-1;;;;;2478:9:199;;;2469:19;;;4217:74:203;2469:8:199;;;;4190:18:203;;2469:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2494:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;2549:5;;2581:9;;;432:71:181;;;-1:-1:-1;;;432:71:181;;;6568:92:203;2549:5:199;6676:11:203;;;6669:100;;;;482:20:181;6785:12:203;;;6778:101;-1:-1:-1;;;;;2549:5:199;;;;:24;;2581:9;;;6895:12:203;432:71:181;;;;;;;;;;;;424:80;;;:::i;:::-;2702:9:199;;2713:8;;;2723:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2723:45:199;-1:-1:-1;;;2723:45:199;;;2626:154;;;;-1:-1:-1;;;;;2702:9:199;;;;2626:154;;:::i;:::-;;;;-1:-1:-1;;2626:154:199;;;;;;;;;;;;;;-1:-1:-1;;;;;2626:154:199;;;;;2549:237;;2626:154;2549:237;;;;;;;;;;2626:154;2549:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2792:14;:12;:14::i;:::-;2889:9;;2880:19;;-1:-1:-1;;;2880:19:199;;-1:-1:-1;;;;;2889:9:199;;;2880:19;;;4217:74:203;2880:8:199;;;;4190:18:203;;2880:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2905:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;2995:5;;3010:9;;3021:8;;;3031:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3031:45:199;-1:-1:-1;;;3031:45:199;;;2995:82;;-1:-1:-1;;;2995:82:199;;2969:23;;-1:-1:-1;;;;;2995:5:199;;;;:14;;:82;;3010:9;;;;;3021:8;;3031:45;;2995:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2995:82:199;;;;;;;;;;;;:::i;:::-;2969:108;;3083:14;:12;:14::i;:::-;3103:23;3140:10;3129:33;;;;;;;;;;;;:::i;:::-;3261:9;;3103:59;;-1:-1:-1;3235:36:199;;3103:59;;-1:-1:-1;;;;;3261:9:199;3235:8;:36::i;:::-;3337:9;;3328:19;;-1:-1:-1;;;3328:19:199;;-1:-1:-1;;;;;3337:9:199;;;3328:19;;;4217:74:203;3328:8:199;;;;4190:18:203;;3328:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3440:9:199;;3451;;3369:92;;;-1:-1:-1;;;;;3440:9:199;;;3369:92;;;10342:34:203;3451:9:199;;;;10392:18:203;;;;10385:43;;;;3369:92:199;;;;;;;;;;10254:18:203;;;;3369:92:199;;;;;;;-1:-1:-1;;;;;3369:92:199;3392:46;3369:92;;;3353:109;;;;:15;;-1:-1:-1;3353:15:199;;-1:-1:-1;3353:109:199;;3369:92;3353:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3468:5:199;;3483:9;;3494:8;;;3504:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3504:45:199;-1:-1:-1;;;3504:45:199;;;3468:82;;-1:-1:-1;;;3468:82:199;;-1:-1:-1;;;;;3468:5:199;;;;-1:-1:-1;3468:14:199;;-1:-1:-1;3468:82:199;;3483:9;;;;;3494:8;;3504:45;;3468:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3468:82:199;;;;;;;;;;;;:::i;:::-;;2374:1181;;2324:1231::o;2022:142:107:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:107;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;514:223:100:-;551:10;600:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;636:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;671:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;700:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;578:156;;;;;:::i;:::-;-1:-1:-1;;;;;14922:15:203;;;14904:34;;14974:15;;;14969:2;14954:18;;14947:43;15026:15;;;15021:2;15006:18;;14999:43;15078:15;;;15073:2;15058:18;;15051:43;14830:3;14815:19;578:156:100;;;;;;;;;;;;;;;;;;;;;;;567:167;;514:223;:::o;330:580:0:-;394:39;;;;;;;;;15311:21:203;;;;15368:2;15348:18;;;15341:30;15407:22;15387:18;;;15380:50;309:37:102;15482:20:203;;;15475:52;394:8:0;;;;15447:19:203;;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:102;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:102;;883:22:0;;;;;;;309:37:102;883:20:0;:22;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;15311:21:203;;;;15368:2;15348:18;;;15341:30;15407:22;15387:18;;;15380:50;309:37:102;15482:20:203;;;15475:52;953:23:0;;-1:-1:-1;987:8:0;;;;15447:19:203;;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;;;;;;;20928:2:203;1214:49:0;;;20910:21:203;20967:2;20947:18;;;20940:30;21006:27;20986:18;;;20979:55;21051:18;;1214:49:0;20726:349:203;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:101:-;3690:1;-1:-1:-1;;;;;3685:6:101;:1;-1:-1:-1;;;;;3685:6:101;;3681:212;;3712:44;;;;;23043:2:203;23025:21;;;23082:2;23062:18;;;23055:30;23121:34;23116:2;23101:18;;23094:62;23192:7;23187:2;23172:18;;23165:35;23232:3;23217:19;;22841:401;3712:44:101;;;;;;;;3775:34;;;23459:21:203;;;23516:2;23496:18;;;23489:30;23555:12;23550:2;23535:18;;23528:40;-1:-1:-1;;;;;23642:55:203;;23635:4;23620:20;;23613:85;3775:34:101;;;;;;;23600:3:203;3775:34:101;;;3828;;;23921:21:203;;;23978:2;23958:18;;;23951:30;24017:12;24012:2;23997:18;;23990:40;-1:-1:-1;;;;;24104:55:203;;24097:4;24082:20;;24075:85;3828:34:101;;;;;;;24062:3:203;3828:34:101;;;3876:6;:4;:6::i;:::-;3622:277;;:::o;941:257:59:-;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;1084:15;;;1103:31;336:5:16;1103:31:59;;;;1084:51;1139:13;;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;1754:155:0:-;1818:86;317:28:102;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;5047:25:203;;;5035:2;5020:18;;4870: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:101:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;13017:74:203;;;2677:17:101;13107:18:203;;;13100:34;;;;2712:4:101;13150:18:203;;;13143:34;2489:11:101;;1671:64;2586:43;;12990:18:203;;2652:67:101;;;-1:-1:-1;;2652:67:101;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:101;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:101;2820:7;:14;;;;;;;;2409:432::o;5630:121:115:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:115;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:115;;;;;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:203:-;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:203;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:203;;14:681;-1:-1:-1;;;;;;14:681:203: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:203;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:203;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:203;;;;2283:5;-1:-1:-1;;;2311:15:203;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:203;;700:1697;-1:-1:-1;;;;;;;;;700:1697:203: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:203;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:203;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:203: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:203;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:203;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:203;;2992:862;-1:-1:-1;;;;;;;2992:862:203:o;4302:184::-;4354:77;4351:1;4344:88;4451:4;4448:1;4441:15;4475:4;4472:1;4465:15;4491:374;-1:-1:-1;;;;;4706:6:203;4702:55;4691:9;4684:74;4794:2;4789;4778:9;4774:18;4767:30;4665:4;4814:45;4855:2;4844:9;4840:18;4832:6;4814:45;:::i;:::-;4806:53;4491:374;-1:-1:-1;;;;4491:374:203:o;5522:437::-;5601:1;5597:12;;;;5644;;;5665:61;;5719:4;5711:6;5707:17;5697:27;;5665:61;5772:2;5764:6;5761:14;5741:18;5738:38;5735:218;;5809:77;5806:1;5799:88;5910:4;5907:1;5900:15;5938:4;5935:1;5928:15;5735:218;;5522:437;;;:::o;6918:357::-;7036:12;;7083:4;7072:16;;;7066:23;;7036:12;7101:16;;7098:171;;;-1:-1:-1;;7175:4:203;7171:17;;;;7168:1;7164:25;7160:98;7149:110;;6918:357;-1:-1:-1;6918:357:203:o;7582:440::-;-1:-1:-1;;;;;7820:6:203;7816:55;7805:9;7798:74;7908:6;7903:2;7892:9;7888:18;7881:34;7951:2;7946;7935:9;7931:18;7924:30;7779:4;7971:45;8012:2;8001:9;7997:18;7989:6;7971:45;:::i;:::-;7963:53;7582:440;-1:-1:-1;;;;;7582:440:203:o;8027:673::-;8102:5;8132:18;8173:2;8165:6;8162:14;8159:40;;;8179:18;;:::i;:::-;8313:2;8307:9;8379:2;8367:15;;-1:-1:-1;;8363:24:203;;;8389:2;8359:33;8355:42;8343:55;;;8413:18;;;8433:22;;;8410:46;8407:72;;;8459:18;;:::i;:::-;8499:10;8495:2;8488:22;8528:6;8519:15;;8558:6;8550;8543:22;8598:3;8589:6;8584:3;8580:16;8577:25;8574:45;;;8615:1;8612;8605:12;8574:45;8628:66;8687:6;8680:4;8672:6;8668:17;8663:3;8628:66;:::i;:::-;;;;8027:673;;;;;:::o;8705:457::-;8784:6;8837:2;8825:9;8816:7;8812:23;8808:32;8805:52;;;8853:1;8850;8843:12;8805:52;8886:9;8880:16;8919:18;8911:6;8908:30;8905:50;;;8951:1;8948;8941:12;8905:50;8974:22;;9027:4;9019:13;;9015:27;-1:-1:-1;9005:55:203;;9056:1;9053;9046:12;9005:55;9079:77;9148:7;9143:2;9137:9;9132:2;9128;9124:11;9079:77;:::i;9167:162::-;-1:-1:-1;;;;;9254:5:203;9250:54;9243:5;9240:65;9230:93;;9319:1;9316;9309:12;9334:267;9412:6;9465:2;9453:9;9444:7;9440:23;9436:32;9433:52;;;9481:1;9478;9471:12;9433:52;9513:9;9507:16;9532:39;9565:5;9532:39;:::i;:::-;9590:5;9334:267;-1:-1:-1;;;9334:267:203:o;9788:184::-;9840:77;9837:1;9830:88;9937:4;9934:1;9927:15;9961:4;9958:1;9951:15;9977:125;10042:9;;;10063:10;;;10060:36;;;10076:18;;:::i;:::-;9977:125;;;;:::o;10439:218::-;10586:2;10575:9;10568:21;10549:4;10606:45;10647:2;10636:9;10632:18;10624:6;10606:45;:::i;11767:430::-;11964:66;11956:6;11952:79;11947:3;11940:92;11922:3;12061:6;12055:13;12077:74;12144:6;12140:1;12135:3;12131:11;12124:4;12116:6;12112:17;12077:74;:::i;:::-;12171:16;;;;12189:1;12167:24;;11767:430;-1:-1:-1;;;11767:430:203:o;12202:287::-;12331:3;12369:6;12363:13;12385:66;12444:6;12439:3;12432:4;12424:6;12420:17;12385:66;:::i;:::-;12467:16;;;;;12202:287;-1:-1:-1;;12202:287:203:o;12494:277::-;12561:6;12614:2;12602:9;12593:7;12589:23;12585:32;12582:52;;;12630:1;12627;12620:12;12582:52;12662:9;12656:16;12715:5;12708:13;12701:21;12694:5;12691:32;12681:60;;12737:1;12734;12727:12;13370:591;13480:6;13533:2;13521:9;13512:7;13508:23;13504:32;13501:52;;;13549:1;13546;13539:12;13501:52;13582:2;13576:9;13624:2;13616:6;13612:15;13693:6;13681:10;13678:22;13657:18;13645:10;13642:34;13639:62;13636:88;;;13704:18;;:::i;:::-;13740:2;13733:22;13777:16;;13802:39;13777:16;13802:39;:::i;:::-;13850:21;;13925:2;13910:18;;;13904:25;13887:15;;;13880:50;;;;-1:-1:-1;13857:6:203;13370:591;-1:-1:-1;13370:591:203:o;13966:521::-;-1:-1:-1;;;;;14240:6:203;14236:55;14225:9;14218:74;14328:6;14323:2;14312:9;14308:18;14301:34;14371:3;14366:2;14355:9;14351:18;14344:31;14199:4;14392:46;14433:3;14422:9;14418:19;14410:6;14392:46;:::i;:::-;14384:54;;14474:6;14469:2;14458:9;14454:18;14447:34;13966:521;;;;;;;:::o;15664:780::-;15714:3;15755:5;15749:12;15784:36;15810:9;15784:36;:::i;:::-;15839:1;15856:18;;;15883:191;;;;16088:1;16083:355;;;;15849:589;;15883:191;15931:66;15920:9;15916:82;15911:3;15904:95;16054:6;16047:14;16040:22;16032:6;16028:35;16023:3;16019:45;16012:52;;15883:191;;16083:355;16114:5;16111:1;16104:16;16143:4;16188:2;16185:1;16175:16;16213:1;16227:165;16241:6;16238:1;16235:13;16227:165;;;16319:14;;16306:11;;;16299:35;16362:16;;;;16256:10;;16227:165;;;16231:3;;;16421:6;16416:3;16412:16;16405:23;;15849:589;;;;;15664:780;;;;:::o;16449:664::-;16799:66;16794:3;16787:79;16769:3;16885:47;16928:2;16923:3;16919:12;16911:6;16885:47;:::i;:::-;16952:66;16941:78;;17048:31;17043:2;17035:11;;17028:52;17104:2;17096:11;;16449:664;-1:-1:-1;;;16449:664:203:o;17637:694::-;17980:66;17975:3;17968:79;17950:3;18076:6;18070:13;18092:75;18160:6;18155:2;18150:3;18146:12;18139:4;18131:6;18127:17;18092:75;:::i;:::-;18231:66;18226:2;18186:16;;;;18218:11;;;18211:87;-1:-1:-1;18322:2:203;18314:11;;17637:694;-1:-1:-1;17637:694:203:o;18336:545::-;18438:2;18433:3;18430:11;18427:448;;;18474:1;18499:5;18495:2;18488:17;18544:4;18540:2;18530:19;18614:2;18602:10;18598:19;18595:1;18591:27;18585:4;18581:38;18650:4;18638:10;18635:20;18632:47;;;-1:-1:-1;18673:4:203;18632:47;18728:2;18723:3;18719:12;18716:1;18712:20;18706:4;18702:31;18692:41;;18783:82;18801:2;18794:5;18791:13;18783:82;;;18846:17;;;18827:1;18816:13;18783:82;;19117:1471;19243:3;19237:10;19270:18;19262:6;19259:30;19256:56;;;19292:18;;:::i;:::-;19321:97;19411:6;19371:38;19403:4;19397:11;19371:38;:::i;:::-;19365:4;19321:97;:::i;:::-;19473:4;;19537:2;19526:14;;19554:1;19549:782;;;;20375:1;20392:6;20389:89;;;-1:-1:-1;20444:19:203;;;20438:26;20389:89;-1:-1:-1;;19014:1:203;19010:11;;;19006:84;19002:89;18992:100;19098:1;19094:11;;;18989:117;20491:81;;19519:1063;;19549:782;15611:1;15604:14;;;15648:4;15635:18;;-1:-1:-1;;19585:79:203;;;19762:236;19776:7;19773:1;19770:14;19762:236;;;19865:19;;;19859:26;19844:42;;19957:27;;;;19925:1;19913:14;;;;19792:19;;19762:236;;;19766:3;20026:6;20017:7;20014:19;20011:261;;;20087:19;;;20081:26;-1:-1:-1;;20170:1:203;20166:14;;;20182:3;20162:24;20158:97;20154:102;20139:118;20124:134;;20011:261;-1:-1:-1;;;;;20318:1:203;20302:14;;;20298:22;20285:36;;-1:-1:-1;19117:1471:203:o;20593:128::-;20660:9;;;20681:11;;;20678:37;;;20695:18;;:::i;21080:197::-;21208:3;21233:38;21267:3;21259:6;21233:38;:::i;21282:1554::-;21401:3;21395:4;21392:13;21389:26;;21408:5;;21282:1554::o;21389:26::-;21438:37;21470:3;21464:10;21438:37;:::i;:::-;21498:18;21490:6;21487:30;21484:56;;;21520:18;;:::i;:::-;21549:97;21639:6;21599:38;21631:4;21625:11;21599:38;:::i;21549:97::-;21672:1;21700:2;21692:6;21689:14;21717:1;21712:867;;;;22623:1;22640:6;22637:89;;;-1:-1:-1;22692:19:203;;;22686:26;22637:89;-1:-1:-1;;19014:1:203;19010:11;;;19006:84;19002:89;18992:100;19098:1;19094:11;;;18989:117;22739:81;;21682:1148;;21712:867;15611:1;15604:14;;;15648:4;15635:18;;-1:-1:-1;;21748:79:203;;;15611:1;15604:14;;;15648:4;15635:18;;21971:9;21993:251;22007:7;22004:1;22001:14;21993:251;;;22089:21;;;22083:28;22068:44;;22139:1;22212:18;;;;22167:15;;;;22030:4;22023:12;21993:251;;;21997:3;22272:6;22263:7;22260:19;22257:263;;;22333:21;;22327:28;-1:-1:-1;;22430:3:203;22418:1;22414:14;;;22410:24;22406:97;22402:102;22387:118;22372:134;;;-1:-1:-1;;22566:1:203;22550:14;;;22546:22;22533:36;;-1:-1:-1;21282:1554:203:o;24634:764::-;25024:14;25019:3;25012:27;24994:3;25068:6;25062:13;25084:75;25152:6;25147:2;25142:3;25138:12;25131:4;25123:6;25119:17;25084:75;:::i;:::-;25223:3;25218:2;25178:16;;;25210:11;;;25203:24;25252:13;;25274:76;25252:13;25336:2;25328:11;;25321:4;25309:17;;25274:76;:::i;:::-;25370:17;25389:2;25366:26;;24634:764;-1:-1:-1;;;;24634:764:203: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.21+commit.d9974bed\"},\"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\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a\",\"dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f\",\"dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d\",\"dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5\",\"dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8\",\"dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9\",\"dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3\",\"dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e\",\"dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a\",\"dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreHook.sol\":{\"keccak256\":\"0xd267686b3961da4d9a39e2cd39b89d7074ed27a516a03085bb69a6efea0a424e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8c96a99b6c8dab12799165b888ed5c647638a1114bec138dd65ad46c6d1cf34\",\"dweb:/ipfs/QmaMAkfEmRivfHts72hfYiiQiVc15QSRsXkPHM3d2AbFjf\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738\",\"dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f\",\"dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9\",\"dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695\",\"dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee\",\"dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793\",\"dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25\",\"dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/store/test/EchoSubscriber.sol\":{\"keccak256\":\"0xeed6f185742836b27c83efa603b05f632c11371852763eceec9d1e8ecaae8989\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2fea07d8036022a725d60862dad31b7ac72e99272731d3c7391b8be95fe9e97\",\"dweb:/ipfs/QmTEgF2AGtisNesKsRAsu1brs23CcMvsKPVu6abKoAEbDt\"]},\"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol\":{\"keccak256\":\"0xfe4f71b7fb06de6ba0913882bd26144aefe4a66574f5e9aac12b998b3354fb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c68240bf15eeb39641d347ea918607175265965e688bfdf8d87855143c67d47\",\"dweb:/ipfs/QmX1ZSNs8KhqwozScUGCXcQd1g2UqHfpe7XjQotrpef6GC\"]},\"node_modules/@latticexyz/store/test/RevertSubscriber.sol\":{\"keccak256\":\"0x7c1e61e92d2b2f441b99178273bcc2f04e79c316960feba1c7b098d2de1005b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3457cc431d79b53712df1f7ccdba25d3b9b75c006c0ad8eebcb436e277ce296e\",\"dweb:/ipfs/QmTbaA9BvNdY3BUGNX2ECUVEArb6JAm5ZXfVgVdHBum5qM\"]},\"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol\":{\"keccak256\":\"0xf3e2bd87ad4e739859c154c04273b00570d42f4bc7baf811686f55d500131bbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1c595200d3c743daa570303bc53a567fa496f58250d40730e49c1ff5d592c07\",\"dweb:/ipfs/Qmd8rfJ2YvqCmPgAm4tuhqzyz9UQ3s6p7ozvqfakwvg86b\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952\",\"dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x1ed755a4addafd3d0fd1b527d46ea9951920496f8104fa836b297b2544d6fed0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a55b1fa9ac9bd53177d529fd9a000d5e4b455a6aec23004c71365d352c6e6fda\",\"dweb:/ipfs/QmWhetkDnCTiyi8C6qZf23misxJfnGWjesStFZV8sdD8oe\"]},\"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\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35\",\"dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c\",\"dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef\",\"dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce\",\"dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01\",\"dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM\"]},\"node_modules/@latticexyz/world/src/SystemHook.sol\":{\"keccak256\":\"0x343831ac06e3fafc03ee1d484f60fe03ba4a9fb7c0b4a2abacbe56f4323dc531\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5b3e313801e9a430c6baf8a58e01813443612e84ceecc9c7cf49f7c3b5bbeac\",\"dweb:/ipfs/QmVQbL4eqmYFtY3LyhA6H2oGDkQX9vdqW27AEichb7XNVc\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14\",\"dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc\",\"dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024\",\"dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol\":{\"keccak256\":\"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43\",\"dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961\",\"dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e\",\"dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91\",\"dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4\",\"dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b\",\"dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b\",\"dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a\",\"dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436\",\"dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330\",\"dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231\",\"dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231\",\"dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9\",\"dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol\":{\"keccak256\":\"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417\",\"dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e\",\"dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0\",\"dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e\",\"dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6\",\"dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24\",\"dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198\",\"dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795\",\"dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45\",\"dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4\"]},\"node_modules/@latticexyz/world/test/DelegationControlMock.sol\":{\"keccak256\":\"0x6f3abd5c97a6e25ee4e879fd906b687f12c45bbad8c85d1e6cff131c7a308bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://438754f984d0dacbc1ada66fec67093c9d5fa390980f92f4becd559b7e562f2b\",\"dweb:/ipfs/QmSpm2u5znk5aFWaLiKWeTpji58LQmFLqgZjEZdL9NXE6a\"]},\"node_modules/@latticexyz/world/test/World.t.sol\":{\"keccak256\":\"0x57c5375e26378df3616937fd0e5b519ef3685f40dcca4f0a4b2e5eff55726713\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://167d2143d092092d532a25eb3febf60c9dffc1f338d40102a6e6acbee1dbb709\",\"dweb:/ipfs/QmNbZ3s8LsUEw5qzT638X84RysFi5ieYgbdL9yohz2MuyJ\"]},\"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol\":{\"keccak256\":\"0x343fba19d487b4c8cca11feb13382b1d26c1f5a49858e4e4cf44eb7d420ceeb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a91604f92bd8329ece0f6c6b5cd92ee2a941f8003a4089f0b9b3c0b6c98c53c\",\"dweb:/ipfs/Qmc2tdP9VLaXbSLQoNGABmausgLrVKanfbRduqaEjuXBG3\"]},\"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol\":{\"keccak256\":\"0x80dd791c832b8a7e7e66b0f4f3c16fb78146c82314d4976f66f5df50250e65b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5270d8479084f21050cb2b526b4a5fef4f8b8ed956c21485bac84dc710bb5c89\",\"dweb:/ipfs/Qmf9Z99HsDZPfxtHgRJaRsEeV2d2QBbYdydFpiyQhrW3iW\"]},\"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol\":{\"keccak256\":\"0x7064d8834de15fb800529d746a7f447245118b2a0228283f419c5578c729162c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b4ff2acb60a2e1f85745bfb73825354a6e64c7d8dcf687d81e63d9c23e4c057\",\"dweb:/ipfs/QmUCJyJ3XBjz7q9KhHRzYvo61stHx3HkHrAaDYquvj4Wcu\"]},\"node_modules/@latticexyz/world/test/createCoreModule.sol\":{\"keccak256\":\"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2\",\"dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39\"]},\"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\":\"0x4ffc74a2efd60b85017e62f86a7064080af340b9035bf966ca4d8828e651b844\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05c8e2327cc3cab8b86a501f2c1ac7a11f48ae0f630f6da83313e148b86a9305\",\"dweb:/ipfs/QmTRnkUjw3Z6arL1VVfUezcUPdJkVTeFupfCj8zMjCYhkU\"]},\"src/modules/std-delegations/StandardDelegationsModule.sol\":{\"keccak256\":\"0xefb2c0521832d7beef2b28b8c1e84cc4489814f924ca10b7b1ac46c6df407f1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://464f0c716bb54b2a68c158d1344bb6caef6f4f4880198d0d14518c1f0410916a\",\"dweb:/ipfs/QmQRv3CEjJQBYRPQqKAKPCXy8EQ9zRKMRyxyMaDLQ4yoZ8\"]},\"src/modules/std-delegations/SystemboundDelegationControl.sol\":{\"keccak256\":\"0x1a50addb0b25faa7b7ce3fa6476fdc95441307b401a9b270db48c27a4f765482\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ebbef452bbc2c6e6bbfe65ebb4e0fe1a66f5eec8fdea7ee21e08ba971345fd8\",\"dweb:/ipfs/QmebvardDX1wS6ccHrCy2RNmjk8XyqxfheJULV9sP3ZwEf\"]},\"src/modules/std-delegations/TimeboundDelegationControl.sol\":{\"keccak256\":\"0xe51c156a060064d97a2c2a808b970eb6b505f18ebc35367d112dedcadd15570f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ac21cb1fe67133ca85705426efff56e07102bf91b5341b05fe143049ceab402\",\"dweb:/ipfs/QmXTsVdx6L9wCaJyGXBoHuVEPPcRMF73Zkd6nJGAh4QvUk\"]},\"src/modules/std-delegations/constants.sol\":{\"keccak256\":\"0x49909035aea56d5d624d7b2d838b8fd178b15ea4eb61436ab95055acb756e3ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48ad133faf1c1f17f1f4cd0009fc0e244bfd9d2dd44168ce85c58ea2ee6f592f\",\"dweb:/ipfs/QmQb69qiCyf4GwWn4rwzGb9kmBHnWNbsgH6t8pbm76xMy8\"]},\"src/modules/std-delegations/tables/CallboundDelegations.sol\":{\"keccak256\":\"0x83ded262b7376dc2427e138c8a59bfbc4067acd02c497b1a5f9a042994123ff7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fa21173779b1117c074534bbd783e5dfcaa976d5e6a6fd7c5d394edd1e7ea88\",\"dweb:/ipfs/QmRxHALpWmzU2MZGu6q3b4FVtwt7VnryiVkrivdDek68FF\"]},\"src/modules/std-delegations/tables/SystemboundDelegations.sol\":{\"keccak256\":\"0xa049680113330862d69bd953b261381ae22110c7a267a46bad3f76335c4a61bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://319cff0545ceab895d470a98306b8fd87503ab799346190b90322098fd3bba89\",\"dweb:/ipfs/QmS4dBSi2McCyv18jntMkY5dAqqASu5XXubdY6NakS3RkS\"]},\"src/modules/std-delegations/tables/TimeboundDelegations.sol\":{\"keccak256\":\"0xe9c40ceb0b9742eb11cde0068c0eea7696c04c2daf2977174ebbb7fbb5c24921\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6916eadd6f0fadc1f475754ba46e65ac81b6949c9be335c221f293a0e006afe2\",\"dweb:/ipfs/QmQgwZaLovgA2XLDyYwwjkP4GqHjqt1QxFz2RyP7sdvQpg\"]},\"test/StandardDelegationsModule.t.sol\":{\"keccak256\":\"0xb7c382f15a6ffa8de738ed6e902e63c5420614da9f8a97b47150329635c1aba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da3c7433e4d640af2bb4efc99f38ba0a96828acf5861f21766438b6b05f00a9f\",\"dweb:/ipfs/QmeiR8RihDBAP947yY6QgHp9EHXZk9AZnsBzHTY3PbXwDP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"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":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b","urls":["bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a","dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f","urls":["bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f","dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a","urls":["bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d","dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9","urls":["bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5","dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91","urls":["bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8","dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9","urls":["bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9","dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710","urls":["bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3","dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7","urls":["bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e","dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94","urls":["bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a","dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreHook.sol":{"keccak256":"0xd267686b3961da4d9a39e2cd39b89d7074ed27a516a03085bb69a6efea0a424e","urls":["bzz-raw://c8c96a99b6c8dab12799165b888ed5c647638a1114bec138dd65ad46c6d1cf34","dweb:/ipfs/QmaMAkfEmRivfHts72hfYiiQiVc15QSRsXkPHM3d2AbFjf"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa","urls":["bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738","dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6","urls":["bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f","dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782","urls":["bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9","dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d","urls":["bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695","dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91","urls":["bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee","dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f","urls":["bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793","dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650","urls":["bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25","dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/store/test/EchoSubscriber.sol":{"keccak256":"0xeed6f185742836b27c83efa603b05f632c11371852763eceec9d1e8ecaae8989","urls":["bzz-raw://c2fea07d8036022a725d60862dad31b7ac72e99272731d3c7391b8be95fe9e97","dweb:/ipfs/QmTEgF2AGtisNesKsRAsu1brs23CcMvsKPVu6abKoAEbDt"],"license":"MIT"},"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol":{"keccak256":"0xfe4f71b7fb06de6ba0913882bd26144aefe4a66574f5e9aac12b998b3354fb06","urls":["bzz-raw://3c68240bf15eeb39641d347ea918607175265965e688bfdf8d87855143c67d47","dweb:/ipfs/QmX1ZSNs8KhqwozScUGCXcQd1g2UqHfpe7XjQotrpef6GC"],"license":"MIT"},"node_modules/@latticexyz/store/test/RevertSubscriber.sol":{"keccak256":"0x7c1e61e92d2b2f441b99178273bcc2f04e79c316960feba1c7b098d2de1005b7","urls":["bzz-raw://3457cc431d79b53712df1f7ccdba25d3b9b75c006c0ad8eebcb436e277ce296e","dweb:/ipfs/QmTbaA9BvNdY3BUGNX2ECUVEArb6JAm5ZXfVgVdHBum5qM"],"license":"MIT"},"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol":{"keccak256":"0xf3e2bd87ad4e739859c154c04273b00570d42f4bc7baf811686f55d500131bbf","urls":["bzz-raw://a1c595200d3c743daa570303bc53a567fa496f58250d40730e49c1ff5d592c07","dweb:/ipfs/Qmd8rfJ2YvqCmPgAm4tuhqzyz9UQ3s6p7ozvqfakwvg86b"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41","urls":["bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952","dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x1ed755a4addafd3d0fd1b527d46ea9951920496f8104fa836b297b2544d6fed0","urls":["bzz-raw://a55b1fa9ac9bd53177d529fd9a000d5e4b455a6aec23004c71365d352c6e6fda","dweb:/ipfs/QmWhetkDnCTiyi8C6qZf23misxJfnGWjesStFZV8sdD8oe"],"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":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900","urls":["bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35","dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9","urls":["bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c","dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881","urls":["bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef","dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19","urls":["bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce","dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2","urls":["bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01","dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemHook.sol":{"keccak256":"0x343831ac06e3fafc03ee1d484f60fe03ba4a9fb7c0b4a2abacbe56f4323dc531","urls":["bzz-raw://c5b3e313801e9a430c6baf8a58e01813443612e84ceecc9c7cf49f7c3b5bbeac","dweb:/ipfs/QmVQbL4eqmYFtY3LyhA6H2oGDkQX9vdqW27AEichb7XNVc"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b","urls":["bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14","dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff","urls":["bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc","dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed","urls":["bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024","dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol":{"keccak256":"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350","urls":["bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43","dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8","urls":["bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961","dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb","urls":["bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e","dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426","urls":["bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91","dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac","urls":["bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4","dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed","urls":["bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b","dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd","urls":["bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b","dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527","urls":["bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a","dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8","urls":["bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436","dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22","urls":["bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330","dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a","urls":["bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231","dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5","urls":["bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231","dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43","urls":["bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9","dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol":{"keccak256":"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125","urls":["bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417","dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0","urls":["bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e","dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc","urls":["bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0","dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc","urls":["bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e","dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d","urls":["bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6","dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc","urls":["bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24","dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427","urls":["bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198","dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039","urls":["bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795","dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3","urls":["bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45","dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4"],"license":"MIT"},"node_modules/@latticexyz/world/test/DelegationControlMock.sol":{"keccak256":"0x6f3abd5c97a6e25ee4e879fd906b687f12c45bbad8c85d1e6cff131c7a308bf1","urls":["bzz-raw://438754f984d0dacbc1ada66fec67093c9d5fa390980f92f4becd559b7e562f2b","dweb:/ipfs/QmSpm2u5znk5aFWaLiKWeTpji58LQmFLqgZjEZdL9NXE6a"],"license":"MIT"},"node_modules/@latticexyz/world/test/World.t.sol":{"keccak256":"0x57c5375e26378df3616937fd0e5b519ef3685f40dcca4f0a4b2e5eff55726713","urls":["bzz-raw://167d2143d092092d532a25eb3febf60c9dffc1f338d40102a6e6acbee1dbb709","dweb:/ipfs/QmNbZ3s8LsUEw5qzT638X84RysFi5ieYgbdL9yohz2MuyJ"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol":{"keccak256":"0x343fba19d487b4c8cca11feb13382b1d26c1f5a49858e4e4cf44eb7d420ceeb1","urls":["bzz-raw://7a91604f92bd8329ece0f6c6b5cd92ee2a941f8003a4089f0b9b3c0b6c98c53c","dweb:/ipfs/Qmc2tdP9VLaXbSLQoNGABmausgLrVKanfbRduqaEjuXBG3"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol":{"keccak256":"0x80dd791c832b8a7e7e66b0f4f3c16fb78146c82314d4976f66f5df50250e65b9","urls":["bzz-raw://5270d8479084f21050cb2b526b4a5fef4f8b8ed956c21485bac84dc710bb5c89","dweb:/ipfs/Qmf9Z99HsDZPfxtHgRJaRsEeV2d2QBbYdydFpiyQhrW3iW"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol":{"keccak256":"0x7064d8834de15fb800529d746a7f447245118b2a0228283f419c5578c729162c","urls":["bzz-raw://2b4ff2acb60a2e1f85745bfb73825354a6e64c7d8dcf687d81e63d9c23e4c057","dweb:/ipfs/QmUCJyJ3XBjz7q9KhHRzYvo61stHx3HkHrAaDYquvj4Wcu"],"license":"MIT"},"node_modules/@latticexyz/world/test/createCoreModule.sol":{"keccak256":"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8","urls":["bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2","dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39"],"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":"0x4ffc74a2efd60b85017e62f86a7064080af340b9035bf966ca4d8828e651b844","urls":["bzz-raw://05c8e2327cc3cab8b86a501f2c1ac7a11f48ae0f630f6da83313e148b86a9305","dweb:/ipfs/QmTRnkUjw3Z6arL1VVfUezcUPdJkVTeFupfCj8zMjCYhkU"],"license":"MIT"},"src/modules/std-delegations/StandardDelegationsModule.sol":{"keccak256":"0xefb2c0521832d7beef2b28b8c1e84cc4489814f924ca10b7b1ac46c6df407f1e","urls":["bzz-raw://464f0c716bb54b2a68c158d1344bb6caef6f4f4880198d0d14518c1f0410916a","dweb:/ipfs/QmQRv3CEjJQBYRPQqKAKPCXy8EQ9zRKMRyxyMaDLQ4yoZ8"],"license":"MIT"},"src/modules/std-delegations/SystemboundDelegationControl.sol":{"keccak256":"0x1a50addb0b25faa7b7ce3fa6476fdc95441307b401a9b270db48c27a4f765482","urls":["bzz-raw://4ebbef452bbc2c6e6bbfe65ebb4e0fe1a66f5eec8fdea7ee21e08ba971345fd8","dweb:/ipfs/QmebvardDX1wS6ccHrCy2RNmjk8XyqxfheJULV9sP3ZwEf"],"license":"MIT"},"src/modules/std-delegations/TimeboundDelegationControl.sol":{"keccak256":"0xe51c156a060064d97a2c2a808b970eb6b505f18ebc35367d112dedcadd15570f","urls":["bzz-raw://3ac21cb1fe67133ca85705426efff56e07102bf91b5341b05fe143049ceab402","dweb:/ipfs/QmXTsVdx6L9wCaJyGXBoHuVEPPcRMF73Zkd6nJGAh4QvUk"],"license":"MIT"},"src/modules/std-delegations/constants.sol":{"keccak256":"0x49909035aea56d5d624d7b2d838b8fd178b15ea4eb61436ab95055acb756e3ff","urls":["bzz-raw://48ad133faf1c1f17f1f4cd0009fc0e244bfd9d2dd44168ce85c58ea2ee6f592f","dweb:/ipfs/QmQb69qiCyf4GwWn4rwzGb9kmBHnWNbsgH6t8pbm76xMy8"],"license":"MIT"},"src/modules/std-delegations/tables/CallboundDelegations.sol":{"keccak256":"0x83ded262b7376dc2427e138c8a59bfbc4067acd02c497b1a5f9a042994123ff7","urls":["bzz-raw://5fa21173779b1117c074534bbd783e5dfcaa976d5e6a6fd7c5d394edd1e7ea88","dweb:/ipfs/QmRxHALpWmzU2MZGu6q3b4FVtwt7VnryiVkrivdDek68FF"],"license":"MIT"},"src/modules/std-delegations/tables/SystemboundDelegations.sol":{"keccak256":"0xa049680113330862d69bd953b261381ae22110c7a267a46bad3f76335c4a61bf","urls":["bzz-raw://319cff0545ceab895d470a98306b8fd87503ab799346190b90322098fd3bba89","dweb:/ipfs/QmS4dBSi2McCyv18jntMkY5dAqqASu5XXubdY6NakS3RkS"],"license":"MIT"},"src/modules/std-delegations/tables/TimeboundDelegations.sol":{"keccak256":"0xe9c40ceb0b9742eb11cde0068c0eea7696c04c2daf2977174ebbb7fbb5c24921","urls":["bzz-raw://6916eadd6f0fadc1f475754ba46e65ac81b6949c9be335c221f293a0e006afe2","dweb:/ipfs/QmQgwZaLovgA2XLDyYwwjkP4GqHjqt1QxFz2RyP7sdvQpg"],"license":"MIT"},"test/StandardDelegationsModule.t.sol":{"keccak256":"0xb7c382f15a6ffa8de738ed6e902e63c5420614da9f8a97b47150329635c1aba0","urls":["bzz-raw://da3c7433e4d640af2bb4efc99f38ba0a96828acf5861f21766438b6b05f00a9f","dweb:/ipfs/QmeiR8RihDBAP947yY6QgHp9EHXZk9AZnsBzHTY3PbXwDP"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/StandardDelegationsModule.t.sol","id":134857,"exportedSymbols":{"CALLBOUND_DELEGATION":[120838],"CallboundDelegationControl":[120474],"DELEGATION_CONTROL_INTERFACE_ID":[22169],"GasReporter":[226],"IBaseWorld":[24400],"IWorldErrors":[22430],"RESOURCE_SYSTEM":[37052],"ResourceId":[2782],"SYSTEMBOUND_DELEGATION":[120856],"StandardDelegationsModule":[120653],"StandardDelegationsModuleTest":[134856],"System":[22601],"SystemboundDelegationControl":[120749],"Systems":[33812],"TIMEBOUND_DELEGATION":[120874],"Test":[58812],"TimeboundDelegationControl":[120806],"World":[23730],"WorldResourceIdInstance":[24272],"WorldResourceIdLib":[24145],"WorldTestSystem":[37452],"WorldTestSystemReturn":[37248],"createCoreModule":[46913]},"nodeType":"SourceUnit","src":"32:7478:199","nodes":[{"id":134252,"nodeType":"PragmaDirective","src":"32:25:199","nodes":[],"literals":["solidity",">=","0.8",".21"]},{"id":134254,"nodeType":"ImportDirective","src":"59:42:199","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":58813,"symbolAliases":[{"foreign":{"id":134253,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58812,"src":"68:4:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134256,"nodeType":"ImportDirective","src":"102:73:199","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":134255,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134258,"nodeType":"ImportDirective","src":"177:56:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":23731,"symbolAliases":[{"foreign":{"id":134257,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23730,"src":"186:5:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134262,"nodeType":"ImportDirective","src":"234:116:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":24273,"symbolAliases":[{"foreign":{"id":134259,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"243:10:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134260,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"255:18:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134261,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24272,"src":"275:23:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134264,"nodeType":"ImportDirective","src":"351:58:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":22602,"symbolAliases":[{"foreign":{"id":134263,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22601,"src":"360:6:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134266,"nodeType":"ImportDirective","src":"410:79:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":134265,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"419:15:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134268,"nodeType":"ImportDirective","src":"491:85:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":24401,"symbolAliases":[{"foreign":{"id":134267,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"500:10:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134270,"nodeType":"ImportDirective","src":"577:70:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IWorldErrors.sol","file":"@latticexyz/world/src/IWorldErrors.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":22431,"symbolAliases":[{"foreign":{"id":134269,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"586:12:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134272,"nodeType":"ImportDirective","src":"648:95:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IDelegationControl.sol","file":"@latticexyz/world/src/IDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":22186,"symbolAliases":[{"foreign":{"id":134271,"name":"DELEGATION_CONTROL_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22169,"src":"657:31:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134274,"nodeType":"ImportDirective","src":"745:79:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createCoreModule.sol","file":"@latticexyz/world/test/createCoreModule.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":46914,"symbolAliases":[{"foreign":{"id":134273,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"754:16:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134276,"nodeType":"ImportDirective","src":"825:75:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol","file":"@latticexyz/world/src/codegen/tables/Systems.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":33823,"symbolAliases":[{"foreign":{"id":134275,"name":"Systems","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33812,"src":"834:7:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134278,"nodeType":"ImportDirective","src":"902:105:199","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":120654,"symbolAliases":[{"foreign":{"id":134277,"name":"StandardDelegationsModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120653,"src":"911:25:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134280,"nodeType":"ImportDirective","src":"1008:107:199","nodes":[],"absolutePath":"src/modules/std-delegations/CallboundDelegationControl.sol","file":"../src/modules/std-delegations/CallboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":120475,"symbolAliases":[{"foreign":{"id":134279,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120474,"src":"1017:26:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134282,"nodeType":"ImportDirective","src":"1116:111:199","nodes":[],"absolutePath":"src/modules/std-delegations/SystemboundDelegationControl.sol","file":"../src/modules/std-delegations/SystemboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":120750,"symbolAliases":[{"foreign":{"id":134281,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120749,"src":"1125:28:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134284,"nodeType":"ImportDirective","src":"1228:107:199","nodes":[],"absolutePath":"src/modules/std-delegations/TimeboundDelegationControl.sol","file":"../src/modules/std-delegations/TimeboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":120807,"symbolAliases":[{"foreign":{"id":134283,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120806,"src":"1237:26:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134288,"nodeType":"ImportDirective","src":"1336:146:199","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":120654,"symbolAliases":[{"foreign":{"id":134285,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120838,"src":"1345:20:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134286,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120856,"src":"1367:22:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134287,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120874,"src":"1391:20:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134291,"nodeType":"ImportDirective","src":"1484:92:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/World.t.sol","file":"@latticexyz/world/test/World.t.sol","nameLocation":"-1:-1:-1","scope":134857,"sourceUnit":43540,"symbolAliases":[{"foreign":{"id":134289,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"1493:15:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134290,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37248,"src":"1510:21:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134856,"nodeType":"ContractDefinition","src":"1578:5931:199","nodes":[{"id":134299,"nodeType":"UsingForDirective","src":"1642:45:199","nodes":[],"global":false,"libraryName":{"id":134296,"name":"WorldResourceIdInstance","nameLocations":["1648:23:199"],"nodeType":"IdentifierPath","referencedDeclaration":24272,"src":"1648:23:199"},"typeName":{"id":134298,"nodeType":"UserDefinedTypeName","pathNode":{"id":134297,"name":"ResourceId","nameLocations":["1676:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1676:10:199"},"referencedDeclaration":2782,"src":"1676:10:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":134302,"nodeType":"VariableDeclaration","src":"1690:24:199","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1709:5:199","scope":134856,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},"typeName":{"id":134301,"nodeType":"UserDefinedTypeName","pathNode":{"id":134300,"name":"IBaseWorld","nameLocations":["1690:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":24400,"src":"1690:10:199"},"referencedDeclaration":24400,"src":"1690:10:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"visibility":"private"},{"id":134311,"nodeType":"VariableDeclaration","src":"1718:132:199","nodes":[],"constant":false,"mutability":"mutable","name":"systemId","nameLocation":"1737:8:199","scope":134856,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134304,"nodeType":"UserDefinedTypeName","pathNode":{"id":134303,"name":"ResourceId","nameLocations":["1718:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1718:10:199"},"referencedDeclaration":2782,"src":"1718:10:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"value":{"arguments":[{"id":134307,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"1788:15:199","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":134308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1816:11:199","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"7465737453797374656d","id":134309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1835:12:199","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":134305,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"1752:18:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":134306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:199","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"1752:25:199","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":134310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1780:6:199","1805:9:199","1829:4:199"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"1752:98:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"private"},{"id":134317,"nodeType":"VariableDeclaration","src":"1854:38:199","nodes":[],"constant":false,"mutability":"mutable","name":"delegator","nameLocation":"1870:9:199","scope":134856,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134312,"name":"address","nodeType":"ElementaryTypeName","src":"1854:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"31","id":134315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:199","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":134314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1882:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134313,"name":"address","nodeType":"ElementaryTypeName","src":"1882:7:199","typeDescriptions":{}}},"id":134316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1882:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":134323,"nodeType":"VariableDeclaration","src":"1896:38:199","nodes":[],"constant":false,"mutability":"mutable","name":"delegatee","nameLocation":"1912:9:199","scope":134856,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134318,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"32","id":134321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1932:1:199","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":134320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1924:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134319,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:199","typeDescriptions":{}}},"id":134322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":134383,"nodeType":"FunctionDefinition","src":"1939:381:199","nodes":[],"body":{"id":134382,"nodeType":"Block","src":"1963:357:199","nodes":[],"statements":[{"expression":{"id":134336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":134326,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"1969:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1996:9:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_World_$23730_$","typeString":"function () returns (contract World)"},"typeName":{"id":134331,"nodeType":"UserDefinedTypeName","pathNode":{"id":134330,"name":"World","nameLocations":["2000:5:199"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"2000:5:199"},"referencedDeclaration":23730,"src":"2000:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}},"id":134333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:11:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}],"id":134329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1988:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134328,"name":"address","nodeType":"ElementaryTypeName","src":"1988:7:199","typeDescriptions":{}}},"id":134334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1988:20:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":134327,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"1977:10:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseWorld_$24400_$","typeString":"type(contract IBaseWorld)"}},"id":134335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1977:32:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"src":"1969:40:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134337,"nodeType":"ExpressionStatement","src":"1969:40:199"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134341,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"2032:16:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_CoreModule_$35431_$","typeString":"function () returns (contract CoreModule)"}},"id":134342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2032:18:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}],"expression":{"id":134338,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"2015:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2021:10:199","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":22506,"src":"2015:16:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$returns$__$","typeString":"function (contract IModule) external"}},"id":134343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2015:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134344,"nodeType":"ExpressionStatement","src":"2015:36:199"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2081:29:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_StandardDelegationsModule_$120653_$","typeString":"function () returns (contract StandardDelegationsModule)"},"typeName":{"id":134349,"nodeType":"UserDefinedTypeName","pathNode":{"id":134348,"name":"StandardDelegationsModule","nameLocations":["2085:25:199"],"nodeType":"IdentifierPath","referencedDeclaration":120653,"src":"2085:25:199"},"referencedDeclaration":120653,"src":"2085:25:199","typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$120653","typeString":"contract StandardDelegationsModule"}}},"id":134351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:31:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$120653","typeString":"contract StandardDelegationsModule"}},{"arguments":[{"hexValue":"30","id":134354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2124:1:199","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":134353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2114:9:199","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":134352,"name":"bytes","nodeType":"ElementaryTypeName","src":"2118:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":134355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2114:12:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardDelegationsModule_$120653","typeString":"contract StandardDelegationsModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134345,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"2057:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2063:17:199","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"2057:23:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":134356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2057:70:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134357,"nodeType":"ExpressionStatement","src":"2057:70:199"},{"assignments":[134360],"declarations":[{"constant":false,"id":134360,"mutability":"mutable","name":"system","nameLocation":"2179:6:199","nodeType":"VariableDeclaration","scope":134382,"src":"2163:22:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"},"typeName":{"id":134359,"nodeType":"UserDefinedTypeName","pathNode":{"id":134358,"name":"WorldTestSystem","nameLocations":["2163:15:199"],"nodeType":"IdentifierPath","referencedDeclaration":37452,"src":"2163:15:199"},"referencedDeclaration":37452,"src":"2163:15:199","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}},"visibility":"internal"}],"id":134365,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":134363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2188:19:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_WorldTestSystem_$37452_$","typeString":"function () returns (contract WorldTestSystem)"},"typeName":{"id":134362,"nodeType":"UserDefinedTypeName","pathNode":{"id":134361,"name":"WorldTestSystem","nameLocations":["2192:15:199"],"nodeType":"IdentifierPath","referencedDeclaration":37452,"src":"2192:15:199"},"referencedDeclaration":37452,"src":"2192:15:199","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}}},"id":134364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2188:21:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}},"nodeType":"VariableDeclarationStatement","src":"2163:46:199"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":134369,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"2239:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":134370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2248:14:199","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"2239:23:199","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":134371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2239:25:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":134366,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"2215:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2221:17:199","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"2215:23:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":134372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2215:50:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134373,"nodeType":"ExpressionStatement","src":"2215:50:199"},{"expression":{"arguments":[{"id":134377,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"2292:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":134378,"name":"system","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134360,"src":"2302:6:199","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}},{"hexValue":"74727565","id":134379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2310:4:199","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":134374,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"2271:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2277:14:199","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2271:20:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":134380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2271:44:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134381,"nodeType":"ExpressionStatement","src":"2271:44:199"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1948:5:199","parameters":{"id":134324,"nodeType":"ParameterList","parameters":[],"src":"1953:2:199"},"returnParameters":{"id":134325,"nodeType":"ParameterList","parameters":[],"src":"1963:0:199"},"scope":134856,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134496,"nodeType":"FunctionDefinition","src":"2324:1231:199","nodes":[],"body":{"id":134495,"nodeType":"Block","src":"2374:1181:199","nodes":[],"statements":[{"expression":{"arguments":[{"id":134389,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"2478:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134386,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"2469:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2472:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"2469:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2469:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134391,"nodeType":"ExpressionStatement","src":"2469:19:199"},{"expression":{"arguments":[{"hexValue":"726567697374657220612063616c6c626f756e642064656c65676174696f6e","id":134393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2509:33:199","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":134392,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2494:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2494:49:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134395,"nodeType":"ExpressionStatement","src":"2494:49:199"},{"expression":{"arguments":[{"id":134399,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"2581:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134400,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120838,"src":"2598:20:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134403,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120474,"src":"2650:26:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallboundDelegationControl_$120474_$","typeString":"type(contract CallboundDelegationControl)"}},"id":134404,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2677:14:199","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":120473,"src":"2650:41:199","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":134405,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"2702:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134406,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"2713:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134409,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"2738:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2754:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"2738:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2765:2:199","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":134407,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2723:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2727:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"2723:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:45:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"31","id":134413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2770:1:199","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":134414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2701:71:199","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":134401,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2626:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2630:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"2626:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2626:154:199","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":134396,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"2549:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2555:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"2549:24:199","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":134416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:237:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134417,"nodeType":"ExpressionStatement","src":"2549:237:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134418,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2792:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2792:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134420,"nodeType":"ExpressionStatement","src":"2792:14:199"},{"expression":{"arguments":[{"id":134424,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"2889:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134421,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"2880:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2883:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"2880:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2880:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134426,"nodeType":"ExpressionStatement","src":"2880:19:199"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e","id":134428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2920:42:199","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":134427,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2905:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2905:58:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134430,"nodeType":"ExpressionStatement","src":"2905:58:199"},{"assignments":[134432],"declarations":[{"constant":false,"id":134432,"mutability":"mutable","name":"returnData","nameLocation":"2982:10:199","nodeType":"VariableDeclaration","scope":134495,"src":"2969:23:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134431,"name":"bytes","nodeType":"ElementaryTypeName","src":"2969:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":134444,"initialValue":{"arguments":[{"id":134435,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"3010:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134436,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"3021:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134439,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"3046:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3062:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"3046:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134441,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3073:2:199","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":134437,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3031:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134438,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3035:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"3031:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3031:45:199","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":134433,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"2995:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3001:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"2995:14:199","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":134443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2969:108:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134445,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3083:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3083:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134447,"nodeType":"ExpressionStatement","src":"3083:14:199"},{"assignments":[134449],"declarations":[{"constant":false,"id":134449,"mutability":"mutable","name":"returnedAddress","nameLocation":"3111:15:199","nodeType":"VariableDeclaration","scope":134495,"src":"3103:23:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134448,"name":"address","nodeType":"ElementaryTypeName","src":"3103:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":134457,"initialValue":{"arguments":[{"id":134452,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134432,"src":"3140:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3153:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134453,"name":"address","nodeType":"ElementaryTypeName","src":"3153:7:199","typeDescriptions":{}}}],"id":134455,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3152:9:199","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":134450,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3129:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3133:6:199","memberName":"decode","nodeType":"MemberAccess","src":"3129:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3129:33:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"3103:59:199"},{"expression":{"arguments":[{"id":134459,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134449,"src":"3244:15:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134460,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"3261:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134458,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"3235:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3235:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134462,"nodeType":"ExpressionStatement","src":"3235:36:199"},{"expression":{"arguments":[{"id":134466,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"3337:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134463,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3328:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3331:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"3328:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3328:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134468,"nodeType":"ExpressionStatement","src":"3328:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134474,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"3392:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3405:24:199","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22397,"src":"3392:37:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":134476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3430:8:199","memberName":"selector","nodeType":"MemberAccess","src":"3392:46:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":134477,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"3440:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134478,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"3451:9:199","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":134472,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3369:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3373:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3369:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3369:92:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134469,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3353:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3356:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"3353:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:109:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134481,"nodeType":"ExpressionStatement","src":"3353:109:199"},{"expression":{"arguments":[{"id":134485,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"3483:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134486,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"3494:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134489,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"3519:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134490,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3535:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"3519:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3546:2:199","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":134487,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3504:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3508:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"3504:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3504:45:199","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":134482,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"3468:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3474:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"3468:14:199","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":134493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3468:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134494,"nodeType":"ExpressionStatement","src":"3468:82:199"}]},"functionSelector":"e187dc8f","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromCallboundDelegation","nameLocation":"2333:31:199","parameters":{"id":134384,"nodeType":"ParameterList","parameters":[],"src":"2364:2:199"},"returnParameters":{"id":134385,"nodeType":"ParameterList","parameters":[],"src":"2374:0:199"},"scope":134856,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134643,"nodeType":"FunctionDefinition","src":"3559:1592:199","nodes":[],"body":{"id":134642,"nodeType":"Block","src":"3606:1545:199","nodes":[],"statements":[{"expression":{"arguments":[{"id":134502,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"3712:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134499,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3703:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3706:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"3703:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3703:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134504,"nodeType":"ExpressionStatement","src":"3703:19:199"},{"expression":{"arguments":[{"hexValue":"726567697374657220612073797374656d626f756e642064656c65676174696f6e","id":134506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3743:35:199","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":134505,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3728:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3728:51:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134508,"nodeType":"ExpressionStatement","src":"3728:51:199"},{"expression":{"arguments":[{"id":134512,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"3817:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134513,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120856,"src":"3834:22:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134516,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120749,"src":"3879:28:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemboundDelegationControl_$120749_$","typeString":"type(contract SystemboundDelegationControl)"}},"id":134517,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3908:14:199","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":120748,"src":"3879:43:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function SystemboundDelegationControl.initDelegation(address,ResourceId,uint256)"}},{"components":[{"id":134518,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"3925:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134519,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"3936:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"32","id":134520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3946:1:199","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":134521,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3924:24:199","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":134514,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3864:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3868:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"3864:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3864:85:199","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":134509,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"3785:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3791:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"3785:24:199","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":134523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3785:170:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134524,"nodeType":"ExpressionStatement","src":"3785:170:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134525,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3961:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3961:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134527,"nodeType":"ExpressionStatement","src":"3961:14:199"},{"expression":{"arguments":[{"id":134531,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"4058:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134528,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4049:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4049:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134533,"nodeType":"ExpressionStatement","src":"4049:19:199"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6e","id":134535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4089:44:199","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":134534,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"4074:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4074:60:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134537,"nodeType":"ExpressionStatement","src":"4074:60:199"},{"assignments":[134539],"declarations":[{"constant":false,"id":134539,"mutability":"mutable","name":"returnData","nameLocation":"4153:10:199","nodeType":"VariableDeclaration","scope":134642,"src":"4140:23:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134538,"name":"bytes","nodeType":"ElementaryTypeName","src":"4140:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":134551,"initialValue":{"arguments":[{"id":134542,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"4181:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134543,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"4192:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134546,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"4217:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4233:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"4217:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134548,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4244:2:199","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":134544,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4202:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4206:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"4202:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4202:45:199","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":134540,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"4166:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4172:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"4166:14:199","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":134550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4166:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4140:108:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134552,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4254:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134554,"nodeType":"ExpressionStatement","src":"4254:14:199"},{"assignments":[134556],"declarations":[{"constant":false,"id":134556,"mutability":"mutable","name":"returnedAddress","nameLocation":"4282:15:199","nodeType":"VariableDeclaration","scope":134642,"src":"4274:23:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134555,"name":"address","nodeType":"ElementaryTypeName","src":"4274:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":134564,"initialValue":{"arguments":[{"id":134559,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134539,"src":"4311:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4324:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134560,"name":"address","nodeType":"ElementaryTypeName","src":"4324:7:199","typeDescriptions":{}}}],"id":134562,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4323:9:199","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":134557,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4300:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4304:6:199","memberName":"decode","nodeType":"MemberAccess","src":"4300:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4300:33:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"4274:59:199"},{"expression":{"arguments":[{"id":134566,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134556,"src":"4415:15:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134567,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"4432:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134565,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4406:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4406:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134569,"nodeType":"ExpressionStatement","src":"4406:36:199"},{"expression":{"arguments":[{"id":134573,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"4537:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134570,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4528:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4531:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4528:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4528:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134575,"nodeType":"ExpressionStatement","src":"4528:19:199"},{"expression":{"id":134592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":134576,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134539,"src":"4553:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":134579,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"4581:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134580,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"4592:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134583,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"4617:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4633:4:199","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":37292,"src":"4617:20:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$37248_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"}},{"components":[{"arguments":[{"hexValue":"30","id":134587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4648:1:199","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":134586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4640:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":134585,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4640:7:199","typeDescriptions":{}}},"id":134588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4640:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":134589,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4639:12:199","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$37248_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":134581,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4602:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4606:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"4602:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4602:50:199","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":134577,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"4566:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4572:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"4566:14:199","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":134591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4566:87:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4553:100:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134593,"nodeType":"ExpressionStatement","src":"4553:100:199"},{"assignments":[134596],"declarations":[{"constant":false,"id":134596,"mutability":"mutable","name":"returnedStruct","nameLocation":"4688:14:199","nodeType":"VariableDeclaration","scope":134642,"src":"4659:43:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_memory_ptr","typeString":"struct WorldTestSystemReturn"},"typeName":{"id":134595,"nodeType":"UserDefinedTypeName","pathNode":{"id":134594,"name":"WorldTestSystemReturn","nameLocations":["4659:21:199"],"nodeType":"IdentifierPath","referencedDeclaration":37248,"src":"4659:21:199"},"referencedDeclaration":37248,"src":"4659:21:199","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_storage_ptr","typeString":"struct WorldTestSystemReturn"}},"visibility":"internal"}],"id":134603,"initialValue":{"arguments":[{"id":134599,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134539,"src":"4716:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134600,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37248,"src":"4729:21:199","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$37248_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"id":134601,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4728:23:199","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$37248_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$37248_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}],"expression":{"id":134597,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4705:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4709:6:199","memberName":"decode","nodeType":"MemberAccess","src":"4705:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4705:47:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"nodeType":"VariableDeclarationStatement","src":"4659:93:199"},{"expression":{"arguments":[{"expression":{"id":134605,"name":"returnedStruct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134596,"src":"4834:14:199","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"id":134606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4849:6:199","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37245,"src":"4834:21:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134607,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"4857:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134604,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4825:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:42:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134609,"nodeType":"ExpressionStatement","src":"4825:42:199"},{"expression":{"arguments":[{"id":134613,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"4933:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134610,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4924:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4927:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4924:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134615,"nodeType":"ExpressionStatement","src":"4924:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134621,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"4988:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5001:24:199","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22397,"src":"4988:37:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":134623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5026:8:199","memberName":"selector","nodeType":"MemberAccess","src":"4988:46:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":134624,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"5036:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134625,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"5047:9:199","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":134619,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4965:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4969:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4965:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4965:92:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134616,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4949:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4952:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"4949:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4949:109:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134628,"nodeType":"ExpressionStatement","src":"4949:109:199"},{"expression":{"arguments":[{"id":134632,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"5079:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134633,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"5090:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134636,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"5115:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5131:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"5115:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134638,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5142:2:199","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":134634,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5100:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134635,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5104:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"5100:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5100:45:199","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":134629,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"5064:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5070:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"5064:14:199","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":134640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5064:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134641,"nodeType":"ExpressionStatement","src":"5064:82:199"}]},"functionSelector":"d671f65b","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromSystemDelegation","nameLocation":"3568:28:199","parameters":{"id":134497,"nodeType":"ParameterList","parameters":[],"src":"3596:2:199"},"returnParameters":{"id":134498,"nodeType":"ParameterList","parameters":[],"src":"3606:0:199"},"scope":134856,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134792,"nodeType":"FunctionDefinition","src":"5155:1492:199","nodes":[],"body":{"id":134791,"nodeType":"Block","src":"5205:1442:199","nodes":[],"statements":[{"assignments":[134647],"declarations":[{"constant":false,"id":134647,"mutability":"mutable","name":"maxTimestamp","nameLocation":"5219:12:199","nodeType":"VariableDeclaration","scope":134791,"src":"5211:20:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":134646,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":134649,"initialValue":{"hexValue":"34323432","id":134648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5234:4:199","typeDescriptions":{"typeIdentifier":"t_rational_4242_by_1","typeString":"int_const 4242"},"value":"4242"},"nodeType":"VariableDeclarationStatement","src":"5211:27:199"},{"expression":{"arguments":[{"hexValue":"31","id":134653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5291:1:199","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":134650,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5283:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5286:4:199","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":59874,"src":"5283:7:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":134654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5283:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134655,"nodeType":"ExpressionStatement","src":"5283:10:199"},{"expression":{"arguments":[{"id":134659,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"5350:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134656,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5341:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5344:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5341:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5341:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134661,"nodeType":"ExpressionStatement","src":"5341:19:199"},{"expression":{"arguments":[{"hexValue":"726567697374657220612074696d65626f756e642064656c65676174696f6e","id":134663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5381:33:199","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":134662,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5366:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:49:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134665,"nodeType":"ExpressionStatement","src":"5366:49:199"},{"expression":{"arguments":[{"id":134669,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"5453:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134670,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120874,"src":"5470:20:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134673,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120806,"src":"5513:26:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TimeboundDelegationControl_$120806_$","typeString":"type(contract TimeboundDelegationControl)"}},"id":134674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5540:14:199","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":120805,"src":"5513:41:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function TimeboundDelegationControl.initDelegation(address,uint256)"}},{"components":[{"id":134675,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"5557:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134676,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134647,"src":"5568:12:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":134677,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5556:25:199","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":134671,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5498:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5502:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"5498:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:84:199","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":134666,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"5421:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5427:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"5421:24:199","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":134679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:167:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134680,"nodeType":"ExpressionStatement","src":"5421:167:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134681,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5594:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5594:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134683,"nodeType":"ExpressionStatement","src":"5594:14:199"},{"expression":{"arguments":[{"id":134687,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"5691:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134684,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5682:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5682:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5682:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134689,"nodeType":"ExpressionStatement","src":"5682:19:199"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e","id":134691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5722:42:199","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":134690,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5707:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:58:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134693,"nodeType":"ExpressionStatement","src":"5707:58:199"},{"assignments":[134695],"declarations":[{"constant":false,"id":134695,"mutability":"mutable","name":"returnData","nameLocation":"5784:10:199","nodeType":"VariableDeclaration","scope":134791,"src":"5771:23:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134694,"name":"bytes","nodeType":"ElementaryTypeName","src":"5771:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":134707,"initialValue":{"arguments":[{"id":134698,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"5812:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134699,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"5823:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134702,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"5848:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5864:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"5848:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134704,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5875:2:199","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":134700,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5833:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5837:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"5833:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5833:45:199","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":134696,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"5797:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5803:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"5797:14:199","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":134706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5797:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5771:108:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134708,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5885:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134710,"nodeType":"ExpressionStatement","src":"5885:14:199"},{"assignments":[134712],"declarations":[{"constant":false,"id":134712,"mutability":"mutable","name":"returnedAddress","nameLocation":"5913:15:199","nodeType":"VariableDeclaration","scope":134791,"src":"5905:23:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134711,"name":"address","nodeType":"ElementaryTypeName","src":"5905:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":134720,"initialValue":{"arguments":[{"id":134715,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134695,"src":"5942:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5955:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134716,"name":"address","nodeType":"ElementaryTypeName","src":"5955:7:199","typeDescriptions":{}}}],"id":134718,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5954:9:199","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":134713,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5931:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5935:6:199","memberName":"decode","nodeType":"MemberAccess","src":"5931:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5931:33:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5905:59:199"},{"expression":{"arguments":[{"id":134722,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134712,"src":"6046:15:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134723,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"6063:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134721,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"6037:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6037:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134725,"nodeType":"ExpressionStatement","src":"6037:36:199"},{"expression":{"arguments":[{"id":134729,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134647,"src":"6173:12:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":134726,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6165:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:4:199","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":59874,"src":"6165:7:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":134730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134731,"nodeType":"ExpressionStatement","src":"6165:21:199"},{"expression":{"arguments":[{"id":134735,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"6201:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134732,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6192:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6195:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6192:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6192:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134737,"nodeType":"ExpressionStatement","src":"6192:19:199"},{"expression":{"arguments":[{"id":134741,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"6232:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134742,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"6243:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134745,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"6268:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6284:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"6268:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6295:2:199","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":134743,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6253:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6257:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"6253:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6253:45:199","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":134738,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"6217:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6223:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"6217:14:199","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":134749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6217:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134750,"nodeType":"ExpressionStatement","src":"6217:82:199"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":134756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":134754,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134647,"src":"6397:12:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":134755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6412:1:199","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6397:16:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":134751,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6389:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6392:4:199","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":59874,"src":"6389:7:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":134757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6389:25:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134758,"nodeType":"ExpressionStatement","src":"6389:25:199"},{"expression":{"arguments":[{"id":134762,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"6429:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134759,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6420:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6423:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6420:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6420:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134764,"nodeType":"ExpressionStatement","src":"6420:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134770,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"6484:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6497:24:199","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22397,"src":"6484:37:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":134772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6522:8:199","memberName":"selector","nodeType":"MemberAccess","src":"6484:46:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":134773,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"6532:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134774,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"6543:9:199","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":134768,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6461:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6465:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6461:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6461:92:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134765,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6445:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6448:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"6445:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6445:109:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134777,"nodeType":"ExpressionStatement","src":"6445:109:199"},{"expression":{"arguments":[{"id":134781,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"6575:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134782,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134311,"src":"6586:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134785,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"6611:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6627:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"6611:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134787,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6638:2:199","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":134783,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6596:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6600:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"6596:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6596:45:199","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":134778,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"6560:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6566:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"6560:14:199","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":134789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6560:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134790,"nodeType":"ExpressionStatement","src":"6560:82:199"}]},"functionSelector":"89403ab3","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromTimeboundDelegation","nameLocation":"5164:31:199","parameters":{"id":134644,"nodeType":"ParameterList","parameters":[],"src":"5195:2:199"},"returnParameters":{"id":134645,"nodeType":"ParameterList","parameters":[],"src":"5205:0:199"},"scope":134856,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134855,"nodeType":"FunctionDefinition","src":"6651:856:199","nodes":[],"body":{"id":134854,"nodeType":"Block","src":"6719:788:199","nodes":[],"statements":[{"assignments":[134797],"declarations":[{"constant":false,"id":134797,"mutability":"mutable","name":"noDelegationControlSystem","nameLocation":"6797:25:199","nodeType":"VariableDeclaration","scope":134854,"src":"6790:32:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"},"typeName":{"id":134796,"nodeType":"UserDefinedTypeName","pathNode":{"id":134795,"name":"System","nameLocations":["6790:6:199"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"6790:6:199"},"referencedDeclaration":22601,"src":"6790:6:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}},"visibility":"internal"}],"id":134802,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":134800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"6825:10:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_System_$22601_$","typeString":"function () returns (contract System)"},"typeName":{"id":134799,"nodeType":"UserDefinedTypeName","pathNode":{"id":134798,"name":"System","nameLocations":["6829:6:199"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"6829:6:199"},"referencedDeclaration":22601,"src":"6829:6:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}}},"id":134801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6825:12:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}},"nodeType":"VariableDeclarationStatement","src":"6790:47:199"},{"assignments":[134805],"declarations":[{"constant":false,"id":134805,"mutability":"mutable","name":"noDelegationControlId","nameLocation":"6854:21:199","nodeType":"VariableDeclaration","scope":134854,"src":"6843:32:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134804,"nodeType":"UserDefinedTypeName","pathNode":{"id":134803,"name":"ResourceId","nameLocations":["6843:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"6843:10:199"},"referencedDeclaration":2782,"src":"6843:10:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":134812,"initialValue":{"arguments":[{"id":134808,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"6920:15:199","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":134809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6954:11:199","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"6e6f44656c65676174696f6e","id":134810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6979:14:199","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":134806,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"6878:18:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":134807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6897:6:199","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"6878:25:199","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":134811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["6912:6:199","6943:9:199","6973:4:199"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"6878:122:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"6843:157:199"},{"expression":{"arguments":[{"id":134816,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134805,"src":"7027:21:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":134817,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134797,"src":"7050:25:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}},{"hexValue":"74727565","id":134818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7077:4:199","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":134813,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"7006:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7012:14:199","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"7006:20:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":134819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7006:76:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134820,"nodeType":"ExpressionStatement","src":"7006:76:199"},{"expression":{"arguments":[{"id":134824,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134317,"src":"7205:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134821,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7196:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7199:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7196:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7196:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134826,"nodeType":"ExpressionStatement","src":"7196:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134832,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"7276:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7289:27:199","memberName":"World_InterfaceNotSupported","nodeType":"MemberAccess","referencedDeclaration":22414,"src":"7276:40:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4) pure"}},"id":134834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7317:8:199","memberName":"selector","nodeType":"MemberAccess","src":"7276:49:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"id":134837,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134797,"src":"7343:25:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}],"id":134836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7335:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134835,"name":"address","nodeType":"ElementaryTypeName","src":"7335:7:199","typeDescriptions":{}}},"id":134838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7335:34:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134839,"name":"DELEGATION_CONTROL_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22169,"src":"7379:31:199","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":134830,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7244:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7248:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7244:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7244:174:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134827,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7221:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7224:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"7221:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7221:203:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134842,"nodeType":"ExpressionStatement","src":"7221:203:199"},{"expression":{"arguments":[{"id":134846,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134323,"src":"7455:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134847,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134805,"src":"7466:21:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"hexValue":"31","id":134850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7499:1:199","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":134849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7489:9:199","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":134848,"name":"bytes","nodeType":"ElementaryTypeName","src":"7493:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":134851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7489:12:199","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":134843,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134302,"src":"7430:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7436:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"7430:24:199","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":134852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7430:72:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134853,"nodeType":"ExpressionStatement","src":"7430:72:199"}]},"functionSelector":"9d4218e6","implemented":true,"kind":"function","modifiers":[],"name":"testRegisterDelegationRevertInterfaceNotSupported","nameLocation":"6660:49:199","parameters":{"id":134793,"nodeType":"ParameterList","parameters":[],"src":"6709:2:199"},"returnParameters":{"id":134794,"nodeType":"ParameterList","parameters":[],"src":"6719:0:199"},"scope":134856,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":134292,"name":"Test","nameLocations":["1620:4:199"],"nodeType":"IdentifierPath","referencedDeclaration":58812,"src":"1620:4:199"},"id":134293,"nodeType":"InheritanceSpecifier","src":"1620:4:199"},{"baseName":{"id":134294,"name":"GasReporter","nameLocations":["1626:11:199"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1626:11:199"},"id":134295,"nodeType":"InheritanceSpecifier","src":"1626:11:199"}],"canonicalName":"StandardDelegationsModuleTest","contractDependencies":[22601,23730,35431,35451,35650,35830,36019,37452,120653],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[134856,226,58812,49271,49268,58761,54499,54209,53445,51391,50698,49205],"name":"StandardDelegationsModuleTest","nameLocation":"1587:29:199","scope":134857,"usedErrors":[],"usedEvents":[46919,46923,46927,46931,46935,46939,46943,46947,46953,46959,46967,46975,46981,46987,46993,46999,49293,49298,49303,49310,49317,49324]}],"license":"MIT"},"id":199}
|
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":"0x608060405260008054600160ff1991821681179092556004805490911690911790555a601c556200005061737960f01b686e616d65737061636560b81b697465737453797374656d60b01b62000089565b602055602180546001600160a01b03199081166001179091556022805490911660021790553480156200008257600080fd5b50620000f6565b60006200009960706010620000ce565b6001600160f01b03198516600160801b600160f01b03601086901c16176001600160801b0319841690911c1790509392505050565b80820180821115620000f057634e487b7160e01b600052601160045260246000fd5b92915050565b6202040f80620001076000396000f3fe60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000508565b60405162000133919062002db0565b60405180910390f35b620001246200056c565b62000124620005ce565b6200015a62000630565b60405162000133919062002dff565b6200017362000723565b60405162000133919062002f22565b62000118620007fd565b6200015a62001042565b620001186200112c565b6200017362001445565b620001b46200151f565b604051901515815260200162000133565b620001186200166b565b6200011862001bc7565b6200012462002193565b600054620001b49060ff1681565b604051620001ff9062002d32565b604051809103906000f0801580156200021c573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de862000263620021f5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002bd57600080fd5b505af1158015620002d2573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925063af068c9e9150620002f99062002d40565b604051809103906000f08015801562000316573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b169091526200036191906024810162002fb7565b600060405180830381600087803b1580156200037c57600080fd5b505af115801562000391573d6000803e3d6000fd5b505050506000604051620003a59062002d4e565b604051809103906000f080158015620003c2573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000426907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200044591815260200190565b600060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b158015620004ec57600080fd5b505af115801562000501573d6000803e3d6000fd5b5050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200056257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000543575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200070157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620006c25790505b5050505050815250508152602001906001019062000654565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200071a578382906000526020600020018054620007699062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620007979062002fe3565b8015620007e85780601f10620007bc57610100808354040283529160200191620007e8565b820191906000526020600020905b815481529060010190602001808311620007ca57829003601f168201915b50505050508152602001906001019062000747565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200086857600080fd5b505af11580156200087d573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620008db57600080fd5b505af1158015620008f0573d6000803e3d6000fd5b50505050620009346040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620009a99062003038565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000a47939291906004016200305d565b600060405180830381600087803b15801562000a6257600080fd5b505af115801562000a77573d6000803e3d6000fd5b5050505062000a85620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000adf57600080fd5b505af115801562000af4573d6000803e3d6000fd5b5050505062000b1c604051806060016040528060288152602001620203b16028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000b8495919092169390929091016200305d565b6000604051808303816000875af115801562000ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bce91908101906200310d565b905062000bda620025bf565b60008180602001905181019062000bf2919062003171565b60215490915062000c0e9082906001600160a01b03166200284f565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000c7557600080fd5b505af115801562000c8a573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000ce857600080fd5b505af115801562000cfd573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000d6695949094169391929091016200305d565b6000604051808303816000875af115801562000d86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000db091908101906200310d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000dd8856001620031c7565b6040518263ffffffff1660e01b815260040162000df791815260200190565b600060405180830381600087803b15801562000e1257600080fd5b505af115801562000e27573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000e8657600080fd5b505af115801562000e9b573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000f599190600401620031e3565b600060405180830381600087803b15801562000f7457600080fd5b505af115801562000f89573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000ff295949094169391929091016200305d565b6000604051808303816000875af115801562001012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200103c91908101906200310d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200111357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010d45790505b5050505050815250508152602001906001019062001066565b60006040516200113c9062002d5c565b604051809103906000f08015801562001159573d6000803e3d6000fd5b5090506000620011b061737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620029e1565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200122157600080fd5b505af115801562001236573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200129457600080fd5b505af1158015620012a9573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527faf5854770000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200137e9190600401620031e3565b600060405180830381600087803b1580156200139957600080fd5b505af1158015620013ae573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200140d939291906200305d565b600060405180830381600087803b1580156200142857600080fd5b505af11580156200143d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200071a5783829060005260206000200180546200148b9062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014b99062002fe3565b80156200150a5780601f10620014de576101008083540402835291602001916200150a565b820191906000526020600020905b815481529060010190602001808311620014ec57829003601f168201915b50505050508152602001906001019062001469565b60008054610100900460ff1615620015405750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016665760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620015e8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620031f8565b60408051601f1981840301815290829052620016049162003242565b6000604051808303816000865af19150503d806000811462001643576040519150601f19603f3d011682016040523d82523d6000602084013e62001648565b606091505b509150508080602001905181019062001662919062003260565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620016c557600080fd5b505af1158015620016da573d6000803e3d6000fd5b5050505062001702604051806060016040528060218152602001620203686021913962002300565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620017779062003038565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200181d939291906004016200305d565b600060405180830381600087803b1580156200183857600080fd5b505af11580156200184d573d6000803e3d6000fd5b505050506200185b620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018b557600080fd5b505af1158015620018ca573d6000803e3d6000fd5b50505050620018f26040518060600160405280602a8152602001620203d9602a913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc58956200195a95919092169390929091016200305d565b6000604051808303816000875af11580156200197a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a491908101906200310d565b9050620019b0620025bf565b600081806020019051810190620019c8919062003171565b602154909150620019e49082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a3e57600080fd5b505af115801562001a53573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001b02939291906004016200305d565b6000604051808303816000875af115801562001b22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b4c91908101906200310d565b915060008280602001905181019062001b66919062003284565b805160215491925062001b82916001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000e6b565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001c2157600080fd5b505af115801562001c36573d6000803e3d6000fd5b5050505062001c7a6040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001cef9062003038565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001d39946001600160a01b03169360019101620032e2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001db7939291906004016200305d565b600060405180830381600087803b15801562001dd257600080fd5b505af115801562001de7573d6000803e3d6000fd5b5050505062001df5620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001e4f57600080fd5b505af115801562001e64573d6000803e3d6000fd5b5050505062001e8c604051806060016040528060288152602001620203896028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001ef495919092169390929091016200305d565b6000604051808303816000875af115801562001f14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f3e91908101906200310d565b905062001f4a620025bf565b60008180602001905181019062001f62919062003171565b60215490915062001f7e9082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001fd857600080fd5b505af115801562001fed573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620020ab9190600401620031e3565b600060405180830381600087803b158015620020c657600080fd5b505af1158015620020db573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200214495949094169391929091016200305d565b6000604051808303816000875af115801562002164573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200218e91908101906200310d565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6000604051620022059062002d6a565b604051809103906000f08015801562002222573d6000803e3d6000fd5b50604051620022319062002d78565b604051809103906000f0801580156200224e573d6000803e3d6000fd5b506040516200225d9062002d86565b604051809103906000f0801580156200227a573d6000803e3d6000fd5b50604051620022899062002d94565b604051809103906000f080158015620022a6573d6000803e3d6000fd5b50604051620022b59062002da2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022fa573d6000803e3d6000fd5b50905090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620023a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c8919062003260565b620023d05750565b601b8054620023df9062002fe3565b9050600014601b604051602001620023f89190620033b6565b604051602081830303815290604052906200244b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b60405180910390fd5b50601d816040516200245e919062003242565b908152602001604051809103902054600014816040516020016200248391906200343d565b60405160208183030381529060405290620024cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b50601b620024dc8282620034f5565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200253c57600080fd5b505af115801562002551573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b158015620004ec57600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002667573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200268d919062003260565b620026955750565b600060a082601c54620026a99190620035c2565b620026b59190620035c2565b620026c2906001620031c7565b90506000811162002730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002442565b80601d601b604051620027449190620035d8565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002793601b82620035e6565b5062002831601b8054620027a79062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620027d59062002fe3565b8015620028265780601f10620027fa5761010080835404028352916020019162002826565b820191906000526020600020905b8154815290600101906020018083116200280857829003601f168201915b505050505062002a6a565b604080516020810190915260008152601b906200218e9082620034f5565b806001600160a01b0316826001600160a01b031614620029dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620028ef9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620029dd62002b70565b5050565b6000620029f160706010620031c7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b62002b6d7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002ab2919062003242565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002afc9160040190815260200190565b600060405180830381865afa15801562002b1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b4491908101906200310d565b8260405160200162002b58929190620036c8565b60405160208183030381529060405262002cb7565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c895760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c249291602001620031f8565b60408051601f198184030181529082905262002c409162003242565b6000604051808303816000865af19150503d806000811462002c7f576040519150601f19603f3d011682016040523d82523d6000602084013e62002c84565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b6d8160405160240162002cce9190620031e3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200374e83390190565b617b928062008c8883390190565b611786806201081a83390190565b6102858062011fa083390190565b611a79806201222583390190565b6118cc8062013c9e83390190565b610b15806201556a83390190565b61567c806201607f83390190565b614c6d806201b6fb83390190565b6020808252825182820181905260009190848201906040850190845b8181101562002df35783516001600160a01b03168352928401929184019160010162002dcc565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002ebf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ea95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e65565b50978a0197955050509187019160010162002e27565b50919998505050505050505050565b60005b8381101562002eeb57818101518382015260200162002ed1565b50506000910152565b6000815180845262002f0e81602086016020860162002ece565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7b57603f1988860301845262002f6885835162002ef4565b9450928501929085019060010162002f49565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002fdb604083018462002ef4565b949350505050565b600181811c9082168062002ff857607f821691505b60208210810362003032577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030325760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003087606083018462002ef4565b95945050505050565b600067ffffffffffffffff80841115620030ae57620030ae62002f88565b604051601f8501601f19908116603f01168101908282118183101715620030d957620030d962002f88565b81604052809350858152868686011115620030f357600080fd5b6200310386602083018762002ece565b5050509392505050565b6000602082840312156200312057600080fd5b815167ffffffffffffffff8111156200313857600080fd5b8201601f810184136200314a57600080fd5b62002fdb8482516020840162003090565b6001600160a01b038116811462002b6d57600080fd5b6000602082840312156200318457600080fd5b815162003191816200315b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031dd57620031dd62003198565b92915050565b60208152600062003191602083018462002ef4565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200323481600485016020870162002ece565b919091016004019392505050565b600082516200325681846020870162002ece565b9190910192915050565b6000602082840312156200327357600080fd5b815180151581146200319157600080fd5b6000604082840312156200329757600080fd5b6040516040810181811067ffffffffffffffff82111715620032bd57620032bd62002f88565b6040528251620032cd816200315b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200330c608083018562002ef4565b905082606083015295945050505050565b600081546200332c8162002fe3565b600182811680156200334757600181146200337b57620033ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033ac565b8560005260208060002060005b85811015620033a35781548a82015290840190820162003388565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033ea600c8301846200331d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200347781600c85016020870162002ece565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f8211156200218e57600081815260208120601f850160051c81016020861015620034d45750805b601f850160051c820191505b818110156200143d57828155600101620034e0565b815167ffffffffffffffff81111562003512576200351262002f88565b6200352a8162003523845462002fe3565b84620034ab565b602080601f831160018114620035625760008415620035495750858301515b600019600386901b1c1916600185901b1785556200143d565b600085815260208120601f198616915b82811015620035935788860151825594840194600190910190840162003572565b5085821015620035b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031dd57620031dd62003198565b60006200319182846200331d565b818103620035f2575050565b620035fe825462002fe3565b67ffffffffffffffff81111562003619576200361962002f88565b6200362a8162003523845462002fe3565b6000601f821160018114620036615760008315620036485750848201545b600019600385901b1c1916600184901b17845562000501565b600085815260209020601f19841690600086815260209020845b838110156200369d57828601548255600195860195909101906020016200367b565b5085831015620035b25793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200370281600c85016020880162002ece565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200374181600d84016020880162002ece565b01600d0194935050505056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a60e06040526040516200001290620000c0565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080526040516200004a90620000ce565b604051809103906000f08015801562000067573d6000803e3d6000fd5b506001600160a01b031660a0526040516200008290620000dc565b604051809103906000f0801580156200009f573d6000803e3d6000fd5b506001600160a01b031660c052348015620000b957600080fd5b50620000ea565b611c058062002fea83390190565b611b3f8062004bef83390190565b611464806200672e83390190565b60805160a05160c051612ed06200011a600039600061064c015260006104ca015260006103490152612ed06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b61009561009036600461298f565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046129e7565b61023c565b005b6040517f73746464656c65676174696f6e732e6d0000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b3660046129e7565b61026e565b6100b2610722565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061023761072c565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610278610722565b905061028261075e565b61028a6107fe565b61029261088f565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261032790612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103c59250612ae0565b600060405180830381855af49150503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b5091509150816104185761041881610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526104a890612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105469250612ae0565b600060405180830381855af49150503d8060008114610581576040519150601f19603f3d011682016040523d82523d6000602084013e610586565b606091505b5090925090508161059a5761059a81610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261062a90612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106c89250612ae0565b600060405180830381855af49150503d8060008114610703576040519150601f19603f3d011682016040523d82523d6000602084013e610708565b606091505b5090925090508161071c5761071c81610928565b50505050565b6000610237610930565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061075b5750335b90565b60408051613a3160f11b6020820152600060228201527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526107b790612a98565b7e200100200000000000000000000000000000000000000000000000000000006107df61097c565b6107e7610ac4565b6107ef610afe565b6107f7610c80565b610cf7565b565b60408051613a3160f11b6020820152600060228201527f53797374656d626f756e6444656c65670000000000000000000000000000000060308201526107fc910160405160208183030381529060405261085790612a98565b7e2001002000000000000000000000000000000000000000000000000000000061087f610dcb565b610887610ac4565b6107ef610e90565b60408051613a3160f11b6020820152600060228201527f54696d65626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526108e890612a98565b7e20010020000000000000000000000000000000000000000000000000000000610910610fb0565b610918610ac4565b61092061102f565b6107f76110f9565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610977573391505090565b919050565b60408051600480825260a08201909252600091829190602082016080803683370190505090506061816000815181106109b7576109b7612afc565b602002602001019060c58111156109d0576109d0612b12565b908160c58111156109e3576109e3612b12565b815250506061816001815181106109fc576109fc612afc565b602002602001019060c5811115610a1557610a15612b12565b908160c5811115610a2857610a28612b12565b81525050605f81600281518110610a4157610a41612afc565b602002602001019060c5811115610a5a57610a5a612b12565b908160c5811115610a6d57610a6d612b12565b81525050605f81600381518110610a8657610a86612afc565b602002602001019060c5811115610a9f57610a9f612b12565b908160c5811115610ab257610ab2612b12565b905250610abe81611170565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610a8657610a86612afc565b60408051600480825260a08201909252606091816020015b6060815260200190600190039081610b165790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610b7657610b76612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610bca57610bca612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c1e57610c1e612afc565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610c7257610c72612afc565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610c975790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000610d01610930565b90503073ffffffffffffffffffffffffffffffffffffffff821603610d3357610d2e878787878787611334565b610dc2565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610d8f908a908a908a908a908a908a90600401612ba6565b600060405180830381600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610e0657610e06612afc565b602002602001019060c5811115610e1f57610e1f612b12565b908160c5811115610e3257610e32612b12565b81525050606181600181518110610e4b57610e4b612afc565b602002602001019060c5811115610e6457610e64612b12565b908160c5811115610e7757610e77612b12565b81525050605f81600281518110610a8657610a86612afc565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610ea85790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f0857610f08612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610f5c57610f5c612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c7257610c72612afc565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610fea57610fea612afc565b602002602001019060c581111561100357611003612b12565b908160c581111561101657611016612b12565b81525050606181600181518110610a8657610a86612afc565b6040805160028082526060828101909352816020015b60608152602001906001900390816110455790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106110a5576110a5612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610c7257610c72612afc565b604080516001808252818301909252606091816020015b60608152602001906001900390816111105790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000601c825111156111a3578151604051635318beb960e01b815260040161119a91815260200190565b60405180910390fd5b60008080805b855181101561127e5760006111e78783815181106111c9576111c9612afc565b602002602001015160c58111156111e2576111e2612b12565b611627565b9050806000036111fc57600190920191611234565b8215611234576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061125557611255612afc565b602002602001015160c581111561126e5761126e612b12565b901b9490941793506001016111a9565b5060058111156112a457604051635318beb960e01b81526004810182905260240161119a565b845181900360086112b760026020612c06565b6112c19190612c19565b83901b9390931792600860016112d960026020612c06565b6112e39190612c06565b6112ed9190612c19565b81901b9390931792600860018061130660026020612c06565b6113109190612c06565b61131a9190612c06565b6113249190612c19565b9190911b92909217949350505050565b613a3160f11b867fffff00000000000000000000000000000000000000000000000000000000000016148015906113ad57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b1561140e57613a3160f11b86876040516020016113cc91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261119a939291600401612c30565b61141785611687565b61142284600161180f565b61142d83600061180f565b60e084901c60e885901c0160ff1682511461148d5760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff168151146114ed5760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146115655760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b61156e866119b6565b156115c857858660405160200161158791815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261119a9291600401612c71565b61161486868686866040516020016115e09190612c8a565b604051602081830303815290604052866040516020016116009190612c8a565b604051602081830303815290604052611a9a565b61161f866001611bba565b505050505050565b6000808260c581111561163c5761163c612b12565b60ff169050606181101561165657601f1660010192915050565b60618360c581111561166a5761166a612b12565b036116785750601492915050565b50600092915050565b50919050565b806116be576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116c982611cb1565b90506005811115611710576040517f7f2372c3000000000000000000000000000000000000000000000000000000008152600481018290526005602482015260440161119a565b600061171b83611cee565b905060006117298383612c9d565b9050601c811115611770576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c602482015260440161119a565b60005b828110156118085760ff601b82900360080286901c1660008190036117c4576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208111156117ff576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611773565b5050505050565b8015801561181b575081155b1561183c57604051635318beb960e01b81526000600482015260240161119a565b600061184783611cb1565b9050600581111561186e57604051635318beb960e01b81526004810182905260240161119a565b600061187984611cee565b905060006118878383612c9d565b9050601c8111156118ae57604051635318beb960e01b81526004810182905260240161119a565b60008060005b8381101561196f5760006118dc6118cb8a84611d00565b60c58111156111e2576111e2612b12565b11156119265784811061191b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191611967565b84811015611960576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016118b4565b5083821461199357604051635318beb960e01b81526004810183905260240161119a565b848114610dc257604051635318beb960e01b81526004810182905260240161119a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106119ef576119ef612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090611a8690611a5e90612a98565b8360007e01010001000000000000000000000000000000000000000000000000000000611d28565b9050611a928160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611ad18484611d5e565b90506000611adf8585611d7b565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611b1957611b19612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611bae90611b8590612a98565b828686867e60030220202000000000000000000000000000000000000000000000000000611da7565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611bf057611bf0612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052611cac90611c5c90612a98565b82600085604051602001611c7791151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006120f4565b505050565b60006008600180611cc460026020612c06565b611cce9190612c06565b611cd89190612c06565b611ce29190612c19565b8260ff911c1692915050565b600060086001611cce60026020612c06565b6000601b8290036008028360ff911c1660c5811115611d2157611d21612b12565b9392505050565b6000611d55611d378686612109565b60ff858116601b0360080285901c16611d50858761215f565b6121a2565b95945050505050565b8151815160009181810160389190911b1760609190911b17611d21565b60608282604051602001611d90929190612cb0565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611e3357857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611e269493929190612d1a565b60405180910390a261161f565b6000611e3e876121f3565b905060005b8151811015611f21576000828281518110611e6057611e60612afc565b60200260200101519050611e8c6001826affffffffffffffffffffff19166122bb90919063ffffffff16565b15611f0e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611edb908c908c908c908c908c908c90600401612d64565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b505050505b5080611f1981612dbd565b915050611e43565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611f589493929190612d1a565b60405180910390a26000611f6c8888612109565b90506000602087019050611f848260008951846122d9565b6000611f8f85611cb1565b1115612013576000611fa18a8a612399565b878155905060208601915060008060005b611fbb88611cb1565b8160ff16101561200e57611fd08d8d836123ef565b9250611feb8a8260ff166028026038011c64ffffffffff1690565b9150611ffa83600084886122d9565b6120048286612c9d565b9450600101611fb2565b505050505b60005b8351811015611bae57600084828151811061203357612033612afc565b6020026020010151905061205f6002826affffffffffffffffffffff19166122bb90919063ffffffff16565b156120e1576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906120ae908e908e908e908e908e908e90600401612d64565b600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b505050505b50806120ec81612dbd565b915050612016565b6118088585612103848761215f565b8561246f565b6000828260405160200161211e929190612dd7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561219a5761218660ff601b83900360080287901c1683612c9d565b91508061219281612dbd565b915050612164565b509392505050565b6000602082106121c8576020820484019350602082816121c4576121c4612e12565b0691505b508254600882021b60208290038084111561219a576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061222d5761222d612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906122a49061229c90612a98565b83600061271e565b9050611a926122b68260008451612758565b6127e8565b60008160ff16826122cc8560581c90565b1660ff1614905092915050565b82156123535760208310612303576020830484019350602083816122ff576122ff612e12565b0692505b82156123535760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161234457505061071c565b50600194909401939182900391015b5b602082106123755780518455600190930192601f1990910190602001612354565b811561071c576000600019600884021c198554835182169119161785555050505050565b600082826040516020016123ae929190612dd7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612404929190612dd7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036124f957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516124ec93929190612e28565b60405180910390a261071c565b60006125058585612109565b90506000612512866121f3565b905060005b81518110156125f157600082828151811061253457612534612afc565b602002602001015190506125606004826affffffffffffffffffffff19166122bb90919063ffffffff16565b156125de576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906125ab908b908b908b908b90600401612e65565b600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b505050505b50806125e981612dbd565b915050612517565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161262693929190612e28565b60405180910390a2612641828565ffffffffffff16856127f9565b60005b8151811015610dc257600082828151811061266157612661612afc565b6020026020010151905061268d6008826affffffffffffffffffffff19166122bb90919063ffffffff16565b1561270b576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906126d8908b908b908b908b90600401612e65565b600060405180830381600087803b1580156126f257600080fd5b505af1158015612706573d6000803e3d6000fd5b505050505b508061271681612dbd565b915050612644565b6060611a9261272e8585856123ef565b60006127538561273e898961280f565b9060ff166028026038011c64ffffffffff1690565b612822565b600081831115801561276b575083518211155b6127a7578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119a93929190612e9e565b602084016127b58482612c9d565b905060006127c38585612c06565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611d218360156000612845565b611cac8383835161280a8560200190565b6122d9565b6000611d2161281e8484612399565b5490565b60405160208101601f19603f848401011660405282825261219a858585846128c0565b606060006128538560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161287957612879612e12565b04905060405193506020840160208202810160405281855260005b828110156128b4578451871c825293870193602090910190600101612894565b50505050509392505050565b821561294957602083106128ea576020830484019350602083816128e6576128e6612e12565b0692505b821561294957602083900360008184101561290e5750600019600884021c19612919565b50600019600882021c195b8554600886021b81198451168282161784525081841161293a57505061071c565b50600194909401939182900391015b5b6020821061296b5783548152600190930192601f199091019060200161294a565b811561071c576000600019600884021c198251865482169119161782525050505050565b6000602082840312156129a157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156129f957600080fd5b813567ffffffffffffffff80821115612a1157600080fd5b818401915084601f830112612a2557600080fd5b813581811115612a3757612a376129d1565b604051601f8201601f19908116603f01168101908382118183101715612a5f57612a5f6129d1565b81604052828152876020848701011115612a7857600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156116815760001960209190910360031b1b16919050565b60005b83811015612ad7578181015183820152602001612abf565b50506000910152565b60008251612af2818460208701612abc565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612b40816020860160208601612abc565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b85811015612b99578383038952612b87838351612b28565b98850198925090840190600101612b6f565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612bd160c0830185612b54565b82810360a0840152612be38185612b54565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561022757610227612bf0565b808202811582820484141761022757610227612bf0565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611d556060830184612b28565b828152604060208201526000611a926040830184612b28565b602081526000611d216020830184612b54565b8082018082111561022757610227612bf0565b60008351612cc2818460208801612abc565b835190830190612cd6818360208801612abc565b01949350505050565b600081518084526020808501945080840160005b83811015612d0f57815187529582019590820190600101612cf3565b509495945050505050565b608081526000612d2d6080830187612cdf565b8281036020840152612d3f8187612b28565b90508460408401528281036060840152612d598185612b28565b979650505050505050565b86815260c060208201526000612d7d60c0830188612cdf565b8281036040840152612d8f8188612b28565b90508560608401528281036080840152612da98186612b28565b9150508260a0830152979650505050505050565b60006000198203612dd057612dd0612bf0565b5060010190565b82815260006020808301845182860160005b82811015612e0557815184529284019290840190600101612de9565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612e3b6060830186612cdf565b65ffffffffffff851660208401528281036040840152612e5b8185612b28565b9695505050505050565b848152608060208201526000612e7e6080830186612cdf565b65ffffffffffff851660408401528281036060840152612d598185612b28565b606081526000612eb16060830186612b28565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611be5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046116fe565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046117fa565b6101f6565b6100e56100e0366004611851565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b8785610419565b600192505050610261565b801561025a5760001901610231866102526101e7565b87858561053a565b6000925050505b9392505050565b6102836102736101e7565b858585805190602001208561053a565b50505050565b60006101f16106a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6118b0565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376118b0565b6020026020010181815250508381600281518110610357576103576118b0565b6020026020010181815250508281600381518110610377576103776118b0565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308401529161040c91016040516020818303038152906040526103e4906118c6565b8360007e200100200000000000000000000000000000000000000000000000000000006106e0565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061045c5761045c6118b0565b602002602001018181525050836001600160a01b031660001b81600181518110610488576104886118b0565b60200260200101818152505082816002815181106104a8576104a86118b0565b60200260200101818152505081816003815181106104c8576104c86118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526105339061052d906118c6565b8261079d565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061057d5761057d6118b0565b602002602001018181525050846001600160a01b031660001b816001815181106105a9576105a96118b0565b60200260200101818152505083816002815181106105c9576105c96118b0565b60200260200101818152505082816003815181106105e9576105e96118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526106999061064e906118c6565b8260008560405160200161066491815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610846565b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806106db573391505090565b919050565b6000806106eb6106a1565b9050306001600160a01b0382160361071157610709868686866108fb565b915050610411565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061075c908990899089908990600401611928565b602060405180830381865afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190611957565b60006107a76106a1565b9050306001600160a01b038216036107c8576107c38383610931565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061080f9086908690600401611970565b600060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b50505050505050565b60006108506106a1565b9050306001600160a01b038216036108745761086f8686868686610948565b610699565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108c190899089908990899089906004016119cf565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b50505050505050505050565b600061092861090a868661095d565b60ff858116601b0360080285901c1661092385876109b3565b6109f6565b95945050505050565b610944828261093f85610a47565b610b75565b5050565b610533858561095784876109b3565b85610e88565b60008282604051602001610972929190611a16565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109ee576109da60ff601b83900360080287901c1683611a67565b9150806109e681611a7a565b9150506109b8565b509392505050565b600060208210610a1c57602082048401935060208281610a1857610a18611a94565b0691505b508254600882021b6020829003808411156109ee576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610abe906118c6565b8203610aea57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610b6c9101604051602081830303815290604052610b66906118c6565b84611137565b602060006109f6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610bfb57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610bee9190611aaa565b60405180910390a2505050565b6000610c0684611153565b905060005b8151811015610ce3576000828281518110610c2857610c286118b0565b60200260200101519050610c546040826affffffffffffffffffffff191661123390919063ffffffff16565b15610cd0576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c9d90899089908990600401611abd565b600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b505050505b5080610cdb81611a7a565b915050610c0b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610d149190611aaa565b60405180910390a26000610d28858561095d565b9050610d81816000610d3986611251565b67ffffffffffffffff811115610d5157610d51611757565b6040519080825280601f01601f191660200182016040528015610d7b576020820181803683370190505b50611274565b6000610d8c8461128a565b1115610dad576000610d9e86866112c7565b9050610dab81602061131d565b505b60005b8251811015610699576000838281518110610dcd57610dcd6118b0565b60200260200101519050610df96080826affffffffffffffffffffff191661123390919063ffffffff16565b15610e75576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610e42908a908a908a90600401611abd565b600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b505050505b5080610e8081611a7a565b915050610db0565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610f1257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610f0593929190611ae6565b60405180910390a2610283565b6000610f1e858561095d565b90506000610f2b86611153565b905060005b815181101561100a576000828281518110610f4d57610f4d6118b0565b60200260200101519050610f796004826affffffffffffffffffffff191661123390919063ffffffff16565b15610ff7576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610fc4908b908b908b908b90600401611b23565b600060405180830381600087803b158015610fde57600080fd5b505af1158015610ff2573d6000803e3d6000fd5b505050505b508061100281611a7a565b915050610f30565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161103f93929190611ae6565b60405180910390a261105a828565ffffffffffff1685611274565b60005b815181101561083d57600082828151811061107a5761107a6118b0565b602002602001015190506110a66008826affffffffffffffffffffff191661123390919063ffffffff16565b15611124576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906110f1908b908b908b908b90600401611b23565b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505b508061112f81611a7a565b91505061105d565b6040805160208101849052908101829052600090606001610972565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061118d5761118d6118b0565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061121c90611214906118c6565b83600061135a565b905061041161122e8260008451611394565b61142d565b60008160ff16826112448560581c90565b1660ff1614905092915050565b6000600861126160026020611b67565b61126b9190611b7a565b9190911c919050565b6107c3838383516112858560200190565b61143e565b6000600860018061129d60026020611b67565b6112a79190611b67565b6112b19190611b67565b6112bb9190611b7a565b8260ff911c1692915050565b600082826040516020016112dc929190611a16565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061132c83601f611a67565b6113369190611b91565b6113409084611a67565b90505b808310156107c35760008355600183019250611343565b606061041161136a8585856114fe565b600061138f8561137a898961157e565b9060ff166028026038011c64ffffffffff1690565b611591565b60008183111580156113a7575083518211155b6113ec578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016113e393929190611bb3565b60405180910390fd5b602084016113fa8482611a67565b905060006114088585611b67565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006115b4565b82156114b857602083106114685760208304840193506020838161146457611464611a94565b0692505b82156114b85760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114a9575050610283565b50600194909401939182900391015b5b602082106114da5780518455600190930192601f19909101906020016114b9565b8115610283576000600019600884021c198554835182169119161785555050505050565b60008383604051602001611513929190611a16565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061026161158d84846112c7565b5490565b60405160208101601f19603f84840101166040528282526109ee8585858461162f565b606060006115c28560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816115e8576115e8611a94565b04905060405193506020840160208202810160405281855260005b82811015611623578451871c825293870193602090910190600101611603565b50505050509392505050565b82156116b857602083106116595760208304840193506020838161165557611655611a94565b0692505b82156116b857602083900360008184101561167d5750600019600884021c19611688565b50600019600882021c195b8554600886021b8119845116828216178452508184116116a9575050610283565b50600194909401939182900391015b5b602082106116da5783548152600190930192601f19909101906020016116b9565b8115610283576000600019600884021c198251865482169119161782525050505050565b60006020828403121561171057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b03811681146106db57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177e57600080fd5b813567ffffffffffffffff8082111561179957611799611757565b604051601f8301601f19908116603f011681019082821181831017156117c1576117c1611757565b816040528381528660208588010111156117da57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561180f57600080fd5b61181884611740565b925060208401359150604084013567ffffffffffffffff81111561183b57600080fd5b6118478682870161176d565b9150509250925092565b6000806000806080858703121561186757600080fd5b61187085611740565b935060208501359250604085013567ffffffffffffffff81111561189357600080fd5b61189f8782880161176d565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156118e7576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561191d57815187529582019590820190600101611901565b509495945050505050565b84815260806020820152600061194160808301866118ed565b60ff949094166040830152506060015292915050565b60006020828403121561196957600080fd5b5051919050565b82815260406020820152600061041160408301846118ed565b6000815180845260005b818110156119af57602081850181015186830182015201611993565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006119e860a08301876118ed565b60ff861660408401528281036060840152611a038186611989565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611a4457815184529284019290840190600101611a28565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611a51565b60006000198203611a8d57611a8d611a51565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846118ed565b838152606060208201526000611ad660608301856118ed565b9050826040830152949350505050565b606081526000611af960608301866118ed565b65ffffffffffff851660208401528281036040840152611b198185611989565b9695505050505050565b848152608060208201526000611b3c60808301866118ed565b65ffffffffffff851660408401528281036060840152611b5c8185611989565b979650505050505050565b818103818111156101e1576101e1611a51565b80820281158282048414176101e1576101e1611a51565b600082611bae57634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611bc66060830186611989565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611b1f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a610085366004611687565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046116f6565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046117c1565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103e0565b6001915050610254565b801561024e5760001901610227856102476101e7565b86846104e0565b60009150505b9392505050565b61026e6102666101e7565b8484846104e0565b505050565b60006101f1610626565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f56117f4565b602002602001018181525050836001600160a01b031660001b81600181518110610321576103216117f4565b6020026020010181815250508281600281518110610341576103416117f4565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f53797374656d626f756e6444656c6567000000000000000000000000000000006030840152916103d691016040516020818303038152906040526103ae9061180a565b8360007e20010020000000000000000000000000000000000000000000000000000000610665565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b81600081518110610423576104236117f4565b602002602001018181525050826001600160a01b031660001b8160018151811061044f5761044f6117f4565b602002602001018181525050818160028151811061046f5761046f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c656700000000000000000000000000000000603082015281518082039093018352810190526104da906104d49061180a565b8261072a565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b81600081518110610523576105236117f4565b602002602001018181525050836001600160a01b031660001b8160018151811061054f5761054f6117f4565b602002602001018181525050828160028151811061056f5761056f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c6567000000000000000000000000000000006030820152815180820390930183528101905261061f906105d49061180a565b826000856040516020016105ea91815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006107ce565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610660573391505090565b919050565b600080610670610626565b9050306001600160a01b038216036106965761068e86868686610884565b915050610722565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906106e190899089908990899060040161186c565b602060405180830381865afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068e919061189b565b949350505050565b6000610734610626565b9050306001600160a01b038216036107505761026e83836108ba565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061079790869086906004016118b4565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050505050565b60006107d8610626565b9050306001600160a01b038216036107fc576107f786868686866108d1565b61087c565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108499089908990899089908990600401611913565b600060405180830381600087803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050505b505050505050565b60006108b161089386866108e6565b60ff858116601b0360080285901c166108ac858761093c565b61097f565b95945050505050565b6108cd82826108c8856109d0565b610afe565b5050565b61061f85856108e0848761093c565b85610e11565b600082826040516020016108fb92919061195a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109775761096360ff601b83900360080287901c16836119ab565b91508061096f816119be565b915050610941565b509392505050565b6000602082106109a5576020820484019350602082816109a1576109a16119d8565b0691505b508254600882021b602082900380841115610977576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610a479061180a565b8203610a7357507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610af59101604051602081830303815290604052610aef9061180a565b846110c0565b6020600061097f565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b8457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b7791906119ee565b60405180910390a2505050565b6000610b8f846110dc565b905060005b8151811015610c6c576000828281518110610bb157610bb16117f4565b60200260200101519050610bdd6040826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610c59576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c2690899089908990600401611a01565b600060405180830381600087803b158015610c4057600080fd5b505af1158015610c54573d6000803e3d6000fd5b505050505b5080610c64816119be565b915050610b94565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c9d91906119ee565b60405180910390a26000610cb185856108e6565b9050610d0a816000610cc2866111da565b67ffffffffffffffff811115610cda57610cda6116e0565b6040519080825280601f01601f191660200182016040528015610d04576020820181803683370190505b506111fd565b6000610d1584611213565b1115610d36576000610d278686611250565b9050610d348160206112a6565b505b60005b825181101561087c576000838281518110610d5657610d566117f4565b60200260200101519050610d826080826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610dfe576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610dcb908a908a908a90600401611a01565b600060405180830381600087803b158015610de557600080fd5b505af1158015610df9573d6000803e3d6000fd5b505050505b5080610e09816119be565b915050610d39565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610e9b57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610e8e93929190611a2a565b60405180910390a26104da565b6000610ea785856108e6565b90506000610eb4866110dc565b905060005b8151811015610f93576000828281518110610ed657610ed66117f4565b60200260200101519050610f026004826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610f80576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610f4d908b908b908b908b90600401611a5d565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b505050505b5080610f8b816119be565b915050610eb9565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610fc893929190611a2a565b60405180910390a2610fe3828565ffffffffffff16856111fd565b60005b81518110156107c5576000828281518110611003576110036117f4565b6020026020010151905061102f6008826affffffffffffffffffffff19166111bc90919063ffffffff16565b156110ad576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061107a908b908b908b908b90600401611a5d565b600060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050505b50806110b8816119be565b915050610fe6565b60408051602081018490529081018290526000906060016108fb565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611116576111166117f4565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906111a59061119d9061180a565b8360006112e3565b90506107226111b7826000845161131d565b6113b6565b60008160ff16826111cd8560581c90565b1660ff1614905092915050565b600060086111ea60026020611aa1565b6111f49190611ab4565b9190911c919050565b61026e8383835161120e8560200190565b6113c7565b6000600860018061122660026020611aa1565b6112309190611aa1565b61123a9190611aa1565b6112449190611ab4565b8260ff911c1692915050565b6000828260405160200161126592919061195a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206112b583601f6119ab565b6112bf9190611acb565b6112c990846119ab565b90505b8083101561026e57600083556001830192506112cc565b60606107226112f3858585611487565b6000611318856113038989611507565b9060ff166028026038011c64ffffffffff1690565b61151a565b6000818311158015611330575083518211155b611375578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161136c93929190611aed565b60405180910390fd5b6020840161138384826119ab565b905060006113918585611aa1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061153d565b821561144157602083106113f1576020830484019350602083816113ed576113ed6119d8565b0692505b82156114415760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114325750506104da565b50600194909401939182900391015b5b602082106114635780518455600190930192601f1990910190602001611442565b81156104da576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161149c92919061195a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546115168484611250565b5490565b60405160208101601f19603f8484010116604052828252610977858585846115b8565b6060600061154b8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611571576115716119d8565b04905060405193506020840160208202810160405281855260005b828110156115ac578451871c82529387019360209091019060010161158c565b50505050509392505050565b821561164157602083106115e2576020830484019350602083816115de576115de6119d8565b0692505b82156116415760208390036000818410156116065750600019600884021c19611611565b50600019600882021c195b8554600886021b8119845116828216178452508184116116325750506104da565b50600194909401939182900391015b5b602082106116635783548152600190930192601f1990910190602001611642565b81156104da576000600019600884021c198251865482169119161782525050505050565b60006020828403121561169957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b038116811461066057600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561170b57600080fd5b611714846116c9565b925060208401359150604084013567ffffffffffffffff8082111561173857600080fd5b818601915086601f83011261174c57600080fd5b81358181111561175e5761175e6116e0565b604051601f8201601f19908116603f01168101908382118183101715611786576117866116e0565b8160405282815289602084870101111561179f57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806000606084860312156117d657600080fd5b6117df846116c9565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b8051602080830151919081101561182b576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561186157815187529582019590820190600101611845565b509495945050505050565b8481526080602082015260006118856080830186611831565b60ff949094166040830152506060015292915050565b6000602082840312156118ad57600080fd5b5051919050565b8281526040602082015260006107226040830184611831565b6000815180845260005b818110156118f3576020818501810151868301820152016118d7565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061192c60a0830187611831565b60ff86166040840152828103606084015261194781866118cd565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156119885781518452928401929084019060010161196c565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611995565b600060001982036119d1576119d1611995565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611831565b838152606060208201526000611a1a6060830185611831565b9050826040830152949350505050565b606081526000611a3d6060830186611831565b65ffffffffffff8516602084015282810360408401526103d681856118cd565b848152608060208201526000611a766080830186611831565b65ffffffffffff851660408401528281036060840152611a9681856118cd565b979650505050505050565b818103818111156101e1576101e1611995565b80820281158282048414176101e1576101e1611995565b600082611ae857634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b0060608301866118cd565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611444806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a61008536600461102c565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da3660046110a8565b610203565b604051601f193601358152602001610096565b610105610100366004611173565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf5854770000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b83836103b9565b5050565b60006101fe610511565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000928101929092526000602283018190527f54696d65626f756e6444656c65676174000000000000000000000000000000006030840152916103b09101604051602081830303815290604052610388906111b3565b8360007e2001002000000000000000000000000000000000000000000000000000000061055d565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106104075761040761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104405761044061119d565b602090810291909101810191909152604080517f746200000000000000000000000000000000000000000000000000000000000081840152600060228201527f54696d65626f756e6444656c65676174000000000000000000000000000000006030820152815180820390930183528101905261050b906104c0906111b3565b826000856040516020016104d691815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061063c565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610558573391505090565b919050565b600080610568610511565b90503073ffffffffffffffffffffffffffffffffffffffff82160361059b576105938686868661070c565b915050610634565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906105f3908990899089908990600401611215565b602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611244565b949350505050565b6000610646610511565b90503073ffffffffffffffffffffffffffffffffffffffff821603610677576106728686868686610739565b610704565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906106d190899089908990899089906004016112a3565b600060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050505b505050505050565b60006103b061071b8686610755565b60ff858116601b0360080285901c1661073485876107ab565b6107ee565b61074e858561074884876107ab565b8561083f565b5050505050565b6000828260405160200161076a9291906112ea565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107e6576107d260ff601b83900360080287901c168361133b565b9150806107de8161134e565b9150506107b0565b509392505050565b6000602082106108145760208204840193506020828161081057610810611368565b0691505b508254600882021b6020829003808411156107e6576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036108c957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108bc9392919061137e565b60405180910390a261050b565b60006108d58585610755565b905060006108e286610af7565b905060005b81518110156109c15760008282815181106109045761090461119d565b602002602001015190506109306004826affffffffffffffffffffff1916610bf290919063ffffffff16565b156109ae576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061097b908b908b908b908b906004016113bb565b600060405180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050505b50806109b98161134e565b9150506108e7565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109f69392919061137e565b60405180910390a2610a11828565ffffffffffff1685610c10565b60005b8151811015610aee576000828281518110610a3157610a3161119d565b60200260200101519050610a5d6008826affffffffffffffffffffff1916610bf290919063ffffffff16565b15610adb576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610aa8908b908b908b908b906004016113bb565b600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b505050505b5080610ae68161134e565b915050610a14565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b3157610b3161119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610bdb90610bd3906111b3565b836000610c2b565b9050610634610bed8260008451610c65565b610cfe565b60008160ff1682610c038560581c90565b1660ff1614905092915050565b610c2683838351610c218560200190565b610d16565b505050565b6060610634610c3b858585610dd6565b6000610c6085610c4b8989610e56565b9060ff166028026038011c64ffffffffff1690565b610e69565b6000818311158015610c78575083518211155b610cbd578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610cb4939291906113ff565b60405180910390fd5b60208401610ccb848261133b565b90506000610cd98585611424565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610d0f8360156000610e8c565b9392505050565b8215610d905760208310610d4057602083048401935060208381610d3c57610d3c611368565b0692505b8215610d905760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610d8157505061050b565b50600194909401939182900391015b5b60208210610db25780518455600190930192601f1990910190602001610d91565b811561050b576000600019600884021c198554835182169119161785555050505050565b60008383604051602001610deb9291906112ea565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610d0f610e658484610f07565b5490565b60405160208101601f19603f84840101166040528282526107e685858584610f5d565b60606000610e9a8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610ec057610ec0611368565b04905060405193506020840160208202810160405281855260005b82811015610efb578451871c825293870193602090910190600101610edb565b50505050509392505050565b60008282604051602001610f1c9291906112ea565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610fe65760208310610f8757602083048401935060208381610f8357610f83611368565b0692505b8215610fe6576020839003600081841015610fab5750600019600884021c19610fb6565b50600019600882021c195b8554600886021b811984511682821617845250818411610fd757505061050b565b50600194909401939182900391015b5b602082106110085783548152600190930192601f1990910190602001610fe7565b811561050b576000600019600884021c198251865482169119161782525050505050565b60006020828403121561103e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461055857600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156110bd57600080fd5b6110c68461106e565b925060208401359150604084013567ffffffffffffffff808211156110ea57600080fd5b818601915086601f8301126110fe57600080fd5b81358181111561111057611110611092565b604051601f8201601f19908116603f0116810190838211818310171561113857611138611092565b8160405282815289602084870101111561115157600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561118657600080fd5b61118f8361106e565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156111d4576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561120a578151875295820195908201906001016111ee565b509495945050505050565b84815260806020820152600061122e60808301866111da565b60ff949094166040830152506060015292915050565b60006020828403121561125657600080fd5b5051919050565b6000815180845260005b8181101561128357602081850181015186830182015201611267565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006112bc60a08301876111da565b60ff8616604084015282810360608401526112d7818661125d565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611318578151845292840192908401906001016112fc565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee611325565b6000600019820361136157611361611325565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60608152600061139160608301866111da565b65ffffffffffff8516602084015282810360408401526113b1818561125d565b9695505050505050565b8481526080602082015260006113d460808301866111da565b65ffffffffffff8516604084015282810360608401526113f4818561125d565b979650505050505050565b606081526000611412606083018661125d565b60208301949094525060400152919050565b818103818111156101ee576101ee61132556fea164736f6c6343000815000a608060405234801561001057600080fd5b50611766806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c1461021b578063ea29e3ba146102b6576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611244565b6102cb565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610364565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611312565b610373565b60405161016991906113df565b3480156101e557600080fd5b506101f96101f43660046113f2565b6103f7565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610529565b34801561023c57600080fd5b5061025061024b36600461148c565b610533565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046114a5565b61057d565b3480156102ad57600080fd5b506101876105ba565b3480156102c257600080fd5b506101f96105c4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061035e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061036e6106b0565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161039d91906114ee565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5091509150816103ef57805181602001fd5b949350505050565b6040805160008082526020820190925290610418613a3160f11b86866106e2565b905030610423610769565b73ffffffffffffffffffffffffffffffffffffffff160361047f5761047a81838560405160200161045b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107b5565b610522565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104b591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b81526004016104ef959493929190611545565b600060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050505b5050505050565b600061036e610769565b6040805180820190915260008082526020820152604051806040016040528061055a610364565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105b191906113df565b60405180910390fd5b600061036e610364565b306105cd610769565b73ffffffffffffffffffffffffffffffffffffffff1603610651577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610647906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106479060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106df5750335b90565b60006106f0607060106115ac565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107b0573391505090565b919050565b61052285858585856107c68b6107cb565b6108f9565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610842906115bf565b820361086e57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261035e916108f091016040516020818303038152906040526108ea906115bf565b84610c53565b60206000610cac565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361098557857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161097894939291906115e6565b60405180910390a2610c4b565b600061099087610cfe565b905060005b8151811015610a735760008282815181106109b2576109b2611630565b602002602001015190506109de6001826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610a60576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90610a2d908c908c908c908c908c908c90600401611646565b600060405180830381600087803b158015610a4757600080fd5b505af1158015610a5b573d6000803e3d6000fd5b505050505b5080610a6b8161169f565b915050610995565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610aaa94939291906115e6565b60405180910390a26000610abe8888610dfc565b90506000602087019050610ad6826000895184610e11565b6000610ae185610ecf565b1115610b65576000610af38a8a610f0c565b878155905060208601915060008060005b610b0d88610ecf565b8160ff161015610b6057610b228d8d83610f62565b9250610b3d8a8260ff166028026038011c64ffffffffff1690565b9150610b4c8360008488610e11565b610b5682866115ac565b9450600101610b04565b505050505b60005b8351811015610c46576000848281518110610b8557610b85611630565b60200260200101519050610bb16002826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610c33576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610c00908e908e908e908e908e908e90600401611646565b600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050505b5080610c3e8161169f565b915050610b68565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610cd257602082048401935060208281610cce57610cce6116b9565b0691505b508254600882021b602082900380841115610cf6576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d3857610d38611630565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610dc790610dbf906115bf565b836000610fe2565b90506103ef610dd9826000845161101c565b6110ac565b60008160ff1682610def8560581c90565b1660ff1614905092915050565b60008282604051602001610c6b9291906116cf565b8215610e8b5760208310610e3b57602083048401935060208381610e3757610e376116b9565b0692505b8215610e8b5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610e7c575050610ec9565b50600194909401939182900391015b5b60208210610ead5780518455600190930192601f1990910190602001610e8c565b8115610ec95783548151600019600885021c9182169119161784555b50505050565b60006008600180610ee26002602061170a565b610eec919061170a565b610ef6919061170a565b610f00919061171d565b8260ff911c1692915050565b60008282604051602001610f219291906116cf565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610f779291906116cf565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60606103ef610ff2858585610f62565b60006110178561100289896110c4565b9060ff166028026038011c64ffffffffff1690565b6110d7565b600081831115801561102f575083518211155b61106b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105b193929190611734565b6020840161107984826115ac565b90506000611087858561170a565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006110bd83601560006110fa565b9392505050565b60006110bd6110d38484610f0c565b5490565b60405160208101601f19603f8484010116604052828252610cf685858584611175565b606060006111088560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161112e5761112e6116b9565b04905060405193506020840160208202810160405281855260005b82811015611169578451871c825293870193602090910190600101611149565b50505050509392505050565b82156111fe576020831061119f5760208304840193506020838161119b5761119b6116b9565b0692505b82156111fe5760208390036000818410156111c35750600019600884021c196111ce565b50600019600882021c195b8554600886021b8119845116828216178452508184116111ef575050610ec9565b50600194909401939182900391015b5b602082106112205783548152600190930192601f19909101906020016111ff565b8115610ec9576000600019600884021c198251865482169119161782525050505050565b60006020828403121561125657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110bd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156112b7576112b7611286565b604051601f8501601f19908116603f011681019082821181831017156112df576112df611286565b816040528093508581528686860111156112f857600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561132557600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461134957600080fd5b9150602083013567ffffffffffffffff81111561136557600080fd5b8301601f8101851361137657600080fd5b6113858582356020840161129c565b9150509250929050565b60005b838110156113aa578181015183820152602001611392565b50506000910152565b600081518084526113cb81602086016020860161138f565b601f01601f19169290920160200192915050565b6020815260006110bd60208301846113b3565b60008060006060848603121561140757600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461143757600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461146c57600080fd5b91506040840135801515811461148157600080fd5b809150509250925092565b60006020828403121561149e57600080fd5b5035919050565b6000602082840312156114b757600080fd5b813567ffffffffffffffff8111156114ce57600080fd5b8201601f810184136114df57600080fd5b6103ef8482356020840161129c565b6000825161150081846020870161138f565b9190910192915050565b600081518084526020808501945080840160005b8381101561153a5781518752958201959082019060010161151e565b509495945050505050565b85815260a06020820152600061155e60a083018761150a565b828103604084015261157081876113b3565b9050846060840152828103608084015261158a81856113b3565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561035e5761035e611596565b805160208083015191908110156115e0576000198160200360031b1b821691505b50919050565b6080815260006115f9608083018761150a565b828103602084015261160b81876113b3565b9050846040840152828103606084015261162581856113b3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061165f60c083018861150a565b828103604084015261167181886113b3565b9050856060840152828103608084015261168b81866113b3565b9150508260a0830152979650505050505050565b600060001982036116b2576116b2611596565b5060010190565b634e487b7160e01b600052601260045260246000fd5b82815260006020808301845182860160005b828110156116fd578151845292840192908401906001016116e1565b5091979650505050505050565b8181038181111561035e5761035e611596565b808202811582820484141761035e5761035e611596565b60608152600061174760608301866113b3565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610265806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f36600461020f565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061020a573391505090565b919050565b60006020828403121561022157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025157600080fd5b939250505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000815000a","sourceMap":"1578:5931:199:-:0;;;1572:26:101;;;1594:4;-1:-1:-1;;1572:26:101;;;;;;;;3126:44:104;;;;;;;;;;;228:9:0;186:51;;1752:98:199;-1:-1:-1;;;;;;;;;1752:25:199;:98::i;:::-;1718:132;;1854:38;;;-1:-1:-1;;;;;;1854:38:199;;;1890:1;1854:38;;;;1896;;;;;;1932:1;1896:38;;;1578:5931;;;;;;;;;;;;941:257:59;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;-1:-1:-1;;;;;;1084:15:59;;-1:-1:-1;;;;;;;336:5:16;1103:31:59;;;;1084:51;-1:-1:-1;;;;;;1139:13:59;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;14:222:203:-;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;:::-;1578:5931:199;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620001095760003560e01c8063916a17c611620000a3578063d671f65b116200006e578063d671f65b14620001c5578063e187dc8f14620001cf578063e20c9f7114620001d9578063fa7626d414620001e357600080fd5b8063916a17c6146200018c5780639d4218e61462000196578063b5508aa914620001a0578063ba414fa614620001aa57600080fd5b80633f7286f411620000e45780633f7286f4146200014657806366d9a9a0146200015057806385226c81146200016957806389403ab3146200018257600080fd5b80630a9254e4146200010e5780631ed7831c146200011a5780633e5e3c23146200013c575b600080fd5b62000118620001f1565b005b6200012462000508565b60405162000133919062002db0565b60405180910390f35b620001246200056c565b62000124620005ce565b6200015a62000630565b60405162000133919062002dff565b6200017362000723565b60405162000133919062002f22565b62000118620007fd565b6200015a62001042565b620001186200112c565b6200017362001445565b620001b46200151f565b604051901515815260200162000133565b620001186200166b565b6200011862001bc7565b6200012462002193565b600054620001b49060ff1681565b604051620001ff9062002d32565b604051809103906000f0801580156200021c573d6000803e3d6000fd5b50601f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216918217905563c4d66de862000263620021f5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015620002bd57600080fd5b505af1158015620002d2573d6000803e3d6000fd5b5050601f546040516001600160a01b03909116925063af068c9e9150620002f99062002d40565b604051809103906000f08015801562000316573d6000803e3d6000fd5b50604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b169091526200036191906024810162002fb7565b600060405180830381600087803b1580156200037c57600080fd5b505af115801562000391573d6000803e3d6000fd5b505050506000604051620003a59062002d4e565b604051809103906000f080158015620003c2573d6000803e3d6000fd5b50601f546020549192506001600160a01b03169063b29e40899062000426907dffffffffffffffffffffffffffff00000000000000000000000000000000167f6e730000000000000000000000000000000000000000000000000000000000001790565b6040518263ffffffff1660e01b81526004016200044591815260200190565b600060405180830381600087803b1580156200046057600080fd5b505af115801562000475573d6000803e3d6000fd5b5050601f546020546040517f3350b6a900000000000000000000000000000000000000000000000000000000815260048101919091526001600160a01b038581166024830152600160448301529091169250633350b6a99150606401600060405180830381600087803b158015620004ec57600080fd5b505af115801562000501573d6000803e3d6000fd5b5050505050565b6060600d8054806020026020016040519081016040528092919081815260200182805480156200056257602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000543575b5050505050905090565b6060600f80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6060600e80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b60606012805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200070157602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620006c25790505b5050505050815250508152602001906001019062000654565b50505050905090565b60606011805480602002602001604051908101604052809291908181526020016000905b828210156200071a578382906000526020600020018054620007699062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620007979062002fe3565b8015620007e85780601f10620007bc57610100808354040283529160200191620007e8565b820191906000526020600020905b815481529060010190602001808311620007ca57829003601f168201915b50505050508152602001906001019062000747565b6040517fe5d6bf020000000000000000000000000000000000000000000000000000000081526001600482015261109290737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b1580156200086857600080fd5b505af11580156200087d573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b158015620008db57600080fd5b505af1158015620008f0573d6000803e3d6000fd5b50505050620009346040518060400160405280601f81526020017f726567697374657220612074696d65626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f74696d65626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620009a99062003038565b6022546040516001600160a01b0390911660248201526044810186905260640160408051601f198184030181529181526020820180516001600160e01b03167fd043756a00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262000a47939291906004016200305d565b600060405180830381600087803b15801562000a6257600080fd5b505af115801562000a77573d6000803e3d6000fd5b5050505062000a85620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562000adf57600080fd5b505af115801562000af4573d6000803e3d6000fd5b5050505062000b1c604051806060016040528060288152602001620203b16028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562000b8495919092169390929091016200305d565b6000604051808303816000875af115801562000ba4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bce91908101906200310d565b905062000bda620025bf565b60008180602001905181019062000bf2919062003171565b60215490915062000c0e9082906001600160a01b03166200284f565b6040517fe5d6bf0200000000000000000000000000000000000000000000000000000000815260048101849052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e5d6bf0290602401600060405180830381600087803b15801562000c7557600080fd5b505af115801562000c8a573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b15801562000ce857600080fd5b505af115801562000cfd573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000d6695949094169391929091016200305d565b6000604051808303816000875af115801562000d86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000db091908101906200310d565b50737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0262000dd8856001620031c7565b6040518263ffffffff1660e01b815260040162000df791815260200190565b600060405180830381600087803b15801562000e1257600080fd5b505af115801562000e27573d6000803e3d6000fd5b505060225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015b600060405180830381600087803b15801562000e8657600080fd5b505af115801562000e9b573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925062000f599190600401620031e3565b600060405180830381600087803b15801562000f7457600080fd5b505af115801562000f89573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc58965062000ff295949094169391929091016200305d565b6000604051808303816000875af115801562001012573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200103c91908101906200310d565b50505050565b60606013805480602002602001604051908101604052809291908181526020016000905b828210156200071a5760008481526020908190206040805180820182526002860290920180546001600160a01b031683526001810180548351818702810187019094528084529394919385830193928301828280156200111357602002820191906000526020600020906000905b82829054906101000a900460e01b6001600160e01b03191681526020019060040190602082600301049283019260010382029150808411620010d45790505b5050505050815250508152602001906001019062001066565b60006040516200113c9062002d5c565b604051809103906000f08015801562001159573d6000803e3d6000fd5b5090506000620011b061737960f01b7f6e616d65737061636500000000000000000000000000000000000000000000007f6e6f44656c65676174696f6e0000000000000000000000000000000000000000620029e1565b601f546040517f3350b6a9000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03858116602483015260016044830152929350911690633350b6a990606401600060405180830381600087803b1580156200122157600080fd5b505af115801562001236573d6000803e3d6000fd5b505060215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa79150602401600060405180830381600087803b1580156200129457600080fd5b505af1158015620012a9573d6000803e3d6000fd5b5050604080516001600160a01b03861660248201527faf5854770000000000000000000000000000000000000000000000000000000060448083019190915282518083039091018152606490910182526020810180516001600160e01b03167f74b5e6ff0000000000000000000000000000000000000000000000000000000017905290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506200137e9190600401620031e3565b600060405180830381600087803b1580156200139957600080fd5b505af1158015620013ae573d6000803e3d6000fd5b5050601f546022546040805160018082528183019092526001600160a01b039384169550631d2257ba945092909116918591602082018180368337019050506040518463ffffffff1660e01b81526004016200140d939291906200305d565b600060405180830381600087803b1580156200142857600080fd5b505af11580156200143d573d6000803e3d6000fd5b505050505050565b60606010805480602002602001604051908101604052809291908181526020016000905b828210156200071a5783829060005260206000200180546200148b9062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620014b99062002fe3565b80156200150a5780601f10620014de576101008083540402835291602001916200150a565b820191906000526020600020905b815481529060010190602001808311620014ec57829003601f168201915b50505050508152602001906001019062001469565b60008054610100900460ff1615620015405750600054610100900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620016665760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c6564000000000000000000000000000000000000000000000000000082840152825180830384018152606083019093526000929091620015e8917f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc491608001620031f8565b60408051601f1981840301815290829052620016049162003242565b6000604051808303816000865af19150503d806000811462001643576040519150601f19603f3d011682016040523d82523d6000602084013e62001648565b606091505b509150508080602001905181019062001662919062003260565b9150505b919050565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620016c557600080fd5b505af1158015620016da573d6000803e3d6000fd5b5050505062001702604051806060016040528060218152602001620203686021913962002300565b601f54602280546040805161737960f01b60208201526000938101939093527f73797374656d626f756e6400000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba9392169101604051602081830303815290604052620017779062003038565b6022546020546040516001600160a01b03909216602483015260448201526002606482015260840160408051601f198184030181529181526020820180516001600160e01b03167f93b94f6100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200181d939291906004016200305d565b600060405180830381600087803b1580156200183857600080fd5b505af11580156200184d573d6000803e3d6000fd5b505050506200185b620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b158015620018b557600080fd5b505af1158015620018ca573d6000803e3d6000fd5b50505050620018f26040518060600160405280602a8152602001620203d9602a913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc58956200195a95919092169390929091016200305d565b6000604051808303816000875af11580156200197a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019a491908101906200310d565b9050620019b0620025bf565b600081806020019051810190620019c8919062003171565b602154909150620019e49082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001a3e57600080fd5b505af115801562001a53573d6000803e3d6000fd5b5050601f54602154602054604051600060248201526001600160a01b03938416955063894ecc589450929091169160440160408051601f198184030181529181526020820180516001600160e01b03167fb5531d2100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001b02939291906004016200305d565b6000604051808303816000875af115801562001b22573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001b4c91908101906200310d565b915060008280602001905181019062001b66919062003284565b805160215491925062001b82916001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa79060240162000e6b565b60215460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001c2157600080fd5b505af115801562001c36573d6000803e3d6000fd5b5050505062001c7a6040518060400160405280601f81526020017f726567697374657220612063616c6c626f756e642064656c65676174696f6e0081525062002300565b601f54602280546040805161737960f01b60208201526000938101939093527f63616c6c626f756e64000000000000000000000000000000000000000000000060308401526001600160a01b0393841693631d2257ba939216910160405160208183030381529060405262001cef9062003038565b6022546020805460408051600481526024808201835293810180516001600160e01b031663d737d0c760e01b179052905162001d39946001600160a01b03169360019101620032e2565b60408051601f198184030181529181526020820180516001600160e01b03167f32c0520f00000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815262001db7939291906004016200305d565b600060405180830381600087803b15801562001dd257600080fd5b505af115801562001de7573d6000803e3d6000fd5b5050505062001df5620025bf565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001e4f57600080fd5b505af115801562001e64573d6000803e3d6000fd5b5050505062001e8c604051806060016040528060288152602001620203896028913962002300565b601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526000956001600160a01b039081169563894ecc589562001ef495919092169390929091016200305d565b6000604051808303816000875af115801562001f14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f3e91908101906200310d565b905062001f4a620025bf565b60008180602001905181019062001f62919062003171565b60215490915062001f7e9082906001600160a01b03166200284f565b60225460405163ca669fa760e01b81526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa790602401600060405180830381600087803b15801562001fd857600080fd5b505af115801562001fed573d6000803e3d6000fd5b5050602154602254604080516001600160a01b0393841660248201529290911660448084019190915281518084039091018152606490920181526020820180516001600160e01b03167fc86745f900000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250620020ab9190600401620031e3565b600060405180830381600087803b158015620020c657600080fd5b505af1158015620020db573d6000803e3d6000fd5b5050601f546021546020805460408051600480825260248201835293810180516001600160e01b031663d737d0c760e01b1790529051631129d98b60e31b81526001600160a01b03958616975063894ecc5896506200214495949094169391929091016200305d565b6000604051808303816000875af115801562002164573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200218e91908101906200310d565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801562000562576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831162000543575050505050905090565b6000604051620022059062002d6a565b604051809103906000f08015801562002222573d6000803e3d6000fd5b50604051620022319062002d78565b604051809103906000f0801580156200224e573d6000803e3d6000fd5b506040516200225d9062002d86565b604051809103906000f0801580156200227a573d6000803e3d6000fd5b50604051620022899062002d94565b604051809103906000f080158015620022a6573d6000803e3d6000fd5b50604051620022b59062002da2565b6001600160a01b039485168152928416602084015290831660408301529091166060820152608001604051809103906000f080158015620022fa573d6000803e3d6000fd5b50905090565b604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af1158015620023a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023c8919062003260565b620023d05750565b601b8054620023df9062002fe3565b9050600014601b604051602001620023f89190620033b6565b604051602081830303815290604052906200244b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b60405180910390fd5b50601d816040516200245e919062003242565b908152602001604051809103902054600014816040516020016200248391906200343d565b60405160208183030381529060405290620024cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620024429190620031e3565b50601b620024dc8282620034f5565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b031663d1a5b36f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200253c57600080fd5b505af115801562002551573d6000803e3d6000fd5b505050505a601c55604080517f2bcd50e00000000000000000000000000000000000000000000000000000000081529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91632bcd50e091600480830192600092919082900301818387803b158015620004ec57600080fd5b60005a604080517f4777f3cf0000000000000000000000000000000000000000000000000000000081526004810191909152601460448201527f4741535f5245504f525445525f454e41424c4544000000000000000000000000606482015260006024820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d90634777f3cf906084016020604051808303816000875af115801562002667573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200268d919062003260565b620026955750565b600060a082601c54620026a99190620035c2565b620026b59190620035c2565b620026c2906001620031c7565b90506000811162002730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f676173207265706f7274206469646e2774207573652067617300000000000000604482015260640162002442565b80601d601b604051620027449190620035d8565b90815260405190819003602001902055601e80546001810182556000919091527f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e3500162002793601b82620035e6565b5062002831601b8054620027a79062002fe3565b80601f0160208091040260200160405190810160405280929190818152602001828054620027d59062002fe3565b8015620028265780601f10620027fa5761010080835404028352916020019162002826565b820191906000526020600020905b8154815290600101906020018083116200280857829003601f168201915b505050505062002a6a565b604080516020810190915260008152601b906200218e9082620034f5565b806001600160a01b0316826001600160a01b031614620029dd577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50604051620028ef9060208082526025908201527f4572726f723a2061203d3d2062206e6f7420736174697366696564205b61646460408201527f726573735d000000000000000000000000000000000000000000000000000000606082015260800190565b60405180910390a160408051818152600a818301527f2020202020204c6566740000000000000000000000000000000000000000000060608201526001600160a01b038416602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a160408051818152600a818301527f202020202052696768740000000000000000000000000000000000000000000060608201526001600160a01b038316602082015290517f9c4e8541ca8f0dc1c413f9108f66d82d3cecb1bddbce437a61caa3175c4cc96f9181900360800190a1620029dd62002b70565b5050565b6000620029f160706010620031c7565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b62002b6d7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d60001c6001600160a01b0316636900a3ae601d8460405162002ab2919062003242565b908152604051908190036020018120547fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16825262002afc9160040190815260200190565b600060405180830381865afa15801562002b1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002b4491908101906200310d565b8260405160200162002b58929190620036c8565b60405160208183030381529060405262002cb7565b50565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1562002c895760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d602082018190527f6661696c656400000000000000000000000000000000000000000000000000009282019290925260016060820152600091907f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc49060800160408051601f198184030181529082905262002c249291602001620031f8565b60408051601f198184030181529082905262002c409162003242565b6000604051808303816000865af19150503d806000811462002c7f576040519150601f19603f3d011682016040523d82523d6000602084013e62002c84565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b62002b6d8160405160240162002cce9190620031e3565b60408051601f198184030181529190526020810180516001600160e01b03167f41304fac0000000000000000000000000000000000000000000000000000000017905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b61553a806200374e83390190565b617b928062008c8883390190565b611786806201081a83390190565b6102858062011fa083390190565b611a79806201222583390190565b6118cc8062013c9e83390190565b610b15806201556a83390190565b61567c806201607f83390190565b614c6d806201b6fb83390190565b6020808252825182820181905260009190848201906040850190845b8181101562002df35783516001600160a01b03168352928401929184019160010162002dcc565b50909695505050505050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b8481101562002ebf57898403603f19018652825180516001600160a01b03168552880151888501889052805188860181905290890190839060608701905b8083101562002ea95783517fffffffff00000000000000000000000000000000000000000000000000000000168252928b019260019290920191908b019062002e65565b50978a0197955050509187019160010162002e27565b50919998505050505050505050565b60005b8381101562002eeb57818101518382015260200162002ed1565b50506000910152565b6000815180845262002f0e81602086016020860162002ece565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101562002f7b57603f1988860301845262002f6885835162002ef4565b9450928501929085019060010162002f49565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038316815260406020820152600062002fdb604083018462002ef4565b949350505050565b600181811c9082168062002ff857607f821691505b60208210810362003032577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80516020808301519190811015620030325760001960209190910360031b1b16919050565b6001600160a01b038416815282602082015260606040820152600062003087606083018462002ef4565b95945050505050565b600067ffffffffffffffff80841115620030ae57620030ae62002f88565b604051601f8501601f19908116603f01168101908282118183101715620030d957620030d962002f88565b81604052809350858152868686011115620030f357600080fd5b6200310386602083018762002ece565b5050509392505050565b6000602082840312156200312057600080fd5b815167ffffffffffffffff8111156200313857600080fd5b8201601f810184136200314a57600080fd5b62002fdb8482516020840162003090565b6001600160a01b038116811462002b6d57600080fd5b6000602082840312156200318457600080fd5b815162003191816200315b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115620031dd57620031dd62003198565b92915050565b60208152600062003191602083018462002ef4565b7fffffffff0000000000000000000000000000000000000000000000000000000083168152600082516200323481600485016020870162002ece565b919091016004019392505050565b600082516200325681846020870162002ece565b9190910192915050565b6000602082840312156200327357600080fd5b815180151581146200319157600080fd5b6000604082840312156200329757600080fd5b6040516040810181811067ffffffffffffffff82111715620032bd57620032bd62002f88565b6040528251620032cd816200315b565b81526020928301519281019290925250919050565b6001600160a01b03851681528360208201526080604082015260006200330c608083018562002ef4565b905082606083015295945050505050565b600081546200332c8162002fe3565b600182811680156200334757600181146200337b57620033ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450620033ac565b8560005260208060002060005b85811015620033a35781548a82015290840190820162003388565b50505082870194505b5050505092915050565b7f676173207265706f72742022000000000000000000000000000000000000000081526000620033ea600c8301846200331d565b7f2220697320616c72656164792072756e6e696e6720616e64206f6e6c79206f6e81527f65207265706f72742063616e2062652072756e20617420612074696d650000006020820152603d019392505050565b7f676173207265706f7274202200000000000000000000000000000000000000008152600082516200347781600c85016020870162002ece565b7f2220616c7265616479207573656420666f722074686973207465737400000000600c939091019283015250602801919050565b601f8211156200218e57600081815260208120601f850160051c81016020861015620034d45750805b601f850160051c820191505b818110156200143d57828155600101620034e0565b815167ffffffffffffffff81111562003512576200351262002f88565b6200352a8162003523845462002fe3565b84620034ab565b602080601f831160018114620035625760008415620035495750858301515b600019600386901b1c1916600185901b1785556200143d565b600085815260208120601f198616915b82811015620035935788860151825594840194600190910190840162003572565b5085821015620035b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115620031dd57620031dd62003198565b60006200319182846200331d565b818103620035f2575050565b620035fe825462002fe3565b67ffffffffffffffff81111562003619576200361962002f88565b6200362a8162003523845462002fe3565b6000601f821160018114620036615760008315620036485750848201545b600019600385901b1c1916600184901b17845562000501565b600085815260209020601f19841690600086815260209020845b838110156200369d57828601548255600195860195909101906020016200367b565b5085831015620035b25793015460001960f8600387901b161c19169092555050600190811b01905550565b7f474153205245504f52543a2000000000000000000000000000000000000000008152600083516200370281600c85016020880162002ece565b7f2000000000000000000000000000000000000000000000000000000000000000600c9184019182015283516200374181600d84016020880162002ece565b01600d0194935050505056fe60a060405234801561001057600080fd5b506100477f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e17580546001600160a01b03191630179055565b6040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907fc7f5fdc8526b76f54916701bc910876243ffff2a40b0bb8d59eea8151c52c00590600090a2336080526040516e0c4b8c0b8c0b5d5b985d591a5d1959608a1b907f7f8f36afe3fb61c459c1a54a60b8a477eab02cc58e49f547561a40906239cb8290600090a2608051615452620000e86000396000818161036f015261139601526154526000f3fe6080604052600436106101d15760003560e01c80638c364d59116100f7578063c4d66de811610095578063d9c03a0411610064578063d9c03a04146106d1578063dbbf0e21146105d1578063e228a4a3146106f1578063ef6ea8621461071157610266565b8063c4d66de814610651578063cc49db7e14610671578063d03edb8c14610691578063d4285dc2146106b157610266565b8063af068c9e116100d1578063af068c9e146105f1578063b047c1eb14610611578063c0a2895a14610631578063c11222291461054b57610266565b80638c364d59146105915780639f1fcf0a146105b1578063a53417ed146105d157610266565b8063390baae01161016f5780634dc77d971161013e5780634dc77d971461050b578063505a181d1461052b5780636951955d1461054b578063894ecc581461057e57610266565b8063390baae01461047b5780633a77c2c21461049b5780633ae7af08146104c9578063419b58fd146104dc57610266565b8063150f3262116101ab578063150f3262146103fb5780631e7889771461041b578063298314fb1461043b5780633708196e1461045b57610266565b806302d05d3f1461035d57806305242d2f146103ae578063114a7266146103db57610266565b366102665760408051616e7360f01b6020820152600060228201819052603082018190529161021891016040516020818303038152906040526102139061459d565b610731565b60408051616e7360f01b6020820152600060228201819052603082015291925061026491016040516020818303038152906040526102559061459d565b61025f34846145da565b61080f565b005b303303610299576040516327a1460b60e21b81526001600160e01b03196000351660048201526024015b60405180910390fd5b6000806102b16000356001600160e01b031916610901565b91509150816000801b036102ff576040517ffdde54e20000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610290565b60006103436000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250869150610a119050565b9050600061035333858434610a44565b9050805160208201f35b34801561036957600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c936600461464a565b610a71565b6040516103a59190614700565b3480156103e757600080fd5b506102646103f6366004614755565b610ab4565b34801561040757600080fd5b50610264610416366004614755565b610b67565b34801561042757600080fd5b506103ce6104363660046147e2565b610c12565b34801561044757600080fd5b50610264610456366004614840565b610c5c565b34801561046757600080fd5b506102646104763660046148ed565b610d45565b34801561048757600080fd5b506102646104963660046148ed565b610dfb565b3480156104a757600080fd5b506104bb6104b6366004614983565b610ea8565b6040519081526020016103a5565b6103ce6104d7366004614a53565b610eb9565b3480156104e857600080fd5b506104fc6104f7366004614a9a565b610ef5565b6040516103a593929190614aed565b34801561051757600080fd5b506103ce610526366004614b8d565b610f4a565b34801561053757600080fd5b50610264610546366004614bf6565b610f59565b34801561055757600080fd5b507f312e302e302d756e6175646974656400000000000000000000000000000000006104bb565b6103ce61058c366004614c57565b610fce565b34801561059d57600080fd5b506104bb6105ac36600461464a565b61112a565b3480156105bd57600080fd5b506104bb6105cc366004614cb0565b61116d565b3480156105dd57600080fd5b506104bb6105ec366004614d0f565b61117b565b3480156105fd57600080fd5b5061026461060c366004614d66565b611188565b34801561061d57600080fd5b5061026461062c366004614da0565b611204565b34801561063d57600080fd5b5061026461064c366004614e2f565b6112af565b34801561065d57600080fd5b5061026461066c366004614ebc565b61135d565b34801561067d57600080fd5b506104fc61068c366004614bf6565b6114d8565b34801561069d57600080fd5b506103ce6106ac3660046147e2565b61152a565b3480156106bd57600080fd5b506104bb6106cc366004614983565b61156b565b3480156106dd57600080fd5b506102646106ec36600461464a565b611576565b3480156106fd57600080fd5b506104bb61070c366004614983565b6115f6565b34801561071d57600080fd5b5061026461072c366004614755565b611601565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061076a5761076a614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e636573000000000000000000000000000000000000000000000000603083015260009161080791015b6040516020818303038152906040526107df9061459d565b8360007e200100200000000000000000000000000000000000000000000000000000006116ac565b949350505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061084557610845614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526108fc906108b19061459d565b826000856040516020016108c791815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006116d9565b505050565b6040805160018082528183019092526000918291829160208083019080368337019050509050837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061095a5761095a614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f720000000000000000000000000000000060308201528151808203909301835281019052600090819081906109f3906109cd9061459d565b857e240200200400000000000000000000000000000000000000000000000000006116ee565b925092509250610a048383836117f6565b9550955050505050915091565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060600080610a558787878761180e565b9150915081610a6757610a67816119f2565b9695505050505050565b6060610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506119fa9050565b303303610ae2576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610aec8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a8b92505050565b505050505050565b303303610b95576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610b9f8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611aa692505050565b6060610c5385858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250611ae1915050565b95945050505050565b303303610c8a576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610c948833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611b1b92505050565b5050505050505050565b303303610d73576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610d7d8733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250889250611b31915050565b50505050505050565b303303610e29576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610e338733611a3f565b610df28787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152508892506116d9915050565b6000610eb382611b74565b92915050565b6060303303610ee9576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610a3d33848434610a44565b606060006060610f3a878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506116ee915050565b9250925092509450945094915050565b6060610a678686868686611c44565b303303610f87576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b610f918333611a3f565b6108fc83838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d0592505050565b6060303303610ffe576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b038516036110215761101a33848434610a44565b9050610a3d565b600061102d8533611d18565b905061103c8186338787611dea565b156110555761104d85858534610a44565b915050610a3d565b6000611062866000611d18565b90506110718187338888611dea565b1561108b5761108286868634610a44565b92505050610a3d565b60006110bd616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000881617611ebf565b90506110cc8188338989611dea565b156110e7576110dd87878734610a44565b9350505050610a3d565b6040517fc86745f90000000000000000000000000000000000000000000000000000000081526001600160a01b0388166004820152336024820152604401610290565b6000610a67868686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506116ac9050565b6000610c5385858585611f59565b6000610807848484611fa1565b3033036111b6576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b60408051616e7360f01b602082015260006022820181905260308201526111f691016040516020818303038152906040526111f09061459d565b33611fb7565b6112008282612008565b5050565b303303611232576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b61123c8633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061211a92505050565b3033036112dd576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6112e78833611a3f565b610d3b8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528b93508a9250899189908990819084018382808284376000920191909152506123c992505050565b30330361138b576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461142f5760408051616e7360f01b602082015260006022820181905260308201526113fa91016040516020818303038152906040526113f59061459d565b6123e1565b336040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b600061147b7f636f7265000000000000000000000000000000000000000000000000000000007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47061250f565b6001600160a01b0316146114bb576040517f15e34a4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008152602081019091526114d5908290612008565b50565b60606000606061151b8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061262492505050565b92509250925093509350939050565b6060610c538585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061264a915050565b6000610eb382612660565b3033036115a4576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6115ae8533611a3f565b6115ef858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792508691506126d49050565b5050505050565b6000610eb38261272d565b30330361162f576040516327a1460b60e21b81526001600160e01b0319600035166004820152602401610290565b6116398633611a3f565b610b5f8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061275392505050565b6000610c536116bb868661278e565b60ff858116601b0360080285901c166116d485876127e4565b612827565b6115ef85856116e884876127e4565b8561211a565b60606000606060006116ff85612878565b905061170c87878361289b565b93506000611719866128d4565b905080156117eb5761172b8888612911565b935066ffffffffffffff841667ffffffffffffffff81111561174f5761174f61499c565b6040519080825280601f01601f191660200182016040528015611779576020820181803683370190505b5092506020830160005b828160ff1610156117e857600061179b8b8b84612924565b905060006117b8888460ff166028026038011c64ffffffffff1690565b90506117c782600083876129a4565b6117d181856145da565b9350505080806117e090614f1a565b915050611783565b50505b505093509350939050565b60008061180285612a73565b90969095509350505050565b60006060600061181d86612a88565b905060005b81518110156118fa57600082828151811061183f5761183f614ed9565b6020026020010151905061186b6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156118e7576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c3323031906118b4908c908c908c90600401614f39565b600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b505050505b50806118f281614f61565b915050611822565b5061190787858888612b74565b909350915060005b81518110156119e757600082828151811061192c5761192c614ed9565b602002602001015190506119586002826affffffffffffffffffffff1916612b5690919063ffffffff16565b156119d4576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f99906119a1908c908c908c90600401614f39565b600060405180830381600087803b1580156119bb57600080fd5b505af11580156119cf573d6000803e3d6000fd5b505050505b50806119df81614f61565b91505061190f565b505094509492505050565b805160208201fd5b6060611a0582612c8f565b8360ff161015611a2257611a1b85858585612ca1565b9050610807565b611a1b8585611a3085612c8f565b611a3a9087614f7b565b611ae1565b611a498282612cce565b61120057611a56826123e1565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610290929190614eef565b611aa084848484611a9b89611b74565b611b31565b50505050565b6000611ab28585612911565b90506000611acf828560ff166028026038011c64ffffffffff1690565b9050610b5f8686868460008888612d11565b6060610807611af1858585612924565b6000611b1685611b018989612911565b9060ff166028026038011c64ffffffffff1690565b613127565b6115ef8585858585611b2c8b611b74565b61314a565b611b3a81612c8f565b8360ff161015611b5657611b5185858585856116d9565b6115ef565b6115ef8585611b6484612c8f565b611b6e9087614f7b565b85612753565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b603082015260009101604051602081830303815290604052611bbc9061459d565b8203611be857507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201526473746f726560d81b6022820152655461626c657360d01b6030820152610eb391611c3b9101604051602081830303815290604052611c359061459d565b846134a3565b60206000612827565b60606000611c528787612911565b90506000611c6f828760ff166028026038011c64ffffffffff1690565b90508085101580611c7f57508084115b15611cda578081861015611c9d57611c98600186614f94565b611c9f565b855b6040517f7e8578d300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610290565b6000611ce7898989612924565b9050611cf88187611b168189614f94565b9998505050505050505050565b6112008282611d1385611b74565b6134bf565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b81600081518110611d5d57611d5d614ed9565b602002602001018181525050826001600160a01b031660001b81600181518110611d8957611d89614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152600091610c5391016107c7565b6000611df5866137d2565b15611e0257506001610c53565b85611e0f57506000610c53565b600080611e8b8660008a8a8989604051602401611e2e93929190614f39565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a86b55000000000000000000000000000000000000000000000000000000000179052612b74565b9150915081611e9f57600092505050610c53565b80806020019051810190611eb39190614fa7565b98975050505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611ef857611ef8614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c6567617400000000000000000000000000000000603083015260009161080791016107c7565b600080611f6583612c8f565b90508060ff168460ff161015611f8d5760ff848116601b0360080284901c165b915050610807565b611f858686611f9c8488614f7b565b61384d565b6000610807848484611fb288611b74565b611f59565b6001600160a01b038116611ff1616e7360f01b7dffffffffffffffffffffffffffff0000000000000000000000000000000085161761385d565b6001600160a01b03161461120057611a56826123e1565b612032827f780ac2fc00000000000000000000000000000000000000000000000000000000613902565b6120a7336000848460405160240161204a9190614700565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f7c5b03350000000000000000000000000000000000000000000000000000000017905261395d565b50611200826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210d9190614fc9565b825160208401208461396e565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036121a457837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161219793929190615037565b60405180910390a2611aa0565b60006121b0858561278e565b905060006121bd86613aae565b905060005b815181101561229c5760008282815181106121df576121df614ed9565b6020026020010151905061220b6004826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612289576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90612256908b908b908b908b9060040161506a565b600060405180830381600087803b15801561227057600080fd5b505af1158015612284573d6000803e3d6000fd5b505050505b508061229481614f61565b9150506121c2565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516122d193929190615037565b60405180910390a26122ec828565ffffffffffff1685613b49565b60005b8151811015610df257600082828151811061230c5761230c614ed9565b602002602001015190506123386008826affffffffffffffffffffff1916612b5690919063ffffffff16565b156123b6576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612383908b908b908b908b9060040161506a565b600060405180830381600087803b15801561239d57600080fd5b505af11580156123b1573d6000803e3d6000fd5b505050505b50806123c181614f61565b9150506122ef565b610b5f8686868686866123dc8d8d612911565b612d11565b606081601081901b60006123f483613b5f565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561244f5761244a7fffffffffffffffffffffffffffff0000000000000000000000000000000000008416613b76565b612486565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff198316156124ad576124a883613b76565b6124e4565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016124f6939291906150a3565b6040516020818303038152906040529350505050919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836fffffffffffffffffffffffffffffffff19168160008151811061255b5761255b614ed9565b602002602001018181525050828160018151811061257b5761257b614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015260009161261891015b6040516020818303038152906040526125f09061459d565b8360007e140100140000000000000000000000000000000000000000000000000000006116ac565b60601c95945050505050565b60606000606061263d858561263888611b74565b6116ee565b9250925092509250925092565b606061080784848461265b88611b74565b6119fa565b600061266b82613c06565b905061267682613cbf565b6126cf57818260405160200161268e91815260200190565b60408051601f19818403018152908290527f41e713ad0000000000000000000000000000000000000000000000000000000082526102909291600401615131565b919050565b60006126e08585612911565b905060006126fd828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866127168764ffffffffff8716614f94565b604080516000815260208101909152889088612d11565b600061273882613da1565b9050806126cf57818260405160200161268e91815260200190565b600061275f8585612911565b9050600061277c828560ff166028026038011c64ffffffffff1690565b9050610b5f8686866000858888612d11565b600082826040516020016127a392919061514a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561281f5761280b60ff601b83900360080287901c16836145da565b91508061281781614f61565b9150506127e9565b509392505050565b60006020821061284d5760208204840193506020828161284957612849615185565b0691505b508254600882021b60208290038084111561281f576001850154600882021c82179150509392505050565b6000600861288860026020614f94565b612892919061519b565b9190911c919050565b6060816000036128ba5750604080516020810190915260008152610a3d565b60006128c6858561278e565b9050610c5381600085613127565b600060086001806128e760026020614f94565b6128f19190614f94565b6128fb9190614f94565b612905919061519b565b8260ff911c1692915050565b6000610a3d6129208484613e5a565b5490565b6000838360405160200161293992919061514a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b8215612a2d57602083106129ce576020830484019350602083816129ca576129ca615185565b0692505b8215612a2d5760208390036000818410156129f25750600019600884021c196129fd565b50600019600882021c195b8554600886021b811984511682821617845250818411612a1e575050611aa0565b50600194909401939182900391015b5b60208210612a4f5783548152600190930192601f1990910190602001612a2e565b8115611aa0576000600019600884021c198251865482169119161782525050505050565b602081015160408201516000905b9050915091565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612ac257612ac2614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091612b3f91015b604051602081830303815290604052612b379061459d565b836000611ae1565b9050610807612b518260008451613eb0565b613f40565b60008160ff1682612b678560581c90565b1660ff1614905092915050565b60006060600080612b8486613f51565b90925090506001600160a01b038216612bd55785612ba1876123e1565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610290929190615131565b80612be457612be48689611a3f565b8615612c30577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000612c1d82610731565b9050612c2d8261025f8b846145da565b50505b6000612c3c8760101b90565b7fffffffffffffffffffffffffffff0000000000000000000000000000000000001614612c7457612c6f88888488614035565b612c80565b612c80888884886140ad565b90999098509650505050505050565b6000600860016128f160026020614f94565b6060610c53612cb0868661278e565b612cba84866127e4565b60ff868116601b0360080286901c16613127565b6000612d01616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516178361410e565b80610a3d5750610a3d838361410e565b613a3160f11b877fffff0000000000000000000000000000000000000000000000000000000000001614612d9b57613a3160f11b8788604051602001612d5991815260200190565b60408051601f19818403018152908290527f31b466830000000000000000000000000000000000000000000000000000000082526102909392916004016151b2565b6000612db6828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff1683612dcf9190614f94565b612dd991906145da565b9050808214158015612dfb575081612df186886151f3565b64ffffffffff1614155b15612e4b576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610290565b818664ffffffffff161115612e9c576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610290565b6000612ea98489846141e0565b90506000612eb68b613aae565b905060005b8151811015612f8b576000828281518110612ed857612ed8614ed9565b60200260200101519050612f046010826affffffffffffffffffffff1916612b5690919063ffffffff16565b15612f7857606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b8152600401612f459796959493929190615218565b600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5080612f8381614f61565b915050612ebb565b5064ffffffffff881660005b8a60ff168160ff161015612fca57612fbe878260ff166028026038011c64ffffffffff1690565b90910190600101612f97565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c604051613003959493929190615276565b60405180910390a25082841461302457600061301f8c8c613e5a565b839055505b60006130318c8c8c612924565b9050613045818a64ffffffffff1689613b49565b5060005b815181101561311957600082828151811061306657613066614ed9565b602002602001015190506130926020826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561310657606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b81526004016130d39796959493929190615218565b600060405180830381600087803b1580156130ed57600080fd5b505af1158015613101573d6000803e3d6000fd5b505050505b508061311181614f61565b915050613049565b505050505050505050505050565b60405160208101601f19603f848401011660405282825261281f858585846129a4565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff00000000000000000000000000000000000000000000000000000000000016036131d657857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9868686866040516131c994939291906152bc565b60405180910390a2610b5f565b60006131e187613aae565b905060005b81518110156132c457600082828151811061320357613203614ed9565b6020026020010151905061322f6001826affffffffffffffffffffff1916612b5690919063ffffffff16565b156132b1576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c9061327e908c908c908c908c908c908c906004016152fb565b600060405180830381600087803b15801561329857600080fd5b505af11580156132ac573d6000803e3d6000fd5b505050505b50806132bc81614f61565b9150506131e6565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a9878787876040516132fb94939291906152bc565b60405180910390a2600061330f888861278e565b905060006020870190506133278260008951846142ae565b6000613332856128d4565b11156133b65760006133448a8a613e5a565b878155905060208601915060008060005b61335e886128d4565b8160ff1610156133b1576133738d8d83612924565b925061338e8a8260ff166028026038011c64ffffffffff1690565b915061339d83600084886142ae565b6133a782866145da565b9450600101613355565b505050505b60005b83518110156134975760008482815181106133d6576133d6614ed9565b602002602001015190506134026002826affffffffffffffffffffff1916612b5690919063ffffffff16565b15613484576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613451908e908e908e908e908e908e906004016152fb565b600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b505050505b508061348f81614f61565b9150506133b9565b50505050505050505050565b60408051602081018490529081018290526000906060016127a3565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361354557827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d07836040516135389190615354565b60405180910390a2505050565b600061355084613aae565b905060005b815181101561362d57600082828151811061357257613572614ed9565b6020026020010151905061359e6040826affffffffffffffffffffff1916612b5690919063ffffffff16565b1561361a576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf45906135e790899089908990600401615367565b600060405180830381600087803b15801561360157600080fd5b505af1158015613615573d6000803e3d6000fd5b505050505b508061362581614f61565b915050613555565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078460405161365e9190615354565b60405180910390a26000613672858561278e565b90506136cb81600061368386612878565b67ffffffffffffffff81111561369b5761369b61499c565b6040519080825280601f01601f1916602001820160405280156136c5576020820181803683370190505b50613b49565b60006136d6846128d4565b11156136f75760006136e88686613e5a565b90506136f581602061436e565b505b60005b8251811015610b5f57600083828151811061371757613717614ed9565b602002602001015190506137436080826affffffffffffffffffffff1916612b5690919063ffffffff16565b156137bf576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b9061378c908a908a908a90600401615367565b600060405180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050505b50806137ca81614f61565b9150506136fa565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d697465640000000000000000000000000000000000000000000000603083015291016040516020818303038152906040526138459061459d565b909114919050565b600061080782611b018686612911565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061389657613896614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526000916138f791016125d8565b60601c949350505050565b61390c82826143ab565b611200576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610290565b6060600080610a55878787876140ad565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff1916816000815181106139b6576139b6614ed9565b60200260200101818152505082816001815181106139d6576139d6614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201528151808203909301835281019052611aa090613a429061459d565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006116d9565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613ae857613ae8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091612b3f9101612b1f565b6108fc83838351613b5a8560200190565b6142ae565b6000613b6d607060106145da565b9190911b919050565b606060005b6010811015613bd6576fffffffffffffffffffffffffffffffff198316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615613bd65780613bce81614f61565b915050613b7b565b604080516fffffffffffffffffffffffffffffffff19851660208201528151603090910190915281815280610807565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613c3f57613c3f614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613c979061459d565b8360017e600302202020000000000000000000000000000000000000000000000000006116ac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613cf857613cf8614ed9565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091613d9591015b604051602081830303815290604052613d6d9061459d565b8360007e010100010000000000000000000000000000000000000000000000000000006116ac565b90506108078160f81c90565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110613dda57613dda614ed9565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b6022820152655461626c657360d01b6030820152815180820390930183528101905260009061080790613e329061459d565b8360027e600302202020000000000000000000000000000000000000000000000000006116ac565b60008282604051602001613e6f92919061514a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000818311158015613ec3575083518211155b613eff578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161029093929190615390565b60208401613f0d84826145da565b90506000613f1b8585614f94565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610a3d83601560006143c7565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f8b57613f8b614ed9565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061402490613ffe9061459d565b857e150200140100000000000000000000000000000000000000000000000000006116ee565b925092509250610a04838383614442565b60006060836001600160a01b0316600061405085898961444e565b60405161405d91906153b5565b60006040518083038185875af1925050503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b606091505b509097909650945050505050565b60006060836001600160a01b03166140c684888861444e565b6040516140d391906153b5565b600060405180830381855af49150503d806000811461409a576040519150601f19603f3d011682016040523d82523d6000602084013e61409f565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061414757614147614ed9565b602002602001018181525050826001600160a01b031660001b8160018151811061417357614173614ed9565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f7572636541636365737300000000000000000000000000000000000060308301526000916141d49101613d55565b9050610c538160f81c90565b600064ffffffffff821115614224576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610290565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff16808510614256578085038201915061425e565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b821561432857602083106142d8576020830484019350602083816142d4576142d4615185565b0692505b82156143285760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411614319575050611aa0565b50600194909401939182900391015b5b6020821061434a5780518455600190930192601f1990910190602001614329565b8115611aa0576000600019600884021c198554835182169119161785555050505050565b6000602061437d83601f6145da565b61438791906153d1565b61439190846145da565b90505b808310156108fc5760008355600183019250614394565b60006143b68361447d565b8015610a3d5750610a3d83836144c9565b606060006143d58560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816143fb576143fb615185565b04905060405193506020840160208202810160405281855260005b82811015614436578451871c825293870193602090910190600101614416565b50505050509392505050565b60008061180285614581565b6060838383604051602001614465939291906153f3565b60405160208183030381529060405290509392505050565b60006144a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006144c9565b8015610eb357506144c2826001600160e01b03196144c9565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d9150600051905082801561456a575060208210155b80156145765750600081115b979650505050505050565b6020810151603482015160609190911c9060009060f81c612a81565b805160208083015191908110156145be576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610eb357610eb36145c4565b60008083601f8401126145ff57600080fd5b50813567ffffffffffffffff81111561461757600080fd5b6020830191508360208260051b850101111561463257600080fd5b9250929050565b803560ff811681146126cf57600080fd5b60008060008060006080868803121561466257600080fd5b85359450602086013567ffffffffffffffff81111561468057600080fd5b61468c888289016145ed565b909550935061469f905060408701614639565b949793965091946060013592915050565b60005b838110156146cb5781810151838201526020016146b3565b50506000910152565b600081518084526146ec8160208601602086016146b0565b601f01601f19169290920160200192915050565b602081526000610a3d60208301846146d4565b60008083601f84011261472557600080fd5b50813567ffffffffffffffff81111561473d57600080fd5b60208301915083602082850101111561463257600080fd5b6000806000806000806080878903121561476e57600080fd5b86359550602087013567ffffffffffffffff8082111561478d57600080fd5b6147998a838b016145ed565b90975095508591506147ad60408a01614639565b945060608901359150808211156147c357600080fd5b506147d089828a01614713565b979a9699509497509295939492505050565b600080600080606085870312156147f857600080fd5b84359350602085013567ffffffffffffffff81111561481657600080fd5b614822878288016145ed565b9094509250614835905060408601614639565b905092959194509250565b60008060008060008060008060a0898b03121561485c57600080fd5b88359750602089013567ffffffffffffffff8082111561487b57600080fd5b6148878c838d016145ed565b909950975060408b01359150808211156148a057600080fd5b6148ac8c838d01614713565b909750955060608b0135945060808b01359150808211156148cc57600080fd5b506148d98b828c01614713565b999c989b5096995094979396929594505050565b600080600080600080600060a0888a03121561490857600080fd5b87359650602088013567ffffffffffffffff8082111561492757600080fd5b6149338b838c016145ed565b909850965086915061494760408b01614639565b955060608a013591508082111561495d57600080fd5b5061496a8a828b01614713565b989b979a50959894979596608090950135949350505050565b60006020828403121561499557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156149db576149db61499c565b604052919050565b600082601f8301126149f457600080fd5b813567ffffffffffffffff811115614a0e57614a0e61499c565b614a216020601f19601f840116016149b2565b818152846020838601011115614a3657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a6657600080fd5b82359150602083013567ffffffffffffffff811115614a8457600080fd5b614a90858286016149e3565b9150509250929050565b60008060008060608587031215614ab057600080fd5b84359350602085013567ffffffffffffffff811115614ace57600080fd5b614ada878288016145ed565b9598909750949560400135949350505050565b606081526000614b0060608301866146d4565b8460208401528281036040840152610a6781856146d4565b600082601f830112614b2957600080fd5b8135602067ffffffffffffffff821115614b4557614b4561499c565b8160051b614b548282016149b2565b9283528481018201928281019087851115614b6e57600080fd5b83870192505b8483101561457657823582529183019190830190614b74565b600080600080600060a08688031215614ba557600080fd5b85359450602086013567ffffffffffffffff811115614bc357600080fd5b614bcf88828901614b18565b945050614bde60408701614639565b94979396509394606081013594506080013592915050565b600080600060408486031215614c0b57600080fd5b83359250602084013567ffffffffffffffff811115614c2957600080fd5b614c35868287016145ed565b9497909650939450505050565b6001600160a01b03811681146114d557600080fd5b600080600060608486031215614c6c57600080fd5b8335614c7781614c42565b925060208401359150604084013567ffffffffffffffff811115614c9a57600080fd5b614ca6868287016149e3565b9150509250925092565b60008060008060808587031215614cc657600080fd5b84359350602085013567ffffffffffffffff811115614ce457600080fd5b614cf087828801614b18565b935050614cff60408601614639565b9396929550929360600135925050565b600080600060608486031215614d2457600080fd5b83359250602084013567ffffffffffffffff811115614d4257600080fd5b614d4e86828701614b18565b925050614d5d60408501614639565b90509250925092565b60008060408385031215614d7957600080fd5b8235614d8481614c42565b9150602083013567ffffffffffffffff811115614a8457600080fd5b60008060008060008060808789031215614db957600080fd5b86359550602087013567ffffffffffffffff80821115614dd857600080fd5b614de48a838b016145ed565b90975095506040890135915065ffffffffffff82168214614e0457600080fd5b909350606088013590808211156147c357600080fd5b803564ffffffffff811681146126cf57600080fd5b60008060008060008060008060c0898b031215614e4b57600080fd5b88359750602089013567ffffffffffffffff80821115614e6a57600080fd5b614e768c838d016145ed565b9099509750879150614e8a60408c01614639565b9650614e9860608c01614e1a565b9550614ea660808c01614e1a565b945060a08b01359150808211156148cc57600080fd5b600060208284031215614ece57600080fd5b8135610a3d81614c42565b634e487b7160e01b600052603260045260246000fd5b604081526000614f0260408301856146d4565b90506001600160a01b03831660208301529392505050565b600060ff821660ff8103614f3057614f306145c4565b60010192915050565b6001600160a01b0384168152826020820152606060408201526000610c5360608301846146d4565b60006000198203614f7457614f746145c4565b5060010190565b60ff8281168282160390811115610eb357610eb36145c4565b81810381811115610eb357610eb36145c4565b600060208284031215614fb957600080fd5b81518015158114610a3d57600080fd5b600060208284031215614fdb57600080fd5b81516fffffffffffffffffffffffffffffffff1981168114610a3d57600080fd5b600081518084526020808501945080840160005b8381101561502c57815187529582019590820190600101615010565b509495945050505050565b60608152600061504a6060830186614ffc565b65ffffffffffff851660208401528281036040840152610a6781856146d4565b8481526080602082015260006150836080830186614ffc565b65ffffffffffff85166040840152828103606084015261457681856146d4565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516151048160038601602089016146b0565b8084019050816003820152845191506151248260048301602088016146b0565b0160040195945050505050565b82815260406020820152600061080760408301846146d4565b82815260006020808301845182860160005b828110156151785781518452928401929084019060010161515c565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b8082028115828204841417610eb357610eb36145c4565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000610c5360608301846146d4565b64ffffffffff818116838216019080821115615211576152116145c4565b5092915050565b87815260e06020820152600061523160e0830189614ffc565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c084015261526881856146d4565b9a9950505050505050505050565b60a08152600061528960a0830188614ffc565b65ffffffffffff8716602084015264ffffffffff861660408401528460608401528281036080840152611eb381856146d4565b6080815260006152cf6080830187614ffc565b82810360208401526152e181876146d4565b9050846040840152828103606084015261457681856146d4565b86815260c06020820152600061531460c0830188614ffc565b828103604084015261532681886146d4565b9050856060840152828103608084015261534081866146d4565b9150508260a0830152979650505050505050565b602081526000610a3d6020830184614ffc565b8381526060602082015260006153806060830185614ffc565b9050826040830152949350505050565b6060815260006153a360608301866146d4565b60208301949094525060400152919050565b600082516153c78184602087016146b0565b9190910192915050565b6000826153ee57634e487b7160e01b600052601260045260246000fd5b500490565b600084516154058184602089016146b0565b60609490941b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169190930190815260148101919091526034019291505056fea164736f6c6343000815000a60e06040526040516200001290620000c0565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b506001600160a01b03166080526040516200004a90620000ce565b604051809103906000f08015801562000067573d6000803e3d6000fd5b506001600160a01b031660a0526040516200008290620000dc565b604051809103906000f0801580156200009f573d6000803e3d6000fd5b506001600160a01b031660c052348015620000b957600080fd5b50620000ea565b611c058062002fea83390190565b611b3f8062004bef83390190565b611464806200672e83390190565b60805160a05160c051612ed06200011a600039600061064c015260006104ca015260006103490152612ed06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b61009561009036600461298f565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e53660046129e7565b61023c565b005b6040517f73746464656c65676174696f6e732e6d0000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b3660046129e7565b61026e565b6100b2610722565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061023761072c565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610278610722565b905061028261075e565b61028a6107fe565b61029261088f565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f63616c6c626f756e640000000000000000000000000000000000000000000000603083015291829173ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261032790612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103c59250612ae0565b600060405180830381855af49150503d8060008114610400576040519150601f19603f3d011682016040523d82523d6000602084013e610405565b606091505b5091509150816104185761041881610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f73797374656d626f756e64000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a991016040516020818303038152906040526104a890612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105469250612ae0565b600060405180830381855af49150503d8060008114610581576040519150601f19603f3d011682016040523d82523d6000602084013e610586565b606091505b5090925090508161059a5761059a81610928565b604080517f73790000000000000000000000000000000000000000000000000000000000006020820152600060228201527f74696d65626f756e640000000000000000000000000000000000000000000000603082015273ffffffffffffffffffffffffffffffffffffffff8516918291633350b6a9910160405160208183030381529060405261062a90612a98565b604051602481019190915273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516106c89250612ae0565b600060405180830381855af49150503d8060008114610703576040519150601f19603f3d011682016040523d82523d6000602084013e610708565b606091505b5090925090508161071c5761071c81610928565b50505050565b6000610237610930565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061075b5750335b90565b60408051613a3160f11b6020820152600060228201527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526107b790612a98565b7e200100200000000000000000000000000000000000000000000000000000006107df61097c565b6107e7610ac4565b6107ef610afe565b6107f7610c80565b610cf7565b565b60408051613a3160f11b6020820152600060228201527f53797374656d626f756e6444656c65670000000000000000000000000000000060308201526107fc910160405160208183030381529060405261085790612a98565b7e2001002000000000000000000000000000000000000000000000000000000061087f610dcb565b610887610ac4565b6107ef610e90565b60408051613a3160f11b6020820152600060228201527f54696d65626f756e6444656c656761740000000000000000000000000000000060308201526107fc91016040516020818303038152906040526108e890612a98565b7e20010020000000000000000000000000000000000000000000000000000000610910610fb0565b610918610ac4565b61092061102f565b6107f76110f9565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610977573391505090565b919050565b60408051600480825260a08201909252600091829190602082016080803683370190505090506061816000815181106109b7576109b7612afc565b602002602001019060c58111156109d0576109d0612b12565b908160c58111156109e3576109e3612b12565b815250506061816001815181106109fc576109fc612afc565b602002602001019060c5811115610a1557610a15612b12565b908160c5811115610a2857610a28612b12565b81525050605f81600281518110610a4157610a41612afc565b602002602001019060c5811115610a5a57610a5a612b12565b908160c5811115610a6d57610a6d612b12565b81525050605f81600381518110610a8657610a86612afc565b602002602001019060c5811115610a9f57610a9f612b12565b908160c5811115610ab257610ab2612b12565b905250610abe81611170565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050601f81600081518110610a8657610a86612afc565b60408051600480825260a08201909252606091816020015b6060815260200190600190039081610b165790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610b7657610b76612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610bca57610bca612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c1e57610c1e612afc565b60200260200101819052506040518060400160405280600c81526020017f63616c6c4461746148617368000000000000000000000000000000000000000081525081600381518110610c7257610c72612afc565b602002602001018190525090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610c975790505090506040518060400160405280600e81526020017f617661696c61626c6543616c6c7300000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000610d01610930565b90503073ffffffffffffffffffffffffffffffffffffffff821603610d3357610d2e878787878787611334565b610dc2565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990610d8f908a908a908a908a908a908a90600401612ba6565b600060405180830381600087803b158015610da957600080fd5b505af1158015610dbd573d6000803e3d6000fd5b505050505b50505050505050565b6040805160038082526080820190925260009182919060208201606080368337019050509050606181600081518110610e0657610e06612afc565b602002602001019060c5811115610e1f57610e1f612b12565b908160c5811115610e3257610e32612b12565b81525050606181600181518110610e4b57610e4b612afc565b602002602001019060c5811115610e6457610e64612b12565b908160c5811115610e7757610e77612b12565b81525050605f81600281518110610a8657610a86612afc565b60408051600380825260808201909252606091816020015b6060815260200190600190039081610ea85790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110610f0857610f08612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610f5c57610f5c612afc565b60200260200101819052506040518060400160405280600881526020017f73797374656d496400000000000000000000000000000000000000000000000081525081600281518110610c7257610c72612afc565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610fea57610fea612afc565b602002602001019060c581111561100357611003612b12565b908160c581111561101657611016612b12565b81525050606181600181518110610a8657610a86612afc565b6040805160028082526060828101909352816020015b60608152602001906001900390816110455790505090506040518060400160405280600981526020017f64656c656761746f720000000000000000000000000000000000000000000000815250816000815181106110a5576110a5612afc565b60200260200101819052506040518060400160405280600981526020017f64656c656761746565000000000000000000000000000000000000000000000081525081600181518110610c7257610c72612afc565b604080516001808252818301909252606091816020015b60608152602001906001900390816111105790505090506040518060400160405280600c81526020017f6d617854696d657374616d70000000000000000000000000000000000000000081525081600081518110610c7257610c72612afc565b6000601c825111156111a3578151604051635318beb960e01b815260040161119a91815260200190565b60405180910390fd5b60008080805b855181101561127e5760006111e78783815181106111c9576111c9612afc565b602002602001015160c58111156111e2576111e2612b12565b611627565b9050806000036111fc57600190920191611234565b8215611234576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f03030287838151811061125557611255612afc565b602002602001015160c581111561126e5761126e612b12565b901b9490941793506001016111a9565b5060058111156112a457604051635318beb960e01b81526004810182905260240161119a565b845181900360086112b760026020612c06565b6112c19190612c19565b83901b9390931792600860016112d960026020612c06565b6112e39190612c06565b6112ed9190612c19565b81901b9390931792600860018061130660026020612c06565b6113109190612c06565b61131a9190612c06565b6113249190612c19565b9190911b92909217949350505050565b613a3160f11b867fffff00000000000000000000000000000000000000000000000000000000000016148015906113ad57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b1561140e57613a3160f11b86876040516020016113cc91815260200190565b60408051601f19818403018152908290527f31b4668300000000000000000000000000000000000000000000000000000000825261119a939291600401612c30565b61141785611687565b61142284600161180f565b61142d83600061180f565b60e084901c60e885901c0160ff1682511461148d5760e084901c60e885901c0160ff1682516040517f0f72cb980000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff168151146114ed5760e085901c60e886901c0160ff1681516040517f7dec4c000000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff16146115655760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d880000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161119a565b61156e866119b6565b156115c857858660405160200161158791815260200190565b60408051601f19818403018152908290527fdfaaf9cf00000000000000000000000000000000000000000000000000000000825261119a9291600401612c71565b61161486868686866040516020016115e09190612c8a565b604051602081830303815290604052866040516020016116009190612c8a565b604051602081830303815290604052611a9a565b61161f866001611bba565b505050505050565b6000808260c581111561163c5761163c612b12565b60ff169050606181101561165657601f1660010192915050565b60618360c581111561166a5761166a612b12565b036116785750601492915050565b50600092915050565b50919050565b806116be576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116c982611cb1565b90506005811115611710576040517f7f2372c3000000000000000000000000000000000000000000000000000000008152600481018290526005602482015260440161119a565b600061171b83611cee565b905060006117298383612c9d565b9050601c811115611770576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c602482015260440161119a565b60005b828110156118085760ff601b82900360080286901c1660008190036117c4576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208111156117ff576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611773565b5050505050565b8015801561181b575081155b1561183c57604051635318beb960e01b81526000600482015260240161119a565b600061184783611cb1565b9050600581111561186e57604051635318beb960e01b81526004810182905260240161119a565b600061187984611cee565b905060006118878383612c9d565b9050601c8111156118ae57604051635318beb960e01b81526004810182905260240161119a565b60008060005b8381101561196f5760006118dc6118cb8a84611d00565b60c58111156111e2576111e2612b12565b11156119265784811061191b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191611967565b84811015611960576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016118b4565b5083821461199357604051635318beb960e01b81526004810183905260240161119a565b848114610dc257604051635318beb960e01b81526004810182905260240161119a565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106119ef576119ef612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052600090611a8690611a5e90612a98565b8360007e01010001000000000000000000000000000000000000000000000000000000611d28565b9050611a928160f81c90565b949350505050565b604080516020810187905280820186905260608082018690528251808303909101815260809091019091526000611ad18484611d5e565b90506000611adf8585611d7b565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110611b1957611b19612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052611bae90611b8590612a98565b828686867e60030220202000000000000000000000000000000000000000000000000000611da7565b50505050505050505050565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110611bf057611bf0612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f7572636549647300000000000000000000000000000000000000000060308201528151808203909301835281019052611cac90611c5c90612a98565b82600085604051602001611c7791151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006120f4565b505050565b60006008600180611cc460026020612c06565b611cce9190612c06565b611cd89190612c06565b611ce29190612c19565b8260ff911c1692915050565b600060086001611cce60026020612c06565b6000601b8290036008028360ff911c1660c5811115611d2157611d21612b12565b9392505050565b6000611d55611d378686612109565b60ff858116601b0360080285901c16611d50858761215f565b6121a2565b95945050505050565b8151815160009181810160389190911b1760609190911b17611d21565b60608282604051602001611d90929190612cb0565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611e3357857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611e269493929190612d1a565b60405180910390a261161f565b6000611e3e876121f3565b905060005b8151811015611f21576000828281518110611e6057611e60612afc565b60200260200101519050611e8c6001826affffffffffffffffffffff19166122bb90919063ffffffff16565b15611f0e576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611edb908c908c908c908c908c908c90600401612d64565b600060405180830381600087803b158015611ef557600080fd5b505af1158015611f09573d6000803e3d6000fd5b505050505b5080611f1981612dbd565b915050611e43565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611f589493929190612d1a565b60405180910390a26000611f6c8888612109565b90506000602087019050611f848260008951846122d9565b6000611f8f85611cb1565b1115612013576000611fa18a8a612399565b878155905060208601915060008060005b611fbb88611cb1565b8160ff16101561200e57611fd08d8d836123ef565b9250611feb8a8260ff166028026038011c64ffffffffff1690565b9150611ffa83600084886122d9565b6120048286612c9d565b9450600101611fb2565b505050505b60005b8351811015611bae57600084828151811061203357612033612afc565b6020026020010151905061205f6002826affffffffffffffffffffff19166122bb90919063ffffffff16565b156120e1576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf906120ae908e908e908e908e908e908e90600401612d64565b600060405180830381600087803b1580156120c857600080fd5b505af11580156120dc573d6000803e3d6000fd5b505050505b50806120ec81612dbd565b915050612016565b6118088585612103848761215f565b8561246f565b6000828260405160200161211e929190612dd7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff1681101561219a5761218660ff601b83900360080287901c1683612c9d565b91508061219281612dbd565b915050612164565b509392505050565b6000602082106121c8576020820484019350602082816121c4576121c4612e12565b0691505b508254600882021b60208290038084111561219a576001850154600882021c82179150509392505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061222d5761222d612afc565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906122a49061229c90612a98565b83600061271e565b9050611a926122b68260008451612758565b6127e8565b60008160ff16826122cc8560581c90565b1660ff1614905092915050565b82156123535760208310612303576020830484019350602083816122ff576122ff612e12565b0692505b82156123535760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161234457505061071c565b50600194909401939182900391015b5b602082106123755780518455600190930192601f1990910190602001612354565b811561071c576000600019600884021c198554835182169119161785555050505050565b600082826040516020016123ae929190612dd7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001612404929190612dd7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036124f957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516124ec93929190612e28565b60405180910390a261071c565b60006125058585612109565b90506000612512866121f3565b905060005b81518110156125f157600082828151811061253457612534612afc565b602002602001015190506125606004826affffffffffffffffffffff19166122bb90919063ffffffff16565b156125de576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906125ab908b908b908b908b90600401612e65565b600060405180830381600087803b1580156125c557600080fd5b505af11580156125d9573d6000803e3d6000fd5b505050505b50806125e981612dbd565b915050612517565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161262693929190612e28565b60405180910390a2612641828565ffffffffffff16856127f9565b60005b8151811015610dc257600082828151811061266157612661612afc565b6020026020010151905061268d6008826affffffffffffffffffffff19166122bb90919063ffffffff16565b1561270b576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906126d8908b908b908b908b90600401612e65565b600060405180830381600087803b1580156126f257600080fd5b505af1158015612706573d6000803e3d6000fd5b505050505b508061271681612dbd565b915050612644565b6060611a9261272e8585856123ef565b60006127538561273e898961280f565b9060ff166028026038011c64ffffffffff1690565b612822565b600081831115801561276b575083518211155b6127a7578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161119a93929190612e9e565b602084016127b58482612c9d565b905060006127c38585612c06565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000611d218360156000612845565b611cac8383835161280a8560200190565b6122d9565b6000611d2161281e8484612399565b5490565b60405160208101601f19603f848401011660405282825261219a858585846128c0565b606060006128538560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161287957612879612e12565b04905060405193506020840160208202810160405281855260005b828110156128b4578451871c825293870193602090910190600101612894565b50505050509392505050565b821561294957602083106128ea576020830484019350602083816128e6576128e6612e12565b0692505b821561294957602083900360008184101561290e5750600019600884021c19612919565b50600019600882021c195b8554600886021b81198451168282161784525081841161293a57505061071c565b50600194909401939182900391015b5b6020821061296b5783548152600190930192601f199091019060200161294a565b811561071c576000600019600884021c198251865482169119161782525050505050565b6000602082840312156129a157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611d2157600080fd5b634e487b7160e01b600052604160045260246000fd5b6000602082840312156129f957600080fd5b813567ffffffffffffffff80821115612a1157600080fd5b818401915084601f830112612a2557600080fd5b813581811115612a3757612a376129d1565b604051601f8201601f19908116603f01168101908382118183101715612a5f57612a5f6129d1565b81604052828152876020848701011115612a7857600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156116815760001960209190910360031b1b16919050565b60005b83811015612ad7578181015183820152602001612abf565b50506000910152565b60008251612af2818460208701612abc565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008151808452612b40816020860160208601612abc565b601f01601f19169290920160200192915050565b6000815180845260208085019450848260051b860182860160005b85811015612b99578383038952612b87838351612b28565b98850198925090840190600101612b6f565b5090979650505050505050565b86815285602082015284604082015283606082015260c060808201526000612bd160c0830185612b54565b82810360a0840152612be38185612b54565b9998505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561022757610227612bf0565b808202811582820484141761022757610227612bf0565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000611d556060830184612b28565b828152604060208201526000611a926040830184612b28565b602081526000611d216020830184612b54565b8082018082111561022757610227612bf0565b60008351612cc2818460208801612abc565b835190830190612cd6818360208801612abc565b01949350505050565b600081518084526020808501945080840160005b83811015612d0f57815187529582019590820190600101612cf3565b509495945050505050565b608081526000612d2d6080830187612cdf565b8281036020840152612d3f8187612b28565b90508460408401528281036060840152612d598185612b28565b979650505050505050565b86815260c060208201526000612d7d60c0830188612cdf565b8281036040840152612d8f8188612b28565b90508560608401528281036080840152612da98186612b28565b9150508260a0830152979650505050505050565b60006000198203612dd057612dd0612bf0565b5060010190565b82815260006020808301845182860160005b82811015612e0557815184529284019290840190600101612de9565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612e3b6060830186612cdf565b65ffffffffffff851660208401528281036040840152612e5b8185612b28565b9695505050505050565b848152608060208201526000612e7e6080830186612cdf565b65ffffffffffff851660408401528281036060840152612d598185612b28565b606081526000612eb16060830186612b28565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611be5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806332c0520f1161005057806332c0520f146100d257806345ec9354146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a6100853660046116fe565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046117fa565b6101f6565b6100e56100e0366004611851565b610268565b005b604051601f193601358152602001610096565b6100a7610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f1610293565b905090565b80516020820120600090816102148661020d6101e7565b87856102c5565b90508060010361023c576102318661022a6101e7565b8785610419565b600192505050610261565b801561025a5760001901610231866102526101e7565b87858561053a565b6000925050505b9392505050565b6102836102736101e7565b858585805190602001208561053a565b50505050565b60006101f16106a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b60408051600480825260a0820190925260009182919060208201608080368337019050509050856001600160a01b031660001b8160008151811061030b5761030b6118b0565b602002602001018181525050846001600160a01b031660001b81600181518110610337576103376118b0565b6020026020010181815250508381600281518110610357576103576118b0565b6020026020010181815250508281600381518110610377576103776118b0565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f43616c6c626f756e6444656c656761740000000000000000000000000000000060308401529161040c91016040516020818303038152906040526103e4906118c6565b8360007e200100200000000000000000000000000000000000000000000000000000006106e0565b925050505b949350505050565b60408051600480825260a0820190925260009160208201608080368337019050509050846001600160a01b031660001b8160008151811061045c5761045c6118b0565b602002602001018181525050836001600160a01b031660001b81600181518110610488576104886118b0565b60200260200101818152505082816002815181106104a8576104a86118b0565b60200260200101818152505081816003815181106104c8576104c86118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526105339061052d906118c6565b8261079d565b5050505050565b60408051600480825260a0820190925260009160208201608080368337019050509050856001600160a01b031660001b8160008151811061057d5761057d6118b0565b602002602001018181525050846001600160a01b031660001b816001815181106105a9576105a96118b0565b60200260200101818152505083816002815181106105c9576105c96118b0565b60200260200101818152505082816003815181106105e9576105e96118b0565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f43616c6c626f756e6444656c6567617400000000000000000000000000000000603082015281518082039093018352810190526106999061064e906118c6565b8260008560405160200161066491815260200190565b60408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610846565b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806106db573391505090565b919050565b6000806106eb6106a1565b9050306001600160a01b0382160361071157610709868686866108fb565b915050610411565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061075c908990899089908990600401611928565b602060405180830381865afa158015610779573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190611957565b60006107a76106a1565b9050306001600160a01b038216036107c8576107c38383610931565b505050565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061080f9086908690600401611970565b600060405180830381600087803b15801561082957600080fd5b505af115801561083d573d6000803e3d6000fd5b50505050505050565b60006108506106a1565b9050306001600160a01b038216036108745761086f8686868686610948565b610699565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108c190899089908990899089906004016119cf565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b50505050505050505050565b600061092861090a868661095d565b60ff858116601b0360080285901c1661092385876109b3565b6109f6565b95945050505050565b610944828261093f85610a47565b610b75565b5050565b610533858561095784876109b3565b85610e88565b60008282604051602001610972929190611a16565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109ee576109da60ff601b83900360080287901c1683611a67565b9150806109e681611a7a565b9150506109b8565b509392505050565b600060208210610a1c57602082048401935060208281610a1857610a18611a94565b0691505b508254600882021b6020829003808411156109ee576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610abe906118c6565b8203610aea57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610b6c9101604051602081830303815290604052610b66906118c6565b84611137565b602060006109f6565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610bfb57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610bee9190611aaa565b60405180910390a2505050565b6000610c0684611153565b905060005b8151811015610ce3576000828281518110610c2857610c286118b0565b60200260200101519050610c546040826affffffffffffffffffffff191661123390919063ffffffff16565b15610cd0576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c9d90899089908990600401611abd565b600060405180830381600087803b158015610cb757600080fd5b505af1158015610ccb573d6000803e3d6000fd5b505050505b5080610cdb81611a7a565b915050610c0b565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610d149190611aaa565b60405180910390a26000610d28858561095d565b9050610d81816000610d3986611251565b67ffffffffffffffff811115610d5157610d51611757565b6040519080825280601f01601f191660200182016040528015610d7b576020820181803683370190505b50611274565b6000610d8c8461128a565b1115610dad576000610d9e86866112c7565b9050610dab81602061131d565b505b60005b8251811015610699576000838281518110610dcd57610dcd6118b0565b60200260200101519050610df96080826affffffffffffffffffffff191661123390919063ffffffff16565b15610e75576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610e42908a908a908a90600401611abd565b600060405180830381600087803b158015610e5c57600080fd5b505af1158015610e70573d6000803e3d6000fd5b505050505b5080610e8081611a7a565b915050610db0565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610f1257837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610f0593929190611ae6565b60405180910390a2610283565b6000610f1e858561095d565b90506000610f2b86611153565b905060005b815181101561100a576000828281518110610f4d57610f4d6118b0565b60200260200101519050610f796004826affffffffffffffffffffff191661123390919063ffffffff16565b15610ff7576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610fc4908b908b908b908b90600401611b23565b600060405180830381600087803b158015610fde57600080fd5b505af1158015610ff2573d6000803e3d6000fd5b505050505b508061100281611a7a565b915050610f30565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161103f93929190611ae6565b60405180910390a261105a828565ffffffffffff1685611274565b60005b815181101561083d57600082828151811061107a5761107a6118b0565b602002602001015190506110a66008826affffffffffffffffffffff191661123390919063ffffffff16565b15611124576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906110f1908b908b908b908b90600401611b23565b600060405180830381600087803b15801561110b57600080fd5b505af115801561111f573d6000803e3d6000fd5b505050505b508061112f81611a7a565b91505061105d565b6040805160208101849052908101829052600090606001610972565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061118d5761118d6118b0565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061121c90611214906118c6565b83600061135a565b905061041161122e8260008451611394565b61142d565b60008160ff16826112448560581c90565b1660ff1614905092915050565b6000600861126160026020611b67565b61126b9190611b7a565b9190911c919050565b6107c3838383516112858560200190565b61143e565b6000600860018061129d60026020611b67565b6112a79190611b67565b6112b19190611b67565b6112bb9190611b7a565b8260ff911c1692915050565b600082826040516020016112dc929190611a16565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061132c83601f611a67565b6113369190611b91565b6113409084611a67565b90505b808310156107c35760008355600183019250611343565b606061041161136a8585856114fe565b600061138f8561137a898961157e565b9060ff166028026038011c64ffffffffff1690565b611591565b60008183111580156113a7575083518211155b6113ec578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016113e393929190611bb3565b60405180910390fd5b602084016113fa8482611a67565b905060006114088585611b67565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061026183601560006115b4565b82156114b857602083106114685760208304840193506020838161146457611464611a94565b0692505b82156114b85760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114a9575050610283565b50600194909401939182900391015b5b602082106114da5780518455600190930192601f19909101906020016114b9565b8115610283576000600019600884021c198554835182169119161785555050505050565b60008383604051602001611513929190611a16565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b600061026161158d84846112c7565b5490565b60405160208101601f19603f84840101166040528282526109ee8585858461162f565b606060006115c28560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816115e8576115e8611a94565b04905060405193506020840160208202810160405281855260005b82811015611623578451871c825293870193602090910190600101611603565b50505050509392505050565b82156116b857602083106116595760208304840193506020838161165557611655611a94565b0692505b82156116b857602083900360008184101561167d5750600019600884021c19611688565b50600019600882021c195b8554600886021b8119845116828216178452508184116116a9575050610283565b50600194909401939182900391015b5b602082106116da5783548152600190930192601f19909101906020016116b9565b8115610283576000600019600884021c198251865482169119161782525050505050565b60006020828403121561171057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461026157600080fd5b80356001600160a01b03811681146106db57600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261177e57600080fd5b813567ffffffffffffffff8082111561179957611799611757565b604051601f8301601f19908116603f011681019082821181831017156117c1576117c1611757565b816040528381528660208588010111156117da57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561180f57600080fd5b61181884611740565b925060208401359150604084013567ffffffffffffffff81111561183b57600080fd5b6118478682870161176d565b9150509250925092565b6000806000806080858703121561186757600080fd5b61187085611740565b935060208501359250604085013567ffffffffffffffff81111561189357600080fd5b61189f8782880161176d565b949793965093946060013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156118e7576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561191d57815187529582019590820190600101611901565b509495945050505050565b84815260806020820152600061194160808301866118ed565b60ff949094166040830152506060015292915050565b60006020828403121561196957600080fd5b5051919050565b82815260406020820152600061041160408301846118ed565b6000815180845260005b818110156119af57602081850181015186830182015201611993565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006119e860a08301876118ed565b60ff861660408401528281036060840152611a038186611989565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611a4457815184529284019290840190600101611a28565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611a51565b60006000198203611a8d57611a8d611a51565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60208152600061026160208301846118ed565b838152606060208201526000611ad660608301856118ed565b9050826040830152949350505050565b606081526000611af960608301866118ed565b65ffffffffffff851660208401528281036040840152611b198185611989565b9695505050505050565b848152608060208201526000611b3c60808301866118ed565b65ffffffffffff851660408401528281036060840152611b5c8185611989565b979650505050505050565b818103818111156101e1576101e1611a51565b80820281158282048414176101e1576101e1611a51565b600082611bae57634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611bc66060830186611989565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611b1f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d257806393b94f61146100e5578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100bf575b600080fd5b61008a610085366004611687565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b61008a6100cd3660046116f6565b6101f6565b604051601f193601358152602001610096565b6100f86100f33660046117c1565b61025b565b005b6100a7610273565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf58547700000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f161027d565b905090565b60008061020b856102056101e7565b866102af565b90508060010361023157610227856102216101e7565b866103e0565b6001915050610254565b801561024e5760001901610227856102476101e7565b86846104e0565b60009150505b9392505050565b61026e6102666101e7565b8484846104e0565b505050565b60006101f1610626565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102ac5750335b90565b6040805160038082526080820190925260009182919060208201606080368337019050509050846001600160a01b031660001b816000815181106102f5576102f56117f4565b602002602001018181525050836001600160a01b031660001b81600181518110610321576103216117f4565b6020026020010181815250508281600281518110610341576103416117f4565b60209081029190910181019190915260408051613a3160f11b928101929092526000602283018190527f53797374656d626f756e6444656c6567000000000000000000000000000000006030840152916103d691016040516020818303038152906040526103ae9061180a565b8360007e20010020000000000000000000000000000000000000000000000000000000610665565b9695505050505050565b6040805160038082526080820190925260009160208201606080368337019050509050836001600160a01b031660001b81600081518110610423576104236117f4565b602002602001018181525050826001600160a01b031660001b8160018151811061044f5761044f6117f4565b602002602001018181525050818160028151811061046f5761046f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c656700000000000000000000000000000000603082015281518082039093018352810190526104da906104d49061180a565b8261072a565b50505050565b6040805160038082526080820190925260009160208201606080368337019050509050846001600160a01b031660001b81600081518110610523576105236117f4565b602002602001018181525050836001600160a01b031660001b8160018151811061054f5761054f6117f4565b602002602001018181525050828160028151811061056f5761056f6117f4565b60209081029190910181019190915260408051613a3160f11b81840152600060228201527f53797374656d626f756e6444656c6567000000000000000000000000000000006030820152815180820390930183528101905261061f906105d49061180a565b826000856040516020016105ea91815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006107ce565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680610660573391505090565b919050565b600080610670610626565b9050306001600160a01b038216036106965761068e86868686610884565b915050610722565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d59906106e190899089908990899060040161186c565b602060405180830381865afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068e919061189b565b949350505050565b6000610734610626565b9050306001600160a01b038216036107505761026e83836108ba565b6040517f505a181d0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063505a181d9061079790869086906004016118b4565b600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050505050565b60006107d8610626565b9050306001600160a01b038216036107fc576107f786868686866108d1565b61087c565b6040517f390baae00000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063390baae0906108499089908990899089908990600401611913565b600060405180830381600087803b15801561086357600080fd5b505af1158015610877573d6000803e3d6000fd5b505050505b505050505050565b60006108b161089386866108e6565b60ff858116601b0360080285901c166108ac858761093c565b61097f565b95945050505050565b6108cd82826108c8856109d0565b610afe565b5050565b61061f85856108e0848761093c565b85610e11565b600082826040516020016108fb92919061195a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156109775761096360ff601b83900360080287901c16836119ab565b91508061096f816119be565b915050610941565b509392505050565b6000602082106109a5576020820484019350602082816109a1576109a16119d8565b0691505b508254600882021b602082900380841115610977576001850154600882021c82179150509392505050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610a479061180a565b8203610a7357507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c6573000000000000000000000000000000000000000000000000000060308201526101e191610af59101604051602081830303815290604052610aef9061180a565b846110c0565b6020600061097f565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff0000000000000000000000000000000000000000000000000000000000001603610b8457827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051610b7791906119ee565b60405180910390a2505050565b6000610b8f846110dc565b905060005b8151811015610c6c576000828281518110610bb157610bb16117f4565b60200260200101519050610bdd6040826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610c59576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610c2690899089908990600401611a01565b600060405180830381600087803b158015610c4057600080fd5b505af1158015610c54573d6000803e3d6000fd5b505050505b5080610c64816119be565b915050610b94565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610c9d91906119ee565b60405180910390a26000610cb185856108e6565b9050610d0a816000610cc2866111da565b67ffffffffffffffff811115610cda57610cda6116e0565b6040519080825280601f01601f191660200182016040528015610d04576020820181803683370190505b506111fd565b6000610d1584611213565b1115610d36576000610d278686611250565b9050610d348160206112a6565b505b60005b825181101561087c576000838281518110610d5657610d566117f4565b60200260200101519050610d826080826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610dfe576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610dcb908a908a908a90600401611a01565b600060405180830381600087803b158015610de557600080fd5b505af1158015610df9573d6000803e3d6000fd5b505050505b5080610e09816119be565b915050610d39565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610e9b57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610e8e93929190611a2a565b60405180910390a26104da565b6000610ea785856108e6565b90506000610eb4866110dc565b905060005b8151811015610f93576000828281518110610ed657610ed66117f4565b60200260200101519050610f026004826affffffffffffffffffffff19166111bc90919063ffffffff16565b15610f80576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610f4d908b908b908b908b90600401611a5d565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b505050505b5080610f8b816119be565b915050610eb9565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610fc893929190611a2a565b60405180910390a2610fe3828565ffffffffffff16856111fd565b60005b81518110156107c5576000828281518110611003576110036117f4565b6020026020010151905061102f6008826affffffffffffffffffffff19166111bc90919063ffffffff16565b156110ad576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061107a908b908b908b908b90600401611a5d565b600060405180830381600087803b15801561109457600080fd5b505af11580156110a8573d6000803e3d6000fd5b505050505b50806110b8816119be565b915050610fe6565b60408051602081018490529081018290526000906060016108fb565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611116576111166117f4565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906111a59061119d9061180a565b8360006112e3565b90506107226111b7826000845161131d565b6113b6565b60008160ff16826111cd8560581c90565b1660ff1614905092915050565b600060086111ea60026020611aa1565b6111f49190611ab4565b9190911c919050565b61026e8383835161120e8560200190565b6113c7565b6000600860018061122660026020611aa1565b6112309190611aa1565b61123a9190611aa1565b6112449190611ab4565b8260ff911c1692915050565b6000828260405160200161126592919061195a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b600060206112b583601f6119ab565b6112bf9190611acb565b6112c990846119ab565b90505b8083101561026e57600083556001830192506112cc565b60606107226112f3858585611487565b6000611318856113038989611507565b9060ff166028026038011c64ffffffffff1690565b61151a565b6000818311158015611330575083518211155b611375578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161136c93929190611aed565b60405180910390fd5b6020840161138384826119ab565b905060006113918585611aa1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610254836015600061153d565b821561144157602083106113f1576020830484019350602083816113ed576113ed6119d8565b0692505b82156114415760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116114325750506104da565b50600194909401939182900391015b5b602082106114635780518455600190930192601f1990910190602001611442565b81156104da576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161149c92919061195a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006102546115168484611250565b5490565b60405160208101601f19603f8484010116604052828252610977858585846115b8565b6060600061154b8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611571576115716119d8565b04905060405193506020840160208202810160405281855260005b828110156115ac578451871c82529387019360209091019060010161158c565b50505050509392505050565b821561164157602083106115e2576020830484019350602083816115de576115de6119d8565b0692505b82156116415760208390036000818410156116065750600019600884021c19611611565b50600019600882021c195b8554600886021b8119845116828216178452508184116116325750506104da565b50600194909401939182900391015b5b602082106116635783548152600190930192601f1990910190602001611642565b81156104da576000600019600884021c198251865482169119161782525050505050565b60006020828403121561169957600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025457600080fd5b80356001600160a01b038116811461066057600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561170b57600080fd5b611714846116c9565b925060208401359150604084013567ffffffffffffffff8082111561173857600080fd5b818601915086601f83011261174c57600080fd5b81358181111561175e5761175e6116e0565b604051601f8201601f19908116603f01168101908382118183101715611786576117866116e0565b8160405282815289602084870101111561179f57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806000606084860312156117d657600080fd5b6117df846116c9565b95602085013595506040909401359392505050565b634e487b7160e01b600052603260045260246000fd5b8051602080830151919081101561182b576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561186157815187529582019590820190600101611845565b509495945050505050565b8481526080602082015260006118856080830186611831565b60ff949094166040830152506060015292915050565b6000602082840312156118ad57600080fd5b5051919050565b8281526040602082015260006107226040830184611831565b6000815180845260005b818110156118f3576020818501810151868301820152016118d7565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a06020820152600061192c60a0830187611831565b60ff86166040840152828103606084015261194781866118cd565b9150508260808301529695505050505050565b82815260006020808301845182860160005b828110156119885781518452928401929084019060010161196c565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e1611995565b600060001982036119d1576119d1611995565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6020815260006102546020830184611831565b838152606060208201526000611a1a6060830185611831565b9050826040830152949350505050565b606081526000611a3d6060830186611831565b65ffffffffffff8516602084015282810360408401526103d681856118cd565b848152608060208201526000611a766080830186611831565b65ffffffffffff851660408401528281036060840152611a9681856118cd565b979650505050505050565b818103818111156101e1576101e1611995565b80820281158282048414176101e1576101e1611995565b600082611ae857634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611b0060608301866118cd565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611444806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100df578063d043756a146100f2578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f5780631a86b550146100cc575b600080fd5b61008a61008536600461102c565b61010f565b60405190151581526020015b60405180910390f35b6100a76101f4565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b61008a6100da3660046110a8565b610203565b604051601f193601358152602001610096565b610105610100366004611173565b610223565b005b6100a7610239565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167faf5854770000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101ee57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101fe610243565b905090565b600080610217856102126101f4565b610275565b42111595945050505050565b61023561022e6101f4565b83836103b9565b5050565b60006101fe610511565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102725750335b90565b604080516002808252606082018352600092839291906020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106102c7576102c761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103005761030061119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000928101929092526000602283018190527f54696d65626f756e6444656c65676174000000000000000000000000000000006030840152916103b09101604051602081830303815290604052610388906111b3565b8360007e2001002000000000000000000000000000000000000000000000000000000061055d565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1660001b816000815181106104075761040761119d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104405761044061119d565b602090810291909101810191909152604080517f746200000000000000000000000000000000000000000000000000000000000081840152600060228201527f54696d65626f756e6444656c65676174000000000000000000000000000000006030820152815180820390930183528101905261050b906104c0906111b3565b826000856040516020016104d691815260200190565b60408051601f198184030181529190527e2001002000000000000000000000000000000000000000000000000000000061063c565b50505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610558573391505090565b919050565b600080610568610511565b90503073ffffffffffffffffffffffffffffffffffffffff82160361059b576105938686868661070c565b915050610634565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d59906105f3908990899089908990600401611215565b602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611244565b949350505050565b6000610646610511565b90503073ffffffffffffffffffffffffffffffffffffffff821603610677576106728686868686610739565b610704565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae0906106d190899089908990899089906004016112a3565b600060405180830381600087803b1580156106eb57600080fd5b505af11580156106ff573d6000803e3d6000fd5b505050505b505050505050565b60006103b061071b8686610755565b60ff858116601b0360080285901c1661073485876107ab565b6107ee565b61074e858561074884876107ab565b8561083f565b5050505050565b6000828260405160200161076a9291906112ea565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156107e6576107d260ff601b83900360080287901c168361133b565b9150806107de8161134e565b9150506107b0565b509392505050565b6000602082106108145760208204840193506020828161081057610810611368565b0691505b508254600882021b6020829003808411156107e6576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff00000000000000000000000000000000000000000000000000000000000016036108c957837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516108bc9392919061137e565b60405180910390a261050b565b60006108d58585610755565b905060006108e286610af7565b905060005b81518110156109c15760008282815181106109045761090461119d565b602002602001015190506109306004826affffffffffffffffffffff1916610bf290919063ffffffff16565b156109ae576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061097b908b908b908b908b906004016113bb565b600060405180830381600087803b15801561099557600080fd5b505af11580156109a9573d6000803e3d6000fd5b505050505b50806109b98161134e565b9150506108e7565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516109f69392919061137e565b60405180910390a2610a11828565ffffffffffff1685610c10565b60005b8151811015610aee576000828281518110610a3157610a3161119d565b60200260200101519050610a5d6008826affffffffffffffffffffff1916610bf290919063ffffffff16565b15610adb576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610aa8908b908b908b908b906004016113bb565b600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b505050505b5080610ae68161134e565b915050610a14565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b3157610b3161119d565b602090810291909101810191909152604080517f7462000000000000000000000000000000000000000000000000000000000000818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610bdb90610bd3906111b3565b836000610c2b565b9050610634610bed8260008451610c65565b610cfe565b60008160ff1682610c038560581c90565b1660ff1614905092915050565b610c2683838351610c218560200190565b610d16565b505050565b6060610634610c3b858585610dd6565b6000610c6085610c4b8989610e56565b9060ff166028026038011c64ffffffffff1690565b610e69565b6000818311158015610c78575083518211155b610cbd578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610cb4939291906113ff565b60405180910390fd5b60208401610ccb848261133b565b90506000610cd98585611424565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610d0f8360156000610e8c565b9392505050565b8215610d905760208310610d4057602083048401935060208381610d3c57610d3c611368565b0692505b8215610d905760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610d8157505061050b565b50600194909401939182900391015b5b60208210610db25780518455600190930192601f1990910190602001610d91565b811561050b576000600019600884021c198554835182169119161785555050505050565b60008383604051602001610deb9291906112ea565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610d0f610e658484610f07565b5490565b60405160208101601f19603f84840101166040528282526107e685858584610f5d565b60606000610e9a8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610ec057610ec0611368565b04905060405193506020840160208202810160405281855260005b82811015610efb578451871c825293870193602090910190600101610edb565b50505050509392505050565b60008282604051602001610f1c9291906112ea565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610fe65760208310610f8757602083048401935060208381610f8357610f83611368565b0692505b8215610fe6576020839003600081841015610fab5750600019600884021c19610fb6565b50600019600882021c195b8554600886021b811984511682821617845250818411610fd757505061050b565b50600194909401939182900391015b5b602082106110085783548152600190930192601f1990910190602001610fe7565b811561050b576000600019600884021c198251865482169119161782525050505050565b60006020828403121561103e57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d0f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461055857600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156110bd57600080fd5b6110c68461106e565b925060208401359150604084013567ffffffffffffffff808211156110ea57600080fd5b818601915086601f8301126110fe57600080fd5b81358181111561111057611110611092565b604051601f8201601f19908116603f0116810190838211818310171561113857611138611092565b8160405282815289602084870101111561115157600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000806040838503121561118657600080fd5b61118f8361106e565b946020939093013593505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156111d4576000198160200360031b1b821691505b50919050565b600081518084526020808501945080840160005b8381101561120a578151875295820195908201906001016111ee565b509495945050505050565b84815260806020820152600061122e60808301866111da565b60ff949094166040830152506060015292915050565b60006020828403121561125657600080fd5b5051919050565b6000815180845260005b8181101561128357602081850181015186830182015201611267565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a0602082015260006112bc60a08301876111da565b60ff8616604084015282810360608401526112d7818661125d565b9150508260808301529695505050505050565b82815260006020808301845182860160005b82811015611318578151845292840192908401906001016112fc565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101ee576101ee611325565b6000600019820361136157611361611325565b5060010190565b634e487b7160e01b600052601260045260246000fd5b60608152600061139160608301866111da565b65ffffffffffff8516602084015282810360408401526113b1818561125d565b9695505050505050565b8481526080602082015260006113d460808301866111da565b65ffffffffffff8516604084015282810360608401526113f4818561125d565b979650505050505050565b606081526000611412606083018661125d565b60208301949094525060400152919050565b818103818111156101ee576101ee61132556fea164736f6c6343000815000a608060405234801561001057600080fd5b50611766806100206000396000f3fe6080604052600436106100c75760003560e01c8063b07ed3a911610074578063d737d0c71161004e578063d737d0c7146102a1578063e1af802c1461021b578063ea29e3ba146102b6576100c7565b8063b07ed3a91461021b578063b5531d2114610230578063c36e144814610281576100c7565b806334875054116100a557806334875054146101d957806345ec9354146101fb578063a3912ec8146101f9576100c7565b806301ffc9a71461013d578063119df25f1461017257806325775aa2146101ac575b3480156100d357600080fd5b507f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516101339060208082526008908201527f66616c6c6261636b000000000000000000000000000000000000000000000000604082015260600190565b60405180910390a1005b34801561014957600080fd5b5061015d610158366004611244565b6102cb565b60405190151581526020015b60405180910390f35b34801561017e57600080fd5b50610187610364565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610169565b3480156101b857600080fd5b506101cc6101c7366004611312565b610373565b60405161016991906113df565b3480156101e557600080fd5b506101f96101f43660046113f2565b6103f7565b005b34801561020757600080fd5b50604051601f193601358152602001610169565b34801561022757600080fd5b50610187610529565b34801561023c57600080fd5b5061025061024b36600461148c565b610533565b60408051825173ffffffffffffffffffffffffffffffffffffffff1681526020928301519281019290925201610169565b34801561028d57600080fd5b506101f961029c3660046114a5565b61057d565b3480156102ad57600080fd5b506101876105ba565b3480156102c257600080fd5b506101f96105c4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061035e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600061036e6106b0565b905090565b60606000808473ffffffffffffffffffffffffffffffffffffffff168460405161039d91906114ee565b600060405180830381855af49150503d80600081146103d8576040519150601f19603f3d011682016040523d82523d6000602084013e6103dd565b606091505b5091509150816103ef57805181602001fd5b949350505050565b6040805160008082526020820190925290610418613a3160f11b86866106e2565b905030610423610769565b73ffffffffffffffffffffffffffffffffffffffff160361047f5761047a81838560405160200161045b91151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916107b5565b610522565b3373ffffffffffffffffffffffffffffffffffffffff1663298314fb8284866040516020016104b591151560f81b815260010190565b60408051808303601f19018152600080845260208401909252916040518663ffffffff1660e01b81526004016104ef959493929190611545565b600060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050505b5050505050565b600061036e610769565b6040805180820190915260008082526020820152604051806040016040528061055a610364565b73ffffffffffffffffffffffffffffffffffffffff168152602001929092525090565b806040517f793002730000000000000000000000000000000000000000000000000000000081526004016105b191906113df565b60405180910390fd5b600061036e610364565b306105cd610769565b73ffffffffffffffffffffffffffffffffffffffff1603610651577f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f8678571604051610647906020808252600c908201527f64656c656761746563616c6c0000000000000000000000000000000000000000604082015260600190565b60405180910390a1565b7f78833392e017a943ca7babab26a2fced0b6d944c5918cae7c3a69231f86785716040516106479060208082526004908201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806106df5750335b90565b60006106f0607060106115ac565b7fffff00000000000000000000000000000000000000000000000000000000000085167dffffffffffffffffffffffffffff00000000000000000000000000000000601086901c16177fffffffffffffffffffffffffffffffff00000000000000000000000000000000841690911c1790509392505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806107b0573391505090565b919050565b61052285858585856107c68b6107cb565b6108f9565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015260009101604051602081830303815290604052610842906115bf565b820361086e57507e60030220202000000000000000000000000000000000000000000000000000919050565b60408051613a3160f11b60208201527f73746f726500000000000000000000000000000000000000000000000000000060228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261035e916108f091016040516020818303038152906040526108ea906115bf565b84610c53565b60206000610cac565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff000000000000000000000000000000000000000000000000000000000000160361098557857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a98686868660405161097894939291906115e6565b60405180910390a2610c4b565b600061099087610cfe565b905060005b8151811015610a735760008282815181106109b2576109b2611630565b602002602001015190506109de6001826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610a60576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90610a2d908c908c908c908c908c908c90600401611646565b600060405180830381600087803b158015610a4757600080fd5b505af1158015610a5b573d6000803e3d6000fd5b505050505b5080610a6b8161169f565b915050610995565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051610aaa94939291906115e6565b60405180910390a26000610abe8888610dfc565b90506000602087019050610ad6826000895184610e11565b6000610ae185610ecf565b1115610b65576000610af38a8a610f0c565b878155905060208601915060008060005b610b0d88610ecf565b8160ff161015610b6057610b228d8d83610f62565b9250610b3d8a8260ff166028026038011c64ffffffffff1690565b9150610b4c8360008488610e11565b610b5682866115ac565b9450600101610b04565b505050505b60005b8351811015610c46576000848281518110610b8557610b85611630565b60200260200101519050610bb16002826affffffffffffffffffffff1916610dde90919063ffffffff16565b15610c33576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90610c00908e908e908e908e908e908e90600401611646565b600060405180830381600087803b158015610c1a57600080fd5b505af1158015610c2e573d6000803e3d6000fd5b505050505b5080610c3e8161169f565b915050610b68565b505050505b505050505050565b60408051602081018490529081018290526000906060015b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600060208210610cd257602082048401935060208281610cce57610cce6116b9565b0691505b508254600882021b602082900380841115610cf6576001850154600882021c821791505b509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610d3857610d38611630565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090610dc790610dbf906115bf565b836000610fe2565b90506103ef610dd9826000845161101c565b6110ac565b60008160ff1682610def8560581c90565b1660ff1614905092915050565b60008282604051602001610c6b9291906116cf565b8215610e8b5760208310610e3b57602083048401935060208381610e3757610e376116b9565b0692505b8215610e8b5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610e7c575050610ec9565b50600194909401939182900391015b5b60208210610ead5780518455600190930192601f1990910190602001610e8c565b8115610ec95783548151600019600885021c9182169119161784555b50505050565b60006008600180610ee26002602061170a565b610eec919061170a565b610ef6919061170a565b610f00919061171d565b8260ff911c1692915050565b60008282604051602001610f219291906116cf565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001610f779291906116cf565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60606103ef610ff2858585610f62565b60006110178561100289896110c4565b9060ff166028026038011c64ffffffffff1690565b6110d7565b600081831115801561102f575083518211155b61106b578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016105b193929190611734565b6020840161107984826115ac565b90506000611087858561170a565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006110bd83601560006110fa565b9392505050565b60006110bd6110d38484610f0c565b5490565b60405160208101601f19603f8484010116604052828252610cf685858584611175565b606060006111088560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161112e5761112e6116b9565b04905060405193506020840160208202810160405281855260005b82811015611169578451871c825293870193602090910190600101611149565b50505050509392505050565b82156111fe576020831061119f5760208304840193506020838161119b5761119b6116b9565b0692505b82156111fe5760208390036000818410156111c35750600019600884021c196111ce565b50600019600882021c195b8554600886021b8119845116828216178452508184116111ef575050610ec9565b50600194909401939182900391015b5b602082106112205783548152600190930192601f19909101906020016111ff565b8115610ec9576000600019600884021c198251865482169119161782525050505050565b60006020828403121561125657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146110bd57600080fd5b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156112b7576112b7611286565b604051601f8501601f19908116603f011681019082821181831017156112df576112df611286565b816040528093508581528686860111156112f857600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561132557600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461134957600080fd5b9150602083013567ffffffffffffffff81111561136557600080fd5b8301601f8101851361137657600080fd5b6113858582356020840161129c565b9150509250929050565b60005b838110156113aa578181015183820152602001611392565b50506000910152565b600081518084526113cb81602086016020860161138f565b601f01601f19169290920160200192915050565b6020815260006110bd60208301846113b3565b60008060006060848603121561140757600080fd5b83357fffffffffffffffffffffffffffff0000000000000000000000000000000000008116811461143757600080fd5b925060208401357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461146c57600080fd5b91506040840135801515811461148157600080fd5b809150509250925092565b60006020828403121561149e57600080fd5b5035919050565b6000602082840312156114b757600080fd5b813567ffffffffffffffff8111156114ce57600080fd5b8201601f810184136114df57600080fd5b6103ef8482356020840161129c565b6000825161150081846020870161138f565b9190910192915050565b600081518084526020808501945080840160005b8381101561153a5781518752958201959082019060010161151e565b509495945050505050565b85815260a06020820152600061155e60a083018761150a565b828103604084015261157081876113b3565b9050846060840152828103608084015261158a81856113b3565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561035e5761035e611596565b805160208083015191908110156115e0576000198160200360031b1b821691505b50919050565b6080815260006115f9608083018761150a565b828103602084015261160b81876113b3565b9050846040840152828103606084015261162581856113b3565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b86815260c06020820152600061165f60c083018861150a565b828103604084015261167181886113b3565b9050856060840152828103608084015261168b81866113b3565b9150508260a0830152979650505050505050565b600060001982036116b2576116b2611596565b5060010190565b634e487b7160e01b600052601260045260246000fd5b82815260006020808301845182860160005b828110156116fd578151845292840192908401906001016116e1565b5091979650505050505050565b8181038181111561035e5761035e611596565b808202811582820484141761035e5761035e611596565b60608152600061174760608301866113b3565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610265806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a714610051578063119df25f1461007957806345ec9354146100a6578063e1af802c146100d7575b600080fd5b61006461005f36600461020f565b6100df565b60405190151581526020015b60405180910390f35b610081610178565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610070565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601358152602001610070565b610081610187565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610182610191565b905090565b60006101826101c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806101c05750335b90565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff168061020a573391505090565b919050565b60006020828403121561022157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461025157600080fd5b939250505056fea164736f6c6343000815000a608060405234801561001057600080fd5b50611a59806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806345ec93541161005b57806345ec9354146100ec5780638d53b208146100ff578063e1af802c14610112578063ef5d6bbb1461011a57600080fd5b806301ffc9a714610082578063119df25f146100aa57806340554c3a146100d7575b600080fd5b61009561009036600461165b565b61012d565b60405190151581526020015b60405180910390f35b6100b26101c6565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e536600461169d565b6101d5565b005b604051601f1936013581526020016100a1565b6100ea61010d36600461169d565b6101f6565b6100b261020c565b6100ea61012836600461169d565b610216565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101c057507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101d061023d565b905090565b6101e6826101e16101c6565b61026f565b6101f282826001610333565b5050565b610202826101e16101c6565b6101f28282610463565b60006101d0610568565b610222826101e16101c6565b61022c82826105b4565b6101e6826102386101c6565b610463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c8061026c5750335b90565b73ffffffffffffffffffffffffffffffffffffffff81166102d17f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff000000000000000000000000000000008516176106c2565b73ffffffffffffffffffffffffffffffffffffffff16146101f2576102f58261079d565b816040517fd787b73700000000000000000000000000000000000000000000000000000000815260040161032a929190611736565b60405180910390fd5b604080516002808252606082018352600092602083019080368337019050509050838160008151811061036857610368611784565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106103a1576103a1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f757263654163636573730000000000000000000000000000000000006030820152815180820390930183528101905261045d9061040d9061179a565b8260008560405160200161042891151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006108da565b50505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061049857610498611784565b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106104d1576104d1611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526105639061053d9061179a565b827e010100010000000000000000000000000000000000000000000000000000006108f6565b505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806105af573391505090565b919050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105ea576105ea611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201528151808203909301835281019052610563906106569061179a565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006108da565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106106fb576106fb611784565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906107929061076a9061179a565b8360007e14010014000000000000000000000000000000000000000000000000000000610c11565b60601c949350505050565b606081601081901b60006107b083610c47565b9050827fffffffffffffffffffffffffffff00000000000000000000000000000000000083161561080b576108067fffffffffffffffffffffffffffff0000000000000000000000000000000000008416610c5e565b610842565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156108785761087383610c5e565b6108af565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6040516020016108c1939291906117c1565b6040516020818303038152906040529350505050919050565b6108ef85856108e98487610d10565b85610d53565b5050505050565b7f6f74000000000000000000000000000000000000000000000000000000000000837fffff000000000000000000000000000000000000000000000000000000000000160361097c57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d078360405161096f919061188a565b60405180910390a2505050565b60006109878461100b565b905060005b8151811015610a645760008282815181106109a9576109a9611784565b602002602001015190506109d56040826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610a51576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590610a1e9089908990899060040161189d565b600060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050505b5080610a5c816118dc565b91505061098c565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051610a95919061188a565b60405180910390a26000610aa98585611109565b9050610b02816000610aba8661115f565b67ffffffffffffffff811115610ad257610ad261176e565b6040519080825280601f01601f191660200182016040528015610afc576020820181803683370190505b50611182565b6000610b0d84611198565b1115610b2e576000610b1f86866111d5565b9050610b2c81602061122b565b505b60005b8251811015610c09576000838281518110610b4e57610b4e611784565b60200260200101519050610b7a6080826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610bf6576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b90610bc3908a908a908a9060040161189d565b600060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050505b5080610c01816118dc565b915050610b31565b505050505050565b6000610c3e610c208686611109565b60ff858116601b0360080285901c16610c398587610d10565b611268565b95945050505050565b6000610c55607060106118f6565b9190911b919050565b606060005b6010811015610ccd577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff000000000000000000000000000000000000000000000000000000000000001615610ccd5780610cc5816118dc565b915050610c63565b604080517fffffffffffffffffffffffffffffffff000000000000000000000000000000008516602082015281516030909101909152818152805b949350505050565b600080805b8360ff16811015610d4b57610d3760ff601b83900360080287901c16836118f6565b915080610d43816118dc565b915050610d15565b509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610ddd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610dd093929190611909565b60405180910390a261045d565b6000610de98585611109565b90506000610df68661100b565b905060005b8151811015610ed5576000828281518110610e1857610e18611784565b60200260200101519050610e446004826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610ec2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610e8f908b908b908b908b90600401611946565b600060405180830381600087803b158015610ea957600080fd5b505af1158015610ebd573d6000803e3d6000fd5b505050505b5080610ecd816118dc565b915050610dfb565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610f0a93929190611909565b60405180910390a2610f25828565ffffffffffff1685611182565b60005b8151811015611002576000828281518110610f4557610f45611784565b60200260200101519050610f716008826affffffffffffffffffffff19166110eb90919063ffffffff16565b15610fef576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610fbc908b908b908b908b90600401611946565b600060405180830381600087803b158015610fd657600080fd5b505af1158015610fea573d6000803e3d6000fd5b505050505b5080610ffa816118dc565b915050610f28565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061104557611045611784565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110d4906110cc9061179a565b8360006112b9565b9050610d086110e682600084516112f3565b611383565b60008160ff16826110fc8560581c90565b1660ff1614905092915050565b6000828260405160200161111e92919061198a565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b6000600861116f600260206119c5565b61117991906119d8565b9190911c919050565b610563838383516111938560200190565b61139b565b600060086001806111ab600260206119c5565b6111b591906119c5565b6111bf91906119c5565b6111c991906119d8565b8260ff911c1692915050565b600082826040516020016111ea92919061198a565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000602061123a83601f6118f6565b6112449190611a05565b61124e90846118f6565b90505b808310156105635760008355600183019250611251565b60006020821061128e5760208204840193506020828161128a5761128a6119ef565b0691505b508254600882021b602082900380841115610d4b576001850154600882021c82179150509392505050565b6060610d086112c985858561145b565b60006112ee856112d989896114db565b9060ff166028026038011c64ffffffffff1690565b6114ee565b6000818311158015611306575083518211155b611342578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161032a93929190611a27565b6020840161135084826118f6565b9050600061135e85856119c5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113948360156000611511565b9392505050565b821561141557602083106113c5576020830484019350602083816113c1576113c16119ef565b0692505b82156114155760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161140657505061045d565b50600194909401939182900391015b5b602082106114375780518455600190930192601f1990910190602001611416565b811561045d576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161147092919061198a565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006113946114ea84846111d5565b5490565b60405160208101601f19603f8484010116604052828252610d4b8585858461158c565b6060600061151f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281611545576115456119ef565b04905060405193506020840160208202810160405281855260005b82811015611580578451871c825293870193602090910190600101611560565b50505050509392505050565b821561161557602083106115b6576020830484019350602083816115b2576115b26119ef565b0692505b82156116155760208390036000818410156115da5750600019600884021c196115e5565b50600019600882021c195b8554600886021b81198451168282161784525081841161160657505061045d565b50600194909401939182900391015b5b602082106116375783548152600190930192601f1990910190602001611616565b811561045d576000600019600884021c198251865482169119161782525050505050565b60006020828403121561166d57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461139457600080fd5b600080604083850312156116b057600080fd5b82359150602083013573ffffffffffffffffffffffffffffffffffffffff811681146116db57600080fd5b809150509250929050565b60005b838110156117015781810151838201526020016116e9565b50506000910152565b600081518084526117228160208601602086016116e6565b601f01601f19169290920160200192915050565b604081526000611749604083018561170a565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156117bb576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516118228160038601602089016116e6565b8084019050816003820152845191506118428260048301602088016116e6565b0160040195945050505050565b600081518084526020808501945080840160005b8381101561187f57815187529582019590820190600101611863565b509495945050505050565b602081526000611394602083018461184f565b8381526060602082015260006118b6606083018561184f565b9050826040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600060001982036118ef576118ef6118c6565b5060010190565b808201808211156101c0576101c06118c6565b60608152600061191c606083018661184f565b65ffffffffffff85166020840152828103604084015261193c818561170a565b9695505050505050565b84815260806020820152600061195f608083018661184f565b65ffffffffffff85166040840152828103606084015261197f818561170a565b979650505050505050565b82815260006020808301845182860160005b828110156119b85781518452928401929084019060010161199c565b5091979650505050505050565b818103818111156101c0576101c06118c6565b80820281158282048414176101c0576101c06118c6565b634e487b7160e01b600052601260045260246000fd5b600082611a2257634e487b7160e01b600052601260045260246000fd5b500490565b606081526000611a3a606083018661170a565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b506118ac806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100e1578063c9c85a60146100f4578063e1af802c1461010757600080fd5b806301ffc9a714610077578063119df25f1461009f57806345afd199146100cc575b600080fd5b61008a610085366004611460565b61010f565b60405190151581526020015b60405180910390f35b6100a76101a8565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b6100df6100da3660046114a2565b6101b7565b005b604051601f193601358152602001610096565b6100df6101023660046114f3565b6102ac565b6100a76103e7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101b26103f1565b905090565b6101c8836101c36101a8565b610423565b60006101d384610473565b90508082111561021e576040517f0e0e2d4d00000000000000000000000000000000000000000000000000000000815260048101829052602481018390526044015b60405180910390fd5b6102318461022c848461154e565b610563565b6000808473ffffffffffffffffffffffffffffffffffffffff168460405160006040518083038185875af1925050503d806000811461028c576040519150601f19603f3d011682016040523d82523d6000602084013e610291565b606091505b5091509150816102a4576102a48161066d565b505050505050565b7f6e73000000000000000000000000000000000000000000000000000000000000827fffff0000000000000000000000000000000000000000000000000000000000001614610355577f6e730000000000000000000000000000000000000000000000000000000000008261032084610675565b6040517f5c30fb6f000000000000000000000000000000000000000000000000000000008152600401610215939291906115b1565b61035e826107b2565b61036a836101c36101a8565b600061037584610473565b9050808211156103bb576040517f0e0e2d4d0000000000000000000000000000000000000000000000000000000081526004810182905260248101839052604401610215565b6103c98461022c848461154e565b6103e183836103d786610473565b61022c91906115f2565b50505050565b60006101b2610800565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806104205750335b90565b61042d828261084c565b61046f5761043a82610675565b816040517fd787b737000000000000000000000000000000000000000000000000000000008152600401610215929190611605565b5050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106104ac576104ac61163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e6365730000000000000000000000000000000000000000000000006030820152815180820390930183528101905260009061055b906105339061166c565b8360007e200100200000000000000000000000000000000000000000000000000000006108b1565b949350505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106105995761059961163d565b60209081029190910181019190915260408051613a3160f11b818401527f776f726c6400000000000000000000000000000000000000000000000000000060228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015281518082039093018352810190526106689061061d9061166c565b8260008560405160200161063391815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006108e7565b505050565b805160208201fd5b606081601081901b600061068883610903565b9050827fffffffffffffffffffffffffffff0000000000000000000000000000000000008316156106e3576106de7fffffffffffffffffffffffffffff000000000000000000000000000000000000841661091a565b61071a565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b7fffffffffffffffffffffffffffffffff000000000000000000000000000000008316156107505761074b8361091a565b610787565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b60405160200161079993929190611693565b6040516020818303038152906040529350505050919050565b6107bb816109c8565b6107fd57806107c982610675565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610215929190611721565b50565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610847573391505090565b919050565b600061089a7f6e730000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffff0000000000000000000000000000000085161783610ac2565b806108aa57506108aa8383610ac2565b9392505050565b60006108de6108c08686610bb9565b60ff858116601b0360080285901c166108d98587610c0f565b610c52565b95945050505050565b6108fc85856108f68487610c0f565b85610ca3565b5050505050565b6000610911607060106115f2565b9190911b919050565b606060005b6010811015610989577fffffffffffffffffffffffffffffffff000000000000000000000000000000008316600882021b7fff00000000000000000000000000000000000000000000000000000000000000161561098957806109818161173a565b91505061091f565b604080517fffffffffffffffffffffffffffffffff0000000000000000000000000000000085166020820152815160309091019091528181528061055b565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610a0157610a0161163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f73746f726500000000000000000000000000000000000000000000000000000060228301527f5265736f757263654964730000000000000000000000000000000000000000006030830152600091610ab691015b604051602081830303815290604052610a8e9061166c565b8360007e010100010000000000000000000000000000000000000000000000000000006108b1565b905061055b8160f81c90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610afb57610afb61163d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b81600181518110610b3457610b3461163d565b60209081029190910181019190915260408051613a3160f11b928101929092527f776f726c6400000000000000000000000000000000000000000000000000000060228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091610bad9101610a76565b90506108de8160f81c90565b60008282604051602001610bce929190611754565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015610c4a57610c3660ff601b83900360080287901c16836115f2565b915080610c428161173a565b915050610c14565b509392505050565b600060208210610c7857602082048401935060208281610c7457610c7461178f565b0691505b508254600882021b602082900380841115610c4a576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff0000000000000000000000000000000000000000000000000000000000001603610d2d57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be848484604051610d20939291906117f9565b60405180910390a26103e1565b6000610d398585610bb9565b90506000610d4686610f5b565b905060005b8151811015610e25576000828281518110610d6857610d6861163d565b60200260200101519050610d946004826affffffffffffffffffffff191661103b90919063ffffffff16565b15610e12576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90610ddf908b908b908b908b90600401611836565b600060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050505b5080610e1d8161173a565b915050610d4b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be868686604051610e5a939291906117f9565b60405180910390a2610e75828565ffffffffffff1685611059565b60005b8151811015610f52576000828281518110610e9557610e9561163d565b60200260200101519050610ec16008826affffffffffffffffffffff191661103b90919063ffffffff16565b15610f3f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190610f0c908b908b908b908b90600401611836565b600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b505050505b5080610f4a8161173a565b915050610e78565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610f9557610f9561163d565b60209081029190910181019190915260408051613a3160f11b818401527f73746f726500000000000000000000000000000000000000000000000000000060228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015281518082039093018352810190526000906110249061101c9061166c565b83600061106f565b905061055b61103682600084516110a9565b611139565b60008160ff168261104c8560581c90565b1660ff1614905092915050565b6106688383835161106a8560200190565b61114a565b606061055b61107f85858561120a565b60006110a48561108f898961128a565b9060ff166028026038011c64ffffffffff1690565b61129d565b60008183111580156110bc575083518211155b6110f8578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016102159392919061187a565b6020840161110684826115f2565b90506000611114858561154e565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006108aa83601560006112c0565b82156111c45760208310611174576020830484019350602083816111705761117061178f565b0692505b82156111c45760208390036000600019600885021c1990506008850281811c91508351811c90508119875416828216178755508184116111b55750506103e1565b50600194909401939182900391015b5b602082106111e65780518455600190930192601f19909101906020016111c5565b81156103e1576000600019600884021c198554835182169119161785555050505050565b6000838360405160200161121f929190611754565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006108aa611299848461133b565b5490565b60405160208101601f19603f8484010116604052828252610c4a85858584611391565b606060006112ce8560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816112f4576112f461178f565b04905060405193506020840160208202810160405281855260005b8281101561132f578451871c82529387019360209091019060010161130f565b50505050509392505050565b60008282604051602001611350929190611754565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b821561141a57602083106113bb576020830484019350602083816113b7576113b761178f565b0692505b821561141a5760208390036000818410156113df5750600019600884021c196113ea565b50600019600882021c195b8554600886021b81198451168282161784525081841161140b5750506103e1565b50600194909401939182900391015b5b6020821061143c5783548152600190930192601f199091019060200161141b565b81156103e1576000600019600884021c198251865482169119161782525050505050565b60006020828403121561147257600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108aa57600080fd5b6000806000606084860312156114b757600080fd5b83359250602084013573ffffffffffffffffffffffffffffffffffffffff811681146114e257600080fd5b929592945050506040919091013590565b60008060006060848603121561150857600080fd5b505081359360208301359350604090920135919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156101a2576101a261151f565b60005b8381101561157c578181015183820152602001611564565b50506000910152565b6000815180845261159d816020860160208601611561565b601f01601f19169290920160200192915050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006108de6060830184611585565b808201808211156101a2576101a261151f565b6040815260006116186040830185611585565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051602080830151919081101561168d576000198160200360031b1b821691505b50919050565b7fffff0000000000000000000000000000000000000000000000000000000000008416815260007f3a0000000000000000000000000000000000000000000000000000000000000080600284015284516116f4816003860160208901611561565b808401905081600382015284519150611714826004830160208801611561565b0160040195945050505050565b82815260406020820152600061055b6040830184611585565b6000600019820361174d5761174d61151f565b5060010190565b82815260006020808301845182860160005b8281101561178257815184529284019290840190600101611766565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081518084526020808501945080840160005b838110156117ee578151875295820195908201906001016117d2565b509495945050505050565b60608152600061180c60608301866117be565b65ffffffffffff85166020840152828103604084015261182c8185611585565b9695505050505050565b84815260806020820152600061184f60808301866117be565b65ffffffffffff85166040840152828103606084015261186f8185611585565b979650505050505050565b60608152600061188d6060830186611585565b6020830194909452506040015291905056fea164736f6c6343000815000a608060405234801561001057600080fd5b50610af5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80638fc8cf7e116100505780638fc8cf7e146100df578063ce5e8dd9146100ff578063e1af802c1461011257600080fd5b806301ffc9a714610077578063119df25f1461009f57806345ec9354146100cc575b600080fd5b61008a61008536600461063e565b61011a565b60405190151581526020015b60405180910390f35b6100a76101b3565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610096565b604051601f193601358152602001610096565b6100f26100ed3660046106d3565b6101c2565b6040516100969190610739565b6100f261010d3660046106d3565b6103d7565b6100a76105ae565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee1270000000000000000000000000000000000000000000000000000000014806101ad57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101bd6105b8565b905090565b606060006101ce6105ae565b90508267ffffffffffffffff8111156101e9576101e96107d1565b60405190808252806020026020018201604052801561021c57816020015b60608152602001906001900390816102075790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff84168063894ecc5889898781811061025c5761025c610800565b905060200281019061026e919061082f565b61027c90602081019061086d565b8a8a8881811061028e5761028e610800565b90506020028101906102a0919061082f565b602001358b8b898181106102b6576102b6610800565b90506020028101906102c8919061082f565b6102d69060408101906108a3565b6040516024016102e99493929190610933565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516103369250610973565b600060405180830381855af49150503d8060008114610371576040519150601f19603f3d011682016040523d82523d6000602084013e610376565b606091505b50915091508161038957610389816105ea565b8080602001905181019061039d9190610985565b8584815181106103af576103af610800565b6020026020010181905250505080806103c790610a32565b915050610222565b505092915050565b606060006103e36105ae565b90508267ffffffffffffffff8111156103fe576103fe6107d1565b60405190808252806020026020018201604052801561043157816020015b606081526020019060019003908161041c5790505b50915060005b838110156103cf5760008073ffffffffffffffffffffffffffffffffffffffff841680633ae7af0889898781811061047157610471610800565b90506020028101906104839190610a91565b358a8a8881811061049657610496610800565b90506020028101906104a89190610a91565b6104b69060208101906108a3565b6040516024016104c893929190610ac5565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516105159250610973565b600060405180830381855af49150503d8060008114610550576040519150601f19603f3d011682016040523d82523d6000602084013e610555565b606091505b50915091508161056857610568816105ea565b8080602001905181019061057c9190610985565b85848151811061058e5761058e610800565b6020026020010181905250505080806105a690610a32565b915050610437565b60006101bd6105f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806105e75750335b90565b805160208201fd5b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610639573391505090565b919050565b60006020828403121561065057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461068057600080fd5b9392505050565b60008083601f84011261069957600080fd5b50813567ffffffffffffffff8111156106b157600080fd5b6020830191508360208260051b85010111156106cc57600080fd5b9250929050565b600080602083850312156106e657600080fd5b823567ffffffffffffffff8111156106fd57600080fd5b61070985828601610687565b90969095509350505050565b60005b83811015610730578181015183820152602001610718565b50506000910152565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156107c4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452815180518087526107a5818989018a8501610715565b601f01601f191695909501860194509285019290850190600101610760565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261086357600080fd5b9190910192915050565b60006020828403121561087f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461068057600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126108d857600080fd5b83018035915067ffffffffffffffff8211156108f357600080fd5b6020019150368190038213156106cc57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610969606083018486610908565b9695505050505050565b60008251610863818460208701610715565b60006020828403121561099757600080fd5b815167ffffffffffffffff808211156109af57600080fd5b818401915084601f8301126109c357600080fd5b8151818111156109d5576109d56107d1565b604051601f8201601f19908116603f011681019083821181831017156109fd576109fd6107d1565b81604052828152876020848701011115610a1657600080fd5b610a27836020830160208801610715565b979650505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261086357600080fd5b838152604060208201526000610adf604083018486610908565b9594505050505056fea164736f6c6343000815000a608060405234801561001057600080fd5b5061565b80620000216000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063530f4b6011610097578063b29e408911610066578063b29e408914610226578063bfdfaff714610239578063d5f8337f1461024c578063e1af802c1461025f57600080fd5b8063530f4b60146101da578063742d6118146101ed5780638da798da14610200578063a92813ad1461021357600080fd5b80631d2257ba116100d35780631d2257ba1461017557806326d98102146101885780633350b6a9146101b457806345ec9354146101c757600080fd5b806301ffc9a714610105578063056091291461012d5780630ba51f4914610142578063119df25f14610155575b600080fd5b610118610113366004614aa7565b610267565b60405190151581526020015b60405180910390f35b61014061013b366004614ad7565b6102d0565b005b610140610150366004614b53565b6102ef565b61015d6103bf565b6040516001600160a01b039091168152602001610124565b610140610183366004614ca0565b6103ce565b61019b610196366004614cf9565b61044e565b6040516001600160e01b03199091168152602001610124565b6101406101c2366004614d40565b610546565b604051601f193601358152602001610124565b6101406101e8366004614d98565b610731565b61019b6101fb366004614dd6565b610772565b61014061020e366004614e24565b61082d565b610140610221366004614ad7565b610946565b610140610234366004614e5e565b6109ba565b610140610247366004614e77565b610a5e565b61014061025a366004614d98565b610b28565b61015d610b8f565b60006001600160e01b031982167fb5dee1270000000000000000000000000000000000000000000000000000000014806102ca57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6102e1826102dc6103bf565b610b99565b6102eb8282610c1f565b5050565b60006102fa89610c6c565b6fffffffffffffffffffffffffffffffff191603610359578761031c89610c83565b6040517fe4ac069e000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b60405180910390fd5b610389616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008a1617610d97565b610395886102dc6103bf565b6103b5888888886103a6888a614f1a565b6103b08789614f1a565b610de2565b5050505050505050565b60006103c9611082565b905090565b6103e06103d96103bf565b84846110b4565b6103e9826111de565b80156103f6575060008151115b15610449576000610406836111fa565b9050610432817faf585477000000000000000000000000000000000000000000000000000000006112d5565b61044661043d6103bf565b84846000611330565b50505b505050565b600061045c836102dc6103bf565b600061048561046b8560101b90565b71ffffffffffffffffffffffffffffffffffff191661135d565b9050600061049a61049586610c6c565b61135d565b905060008282866040516020016104b393929190614f9e565b60405160208183030381529060405290508080519060200120935060006104d9856113f1565b9050801561051f576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031986166004820152602401610350565b855160208701206105318689836114e0565b61053b86846115e8565b505050505092915050565b7f7379000000000000000000000000000000000000000000000000000000000000836001600160f01b031916146105d7577f7379000000000000000000000000000000000000000000000000000000000000836105a285610c83565b6040517f5c30fb6f00000000000000000000000000000000000000000000000000000000815260040161035093929190615014565b7dffffffffffffffffffffffffffff000000000000000000000000000000008316616e7360f01b1761060881610d97565b610614816102dc6103bf565b61063e837fb5dee127000000000000000000000000000000000000000000000000000000006112d5565b600061064985610c6c565b6fffffffffffffffffffffffffffffffff19160361066b578361031c85610c83565b6000610676846116ee565b905080158015906106875750848114155b156106c9576040517fc0b707410000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401610350565b60006106d4866111fa565b90506001600160a01b038116156106fd576106ee816117d0565b6106f883826118a4565b610708565b610708866001611997565b610713868686611a8f565b61071d8587611b6f565b61072983866001611c0f565b505050505050565b61075b827f1873396a000000000000000000000000000000000000000000000000000000006112d5565b610767836102dc6103bf565b610449838383611cce565b60408051616e7360f01b602082015260006022820181905260308201819052916107b791016040516020818303038152906040526107af9061503d565b6102dc6103bf565b508151602083012060006107ca826113f1565b90508015610810576040517f3d1d1ae20000000000000000000000000000000000000000000000000000000081526001600160e01b031983166004820152602401610350565b61081b8286856114e0565b61082582856115e8565b509392505050565b610857827f780ac2fc000000000000000000000000000000000000000000000000000000006112d5565b6108d36108626103bf565b600084846040516024016108769190615061565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f13861fb500000000000000000000000000000000000000000000000000000000179052611d2f565b506102eb826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610915573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109399190615074565b8251602084012084611d40565b610952826102dc6103bf565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b7300000000000000000000000000000000000000000060308201526102eb91015b6040516020818303038152906040526109b39061503d565b8383611e73565b616e7360f01b816001600160f01b031916146109e057616e7360f01b816105a283610c83565b6109e981611f9a565b15610a2c57806109f882610c83565b6040517f0dc28f6a000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b610a37816001611997565b610a4881610a436103bf565b61207c565b610a5b81610a546103bf565b6001611c0f565b50565b616e7360f01b836001600160f01b03191614610a8457616e7360f01b836105a285610c83565b610a8d826111de565b610ac3576040517f71ee9e8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acf836102dc6103bf565b6000610ada836111fa565b9050610b06817faf585477000000000000000000000000000000000000000000000000000000006112d5565b610b108484612110565b815115610b225761044661043d6103bf565b50505050565b610b52827f540fbfa8000000000000000000000000000000000000000000000000000000006112d5565b610b5e836102dc6103bf565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b16176121a4565b60006103c9612293565b6001600160a01b038116610bd3616e7360f01b7dffffffffffffffffffffffffffff000000000000000000000000000000008516176122d2565b6001600160a01b0316146102eb57610bea82610c83565b816040517fd787b7370000000000000000000000000000000000000000000000000000000081526004016103509291906150a7565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201526102eb910161099b565b6000610c7a607060106150e8565b9190911b919050565b606081601081901b6000610c9683610c6c565b90508271ffffffffffffffffffffffffffffffffffff19831615610cd757610cd271ffffffffffffffffffffffffffffffffffff19841661135d565b610d0e565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b6fffffffffffffffffffffffffffffffff19831615610d3557610d308361135d565b610d6c565b6040518060400160405280600681526020017f3c726f6f743e00000000000000000000000000000000000000000000000000008152505b604051602001610d7e939291906150fb565b6040516020818303038152906040529350505050919050565b610da081611f9a565b610a5b5780610dae82610c83565b6040517ffbf10ce6000000000000000000000000000000000000000000000000000000008152600401610350929190614f01565b613a3160f11b866001600160f01b03191614801590610e105750611bdd60f21b866001600160f01b03191614155b15610e7157613a3160f11b8687604051602001610e2f91815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610350939291600401615014565b610e7a856123a2565b610e85846001612523565b610e90836000612523565b60e084901c60e885901c0160ff16825114610ef05760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff16815114610f505760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610fc85760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610350565b610fd186611f9a565b1561102b578586604051602001610fea91815260200190565b60408051601f19818403018152908290527fdfaaf9cf0000000000000000000000000000000000000000000000000000000082526103509291600401614f01565b61107786868686866040516020016110439190615171565b604051602081830303815290604052866040516020016110639190615171565b6040516020818303038152906040526126cf565b610729866001611997565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806110b15750335b90565b604080516002808252606082018352600092602083019080368337019050509050836001600160a01b031660001b816000815181106110f5576110f56151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611121576111216151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5573657244656c65676174696f6e436f000000000000000000000000000000006030830152610b2291015b6040516020818303038152906040526111939061503d565b826000856040516020016111a991815260200190565b60408051601f198184030181529190527e200100200000000000000000000000000000000000000000000000000000006127d3565b600081151580156102ca57506111f3826127e8565b1592915050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611233576112336151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca906112a29061503d565b8360007e15020014010000000000000000000000000000000000000000000000000000612863565b60601c949350505050565b6112df8282612899565b6102eb576040517f74b5e6ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526001600160e01b031982166024820152604401610350565b6060600080611341878787876128bc565b91509150816113535761135381612aa0565b9695505050505050565b606060005b60108110156113bd576fffffffffffffffffffffffffffffffff198316600882021b7fff0000000000000000000000000000000000000000000000000000000000000016156113bd57806113b581615207565b915050611362565b604080516fffffffffffffffffffffffffffffffff198516602082015281516030909101909152818152805b949350505050565b60408051600180825281830190925260009182919060208083019080368337019050509050827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110611449576114496151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526000906113e9906114b89061503d565b8360007e24020020040000000000000000000000000000000000000000000000000000612863565b60006114ec8383612aa8565b60408051600180825281830190925291925060009160609183919060208083019080368337019050509050867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061154a5761154a6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015281518082039093018352810190526115df906115b69061503d565b828686867e24020020040000000000000000000000000000000000000000000000000000612ae7565b50505050505050565b606060006115f583612e01565b9050600061160284612e11565b6040805160018082528183019092529192506000919060208083019080368337019050509050857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061165b5761165b6151f1565b60209081029190910181019190915260408051611bdd60f21b81840152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e617475720000000000000000000000000000000060308201528151808203909301835281019052610729906116c79061503d565b828686867c0100000000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009182919060208083019080368337019050509050826001600160a01b031660001b81600081518110611733576117336151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d526567697374727900000000000000000000000000000000000060308301526000916113e991015b6040516020818303038152906040526117a89061503d565b8360007e20010020000000000000000000000000000000000000000000000000000000612863565b60408051600180825281830190925260009160208083019080368337019050509050816001600160a01b031660001b81600081518110611812576118126151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015281518082039093018352810190526102eb9061187e9061503d565b827e20010020000000000000000000000000000000000000000000000000000000612e3a565b60408051600280825260608201835260009260208301908036833701905050905082816000815181106118d9576118d96151f1565b602002602001018181525050816001600160a01b031660001b81600181518110611905576119056151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f5265736f7572636541636365737300000000000000000000000000000000000060308201528151808203909301835281019052610449906119719061503d565b827e01010001000000000000000000000000000000000000000000000000000000612e3a565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106119cd576119cd6151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261044991015b604051602081830303815290604052611a3f9061503d565b82600085604051602001611a5a91151560f81b815260010190565b60408051601f198184030181529190527e010100010000000000000000000000000000000000000000000000000000006127d3565b6000611a9b838361311a565b604080516001808252818301909252919250600091606091839190602080830190803683370190505090508681600081518110611ada57611ada6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526115df90611b469061503d565b828686867e15020014010000000000000000000000000000000000000000000000000000612ae7565b60408051600180825281830190925260009160208083019080368337019050509050826001600160a01b031660001b81600081518110611bb157611bb16151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d52656769737472790000000000000000000000000000000000006030830152610449910161117b565b6040805160028082526060820183526000926020830190803683370190505090508381600081518110611c4457611c446151f1565b602002602001018181525050826001600160a01b031660001b81600181518110611c7057611c706151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152610b229101611a27565b613a3160f11b836001600160f01b03191614611cfe57613a3160f11b8384604051602001610e2f91815260200190565b610449836bffffffffffffffffffffffff19606085901b166bff0000000000000000000000605885901b161761314a565b6060600080611341878787876131de565b604080516002808252606082018352600092602083019080368337019050509050836fffffffffffffffffffffffffffffffff191681600081518110611d8857611d886151f1565b6020026020010181815250508281600181518110611da857611da86151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030830152610b2291015b604051602081830303815290604052611e1a9061503d565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160408051601f198184030181529190527e140100140000000000000000000000000000000000000000000000000000006127d3565b6000611e7f8484613256565b90506000815167ffffffffffffffff811115611e9d57611e9d614be9565b604051908082528060200260200182016040528015611ec6578160200160208202803683370190505b5090506000805b8351811015611f8b57846001600160a01b0316611f11858381518110611ef557611ef56151f1565b60200260200101516affffffffffffffffffffff191660601c90565b6001600160a01b031614611f8357838181518110611f3157611f316151f1565b6020026020010151838381518110611f4b57611f4b6151f1565b7fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000909216602092830291909101909101526001909101905b600101611ecd565b508082526107298686846132c1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611fd357611fd36151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015260009161207091015b6040516020818303038152906040526120489061503d565b8360007e01010001000000000000000000000000000000000000000000000000000000612863565b90506113e98160f81c90565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106120b2576120b26151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d6573706163654f776e657200000000000000000000000000000000000060308301526104499101611e02565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110612146576121466151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f4e616d65737061636544656c65676174000000000000000000000000000000006030830152610449910161117b565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106121da576121da6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b73000000000000000000000000000000000000000000603083015261044991015b60405160208183030381529060405261224c9061503d565b6040517fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000851660208201528390600090603501604051602081830303815290604052613318565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b0316806122cd573391505090565b919050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061230b5761230b6151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526000906112ca9061237a9061503d565b8360007e14010014000000000000000000000000000000000000000000000000000000612863565b806123d9576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006123e4826133c9565b9050600581111561242b576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610350565b600061243683613406565b9050600061244483836150e8565b9050601c81111561248b576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610350565b60005b828110156104465760ff601b82900360080286901c1660008190036124df576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081111561251a576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161248e565b8015801561252f575081155b1561255057604051635318beb960e01b815260006004820152602401610350565b600061255b836133c9565b9050600581111561258257604051635318beb960e01b815260048101829052602401610350565b600061258d84613406565b9050600061259b83836150e8565b9050601c8111156125c257604051635318beb960e01b815260048101829052602401610350565b60008060005b838110156126885760006125f56125df8a84613418565b60c58111156125f0576125f0615221565b613439565b111561263f57848110612634576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600190920191612680565b84811015612679576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b6001016125c8565b508382146126ac57604051635318beb960e01b815260048101839052602401610350565b8481146115df57604051635318beb960e01b815260048101829052602401610350565b60006126dc868686613499565b905060006126ea84846134cf565b905060006126f885856134ec565b60408051600180825281830190925291925060009190602080830190803683370190505090508981600081518110612732576127326151f1565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526127c79061279e9061503d565b828686867e60030220202000000000000000000000000000000000000000000000000000612ae7565b50505050505050505050565b61044685856127e28487613501565b8561353c565b604080517f737900000000000000000000000000000000000000000000000000000000000060208201526000602282018190527f756e6c696d6974656400000000000000000000000000000000000000000000006030830152910160405160208183030381529060405261285b9061503d565b909114919050565b600061289061287286866137b8565b60ff858116601b0360080285901c1661288b8587613501565b61380e565b95945050505050565b60006128a48361385f565b80156128b557506128b583836138a0565b9392505050565b6000606060006128cb86613958565b905060005b81518110156129a85760008282815181106128ed576128ed6151f1565b602002602001015190506129196001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612995576040517fc3323031000000000000000000000000000000000000000000000000000000008152606082901c9063c332303190612962908c908c908c90600401615237565b600060405180830381600087803b15801561297c57600080fd5b505af1158015612990573d6000803e3d6000fd5b505050505b50806129a081615207565b9150506128d0565b506129b587858888613a3f565b909350915060005b8151811015612a955760008282815181106129da576129da6151f1565b60200260200101519050612a066002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612a82576040517f973d8f99000000000000000000000000000000000000000000000000000000008152606082901c9063973d8f9990612a4f908c908c908c90600401615237565b600060405180830381600087803b158015612a6957600080fd5b505af1158015612a7d573d6000803e3d6000fd5b505050505b5080612a8d81615207565b9150506129bd565b505094509492505050565b805160208201fd5b60608282604051602001612ad09291909182526001600160e01b031916602082015260240190565b604051602081830303815290604052905092915050565b611bdd60f21b866001600160f01b03191603612b4057857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051612b33949392919061529a565b60405180910390a2610729565b6000612b4b87613b1e565b905060005b8151811015612c2e576000828281518110612b6d57612b6d6151f1565b60200260200101519050612b996001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612c1b576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90612be8908c908c908c908c908c908c906004016152d9565b600060405180830381600087803b158015612c0257600080fd5b505af1158015612c16573d6000803e3d6000fd5b505050505b5080612c2681615207565b915050612b50565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051612c65949392919061529a565b60405180910390a26000612c7988886137b8565b90506000602087019050612c91826000895184613bb9565b6000612c9c856133c9565b1115612d20576000612cae8a8a613c79565b878155905060208601915060008060005b612cc8886133c9565b8160ff161015612d1b57612cdd8d8d83613ccf565b9250612cf88a8260ff166028026038011c64ffffffffff1690565b9150612d078360008488613bb9565b612d1182866150e8565b9450600101612cbf565b505050505b60005b83518110156127c7576000848281518110612d4057612d406151f1565b60200260200101519050612d6c6002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612dee576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90612dbb908e908e908e908e908e908e906004016152d9565b600060405180830381600087803b158015612dd557600080fd5b505af1158015612de9573d6000803e3d6000fd5b505050505b5080612df981615207565b915050612d23565b60006102ca8251603881901b1790565b606081604051602001612e249190615332565b6040516020818303038152906040529050919050565b611bdd60f21b836001600160f01b03191603612e8d57827f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0783604051612e80919061534e565b60405180910390a2505050565b6000612e9884613b1e565b905060005b8151811015612f75576000828281518110612eba57612eba6151f1565b60200260200101519050612ee66040826affffffffffffffffffffff1916613a2190919063ffffffff16565b15612f62576040517f9faeaf45000000000000000000000000000000000000000000000000000000008152606082901c90639faeaf4590612f2f90899089908990600401615361565b600060405180830381600087803b158015612f4957600080fd5b505af1158015612f5d573d6000803e3d6000fd5b505050505b5080612f6d81615207565b915050612e9d565b50837f0e1f72f429eb97e64878619984a91e687ae91610348b9ff4216782cc96e49d0784604051612fa6919061534e565b60405180910390a26000612fba85856137b8565b9050613013816000612fcb86613d4f565b67ffffffffffffffff811115612fe357612fe3614be9565b6040519080825280601f01601f19166020018201604052801561300d576020820181803683370190505b50613d72565b600061301e846133c9565b111561303f5760006130308686613c79565b905061303d816020613d88565b505b60005b825181101561072957600083828151811061305f5761305f6151f1565b6020026020010151905061308b6080826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613107576040517f83b5c95b000000000000000000000000000000000000000000000000000000008152606082901c906383b5c95b906130d4908a908a908a90600401615361565b600060405180830381600087803b1580156130ee57600080fd5b505af1158015613102573d6000803e3d6000fd5b505050505b508061311281615207565b915050613042565b604051606083811b6bffffffffffffffffffffffff1916602083015282151560f81b603483015290603501612ad0565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613180576131806151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308301526104499101612234565b60006060836001600160a01b031660006131f9858989613dc5565b6040516132069190615332565b60006040518083038185875af1925050503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b606091505b509097909650945050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613290576132906151f1565b60200260200101818152505060006132aa85836000613ddc565b90506128906132bc8260008451613e16565b613ea6565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106132f7576132f76151f1565b602002602001018181525050610b228482600061331386613eb7565b613ec7565b6000613322612293565b9050306001600160a01b038216036133455761334085858585613f02565b610446565b6040517f150f32620000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063150f32629061339090889088908890889060040161538a565b600060405180830381600087803b1580156133aa57600080fd5b505af11580156133be573d6000803e3d6000fd5b505050505050505050565b600060086001806133dc600260206153be565b6133e691906153be565b6133f091906153be565b6133fa91906153d1565b8260ff911c1692915050565b6000600860016133e6600260206153be565b6000601b8290036008028360ff911c1660c58111156128b5576128b5615221565b6000808260c581111561344e5761344e615221565b60ff169050606181101561346857601f1660010192915050565b60618360c581111561347c5761347c615221565b0361348a5750601492915050565b50600092915050565b50919050565b60408051602081018590529081018390526060818101839052906080015b60405160208183030381529060405290509392505050565b8151815160009181810160389190911b1760609190911b176128b5565b60608282604051602001612ad09291906153e8565b600080805b8360ff168110156108255761352860ff601b83900360080287901c16836150e8565b91508061353481615207565b915050613506565b611bdd60f21b846001600160f01b0319160361359357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161358693929190615417565b60405180910390a2610b22565b600061359f85856137b8565b905060006135ac86613b1e565b905060005b815181101561368b5760008282815181106135ce576135ce6151f1565b602002602001015190506135fa6004826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613678576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d90613645908b908b908b908b9060040161544a565b600060405180830381600087803b15801561365f57600080fd5b505af1158015613673573d6000803e3d6000fd5b505050505b508061368381615207565b9150506135b1565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8686866040516136c093929190615417565b60405180910390a26136db828565ffffffffffff1685613d72565b60005b81518110156115df5760008282815181106136fb576136fb6151f1565b602002602001015190506137276008826affffffffffffffffffffff1916613a2190919063ffffffff16565b156137a5576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190613772908b908b908b908b9060040161544a565b600060405180830381600087803b15801561378c57600080fd5b505af11580156137a0573d6000803e3d6000fd5b505050505b50806137b081615207565b9150506136de565b600082826040516020016137cd929190615483565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b60006020821061383457602082048401935060208281613830576138306154be565b0691505b508254600882021b602082900380841115610825576001850154600882021c82179150509392505050565b600061388b827f01ffc9a7000000000000000000000000000000000000000000000000000000006138a0565b80156102ca57506111f3826001600160e01b03195b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825192935060009283928392909183918a617530fa92503d91506000519050828015613941575060208210155b801561394d5750600081115b979650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613992576139926151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f53797374656d486f6f6b730000000000000000000000000000000000000000006030830152600091613a0f91015b604051602081830303815290604052613a079061503d565b836000613ddc565b90506113e96132bc8260008451613e16565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b60006060600080613a4f86613f3d565b90925090506001600160a01b038216613a6c5785610dae87610c83565b80613a7b57613a7b8689614035565b8615613acc577dffffffffffffffffffffffffffff000000000000000000000000000000008616616e7360f01b176000613ab48261404c565b9050613ac982613ac48b846150e8565b6140e6565b50505b6000613ad88760101b90565b71ffffffffffffffffffffffffffffffffffff191614613b0357613afe888884886131de565b613b0f565b613b0f8888848861417a565b90999098509650505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613b5857613b586151f1565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f53746f7265486f6f6b73000000000000000000000000000000000000000000006030830152600091613a0f91016139ef565b8215613c335760208310613be357602083048401935060208381613bdf57613bdf6154be565b0692505b8215613c335760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411613c24575050610b22565b50600194909401939182900391015b5b60208210613c555780518455600190930192601f1990910190602001613c34565b8115610b22576000600019600884021c198554835182169119161785555050505050565b60008282604051602001613c8e929190615483565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b60008383604051602001613ce4929190615483565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b60006008613d5f600260206153be565b613d6991906153d1565b9190911c919050565b61044983838351613d838560200190565b613bb9565b60006020613d9783601f6150e8565b613da191906154d4565b613dab90846150e8565b90505b808310156104495760008355600183019250613dae565b60608383836040516020016134b7939291906154f6565b60606113e9613dec858585613ccf565b6000613e1185613dfc89896141db565b9060ff166028026038011c64ffffffffff1690565b6141ee565b6000818311158015613e29575083518211155b613e65578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161035093929190615535565b60208401613e7384826150e8565b90506000613e8185856153be565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006128b58360156000614211565b6060816128b5816015600061428c565b6000613ed385856141db565b90506000613ef0828560ff166028026038011c64ffffffffff1690565b905061072986868660008588886142e0565b6000613f0e85856141db565b90506000613f2b828560ff166028026038011c64ffffffffff1690565b905061072986868684600088886142e0565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110613f7757613f776151f1565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015281518082039093018352810190526000908190819061401090613fea9061503d565b857e1502001401000000000000000000000000000000000000000000000000000061469c565b5050602081015160349091015160609190911c9860f89190911c975095505050505050565b61403f82826147a4565b6102eb57610bea82610c83565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614085576140856151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e63657300000000000000000000000000000000000000000000000060308301526000916113e99101611790565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061411c5761411c6151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f42616c616e6365730000000000000000000000000000000000000000000000006030830152610449910161117b565b60006060836001600160a01b0316614193848888613dc5565b6040516141a09190615332565b600060405180830381855af49150503d8060008114613243576040519150601f19603f3d011682016040523d82523d6000602084013e613248565b60006128b56141ea8484613c79565b5490565b60405160208101601f19603f8484010116604052828252610825858585846147e7565b6060600061421f8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281614245576142456154be565b04905060405193506020840160208202810160405281855260005b82811015614280578451871c825293870193602090910190600101614260565b50505050509392505050565b8251606090600061429d85836153d1565b9050604051925060208301601f19603f83860101166040528184526000602088015b84821015614280578051871b835291870191600191909101906020016142bf565b613a3160f11b876001600160f01b0319161461431057613a3160f11b8788604051602001610e2f91815260200190565b600061432b828760ff166028026038011c64ffffffffff1690565b9050600083518564ffffffffff168361434491906153be565b61434e91906150e8565b9050808214158015614370575081614366868861555a565b64ffffffffff1614155b156143c0576040517fa65010b400000000000000000000000000000000000000000000000000000000815264ffffffffff8088166004830152808716602483015283166044820152606401610350565b818664ffffffffff161115614411576040517f7e8578d30000000000000000000000000000000000000000000000000000000081526004810183905264ffffffffff87166024820152604401610350565b600061441e8489846148b6565b9050600061442b8b613b1e565b905060005b815181101561450057600082828151811061444d5761444d6151f1565b602002602001015190506144796010826affffffffffffffffffffff1916613a2190919063ffffffff16565b156144ed57606081901c6001600160a01b03166355eb5a288e8e8e8e8e8d8f6040518863ffffffff1660e01b81526004016144ba979695949392919061557f565b600060405180830381600087803b1580156144d457600080fd5b505af11580156144e8573d6000803e3d6000fd5b505050505b50806144f881615207565b915050614430565b5064ffffffffff881660005b8a60ff168160ff16101561453f57614533878260ff166028026038011c64ffffffffff1690565b9091019060010161450c565b508b7faa63765a776145e5e6492f471ae097dfed11cd57a61bc2679dd43180422385b48c838b878c6040516145789594939291906155dd565b60405180910390a2508284146145995760006145948c8c613c79565b839055505b60006145a68c8c8c613ccf565b90506145ba818a64ffffffffff1689613d72565b5060005b815181101561468e5760008282815181106145db576145db6151f1565b602002602001015190506146076020826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561467b57606081901c6001600160a01b031663635845338e8e8e8e8e8a8f6040518863ffffffff1660e01b8152600401614648979695949392919061557f565b600060405180830381600087803b15801561466257600080fd5b505af1158015614676573d6000803e3d6000fd5b505050505b508061468681615207565b9150506145be565b505050505050505050505050565b60606000606060006146ad85613d4f565b90506146ba878783614984565b935060006146c7866133c9565b90508015614799576146d988886141db565b935066ffffffffffffff841667ffffffffffffffff8111156146fd576146fd614be9565b6040519080825280601f01601f191660200182016040528015614727576020820181803683370190505b5092506020830160005b828160ff1610156147965760006147498b8b84613ccf565b90506000614766888460ff166028026038011c64ffffffffff1690565b905061477582600083876147e7565b61477f81856150e8565b93505050808061478e9061562f565b915050614731565b50505b505093509350939050565b60006147d7616e7360f01b7dffffffffffffffffffffffffffff00000000000000000000000000000000851617836149bd565b806128b557506128b583836149bd565b821561487057602083106148115760208304840193506020838161480d5761480d6154be565b0692505b82156148705760208390036000818410156148355750600019600884021c19614840565b50600019600882021c195b8554600886021b811984511682821617845250818411614861575050610b22565b50600194909401939182900391015b5b602082106148925783548152600190930192601f1990910190602001614871565b8115610b22576000600019600884021c198251865482169119161782525050505050565b600064ffffffffff8211156148fa576040517f4767058800000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b8366ffffffffffffff811660ff851660280260380182901c64ffffffffff1680851061492c5780850382019150614934565b848103820391505b5064ffffffffff6038602860ff8816020181811b197fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009490941690921792909216918416901b1790509392505050565b6060816000036149a357506040805160208101909152600081526128b5565b60006149af85856137b8565b9050612890816000856141ee565b6040805160028082526060820183526000928392919060208301908036833701905050905083816000815181106149f6576149f66151f1565b602002602001018181525050826001600160a01b031660001b81600181518110614a2257614a226151f1565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f757263654163636573730000000000000000000000000000000000006030830152600091614a839101612030565b90506128908160f81c90565b80356001600160e01b0319811681146122cd57600080fd5b600060208284031215614ab957600080fd5b6128b582614a8f565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215614aea57600080fd5b823591506020830135614afc81614ac2565b809150509250929050565b60008083601f840112614b1957600080fd5b50813567ffffffffffffffff811115614b3157600080fd5b6020830191508360208260051b8501011115614b4c57600080fd5b9250929050565b60008060008060008060008060c0898b031215614b6f57600080fd5b88359750602089013596506040890135955060608901359450608089013567ffffffffffffffff80821115614ba357600080fd5b614baf8c838d01614b07565b909650945060a08b0135915080821115614bc857600080fd5b50614bd58b828c01614b07565b999c989b5096995094979396929594505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614c2857614c28614be9565b604052919050565b600082601f830112614c4157600080fd5b813567ffffffffffffffff811115614c5b57614c5b614be9565b614c6e6020601f19601f84011601614bff565b818152846020838601011115614c8357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614cb557600080fd5b8335614cc081614ac2565b925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b614cef86828701614c30565b9150509250925092565b60008060408385031215614d0c57600080fd5b82359150602083013567ffffffffffffffff811115614d2a57600080fd5b614d3685828601614c30565b9150509250929050565b600080600060608486031215614d5557600080fd5b833592506020840135614d6781614ac2565b915060408401358015158114614d7c57600080fd5b809150509250925092565b803560ff811681146122cd57600080fd5b600080600060608486031215614dad57600080fd5b833592506020840135614dbf81614ac2565b9150614dcd60408501614d87565b90509250925092565b600080600060608486031215614deb57600080fd5b83359250602084013567ffffffffffffffff811115614e0957600080fd5b614e1586828701614c30565b925050614dcd60408501614a8f565b60008060408385031215614e3757600080fd5b8235614e4281614ac2565b9150602083013567ffffffffffffffff811115614d2a57600080fd5b600060208284031215614e7057600080fd5b5035919050565b600080600060608486031215614e8c57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115614ce357600080fd5b60005b83811015614ecc578181015183820152602001614eb4565b50506000910152565b60008151808452614eed816020860160208601614eb1565b601f01601f19169290920160200192915050565b8281526040602082015260006113e96040830184614ed5565b600067ffffffffffffffff80841115614f3557614f35614be9565b8360051b6020614f46818301614bff565b868152918501918181019036841115614f5e57600080fd5b865b84811015614f9257803586811115614f785760008081fd5b614f8436828b01614c30565b845250918301918301614f60565b50979650505050505050565b60008451614fb0818460208901614eb1565b80830190507f5f000000000000000000000000000000000000000000000000000000000000008082528551614fec816001850160208a01614eb1565b60019201918201528351615007816002840160208801614eb1565b0160020195945050505050565b6001600160f01b0319841681528260208201526060604082015260006128906060830184614ed5565b805160208083015191908110156134935760001960209190910360031b1b16919050565b6020815260006128b56020830184614ed5565b60006020828403121561508657600080fd5b81516fffffffffffffffffffffffffffffffff19811681146128b557600080fd5b6040815260006150ba6040830185614ed5565b90506001600160a01b03831660208301529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ca576102ca6150d2565b6001600160f01b03198416815260007f3a000000000000000000000000000000000000000000000000000000000000008060028401528451615144816003860160208901614eb1565b808401905081600382015284519150615164826004830160208801614eb1565b0160040195945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156151e4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526151d2858351614ed5565b94509285019290850190600101615198565b5092979650505050505050565b634e487b7160e01b600052603260045260246000fd5b6000600019820361521a5761521a6150d2565b5060010190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03841681528260208201526060604082015260006128906060830184614ed5565b600081518084526020808501945080840160005b8381101561528f57815187529582019590820190600101615273565b509495945050505050565b6080815260006152ad608083018761525f565b82810360208401526152bf8187614ed5565b9050846040840152828103606084015261394d8185614ed5565b86815260c0602082015260006152f260c083018861525f565b82810360408401526153048188614ed5565b9050856060840152828103608084015261531e8186614ed5565b9150508260a0830152979650505050505050565b60008251615344818460208701614eb1565b9190910192915050565b6020815260006128b5602083018461525f565b83815260606020820152600061537a606083018561525f565b9050826040830152949350505050565b8481526080602082015260006153a3608083018661525f565b60ff85166040840152828103606084015261394d8185614ed5565b818103818111156102ca576102ca6150d2565b80820281158282048414176102ca576102ca6150d2565b600083516153fa818460208801614eb1565b83519083019061540e818360208801614eb1565b01949350505050565b60608152600061542a606083018661525f565b65ffffffffffff8516602084015282810360408401526113538185614ed5565b848152608060208201526000615463608083018661525f565b65ffffffffffff85166040840152828103606084015261394d8185614ed5565b82815260006020808301845182860160005b828110156154b157815184529284019290840190600101615495565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b6000826154f157634e487b7160e01b600052601260045260246000fd5b500490565b60008451615508818460208901614eb1565b60609490941b6bffffffffffffffffffffffff191691909301908152601481019190915260340192915050565b6060815260006155486060830186614ed5565b60208301949094525060400152919050565b64ffffffffff818116838216019080821115615578576155786150d2565b5092915050565b87815260e06020820152600061559860e083018961525f565b60ff8816604084015264ffffffffff87811660608501528616608084015260a0830185905282810360c08401526155cf8185614ed5565b9a9950505050505050505050565b60a0815260006155f060a083018861525f565b65ffffffffffff8716602084015264ffffffffff8616604084015284606084015282810360808401526156238185614ed5565b98975050505050505050565b600060ff821660ff8103615645576156456150d2565b6001019291505056fea164736f6c6343000815000a6101006040523480156200001257600080fd5b5060405162004c6d38038062004c6d833981016040819052620000359162000071565b6001600160a01b0393841660805291831660a052821660c0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e051614b4c62000121600039600081816106a20152818161159201526116210152600061063a015260006105d2015260006105510152614b4c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806317d7de7c1161005b57806317d7de7c146100ec57806345ec93541461011a5780637c5b03351461012d578063e1af802c1461014057600080fd5b806301ffc9a714610082578063119df25f146100aa57806313861fb5146100d7575b600080fd5b610095610090366004614310565b610148565b60405190151581526020015b60405180910390f35b6100b261022d565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a1565b6100ea6100e5366004614368565b61023c565b005b6040517f636f72650000000000000000000000000000000000000000000000000000000081526020016100a1565b604051601f1936013581526020016100a1565b6100ea61013b366004614368565b61026e565b6100b2610289565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780ac2fc0000000000000000000000000000000000000000000000000000000014806101db57507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b8061022757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000610237610293565b905090565b6040517fea8b184c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102766102c5565b61027e61050f565b6102866106c8565b50565b6000610237610bcb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806102c25750335b90565b6102cd610c17565b6102d5610c2f565b6102dd610cd4565b6102e5610d5c565b6102ed610dfc565b6102f5610e84565b6102fd610f04565b610305610f8c565b61030d61102c565b6103156110cc565b61031d61116a565b610325611208565b60408051616e7360f01b6020820152600060228201819052603082015261036791015b60405160208183030381529060405261036090614419565b6001611290565b60408051616e7360f01b602082015260006022820181905260308201526103af91015b6040516020818303038152906040526103a290614419565b6103aa61022d565b611375565b60408051616e7360f01b602082015260006022820181905260308201526103f991015b6040516020818303038152906040526103ea90614419565b6103f261022d565b6001611483565b60408051616e7360f01b60208201526473746f726560d81b6022820152600060308201526104279101610348565b60408051616e7360f01b60208201526473746f726560d81b602282015260006030820152610455910161038a565b60408051616e7360f01b60208201526473746f726560d81b60228201526000603082015261048391016103d2565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104b19101610348565b60408051616e7360f01b6020820152641ddbdc9b1960da1b6022820152600060308201526104df910161038a565b60408051616e7360f01b6020820152641ddbdc9b1960da1b60228201526000603082015261050d91016103d2565b565b6040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e74000000000000000000000000000000006030820152610590917f000000000000000000000000000000000000000000000000000000000000000091015b60405160208183030381529060405261058b90614419565b611555565b6040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526105f8917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610660917f00000000000000000000000000000000000000000000000000000000000000009101610573565b6040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e00000000000000000000000000000000603082015261050d917f00000000000000000000000000000000000000000000000000000000000000009101610573565b600060405180606001604052806040518060400160405280601c81526020017f6772616e7441636365737328627974657333322c61646472657373290000000081525081526020016040518060400160405280601d81526020017f7265766f6b6541636365737328627974657333322c61646472657373290000008152508152602001604051806060016040528060228152602001614b1e602291399052905060005b60038110156107fb576040805161737960f01b6020820152600060228201527f4163636573734d616e6167656d656e740000000000000000000000000000000060308201526107e991016040516020818303038152906040526107cd90614419565b8383600381106107df576107df61443d565b6020020151611612565b806107f381614469565b91505061076b565b506040805160a0810182526033918101828152600092829190614ac2606084013981526020016040518060600160405280603181526020016149b7603191399052905060005b60028110156108c8576040805161737960f01b6020820152600060228201527f42616c616e63655472616e73666572000000000000000000000000000000000060308201526108b691015b6040516020818303038152906040526108a490614419565b8383600281106107df576107df61443d565b806108c081614469565b915050610841565b50600060405180604001604052806040518060400160405280601c81526020017f626174636843616c6c2828627974657333322c6279746573295b5d29000000008152508152602001604051806060016040528060288152602001614a43602891399052905060005b6002811015610992576040805161737960f01b6020820152600060228201527f426174636843616c6c00000000000000000000000000000000000000000000006030820152610980910161088c565b8061098a81614469565b915050610931565b50604080516101c081018252601c61018082019081527f696e7374616c6c4d6f64756c6528616464726573732c627974657329000000006101a08301528152815160608101835282815260009260208084019291906149029083013981526020016040518060600160405280602881526020016149e86028913981526020016040518060600160405280602481526020016148de6024913981526020016040518060400160405280601a81526020017f72656769737465724e616d6573706163652862797465733332290000000000008152508152602001604051806060016040528060298152602001614af5602991398152602001604051806060016040528060258152602001614a6b60259139815260200160405180606001604052806024815260200161499360249139815260200160405180606001604052806028815260200161496b602891398152602001604051806060016040528060338152602001614a10603391398152602001604051806060016040528060298152602001614942602991398152602001604051806060016040528060328152602001614a90603291399052905060005b600c811015610bc4576040805161737960f01b6020820152600060228201527f436f7265526567697374726174696f6e000000000000000000000000000000006030820152610bb29101604051602081830303815290604052610ba090614419565b8383600c81106107df576107df61443d565b80610bbc81614469565b915050610b3e565b5050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff1680610c12573391505090565b919050565b610c1f6116b9565b610c27611759565b61050d6117f7565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610c8f90614419565b7e14010014000000000000000000000000000000000000000000000000000000610cb761187f565b610cbf6118f7565b610cc7611931565b610ccf6119b6565b611a2d565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f42616c616e636573000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610d3490614419565b630100080160dd1b610d4461187f565b610d4c611b01565b610d54611931565b610ccf611b3b565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603082015261050d9101604051602081830303815290604052610dbc90614419565b7e14010014000000000000000000000000000000000000000000000000000000610de4611bb2565b610dec6118f7565b610df4611c31565b610ccf611cfb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5573657244656c65676174696f6e436f00000000000000000000000000000000603082015261050d9101604051602081830303815290604052610e5c90614419565b630100080160dd1b610e6c611d72565b610e7461187f565b610e7c611df1565b610ccf611ebb565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f4e616d65737061636544656c6567617400000000000000000000000000000000603082015261050d9101604051602081830303815290604052610ee490614419565b630100080160dd1b610ef461187f565b610efc61187f565b610e7c611931565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f5265736f75726365416363657373000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610f6490614419565b630101000160d81b610f74611f32565b610f7c611f6c565b610f84611fa6565b610ccf612070565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d7300000000000000000000000000000000000000000000000000603082015261050d9101604051602081830303815290604052610fec90614419565b7e1502001401000000000000000000000000000000000000000000000000000061101461187f565b61101c6120e7565b611024612166565b610ccf6121dd565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e53656c6563746f7200000000000000000000000000000000603082015261050d910160405160208183030381529060405261108c90614419565b7e240200200400000000000000000000000000000000000000000000000000006110b46122a7565b6110bc6122e1565b6110c4612360565b610ccf6123d7565b60408051611bdd60f21b6020820152641ddbdc9b1960da1b60228201527f46756e6374696f6e5369676e6174757200000000000000000000000000000000603082015261050d910160405160208183030381529060405261112c90614419565b7c01000000000000000000000000000000000000000000000000000000006111526122a7565b61115a6124a1565b611162612360565b610ccf6124db565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d486f6f6b73000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526111ca90614419565b7c01000000000000000000000000000000000000000000000000000000006111f061187f565b6111f8612552565b611200612166565b610ccf61258c565b60408051613a3160f11b6020820152641ddbdc9b1960da1b60228201527f53797374656d5265676973747279000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261126890614419565b630100080160dd1b6112786118f7565b61128061187f565b611288612603565b610ccf612166565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106112c6576112c661443d565b60209081029190910181019190915260408051613a3160f11b928101929092526473746f726560d81b60228301527f5265736f75726365496473000000000000000000000000000000000000000000603083015261137091015b60405160208183030381529060405261133890614419565b8260008560405160200161135391151560f81b815260010190565b60408051601f19818403018152919052630101000160d81b61267a565b505050565b6040805160018082528183019092526000916020808301908036833701905050905082816000815181106113ab576113ab61443d565b60209081029190910181019190915260408051613a3160f11b81840152641ddbdc9b1960da1b60228201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015281518082039093018352810190526113709061141790614419565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b166020820152839060009060340160408051601f198184030181529190527e1401001400000000000000000000000000000000000000000000000000000061267a565b60408051600280825260608201835260009260208301908036833701905050905083816000815181106114b8576114b861443d565b6020026020010181815250508273ffffffffffffffffffffffffffffffffffffffff1660001b816001815181106114f1576114f161443d565b60209081029190910181019190915260408051613a3160f11b92810192909252641ddbdc9b1960da1b60228301527f5265736f75726365416363657373000000000000000000000000000000000000603083015261154f9101611320565b50505050565b61137061156061022d565b6040516024810184905273ffffffffffffffffffffffffffffffffffffffff85166044820152600160648201526000907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3350b6a90000000000000000000000000000000000000000000000000000000017905261268f565b61137061161d61022d565b60007f00000000000000000000000000000000000000000000000000000000000000008585868051906020012060405160240161165c939291906144d3565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f742d61180000000000000000000000000000000000000000000000000000000017905261268f565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261171990614419565b7e6003022020200000000000000000000000000000000000000000000000000061174161187f565b6117496126bc565b61175161280b565b610ccf612882565b60408051613a3160f11b60208201526473746f726560d81b60228201527f53746f7265486f6f6b7300000000000000000000000000000000000000000000603082015261050d91016040516020818303038152906040526117b990614419565b7c01000000000000000000000000000000000000000000000000000000006117df61187f565b6117e7612552565b6117ef61280b565b610ccf612a4a565b60408051613a3160f11b60208201526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015261050d910160405160208183030381529060405261185790614419565b630101000160d81b61186761187f565b61186f611f6c565b611877612ac1565b610ccf612b38565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106118b9576118b961443d565b602002602001019060c58111156118d2576118d261451e565b908160c58111156118e5576118e561451e565b9052506118f181612baf565b91505090565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816119485790505090506040518060400160405280600b81526020017f6e616d6573706163654964000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b602002602001018190525090565b604080516001808252818301909252606091816020015b60608152602001906001900390816119cd5790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000611a37610bcb565b90503073ffffffffffffffffffffffffffffffffffffffff821603611a6957611a64878787878787612d73565b611af8565b6040517f0ba51f4900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690630ba51f4990611ac5908a908a908a908a908a908a9060040161458c565b600060405180830381600087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050505b50505050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050601f816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611b525790505090506040518060400160405280600781526020017f62616c616e636500000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050604f81600081518110611bec57611bec61443d565b602002602001019060c5811115611c0557611c0561451e565b908160c5811115611c1857611c1861451e565b81525050605f816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611c475790505090506040518060400160405280600a81526020017f6d6f64756c654e616d650000000000000000000000000000000000000000000081525081600081518110611ca757611ca761443d565b60200260200101819052506040518060400160405280600d81526020017f617267756d656e74734861736800000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611d125790505090506040518060400160405280600d81526020017f6d6f64756c654164647265737300000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110611dac57611dac61443d565b602002602001019060c5811115611dc557611dc561451e565b908160c5811115611dd857611dd861451e565b815250506061816001815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e075790505090506040518060400160405280600981526020017f64656c656761746f72000000000000000000000000000000000000000000000081525081600081518110611e6757611e6761443d565b60200260200101819052506040518060400160405280600981526020017f64656c6567617465650000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed25790505090506040518060400160405280601381526020017f64656c65676174696f6e436f6e74726f6c496400000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f81600081518110611dac57611dac61443d565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106118b9576118b961443d565b6040805160028082526060828101909352816020015b6060815260200190600190039081611fbc5790505090506040518060400160405280600a81526020017f7265736f757263654964000000000000000000000000000000000000000000008152508160008151811061201c5761201c61443d565b60200260200101819052506040518060400160405280600681526020017f63616c6c65720000000000000000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816120875790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106121215761212161443d565b602002602001019060c581111561213a5761213a61451e565b908160c581111561214d5761214d61451e565b815250506060816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161217d5790505090506040518060400160405280600881526020017f73797374656d4964000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816121f35790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106122535761225361443d565b60200260200101819052506040518060400160405280600c81526020017f7075626c69634163636573730000000000000000000000000000000000000000815250816001815181106119a8576119a861443d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106118b9576118b961443d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061231b5761231b61443d565b602002602001019060c58111156123345761233461451e565b908160c58111156123475761234761451e565b815250506043816001815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816123775790505090506040518060400160405280601081526020017f66756e6374696f6e53656c6563746f7200000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160028082526060828101909352816020015b60608152602001906001900390816123ed5790505090506040518060400160405280600881526020017f73797374656d49640000000000000000000000000000000000000000000000008152508160008151811061244d5761244d61443d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f7200000000000000000000815250816001815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060c5816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816124f25790505090506040518060400160405280601181526020017f66756e6374696f6e5369676e6174757265000000000000000000000000000000815250816000815181106119a8576119a861443d565b6040805160018082528183019092526000918291906020808301908036833701905050905060b6816000815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816125a35790505090506040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b606081526020019060019003908161261a5790505090506040518060400160405280600681526020017f73797374656d0000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b610bc48585612689848761304b565b8561308e565b60606000806126a087878787613322565b91509150816126b2576126b2816133a3565b9695505050505050565b60408051600580825260c082019092526000918291906020820160a080368337019050509050605f816000815181106126f7576126f761443d565b602002602001019060c58111156127105761271061451e565b908160c58111156127235761272361451e565b81525050605f8160018151811061273c5761273c61443d565b602002602001019060c58111156127555761275561451e565b908160c58111156127685761276861451e565b81525050605f816002815181106127815761278161443d565b602002602001019060c581111561279a5761279a61451e565b908160c58111156127ad576127ad61451e565b8152505060c4816003815181106127c6576127c661443d565b602002602001019060c58111156127df576127df61451e565b908160c58111156127f2576127f261451e565b8152505060c4816004815181106118b9576118b961443d565b604080516001808252818301909252606091816020015b60608152602001906001900390816128225790505090506040518060400160405280600781526020017f7461626c65496400000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b60408051600580825260c08201909252606091816020015b606081526020019060019003908161289a5790505090506040518060400160405280600b81526020017f6669656c644c61796f7574000000000000000000000000000000000000000000815250816000815181106128fa576128fa61443d565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d6100000000000000000000000000000000000000000000008152508160018151811061294e5761294e61443d565b60200260200101819052506040518060400160405280600b81526020017f76616c7565536368656d61000000000000000000000000000000000000000000815250816002815181106129a2576129a261443d565b60200260200101819052506040518060400160405280601281526020017f616269456e636f6465644b65794e616d65730000000000000000000000000000815250816003815181106129f6576129f661443d565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d6573000000000000000000000000815250816004815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612a615790505090506040518060400160405280600581526020017f686f6f6b73000000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612ad85790505090506040518060400160405280600a81526020017f7265736f75726365496400000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b604080516001808252818301909252606091816020015b6060815260200190600190039081612b4f5790505090506040518060400160405280600681526020017f6578697374730000000000000000000000000000000000000000000000000000815250816000815181106119a8576119a861443d565b6000601c82511115612be2578151604051635318beb960e01b8152600401612bd991815260200190565b60405180910390fd5b60008080805b8551811015612cbd576000612c26878381518110612c0857612c0861443d565b602002602001015160c5811115612c2157612c2161451e565b6133ab565b905080600003612c3b57600190920191612c73565b8215612c73576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80840193506008826004601f030302878381518110612c9457612c9461443d565b602002602001015160c5811115612cad57612cad61451e565b901b949094179350600101612be8565b506005811115612ce357604051635318beb960e01b815260048101829052602401612bd9565b84518190036008612cf6600260206145d6565b612d0091906145e9565b83901b939093179260086001612d18600260206145d6565b612d2291906145d6565b612d2c91906145e9565b81901b93909317926008600180612d45600260206145d6565b612d4f91906145d6565b612d5991906145d6565b612d6391906145e9565b9190911b92909217949350505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590612dd15750611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001614155b15612e3257613a3160f11b8687604051602001612df091815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252612bd9939291600401614600565b612e3b8561340b565b612e4684600161358c565b612e5183600061358c565b60e084901c60e885901c0160ff16825114612eb15760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff16815114612f115760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614612f895760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401612bd9565b612f9286613733565b15612fec578586604051602001612fab91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252612bd99291600401614641565b6130388686868686604051602001613004919061465a565b60405160208183030381529060405286604051602001613024919061465a565b6040516020818303038152906040526137ff565b613043866001611290565b505050505050565b600080805b8360ff168110156130865761307260ff601b83900360080287901c168361466d565b91508061307e81614469565b915050613050565b509392505050565b611bdd60f21b847fffff00000000000000000000000000000000000000000000000000000000000016036130fd57837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be8484846040516130f0939291906146bb565b60405180910390a261154f565b60006131098585613903565b9050600061311686613959565b905060005b81518110156131f55760008282815181106131385761313861443d565b602002602001015190506131646004826affffffffffffffffffffff1916613a2190919063ffffffff16565b156131e2576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906131af908b908b908b908b906004016146ee565b600060405180830381600087803b1580156131c957600080fd5b505af11580156131dd573d6000803e3d6000fd5b505050505b50806131ed81614469565b91505061311b565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161322a939291906146bb565b60405180910390a2613245828565ffffffffffff1685613a3f565b60005b8151811015611af85760008282815181106132655761326561443d565b602002602001015190506132916008826affffffffffffffffffffff1916613a2190919063ffffffff16565b1561330f576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba8721906132dc908b908b908b908b906004016146ee565b600060405180830381600087803b1580156132f657600080fd5b505af115801561330a573d6000803e3d6000fd5b505050505b508061331a81614469565b915050613248565b600060608373ffffffffffffffffffffffffffffffffffffffff16613348848888613a55565b6040516133559190614732565b600060405180830381855af49150503d8060008114613390576040519150601f19603f3d011682016040523d82523d6000602084013e613395565b606091505b509097909650945050505050565b805160208201fd5b6000808260c58111156133c0576133c061451e565b60ff16905060618110156133da57601f1660010192915050565b60618360c58111156133ee576133ee61451e565b036133fc5750601492915050565b50600092915050565b50919050565b80613442576040517f220c0f6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061344d82613a84565b90506005811115613494576040517f7f2372c30000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401612bd9565b600061349f83613ac1565b905060006134ad838361466d565b9050601c8111156134f4576040517f4a8a06ad00000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401612bd9565b60005b82811015610bc45760ff601b82900360080286901c166000819003613548576040517fbf1ac38300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020811115613583576040517f2392baa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506001016134f7565b80158015613598575081155b156135b957604051635318beb960e01b815260006004820152602401612bd9565b60006135c483613a84565b905060058111156135eb57604051635318beb960e01b815260048101829052602401612bd9565b60006135f684613ac1565b90506000613604838361466d565b9050601c81111561362b57604051635318beb960e01b815260048101829052602401612bd9565b60008060005b838110156136ec5760006136596136488a84613ad3565b60c5811115612c2157612c2161451e565b11156136a357848110613698576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909201916136e4565b848110156136dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001909101905b600101613631565b5083821461371057604051635318beb960e01b815260048101839052602401612bd9565b848114611af857604051635318beb960e01b815260048101829052602401612bd9565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061376c5761376c61443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5265736f75726365496473000000000000000000000000000000000000000000603082015281518082039093018352810190526000906137eb906137db90614419565b836000630101000160d81b613afb565b90506137f78160f81c90565b949350505050565b600061380c868686613b31565b9050600061381a8484613b53565b905060006138288585613b70565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106138625761386261443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f5461626c65730000000000000000000000000000000000000000000000000000603082015281518082039093018352810190526138f7906138ce90614419565b828686867e60030220202000000000000000000000000000000000000000000000000000613b9c565b50505050505050505050565b6000828260405160200161391892919061474e565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106139935761399361443d565b60209081029190910181019190915260408051613a3160f11b818401526473746f726560d81b60228201527f53746f7265486f6f6b730000000000000000000000000000000000000000000060308201528151808203909301835281019052600090613a0a90613a0290614419565b836000613ece565b90506137f7613a1c8260008451613f08565b613f98565b60008160ff1682613a328560581c90565b1660ff1614905092915050565b61137083838351613a508560200190565b613fa9565b6060838383604051602001613a6c93929190614789565b60405160208183030381529060405290509392505050565b60006008600180613a97600260206145d6565b613aa191906145d6565b613aab91906145d6565b613ab591906145e9565b8260ff911c1692915050565b600060086001613aa1600260206145d6565b6000601b8290036008028360ff911c1660c5811115613af457613af461451e565b9392505050565b6000613b28613b0a8686613903565b60ff858116601b0360080285901c16613b23858761304b565b614069565b95945050505050565b6040805160208101859052908101839052606081810183905290608001613a6c565b8151815160009181810160389190911b1760609190911b17613af4565b60608282604051602001613b859291906147db565b604051602081830303815290604052905092915050565b611bdd60f21b867fffff0000000000000000000000000000000000000000000000000000000000001603613c0d57857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051613c00949392919061480a565b60405180910390a2613043565b6000613c1887613959565b905060005b8151811015613cfb576000828281518110613c3a57613c3a61443d565b60200260200101519050613c666001826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ce8576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90613cb5908c908c908c908c908c908c90600401614849565b600060405180830381600087803b158015613ccf57600080fd5b505af1158015613ce3573d6000803e3d6000fd5b505050505b5080613cf381614469565b915050613c1d565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051613d32949392919061480a565b60405180910390a26000613d468888613903565b90506000602087019050613d5e826000895184613fa9565b6000613d6985613a84565b1115613ded576000613d7b8a8a6140ba565b878155905060208601915060008060005b613d9588613a84565b8160ff161015613de857613daa8d8d83614110565b9250613dc58a8260ff166028026038011c64ffffffffff1690565b9150613dd48360008488613fa9565b613dde828661466d565b9450600101613d8c565b505050505b60005b83518110156138f7576000848281518110613e0d57613e0d61443d565b60200260200101519050613e396002826affffffffffffffffffffff1916613a2190919063ffffffff16565b15613ebb576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90613e88908e908e908e908e908e908e90600401614849565b600060405180830381600087803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b505050505b5080613ec681614469565b915050613df0565b60606137f7613ede858585614110565b6000613f0385613eee8989614190565b9060ff166028026038011c64ffffffffff1690565b6141a3565b6000818311158015613f1b575083518211155b613f57578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401612bd9939291906148a2565b60208401613f65848261466d565b90506000613f7385856145d6565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000613af483601560006141c6565b82156140235760208310613fd357602083048401935060208381613fcf57613fcf6148c7565b0692505b82156140235760208390036000600019600885021c1990506008850281811c91508351811c905081198754168282161787555081841161401457505061154f565b50600194909401939182900391015b5b602082106140455780518455600190930192601f1990910190602001614024565b811561154f576000600019600884021c198554835182169119161785555050505050565b60006020821061408f5760208204840193506020828161408b5761408b6148c7565b0691505b508254600882021b602082900380841115613086576001850154600882021c82179150509392505050565b600082826040516020016140cf92919061474e565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161412592919061474e565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000613af461419f84846140ba565b5490565b60405160208101601f19603f848401011660405282825261308685858584614241565b606060006141d48560801c90565b90506fffffffffffffffffffffffffffffffff851660008582816141fa576141fa6148c7565b04905060405193506020840160208202810160405281855260005b82811015614235578451871c825293870193602090910190600101614215565b50505050509392505050565b82156142ca576020831061426b57602083048401935060208381614267576142676148c7565b0692505b82156142ca57602083900360008184101561428f5750600019600884021c1961429a565b50600019600882021c195b8554600886021b8119845116828216178452508184116142bb57505061154f565b50600194909401939182900391015b5b602082106142ec5783548152600190930192601f19909101906020016142cb565b811561154f576000600019600884021c198251865482169119161782525050505050565b60006020828403121561432257600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114613af457600080fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561437a57600080fd5b813567ffffffffffffffff8082111561439257600080fd5b818401915084601f8301126143a657600080fd5b8135818111156143b8576143b8614352565b604051601f8201601f19908116603f011681019083821181831017156143e0576143e0614352565b816040528281528760208487010111156143f957600080fd5b826020860160208301376000928101602001929092525095945050505050565b805160208083015191908110156134055760001960209190910360031b1b16919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361447c5761447c614453565b5060010190565b60005b8381101561449e578181015183820152602001614486565b50506000910152565b600081518084526144bf816020860160208601614483565b601f01601f19169290920160200192915050565b8381526060602082015260006144ec60608301856144a7565b90507fffffffff0000000000000000000000000000000000000000000000000000000083166040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600082825180855260208086019550808260051b84010181860160005b8481101561457f57601f1986840301895261456d8383516144a7565b98840198925090830190600101614551565b5090979650505050505050565b86815285602082015284604082015283606082015260c0608082015260006145b760c0830185614534565b82810360a08401526145c98185614534565b9998505050505050505050565b8181038181111561022757610227614453565b808202811582820484141761022757610227614453565b7fffff00000000000000000000000000000000000000000000000000000000000084168152826020820152606060408201526000613b2860608301846144a7565b8281526040602082015260006137f760408301846144a7565b602081526000613af46020830184614534565b8082018082111561022757610227614453565b600081518084526020808501945080840160005b838110156146b057815187529582019590820190600101614694565b509495945050505050565b6060815260006146ce6060830186614680565b65ffffffffffff8516602084015282810360408401526126b281856144a7565b8481526080602082015260006147076080830186614680565b65ffffffffffff85166040840152828103606084015261472781856144a7565b979650505050505050565b60008251614744818460208701614483565b9190910192915050565b82815260006020808301845182860160005b8281101561477c57815184529284019290840190600101614760565b5091979650505050505050565b6000845161479b818460208901614483565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600083516147ed818460208801614483565b835190830190614801818360208801614483565b01949350505050565b60808152600061481d6080830187614680565b828103602084015261482f81876144a7565b9050846040840152828103606084015261472781856144a7565b86815260c06020820152600061486260c0830188614680565b828103604084015261487481886144a7565b9050856060840152828103608084015261488e81866144a7565b9150508260a0830152979650505050505050565b6060815260006148b560608301866144a7565b60208301949094525060400152919050565b634e487b7160e01b600052601260045260246000fdfe756e726567697374657253746f7265486f6f6b28627974657333322c616464726573732972656769737465725461626c6528627974657333322c627974657333322c627974657333322c627974657333322c737472696e675b5d2c737472696e675b5d29726567697374657244656c65676174696f6e28616464726573732c627974657333322c627974657329726567697374657246756e6374696f6e53656c6563746f7228627974657333322c737472696e6729726567697374657253797374656d28627974657333322c616464726573732c626f6f6c297472616e7366657242616c616e6365546f4164647265737328627974657333322c616464726573732c75696e7432353629726567697374657253746f7265486f6f6b28627974657333322c616464726573732c75696e7438297265676973746572526f6f7446756e6374696f6e53656c6563746f7228627974657333322c737472696e672c62797465733429626174636843616c6c46726f6d2828616464726573732c627974657333322c6279746573295b5d29756e726567697374657253797374656d486f6f6b28627974657333322c616464726573732972656769737465724e616d65737061636544656c65676174696f6e28627974657333322c627974657333322c6279746573297472616e7366657242616c616e6365546f4e616d65737061636528627974657333322c627974657333322c75696e7432353629726567697374657253797374656d486f6f6b28627974657333322c616464726573732c75696e7438297472616e736665724f776e65727368697028627974657333322c6164647265737329a164736f6c6343000815000a726567697374657220612073797374656d626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6ea164736f6c6343000815000a","sourceMap":"1578:5931:199:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:381;;;:::i;:::-;;2170:134:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:133;;;:::i;2640:141::-;;;:::i;2456:178::-;;;:::i;:::-;;;;;;;:::i;2310:140::-;;;:::i;:::-;;;;;;;:::i;5155:1492:199:-;;;:::i;2787:146:107:-;;;:::i;6651:856:199:-;;;:::i;1875:141:107:-;;;:::i;1819:584:101:-;;;:::i;:::-;;;4024:14:203;;4017:22;3999:41;;3987:2;3972:18;1819:584:101;3859:187:203;3559:1592:199;;;:::i;2324:1231::-;;;:::i;2022:142:107:-;;;:::i;1572:26:101:-;;;;;;;;;1939:381:199;1996:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1969:5:199;:40;;;;-1:-1:-1;;;;;1969:40:199;;;;;;;;;2015:16;2032:18;:16;:18::i;:::-;2015:36;;;;;;;;;;-1:-1:-1;;;;;4235:55:203;;;2015:36:199;;;4217:74:203;4190:18;;2015:36:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2057:5:199;;2081:31;;-1:-1:-1;;;;;2057:5:199;;;;-1:-1:-1;2057:23:199;;-1:-1:-1;2081:31:199;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2114:12:199;;;2124:1;2114:12;;;;;;;;;2057:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2163:22;2188:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2215:5:199;;2239:8;;2163:46;;-1:-1:-1;;;;;;2215:5:199;;:23;;2239:25;;539:36:59;2781:46;816:18:94;2780:74:59;;2669:191;2239:25:199;2215:50;;;;;;;;;;;;;5047:25:203;;5035:2;5020:18;;4870:208;2215:50:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2271:5:199;;2292:8;;2271:44;;;;;;;;5335:25:203;;;;-1:-1:-1;;;;;5396:55:203;;;5376:18;;;5369:83;2271:5:199;5468:18:203;;;5461:50;2271:5:199;;;;-1:-1:-1;2271:20:199;;-1:-1:-1;5308:18:203;;2271:44:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1963:357;1939:381::o;2170:134:107:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2262:35:107;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3030:35:107;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2735:39:107;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;2456:178::-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2572:55:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;2310:140::-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5155:1492:199;5283:10;;;;;5291:1;5283:10;;;5047:25:203;5234:4:199;;5283:7;;;;5020:18:203;;5283:10:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5350:9:199;;5341:19;;-1:-1:-1;;;5341:19:199;;-1:-1:-1;;;;;5350:9:199;;;5341:19;;;4217:74:203;5341:8:199;;-1:-1:-1;5341:8:199;;-1:-1:-1;4190:18:203;;5341:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5366:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;5421:5;;5453:9;;;780:71:181;;;-1:-1:-1;;;780:71:181;;;6568:92:203;5421:5:199;6676:11:203;;;6669:100;;;;830:20:181;6785:12:203;;;6778:101;-1:-1:-1;;;;;5421:5:199;;;;:24;;5453:9;;;6895:12:203;780:71:181;;;;;;;;;;;;772:80;;;:::i;:::-;5557:9:199;;5498:84;;-1:-1:-1;;;;;5557:9:199;;;5498:84;;;7454:74:203;7544:18;;;7537:34;;;7427:18;;5498:84:199;;;-1:-1:-1;;5498:84:199;;;;;;;;;;;;;;-1:-1:-1;;;;;5498:84:199;;;;;5421:167;;5498:84;5421:167;;;;;;;;;;5498:84;5421:167;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5594:14;:12;:14::i;:::-;5691:9;;5682:19;;-1:-1:-1;;;5682:19:199;;-1:-1:-1;;;;;5691:9:199;;;5682:19;;;4217:74:203;5682:8:199;;;;4190:18:203;;5682:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5707:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;5797:5;;5812:9;;5823:8;;;5833:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5833:45:199;-1:-1:-1;;;5833:45:199;;;5797:82;;-1:-1:-1;;;5797:82:199;;5771:23;;-1:-1:-1;;;;;5797:5:199;;;;:14;;:82;;5812:9;;;;;5823:8;;5833:45;;5797:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5797:82:199;;;;;;;;;;;;:::i;:::-;5771:108;;5885:14;:12;:14::i;:::-;5905:23;5942:10;5931:33;;;;;;;;;;;;:::i;:::-;6063:9;;5905:59;;-1:-1:-1;6037:36:199;;5905:59;;-1:-1:-1;;;;;6063:9:199;6037:8;:36::i;:::-;6165:21;;;;;;;;5047:25:203;;;6165:7:199;;;;5020:18:203;;6165:21:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6201:9:199;;6192:19;;-1:-1:-1;;;6192:19:199;;-1:-1:-1;;;;;6201:9:199;;;6192:19;;;4217:74:203;6192:8:199;;-1:-1:-1;6192:8:199;;-1:-1:-1;4190:18:203;;6192:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6217:5:199;;6232:9;;6243:8;;;6253:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6253:45:199;-1:-1:-1;;;6253:45:199;;;6217:82;;-1:-1:-1;;;6217:82:199;;-1:-1:-1;;;;;6217:5:199;;;;-1:-1:-1;6217:14:199;;-1:-1:-1;6217:82:199;;6232:9;;;;;6243:8;;6253:45;;6217:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6217:82:199;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6389:7:199;;6397:16;:12;6412:1;6397:16;:::i;:::-;6389:25;;;;;;;;;;;;;5047::203;;5035:2;5020:18;;4870:208;6389:25:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6429:9:199;;6420:19;;-1:-1:-1;;;6420:19:199;;-1:-1:-1;;;;;6429:9:199;;;6420:19;;;4217:74:203;6420:8:199;;-1:-1:-1;6420:8:199;;-1:-1:-1;4190:18:203;;6420:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6532:9:199;;6543;;6461:92;;;-1:-1:-1;;;;;6532:9:199;;;6461:92;;;10342:34:203;6543:9:199;;;;10392:18:203;;;;10385:43;;;;6461:92:199;;;;;;;;;;10254:18:203;;;;6461:92:199;;;;;;;-1:-1:-1;;;;;6461:92:199;6484:46;6461:92;;;6445:109;;;;:15;;-1:-1:-1;6445:15:199;;-1:-1:-1;6445:109:199;;6461:92;6445:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6560:5:199;;6575:9;;6586:8;;;6596:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6596:45:199;-1:-1:-1;;;6596:45:199;;;6560:82;;-1:-1:-1;;;6560:82:199;;-1:-1:-1;;;;;6560:5:199;;;;-1:-1:-1;6560:14:199;;-1:-1:-1;6560:82:199;;6575:9;;;;;6586:8;;6596:45;;6560:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6560:82:199;;;;;;;;;;;;:::i;:::-;;5205:1442;;;5155:1492::o;2787:146:107:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:39:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:856:199;6790:32;6825:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6790:47;;6843:32;6878:122;-1:-1:-1;;;6878:122:199;;:25;:122::i;:::-;7006:5;;:76;;;;;;;;5335:25:203;;;-1:-1:-1;;;;;5396:55:203;;;5376:18;;;5369:83;7006:5:199;5468:18:203;;;5461:50;6843:157:199;;-1:-1:-1;7006:5:199;;;:20;;5308:18:203;;7006:76:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7205:9:199;;7196:19;;-1:-1:-1;;;7196:19:199;;-1:-1:-1;;;;;7205:9:199;;;7196:19;;;4217:74:203;7196:8:199;;-1:-1:-1;7196:8:199;;-1:-1:-1;4190:18:203;;7196:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7244:174:199;;;-1:-1:-1;;;;;11282:55:203;;7244:174:199;;;11264:74:203;457::46;11354:18:203;;;;11347:107;;;;7244:174:199;;;;;;;;;;11237:18:203;;;;7244:174:199;;;;;;;-1:-1:-1;;;;;7244:174:199;7276:49;7244:174;;;7221:203;;;;;:15;;-1:-1:-1;7221:15:199;;-1:-1:-1;7221:203:199;;7244:174;7221:203;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7430:5:199;;7455:9;;7489:12;;;7430:5;7489:12;;;;;;;;;-1:-1:-1;;;;;7430:5:199;;;;-1:-1:-1;7430:24:199;;-1:-1:-1;7455:9:199;;;;;7466:21;;7489:12;;;;;;;;;;-1:-1:-1;7489:12:199;7430:72;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:788;;6651:856::o;1875:141:107:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:101;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:101;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;;1671:64;2196:43;;;7454:74:203;;;2221:17:101;7544:18:203;;;7537:34;2196:43:101;;;;;;;;;7427:18:203;;;2196:43:101;;;-1:-1:-1;;1671:64:101;;2086:175;;2135:34;;2086:175;;;:::i;:::-;;;;-1:-1:-1;;2086:175:101;;;;;;;;;;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:101:o;3559:1592:199:-;3712:9;;3703:19;;-1:-1:-1;;;3703:19:199;;-1:-1:-1;;;;;3712:9:199;;;3703:19;;;4217:74:203;3703:8:199;;;;4190:18:203;;3703:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3728:51;;;;;;;;;;;;;;;;;;:14;:51::i;:::-;3785:5;;3817:9;;;607:73:181;;;-1:-1:-1;;;607:73:181;;;6568:92:203;3785:5:199;6676:11:203;;;6669:100;;;;657:22:181;6785:12:203;;;6778:101;-1:-1:-1;;;;;3785:5:199;;;;:24;;3817:9;;;6895:12:203;607:73:181;;;;;;;;;;;;599:82;;;:::i;:::-;3925:9:199;;3936:8;;3864:85;;-1:-1:-1;;;;;3925:9:199;;;3864:85;;;13017:74:203;13107:18;;;13100:34;3946:1:199;13150:18:203;;;13143:34;12990:18;;3864:85:199;;;-1:-1:-1;;3864:85:199;;;;;;;;;;;;;;-1:-1:-1;;;;;3864:85:199;;;;;3785:170;;3864:85;3785:170;;;;;;;;;;3864:85;3785:170;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3961:14;:12;:14::i;:::-;4058:9;;4049:19;;-1:-1:-1;;;4049:19:199;;-1:-1:-1;;;;;4058:9:199;;;4049:19;;;4217:74:203;4049:8:199;;;;4190:18:203;;4049:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4074:60;;;;;;;;;;;;;;;;;;:14;:60::i;:::-;4166:5;;4181:9;;4192:8;;;4202:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4202:45:199;-1:-1:-1;;;4202:45:199;;;4166:82;;-1:-1:-1;;;4166:82:199;;4140:23;;-1:-1:-1;;;;;4166:5:199;;;;:14;;:82;;4181:9;;;;;4192:8;;4202:45;;4166:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:82:199;;;;;;;;;;;;:::i;:::-;4140:108;;4254:14;:12;:14::i;:::-;4274:23;4311:10;4300:33;;;;;;;;;;;;:::i;:::-;4432:9;;4274:59;;-1:-1:-1;4406:36:199;;4274:59;;-1:-1:-1;;;;;4432:9:199;4406:8;:36::i;:::-;4537:9;;4528:19;;-1:-1:-1;;;4528:19:199;;-1:-1:-1;;;;;4537:9:199;;;4528:19;;;4217:74:203;4528:8:199;;;;4190:18:203;;4528:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4566:5:199;;4581:9;;4592:8;;4602:50;;4566:5;4602:50;;;5047:25:203;-1:-1:-1;;;;;4566:5:199;;;;-1:-1:-1;4566:14:199;;-1:-1:-1;4581:9:199;;;;;5020:18:203;;4602:50:199;;;-1:-1:-1;;4602:50:199;;;;;;;;;;;;;;-1:-1:-1;;;;;4602:50:199;;;;;4566:87;;4602:50;4566:87;;;;;;;;;;4602:50;4566:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4566:87:199;;;;;;;;;;;;:::i;:::-;4553:100;;4659:43;4716:10;4705:47;;;;;;;;;;;;:::i;:::-;4834:21;;4857:9;;4659:93;;-1:-1:-1;4825:42:199;;-1:-1:-1;;;;;4857:9:199;4825:8;:42::i;:::-;4933:9;;4924:19;;-1:-1:-1;;;4924:19:199;;-1:-1:-1;;;;;4933:9:199;;;4924:19;;;4217:74:203;4924:8:199;;;;4190:18:203;;4924:19:199;4051:246:203;2324:1231:199;2478:9;;2469:19;;-1:-1:-1;;;2469:19:199;;-1:-1:-1;;;;;2478:9:199;;;2469:19;;;4217:74:203;2469:8:199;;;;4190:18:203;;2469:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2494:49;;;;;;;;;;;;;;;;;;:14;:49::i;:::-;2549:5;;2581:9;;;432:71:181;;;-1:-1:-1;;;432:71:181;;;6568:92:203;2549:5:199;6676:11:203;;;6669:100;;;;482:20:181;6785:12:203;;;6778:101;-1:-1:-1;;;;;2549:5:199;;;;:24;;2581:9;;;6895:12:203;432:71:181;;;;;;;;;;;;424:80;;;:::i;:::-;2702:9:199;;2713:8;;;2723:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2723:45:199;-1:-1:-1;;;2723:45:199;;;2626:154;;;;-1:-1:-1;;;;;2702:9:199;;;;2626:154;;:::i;:::-;;;;-1:-1:-1;;2626:154:199;;;;;;;;;;;;;;-1:-1:-1;;;;;2626:154:199;;;;;2549:237;;2626:154;2549:237;;;;;;;;;;2626:154;2549:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2792:14;:12;:14::i;:::-;2889:9;;2880:19;;-1:-1:-1;;;2880:19:199;;-1:-1:-1;;;;;2889:9:199;;;2880:19;;;4217:74:203;2880:8:199;;;;4190:18:203;;2880:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2905:58;;;;;;;;;;;;;;;;;;:14;:58::i;:::-;2995:5;;3010:9;;3021:8;;;3031:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3031:45:199;-1:-1:-1;;;3031:45:199;;;2995:82;;-1:-1:-1;;;2995:82:199;;2969:23;;-1:-1:-1;;;;;2995:5:199;;;;:14;;:82;;3010:9;;;;;3021:8;;3031:45;;2995:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2995:82:199;;;;;;;;;;;;:::i;:::-;2969:108;;3083:14;:12;:14::i;:::-;3103:23;3140:10;3129:33;;;;;;;;;;;;:::i;:::-;3261:9;;3103:59;;-1:-1:-1;3235:36:199;;3103:59;;-1:-1:-1;;;;;3261:9:199;3235:8;:36::i;:::-;3337:9;;3328:19;;-1:-1:-1;;;3328:19:199;;-1:-1:-1;;;;;3337:9:199;;;3328:19;;;4217:74:203;3328:8:199;;;;4190:18:203;;3328:19:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3440:9:199;;3451;;3369:92;;;-1:-1:-1;;;;;3440:9:199;;;3369:92;;;10342:34:203;3451:9:199;;;;10392:18:203;;;;10385:43;;;;3369:92:199;;;;;;;;;;10254:18:203;;;;3369:92:199;;;;;;;-1:-1:-1;;;;;3369:92:199;3392:46;3369:92;;;3353:109;;;;:15;;-1:-1:-1;3353:15:199;;-1:-1:-1;3353:109:199;;3369:92;3353:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3468:5:199;;3483:9;;3494:8;;;3504:45;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3504:45:199;-1:-1:-1;;;3504:45:199;;;3468:82;;-1:-1:-1;;;3468:82:199;;-1:-1:-1;;;;;3468:5:199;;;;-1:-1:-1;3468:14:199;;-1:-1:-1;3468:82:199;;3483:9;;;;;3494:8;;3504:45;;3468:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3468:82:199;;;;;;;;;;;;:::i;:::-;;2374:1181;;2324:1231::o;2022:142:107:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2118:39:107;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;514:223:100:-;551:10;600:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;636:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;671:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;700:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;578:156;;;;;:::i;:::-;-1:-1:-1;;;;;14922:15:203;;;14904:34;;14974:15;;;14969:2;14954:18;;14947:43;15026:15;;;15021:2;15006:18;;14999:43;15078:15;;;15073:2;15058:18;;15051:43;14830:3;14815:19;578:156:100;;;;;;;;;;;;;;;;;;;;;;;567:167;;514:223;:::o;330:580:0:-;394:39;;;;;;;;;15311:21:203;;;;15368:2;15348:18;;;15341:30;15407:22;15387:18;;;15380:50;309:37:102;15482:20:203;;;15475:52;394:8:0;;;;15447:19:203;;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:102;309:37;;-1:-1:-1;;;;;815:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;868:9;842:23;:35;883:22;;;;;;;;:20;;;;:22;;;;;309:37:102;;883:22:0;;;;;;;309:37:102;883:20:0;:22;;;;;;;;;;914:534;953:11;967:9;987:39;;;;;;;;;15311:21:203;;;;15368:2;15348:18;;;15341:30;15407:22;15387:18;;;15380:50;309:37:102;15482:20:203;;;15475:52;953:23:0;;-1:-1:-1;987:8:0;;;;15447:19:203;;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;;;;;;;20928:2:203;1214:49:0;;;20910:21:203;20967:2;20947:18;;;20940:30;21006:27;20986:18;;;20979:55;21051:18;;1214:49:0;20726:349:203;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:101:-;3690:1;-1:-1:-1;;;;;3685:6:101;:1;-1:-1:-1;;;;;3685:6:101;;3681:212;;3712:44;;;;;23043:2:203;23025:21;;;23082:2;23062:18;;;23055:30;23121:34;23116:2;23101:18;;23094:62;23192:7;23187:2;23172:18;;23165:35;23232:3;23217:19;;22841:401;3712:44:101;;;;;;;;3775:34;;;23459:21:203;;;23516:2;23496:18;;;23489:30;23555:12;23550:2;23535:18;;23528:40;-1:-1:-1;;;;;23642:55:203;;23635:4;23620:20;;23613:85;3775:34:101;;;;;;;23600:3:203;3775:34:101;;;3828;;;23921:21:203;;;23978:2;23958:18;;;23951:30;24017:12;24012:2;23997:18;;23990:40;-1:-1:-1;;;;;24104:55:203;;24097:4;24082:20;;24075:85;3828:34:101;;;;;;;24062:3:203;3828:34:101;;;3876:6;:4;:6::i;:::-;3622:277;;:::o;941:257:59:-;1028:10;1157:26;399:6;336:5:16;1157:26:59;:::i;:::-;1084:15;;;1103:31;336:5:16;1103:31:59;;;;1084:51;1139:13;;;:45;;;1084:101;;-1:-1:-1;941:257:59;;;;;:::o;1754:155:0:-;1818:86;317:28:102;309:37;;-1:-1:-1;;;;;1860:11:0;;1872:12;1885:4;1872:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;1860:31;;;;;;;;;;;;5047:25:203;;;5035:2;5020:18;;4870: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:101:-;2997:42;2985:55;3066:16;2452:359;;2652:67;;;1671:64;2652:67;;;13017:74:203;;;2677:17:101;13107:18:203;;;13100:34;;;;2712:4:101;13150:18:203;;;13143:34;2489:11:101;;1671:64;2586:43;;12990:18:203;;2652:67:101;;;-1:-1:-1;;2652:67:101;;;;;;;;;;2541:196;;;2652:67;2541:196;;:::i;:::-;;;;-1:-1:-1;;2541:196:101;;;;;;;;;;2506:245;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2452:359:101;2820:7;:14;;;;;;;;2409:432::o;5630:121:115:-;5685:59;5740:2;5701:42;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5701:42:115;;;;;;;;;;;;;;-1:-1:-1;;;;;5701:42:115;;;;;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:203:-;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:203;514:75;;644:15;;;;609:12;;;;487:1;480:9;451:218;;;-1:-1:-1;686:3:203;;14:681;-1:-1:-1;;;;;;14:681:203: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:203;1372:108;;1503:13;;1590:9;;-1:-1:-1;;;;;1586:58:203;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:203;;;;2283:5;-1:-1:-1;;;2311:15:203;;;;1345:1;1336:11;1303:1065;;;-1:-1:-1;2385:6:203;;700:1697;-1:-1:-1;;;;;;;;;700:1697:203: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:203;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:203;2876:98;;;;2976:4;2872:109;;2657:330;-1:-1:-1;;2657:330:203: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:203;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:203;;;;3768:15;;;;3547:1;3540:9;3511:314;;;-1:-1:-1;3842:6:203;;2992:862;-1:-1:-1;;;;;;;2992:862:203:o;4302:184::-;4354:77;4351:1;4344:88;4451:4;4448:1;4441:15;4475:4;4472:1;4465:15;4491:374;-1:-1:-1;;;;;4706:6:203;4702:55;4691:9;4684:74;4794:2;4789;4778:9;4774:18;4767:30;4665:4;4814:45;4855:2;4844:9;4840:18;4832:6;4814:45;:::i;:::-;4806:53;4491:374;-1:-1:-1;;;;4491:374:203:o;5522:437::-;5601:1;5597:12;;;;5644;;;5665:61;;5719:4;5711:6;5707:17;5697:27;;5665:61;5772:2;5764:6;5761:14;5741:18;5738:38;5735:218;;5809:77;5806:1;5799:88;5910:4;5907:1;5900:15;5938:4;5935:1;5928:15;5735:218;;5522:437;;;:::o;6918:357::-;7036:12;;7083:4;7072:16;;;7066:23;;7036:12;7101:16;;7098:171;;;-1:-1:-1;;7175:4:203;7171:17;;;;7168:1;7164:25;7160:98;7149:110;;6918:357;-1:-1:-1;6918:357:203:o;7582:440::-;-1:-1:-1;;;;;7820:6:203;7816:55;7805:9;7798:74;7908:6;7903:2;7892:9;7888:18;7881:34;7951:2;7946;7935:9;7931:18;7924:30;7779:4;7971:45;8012:2;8001:9;7997:18;7989:6;7971:45;:::i;:::-;7963:53;7582:440;-1:-1:-1;;;;;7582:440:203:o;8027:673::-;8102:5;8132:18;8173:2;8165:6;8162:14;8159:40;;;8179:18;;:::i;:::-;8313:2;8307:9;8379:2;8367:15;;-1:-1:-1;;8363:24:203;;;8389:2;8359:33;8355:42;8343:55;;;8413:18;;;8433:22;;;8410:46;8407:72;;;8459:18;;:::i;:::-;8499:10;8495:2;8488:22;8528:6;8519:15;;8558:6;8550;8543:22;8598:3;8589:6;8584:3;8580:16;8577:25;8574:45;;;8615:1;8612;8605:12;8574:45;8628:66;8687:6;8680:4;8672:6;8668:17;8663:3;8628:66;:::i;:::-;;;;8027:673;;;;;:::o;8705:457::-;8784:6;8837:2;8825:9;8816:7;8812:23;8808:32;8805:52;;;8853:1;8850;8843:12;8805:52;8886:9;8880:16;8919:18;8911:6;8908:30;8905:50;;;8951:1;8948;8941:12;8905:50;8974:22;;9027:4;9019:13;;9015:27;-1:-1:-1;9005:55:203;;9056:1;9053;9046:12;9005:55;9079:77;9148:7;9143:2;9137:9;9132:2;9128;9124:11;9079:77;:::i;9167:162::-;-1:-1:-1;;;;;9254:5:203;9250:54;9243:5;9240:65;9230:93;;9319:1;9316;9309:12;9334:267;9412:6;9465:2;9453:9;9444:7;9440:23;9436:32;9433:52;;;9481:1;9478;9471:12;9433:52;9513:9;9507:16;9532:39;9565:5;9532:39;:::i;:::-;9590:5;9334:267;-1:-1:-1;;;9334:267:203:o;9788:184::-;9840:77;9837:1;9830:88;9937:4;9934:1;9927:15;9961:4;9958:1;9951:15;9977:125;10042:9;;;10063:10;;;10060:36;;;10076:18;;:::i;:::-;9977:125;;;;:::o;10439:218::-;10586:2;10575:9;10568:21;10549:4;10606:45;10647:2;10636:9;10632:18;10624:6;10606:45;:::i;11767:430::-;11964:66;11956:6;11952:79;11947:3;11940:92;11922:3;12061:6;12055:13;12077:74;12144:6;12140:1;12135:3;12131:11;12124:4;12116:6;12112:17;12077:74;:::i;:::-;12171:16;;;;12189:1;12167:24;;11767:430;-1:-1:-1;;;11767:430:203:o;12202:287::-;12331:3;12369:6;12363:13;12385:66;12444:6;12439:3;12432:4;12424:6;12420:17;12385:66;:::i;:::-;12467:16;;;;;12202:287;-1:-1:-1;;12202:287:203:o;12494:277::-;12561:6;12614:2;12602:9;12593:7;12589:23;12585:32;12582:52;;;12630:1;12627;12620:12;12582:52;12662:9;12656:16;12715:5;12708:13;12701:21;12694:5;12691:32;12681:60;;12737:1;12734;12727:12;13370:591;13480:6;13533:2;13521:9;13512:7;13508:23;13504:32;13501:52;;;13549:1;13546;13539:12;13501:52;13582:2;13576:9;13624:2;13616:6;13612:15;13693:6;13681:10;13678:22;13657:18;13645:10;13642:34;13639:62;13636:88;;;13704:18;;:::i;:::-;13740:2;13733:22;13777:16;;13802:39;13777:16;13802:39;:::i;:::-;13850:21;;13925:2;13910:18;;;13904:25;13887:15;;;13880:50;;;;-1:-1:-1;13857:6:203;13370:591;-1:-1:-1;13370:591:203:o;13966:521::-;-1:-1:-1;;;;;14240:6:203;14236:55;14225:9;14218:74;14328:6;14323:2;14312:9;14308:18;14301:34;14371:3;14366:2;14355:9;14351:18;14344:31;14199:4;14392:46;14433:3;14422:9;14418:19;14410:6;14392:46;:::i;:::-;14384:54;;14474:6;14469:2;14458:9;14454:18;14447:34;13966:521;;;;;;;:::o;15664:780::-;15714:3;15755:5;15749:12;15784:36;15810:9;15784:36;:::i;:::-;15839:1;15856:18;;;15883:191;;;;16088:1;16083:355;;;;15849:589;;15883:191;15931:66;15920:9;15916:82;15911:3;15904:95;16054:6;16047:14;16040:22;16032:6;16028:35;16023:3;16019:45;16012:52;;15883:191;;16083:355;16114:5;16111:1;16104:16;16143:4;16188:2;16185:1;16175:16;16213:1;16227:165;16241:6;16238:1;16235:13;16227:165;;;16319:14;;16306:11;;;16299:35;16362:16;;;;16256:10;;16227:165;;;16231:3;;;16421:6;16416:3;16412:16;16405:23;;15849:589;;;;;15664:780;;;;:::o;16449:664::-;16799:66;16794:3;16787:79;16769:3;16885:47;16928:2;16923:3;16919:12;16911:6;16885:47;:::i;:::-;16952:66;16941:78;;17048:31;17043:2;17035:11;;17028:52;17104:2;17096:11;;16449:664;-1:-1:-1;;;16449:664:203:o;17637:694::-;17980:66;17975:3;17968:79;17950:3;18076:6;18070:13;18092:75;18160:6;18155:2;18150:3;18146:12;18139:4;18131:6;18127:17;18092:75;:::i;:::-;18231:66;18226:2;18186:16;;;;18218:11;;;18211:87;-1:-1:-1;18322:2:203;18314:11;;17637:694;-1:-1:-1;17637:694:203:o;18336:545::-;18438:2;18433:3;18430:11;18427:448;;;18474:1;18499:5;18495:2;18488:17;18544:4;18540:2;18530:19;18614:2;18602:10;18598:19;18595:1;18591:27;18585:4;18581:38;18650:4;18638:10;18635:20;18632:47;;;-1:-1:-1;18673:4:203;18632:47;18728:2;18723:3;18719:12;18716:1;18712:20;18706:4;18702:31;18692:41;;18783:82;18801:2;18794:5;18791:13;18783:82;;;18846:17;;;18827:1;18816:13;18783:82;;19117:1471;19243:3;19237:10;19270:18;19262:6;19259:30;19256:56;;;19292:18;;:::i;:::-;19321:97;19411:6;19371:38;19403:4;19397:11;19371:38;:::i;:::-;19365:4;19321:97;:::i;:::-;19473:4;;19537:2;19526:14;;19554:1;19549:782;;;;20375:1;20392:6;20389:89;;;-1:-1:-1;20444:19:203;;;20438:26;20389:89;-1:-1:-1;;19014:1:203;19010:11;;;19006:84;19002:89;18992:100;19098:1;19094:11;;;18989:117;20491:81;;19519:1063;;19549:782;15611:1;15604:14;;;15648:4;15635:18;;-1:-1:-1;;19585:79:203;;;19762:236;19776:7;19773:1;19770:14;19762:236;;;19865:19;;;19859:26;19844:42;;19957:27;;;;19925:1;19913:14;;;;19792:19;;19762:236;;;19766:3;20026:6;20017:7;20014:19;20011:261;;;20087:19;;;20081:26;-1:-1:-1;;20170:1:203;20166:14;;;20182:3;20162:24;20158:97;20154:102;20139:118;20124:134;;20011:261;-1:-1:-1;;;;;20318:1:203;20302:14;;;20298:22;20285:36;;-1:-1:-1;19117:1471:203:o;20593:128::-;20660:9;;;20681:11;;;20678:37;;;20695:18;;:::i;21080:197::-;21208:3;21233:38;21267:3;21259:6;21233:38;:::i;21282:1554::-;21401:3;21395:4;21392:13;21389:26;;21408:5;;21282:1554::o;21389:26::-;21438:37;21470:3;21464:10;21438:37;:::i;:::-;21498:18;21490:6;21487:30;21484:56;;;21520:18;;:::i;:::-;21549:97;21639:6;21599:38;21631:4;21625:11;21599:38;:::i;21549:97::-;21672:1;21700:2;21692:6;21689:14;21717:1;21712:867;;;;22623:1;22640:6;22637:89;;;-1:-1:-1;22692:19:203;;;22686:26;22637:89;-1:-1:-1;;19014:1:203;19010:11;;;19006:84;19002:89;18992:100;19098:1;19094:11;;;18989:117;22739:81;;21682:1148;;21712:867;15611:1;15604:14;;;15648:4;15635:18;;-1:-1:-1;;21748:79:203;;;15611:1;15604:14;;;15648:4;15635:18;;21971:9;21993:251;22007:7;22004:1;22001:14;21993:251;;;22089:21;;;22083:28;22068:44;;22139:1;22212:18;;;;22167:15;;;;22030:4;22023:12;21993:251;;;21997:3;22272:6;22263:7;22260:19;22257:263;;;22333:21;;22327:28;-1:-1:-1;;22430:3:203;22418:1;22414:14;;;22410:24;22406:97;22402:102;22387:118;22372:134;;;-1:-1:-1;;22566:1:203;22550:14;;;22546:22;22533:36;;-1:-1:-1;21282:1554:203:o;24634:764::-;25024:14;25019:3;25012:27;24994:3;25068:6;25062:13;25084:75;25152:6;25147:2;25142:3;25138:12;25131:4;25123:6;25119:17;25084:75;:::i;:::-;25223:3;25218:2;25178:16;;;25210:11;;;25203:24;25252:13;;25274:76;25252:13;25336:2;25328:11;;25321:4;25309:17;;25274:76;:::i;:::-;25370:17;25389:2;25366:26;;24634:764;-1:-1:-1;;;;24634:764:203: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.21+commit.d9974bed\"},\"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\":\"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f\",\"dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6\"]},\"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol\":{\"keccak256\":\"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4\",\"dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC\"]},\"node_modules/@latticexyz/store/src/Bytes.sol\":{\"keccak256\":\"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a\",\"dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd\"]},\"node_modules/@latticexyz/store/src/FieldLayout.sol\":{\"keccak256\":\"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f\",\"dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx\"]},\"node_modules/@latticexyz/store/src/Hook.sol\":{\"keccak256\":\"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d\",\"dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w\"]},\"node_modules/@latticexyz/store/src/IERC165.sol\":{\"keccak256\":\"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2\",\"dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb\"]},\"node_modules/@latticexyz/store/src/IStore.sol\":{\"keccak256\":\"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0\",\"dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb\"]},\"node_modules/@latticexyz/store/src/IStoreData.sol\":{\"keccak256\":\"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a\",\"dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx\"]},\"node_modules/@latticexyz/store/src/IStoreErrors.sol\":{\"keccak256\":\"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc\",\"dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ\"]},\"node_modules/@latticexyz/store/src/IStoreEvents.sol\":{\"keccak256\":\"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d\",\"dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv\"]},\"node_modules/@latticexyz/store/src/IStoreHook.sol\":{\"keccak256\":\"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5\",\"dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5\"]},\"node_modules/@latticexyz/store/src/IStoreRead.sol\":{\"keccak256\":\"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac\",\"dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo\"]},\"node_modules/@latticexyz/store/src/IStoreRegistration.sol\":{\"keccak256\":\"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115\",\"dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg\"]},\"node_modules/@latticexyz/store/src/IStoreWrite.sol\":{\"keccak256\":\"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1\",\"dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U\"]},\"node_modules/@latticexyz/store/src/Memory.sol\":{\"keccak256\":\"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5\",\"dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv\"]},\"node_modules/@latticexyz/store/src/PackedCounter.sol\":{\"keccak256\":\"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8\",\"dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br\"]},\"node_modules/@latticexyz/store/src/ResourceId.sol\":{\"keccak256\":\"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9\",\"dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn\"]},\"node_modules/@latticexyz/store/src/Schema.sol\":{\"keccak256\":\"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3\",\"dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE\"]},\"node_modules/@latticexyz/store/src/Slice.sol\":{\"keccak256\":\"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3\",\"dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN\"]},\"node_modules/@latticexyz/store/src/Storage.sol\":{\"keccak256\":\"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e\",\"dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4\"]},\"node_modules/@latticexyz/store/src/StoreCore.sol\":{\"keccak256\":\"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a\",\"dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6\"]},\"node_modules/@latticexyz/store/src/StoreData.sol\":{\"keccak256\":\"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279\",\"dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw\"]},\"node_modules/@latticexyz/store/src/StoreHook.sol\":{\"keccak256\":\"0xd267686b3961da4d9a39e2cd39b89d7074ed27a516a03085bb69a6efea0a424e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8c96a99b6c8dab12799165b888ed5c647638a1114bec138dd65ad46c6d1cf34\",\"dweb:/ipfs/QmaMAkfEmRivfHts72hfYiiQiVc15QSRsXkPHM3d2AbFjf\"]},\"node_modules/@latticexyz/store/src/StoreRead.sol\":{\"keccak256\":\"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738\",\"dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ\"]},\"node_modules/@latticexyz/store/src/StoreSwitch.sol\":{\"keccak256\":\"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7\",\"dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR\"]},\"node_modules/@latticexyz/store/src/codegen/index.sol\":{\"keccak256\":\"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6\",\"dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol\":{\"keccak256\":\"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f\",\"dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw\"]},\"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol\":{\"keccak256\":\"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9\",\"dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb\"]},\"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol\":{\"keccak256\":\"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695\",\"dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv\"]},\"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol\":{\"keccak256\":\"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee\",\"dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7\"]},\"node_modules/@latticexyz/store/src/constants.sol\":{\"keccak256\":\"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793\",\"dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC\"]},\"node_modules/@latticexyz/store/src/leftMask.sol\":{\"keccak256\":\"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793\",\"dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG\"]},\"node_modules/@latticexyz/store/src/storeHookTypes.sol\":{\"keccak256\":\"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81\",\"dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX\"]},\"node_modules/@latticexyz/store/src/storeResourceTypes.sol\":{\"keccak256\":\"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84\",\"dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t\"]},\"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol\":{\"keccak256\":\"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1\",\"dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq\"]},\"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol\":{\"keccak256\":\"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49\",\"dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB\"]},\"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol\":{\"keccak256\":\"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25\",\"dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2\"]},\"node_modules/@latticexyz/store/src/version.sol\":{\"keccak256\":\"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491\",\"dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk\"]},\"node_modules/@latticexyz/store/test/EchoSubscriber.sol\":{\"keccak256\":\"0xeed6f185742836b27c83efa603b05f632c11371852763eceec9d1e8ecaae8989\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2fea07d8036022a725d60862dad31b7ac72e99272731d3c7391b8be95fe9e97\",\"dweb:/ipfs/QmTEgF2AGtisNesKsRAsu1brs23CcMvsKPVu6abKoAEbDt\"]},\"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol\":{\"keccak256\":\"0xfe4f71b7fb06de6ba0913882bd26144aefe4a66574f5e9aac12b998b3354fb06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c68240bf15eeb39641d347ea918607175265965e688bfdf8d87855143c67d47\",\"dweb:/ipfs/QmX1ZSNs8KhqwozScUGCXcQd1g2UqHfpe7XjQotrpef6GC\"]},\"node_modules/@latticexyz/store/test/RevertSubscriber.sol\":{\"keccak256\":\"0x7c1e61e92d2b2f441b99178273bcc2f04e79c316960feba1c7b098d2de1005b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3457cc431d79b53712df1f7ccdba25d3b9b75c006c0ad8eebcb436e277ce296e\",\"dweb:/ipfs/QmTbaA9BvNdY3BUGNX2ECUVEArb6JAm5ZXfVgVdHBum5qM\"]},\"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol\":{\"keccak256\":\"0xf3e2bd87ad4e739859c154c04273b00570d42f4bc7baf811686f55d500131bbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1c595200d3c743daa570303bc53a567fa496f58250d40730e49c1ff5d592c07\",\"dweb:/ipfs/Qmd8rfJ2YvqCmPgAm4tuhqzyz9UQ3s6p7ozvqfakwvg86b\"]},\"node_modules/@latticexyz/world/src/AccessControl.sol\":{\"keccak256\":\"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952\",\"dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4\"]},\"node_modules/@latticexyz/world/src/Delegation.sol\":{\"keccak256\":\"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716\",\"dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE\"]},\"node_modules/@latticexyz/world/src/DelegationControl.sol\":{\"keccak256\":\"0x1ed755a4addafd3d0fd1b527d46ea9951920496f8104fa836b297b2544d6fed0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a55b1fa9ac9bd53177d529fd9a000d5e4b455a6aec23004c71365d352c6e6fda\",\"dweb:/ipfs/QmWhetkDnCTiyi8C6qZf23misxJfnGWjesStFZV8sdD8oe\"]},\"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\":\"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d\",\"dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS\"]},\"node_modules/@latticexyz/world/src/IERC165.sol\":{\"keccak256\":\"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5\",\"dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y\"]},\"node_modules/@latticexyz/world/src/IModule.sol\":{\"keccak256\":\"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35\",\"dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py\"]},\"node_modules/@latticexyz/world/src/ISystemHook.sol\":{\"keccak256\":\"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c\",\"dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5\"]},\"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol\":{\"keccak256\":\"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef\",\"dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj\"]},\"node_modules/@latticexyz/world/src/IWorldErrors.sol\":{\"keccak256\":\"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83\",\"dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4\"]},\"node_modules/@latticexyz/world/src/IWorldKernel.sol\":{\"keccak256\":\"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c\",\"dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs\"]},\"node_modules/@latticexyz/world/src/Module.sol\":{\"keccak256\":\"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce\",\"dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL\"]},\"node_modules/@latticexyz/world/src/System.sol\":{\"keccak256\":\"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd\",\"dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc\"]},\"node_modules/@latticexyz/world/src/SystemCall.sol\":{\"keccak256\":\"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01\",\"dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM\"]},\"node_modules/@latticexyz/world/src/SystemHook.sol\":{\"keccak256\":\"0x343831ac06e3fafc03ee1d484f60fe03ba4a9fb7c0b4a2abacbe56f4323dc531\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5b3e313801e9a430c6baf8a58e01813443612e84ceecc9c7cf49f7c3b5bbeac\",\"dweb:/ipfs/QmVQbL4eqmYFtY3LyhA6H2oGDkQX9vdqW27AEichb7XNVc\"]},\"node_modules/@latticexyz/world/src/World.sol\":{\"keccak256\":\"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14\",\"dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6\"]},\"node_modules/@latticexyz/world/src/WorldContext.sol\":{\"keccak256\":\"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518\",\"dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN\"]},\"node_modules/@latticexyz/world/src/WorldResourceId.sol\":{\"keccak256\":\"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc\",\"dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol\":{\"keccak256\":\"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255\",\"dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol\":{\"keccak256\":\"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5\",\"dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol\":{\"keccak256\":\"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024\",\"dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol\":{\"keccak256\":\"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8\",\"dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol\":{\"keccak256\":\"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43\",\"dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol\":{\"keccak256\":\"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0\",\"dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj\"]},\"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol\":{\"keccak256\":\"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad\",\"dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol\":{\"keccak256\":\"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961\",\"dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol\":{\"keccak256\":\"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e\",\"dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf\"]},\"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol\":{\"keccak256\":\"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91\",\"dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5\"]},\"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol\":{\"keccak256\":\"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4\",\"dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol\":{\"keccak256\":\"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b\",\"dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr\"]},\"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol\":{\"keccak256\":\"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b\",\"dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z\"]},\"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol\":{\"keccak256\":\"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a\",\"dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol\":{\"keccak256\":\"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436\",\"dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL\"]},\"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol\":{\"keccak256\":\"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330\",\"dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q\"]},\"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol\":{\"keccak256\":\"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231\",\"dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2\"]},\"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol\":{\"keccak256\":\"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231\",\"dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN\"]},\"node_modules/@latticexyz/world/src/constants.sol\":{\"keccak256\":\"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218\",\"dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol\":{\"keccak256\":\"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9\",\"dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz\"]},\"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol\":{\"keccak256\":\"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417\",\"dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb\"]},\"node_modules/@latticexyz/world/src/modules/core/constants.sol\":{\"keccak256\":\"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e\",\"dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol\":{\"keccak256\":\"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0\",\"dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol\":{\"keccak256\":\"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e\",\"dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol\":{\"keccak256\":\"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c\",\"dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol\":{\"keccak256\":\"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6\",\"dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol\":{\"keccak256\":\"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24\",\"dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr\"]},\"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol\":{\"keccak256\":\"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198\",\"dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm\"]},\"node_modules/@latticexyz/world/src/modules/core/types.sol\":{\"keccak256\":\"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3\",\"dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ\"]},\"node_modules/@latticexyz/world/src/requireInterface.sol\":{\"keccak256\":\"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795\",\"dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy\"]},\"node_modules/@latticexyz/world/src/revertWithBytes.sol\":{\"keccak256\":\"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df\",\"dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7\"]},\"node_modules/@latticexyz/world/src/systemHookTypes.sol\":{\"keccak256\":\"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9\",\"dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx\"]},\"node_modules/@latticexyz/world/src/version.sol\":{\"keccak256\":\"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a\",\"dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1\"]},\"node_modules/@latticexyz/world/src/worldResourceTypes.sol\":{\"keccak256\":\"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45\",\"dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4\"]},\"node_modules/@latticexyz/world/test/DelegationControlMock.sol\":{\"keccak256\":\"0x6f3abd5c97a6e25ee4e879fd906b687f12c45bbad8c85d1e6cff131c7a308bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://438754f984d0dacbc1ada66fec67093c9d5fa390980f92f4becd559b7e562f2b\",\"dweb:/ipfs/QmSpm2u5znk5aFWaLiKWeTpji58LQmFLqgZjEZdL9NXE6a\"]},\"node_modules/@latticexyz/world/test/World.t.sol\":{\"keccak256\":\"0x57c5375e26378df3616937fd0e5b519ef3685f40dcca4f0a4b2e5eff55726713\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://167d2143d092092d532a25eb3febf60c9dffc1f338d40102a6e6acbee1dbb709\",\"dweb:/ipfs/QmNbZ3s8LsUEw5qzT638X84RysFi5ieYgbdL9yohz2MuyJ\"]},\"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol\":{\"keccak256\":\"0x343fba19d487b4c8cca11feb13382b1d26c1f5a49858e4e4cf44eb7d420ceeb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a91604f92bd8329ece0f6c6b5cd92ee2a941f8003a4089f0b9b3c0b6c98c53c\",\"dweb:/ipfs/Qmc2tdP9VLaXbSLQoNGABmausgLrVKanfbRduqaEjuXBG3\"]},\"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol\":{\"keccak256\":\"0x80dd791c832b8a7e7e66b0f4f3c16fb78146c82314d4976f66f5df50250e65b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5270d8479084f21050cb2b526b4a5fef4f8b8ed956c21485bac84dc710bb5c89\",\"dweb:/ipfs/Qmf9Z99HsDZPfxtHgRJaRsEeV2d2QBbYdydFpiyQhrW3iW\"]},\"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol\":{\"keccak256\":\"0x7064d8834de15fb800529d746a7f447245118b2a0228283f419c5578c729162c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b4ff2acb60a2e1f85745bfb73825354a6e64c7d8dcf687d81e63d9c23e4c057\",\"dweb:/ipfs/QmUCJyJ3XBjz7q9KhHRzYvo61stHx3HkHrAaDYquvj4Wcu\"]},\"node_modules/@latticexyz/world/test/createCoreModule.sol\":{\"keccak256\":\"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2\",\"dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39\"]},\"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\":\"0x4ffc74a2efd60b85017e62f86a7064080af340b9035bf966ca4d8828e651b844\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05c8e2327cc3cab8b86a501f2c1ac7a11f48ae0f630f6da83313e148b86a9305\",\"dweb:/ipfs/QmTRnkUjw3Z6arL1VVfUezcUPdJkVTeFupfCj8zMjCYhkU\"]},\"src/modules/std-delegations/StandardDelegationsModule.sol\":{\"keccak256\":\"0xefb2c0521832d7beef2b28b8c1e84cc4489814f924ca10b7b1ac46c6df407f1e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://464f0c716bb54b2a68c158d1344bb6caef6f4f4880198d0d14518c1f0410916a\",\"dweb:/ipfs/QmQRv3CEjJQBYRPQqKAKPCXy8EQ9zRKMRyxyMaDLQ4yoZ8\"]},\"src/modules/std-delegations/SystemboundDelegationControl.sol\":{\"keccak256\":\"0x1a50addb0b25faa7b7ce3fa6476fdc95441307b401a9b270db48c27a4f765482\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ebbef452bbc2c6e6bbfe65ebb4e0fe1a66f5eec8fdea7ee21e08ba971345fd8\",\"dweb:/ipfs/QmebvardDX1wS6ccHrCy2RNmjk8XyqxfheJULV9sP3ZwEf\"]},\"src/modules/std-delegations/TimeboundDelegationControl.sol\":{\"keccak256\":\"0xe51c156a060064d97a2c2a808b970eb6b505f18ebc35367d112dedcadd15570f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ac21cb1fe67133ca85705426efff56e07102bf91b5341b05fe143049ceab402\",\"dweb:/ipfs/QmXTsVdx6L9wCaJyGXBoHuVEPPcRMF73Zkd6nJGAh4QvUk\"]},\"src/modules/std-delegations/constants.sol\":{\"keccak256\":\"0x49909035aea56d5d624d7b2d838b8fd178b15ea4eb61436ab95055acb756e3ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48ad133faf1c1f17f1f4cd0009fc0e244bfd9d2dd44168ce85c58ea2ee6f592f\",\"dweb:/ipfs/QmQb69qiCyf4GwWn4rwzGb9kmBHnWNbsgH6t8pbm76xMy8\"]},\"src/modules/std-delegations/tables/CallboundDelegations.sol\":{\"keccak256\":\"0x83ded262b7376dc2427e138c8a59bfbc4067acd02c497b1a5f9a042994123ff7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5fa21173779b1117c074534bbd783e5dfcaa976d5e6a6fd7c5d394edd1e7ea88\",\"dweb:/ipfs/QmRxHALpWmzU2MZGu6q3b4FVtwt7VnryiVkrivdDek68FF\"]},\"src/modules/std-delegations/tables/SystemboundDelegations.sol\":{\"keccak256\":\"0xa049680113330862d69bd953b261381ae22110c7a267a46bad3f76335c4a61bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://319cff0545ceab895d470a98306b8fd87503ab799346190b90322098fd3bba89\",\"dweb:/ipfs/QmS4dBSi2McCyv18jntMkY5dAqqASu5XXubdY6NakS3RkS\"]},\"src/modules/std-delegations/tables/TimeboundDelegations.sol\":{\"keccak256\":\"0xe9c40ceb0b9742eb11cde0068c0eea7696c04c2daf2977174ebbb7fbb5c24921\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6916eadd6f0fadc1f475754ba46e65ac81b6949c9be335c221f293a0e006afe2\",\"dweb:/ipfs/QmQgwZaLovgA2XLDyYwwjkP4GqHjqt1QxFz2RyP7sdvQpg\"]},\"test/StandardDelegationsModule.t.sol\":{\"keccak256\":\"0xb7c382f15a6ffa8de738ed6e902e63c5420614da9f8a97b47150329635c1aba0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da3c7433e4d640af2bb4efc99f38ba0a96828acf5861f21766438b6b05f00a9f\",\"dweb:/ipfs/QmeiR8RihDBAP947yY6QgHp9EHXZk9AZnsBzHTY3PbXwDP\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"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":"0xf0b03a19a92cd2e9950c25b6d307e5aeca4a64be8932194431197d0570e9bf3b","urls":["bzz-raw://ef2a14f0fb6e5bcab0c70d3648d247c3919c63eabc8b226be4d1f359d8af860f","dweb:/ipfs/QmXi1HgeUNmS9GwSFMDJa8QVT7KiENG9VjgBB78hpHrHV6"],"license":"MIT"},"node_modules/@latticexyz/schema-type/src/solidity/SchemaType.sol":{"keccak256":"0x770eff7a38b9b7b1613dc11ca09db4f28b42a117c9b39b2a06a650a58a250bdb","urls":["bzz-raw://39f544110658a53def52c2a4e33b8b158b95a4f14fccea58d5268b6e728d86d4","dweb:/ipfs/QmTesj6tjSFbfAiKUitXapdNYWPStS8bLkB3r22qfyHwUC"],"license":"MIT"},"node_modules/@latticexyz/store/src/Bytes.sol":{"keccak256":"0xe0bc789337c31551a3ad42fd63aba2489a3aa8567d9f3140b3abc9abdc0d2f1b","urls":["bzz-raw://6d5313aaa217e563083d9e4ded9479d673b17ba71a189b6a0315839812a5c57a","dweb:/ipfs/QmQJfHFMSPrS6p6q3rzKX6HDNCVsQQAWxGdd383FSfKChd"],"license":"MIT"},"node_modules/@latticexyz/store/src/FieldLayout.sol":{"keccak256":"0x7335db1982f43f867f90c3e151e3cc6d6ad40ee76401e2e06b8fdff257d6526f","urls":["bzz-raw://a49d381ef0a0defc90f41166bc7f45cf31e8d82d1517e6a323a90e79b4e45d1f","dweb:/ipfs/QmP46aGM8cYPkn6C4rGnrumcg24g7aUzCAez41zPs2rqhx"],"license":"MIT"},"node_modules/@latticexyz/store/src/Hook.sol":{"keccak256":"0xbe6448092b2d0c77a7cb282e8a452732587a6e04802ad21f4da27a9d6ef1496a","urls":["bzz-raw://1d098409f9352637599b897d046ad23e20894ea3a8460687df2a13d2d960966d","dweb:/ipfs/Qmd3w6dSq3kQVQQtH94wcKRzkaNEDWcE2m9bgbWWDqNE3w"],"license":"MIT"},"node_modules/@latticexyz/store/src/IERC165.sol":{"keccak256":"0x2bbc3c43400c15a91a5cb35430a91309cb64a4d13a0a170eacec71dcf334feaf","urls":["bzz-raw://f44dfc9605067de539de07a76a34bf469faa9e6dad8c192abafc2e05860c7dd2","dweb:/ipfs/QmX8xgG6XWokM7YFwFZvmMhuh1uhkSjxCMD2oTHjUVdapb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStore.sol":{"keccak256":"0x9092b65551d0f910e5645cebb5acadb387cdd192d75fa89cd6b293bd65b28827","urls":["bzz-raw://478825a6f7eff9ddab968e71e1d55ebee279d3b318f10976d9334384000059c0","dweb:/ipfs/Qme7NY976woRy3RQjE4tkkiwoXnoVtTmER3PbWCSbjZ2kb"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreData.sol":{"keccak256":"0xa8eade05c551aeef35c84727d7a44af239516deb2d8a0cfb7ebeb5d88c6995e5","urls":["bzz-raw://5335910bd8a204abb5f4396fb911a5ee5c221bd7fa63b1cc8ae5e737c6458c6a","dweb:/ipfs/QmckkCAfrNcWo3yDxoD1jCe1k4iDA2GzVDpFjJZs7W79vx"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreErrors.sol":{"keccak256":"0xb9070663ded3cad82285bb7610949e422f88abb48c2ddbd792af83d127d64212","urls":["bzz-raw://830490f1c888bec86df1e7ef43773d60ebdbdfdb2b91ab7fe074e2f38d7439dc","dweb:/ipfs/QmS26fpXdZuGgMmjcdQDf9k1Bedn2dhjk9byFZJoNkctPZ"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreEvents.sol":{"keccak256":"0xdd3104680808f975462a85cbd4fa87783ba5395797419caeeca37e8f8627a16f","urls":["bzz-raw://943864b7eb16ad2047ade5a8598e85c8a4b46d1aed6aef02bfb7cee8de732b4d","dweb:/ipfs/QmTEij4caToSNk15PFpubXYDy9QhwmPyP9tMXjUse2cTdv"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreHook.sol":{"keccak256":"0x9c3ba4c889db2cc2155ddfc966f5df45cf73739cacc358e0ed71ee9d34d9cef9","urls":["bzz-raw://0bc8e8abc3d5ce2af06c3a9f37ebe69cb287514c4572327b09d26121133646e5","dweb:/ipfs/QmY7BmHTiGAJabiLZXLx2zsRs9HfZzK97kwmnwfCidcHZ5"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRead.sol":{"keccak256":"0xd2180d53ecd31069b1166f170ecdcd85917ac50f45fc26fb39b49cee7ba00e37","urls":["bzz-raw://1494bb0a3228e2d194bddaed4761fd3ca865979f0e3f3a53acd271143a4aa0ac","dweb:/ipfs/Qmaddnzzmu99iP9dTWK9ZeByh5dZyjY9SpVnRdvyr2fBAo"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreRegistration.sol":{"keccak256":"0xf448fbb2bc9c982721a43234463656da5a49cea08543e62148d54f11e1ac3e2f","urls":["bzz-raw://64b3579d9b9dcd73dca2beab3d4fcf60237420945ebbb2e9f4ffcc88f4110115","dweb:/ipfs/QmaW5nN3zGEriSYHncye6Nz2TkAw1oo1CyG2JuJTJrJoXg"],"license":"MIT"},"node_modules/@latticexyz/store/src/IStoreWrite.sol":{"keccak256":"0x8b6c7af5ee330928aebb58c8872d3944304ee10ed11f8a325b6accc4ec5df81b","urls":["bzz-raw://b866d158701c7a40834bed735194b804ef219f2bbe574e2307785fff7bcf9da1","dweb:/ipfs/QmXzJfZkXVfyr2RFGwDuazeVnV3UWYmQxjKZ3KzFbbe75U"],"license":"MIT"},"node_modules/@latticexyz/store/src/Memory.sol":{"keccak256":"0x69295976e61a1a108d1b4d6eb497b238730309f3047c4320d48e01a0ce8d4ec7","urls":["bzz-raw://559c451b21fb9dd4fec27b41bef42f4362f1e7ebb7992106d548b9d4f733b3e5","dweb:/ipfs/QmeSE7YTW5zUrfZYFVb2pFnDe3XxiT8XNecfwC3wfpxCRv"],"license":"MIT"},"node_modules/@latticexyz/store/src/PackedCounter.sol":{"keccak256":"0xf2ac4fe9b94aba49819b8bfd9952a73e21bd30aa956aa3a0ba4333d0e4891e91","urls":["bzz-raw://c41b0bb60c662aab1287d0ec92cdd7ce07e6a732ed8d5e6045e14c7ba49d4ce8","dweb:/ipfs/QmYMHVsvJpDrpFW24uHmJFjA8tbr7WjyP4KAFnroApP7Br"],"license":"MIT"},"node_modules/@latticexyz/store/src/ResourceId.sol":{"keccak256":"0xd886462cb60be5929d17bed2740225effa8149ef6358378e9e1f385d58673be9","urls":["bzz-raw://6f66f49397097f9445159417fb61bd362de7849b1e572a3a9b5cb0536636a3d9","dweb:/ipfs/QmPYEREcaUyoqykx4hjJG4k3P9HYmAM4gAxvGsJT6yWqvn"],"license":"MIT"},"node_modules/@latticexyz/store/src/Schema.sol":{"keccak256":"0x58aef318ba03f8ff8866ef70f8a30f549b150657ea699734aefe16c298956401","urls":["bzz-raw://7dc104690a7e2bcf5ce1afadcd58f8ef4d639b4b92b9ad9293656235d54395f3","dweb:/ipfs/QmYJJvEv5KBJ3kzf9AkgRn7Uu5dp4exGTRddf4cae1btgE"],"license":"MIT"},"node_modules/@latticexyz/store/src/Slice.sol":{"keccak256":"0x08f813a47c9b17e647c4051b310fb7b04e2af87c5440f4c916e4e6b5bfb29710","urls":["bzz-raw://0a7966452656a25e3555e39f10121a69690b0ecf23524c073f61f9ea31a922f3","dweb:/ipfs/QmQiEsLYyZFBZbcAbzwSK2dKxpj7xbs7CPLt3py3uGZSSN"],"license":"MIT"},"node_modules/@latticexyz/store/src/Storage.sol":{"keccak256":"0x5a32d464b56d13b9cf93f15c366e1ba8c4e2242bbad3990829c7f674e49ac2f7","urls":["bzz-raw://adf1460050534fbdf4b2615c9dee03aed9d84bc0198cb082b10e579ab01d568e","dweb:/ipfs/Qma2zugjeP748bkmbYhqVrzrKcdn18KLH3TZMfVuhHq2M4"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreCore.sol":{"keccak256":"0x6f21b3b6e6c202a1f9a5ba3ce7a656d38b51e1f1755a7ba3d1bc4c083a94aa94","urls":["bzz-raw://e5499fa030ff8dee5db70851dc678a9f0eb7c2a548f27fd5a3ecd0b44038642a","dweb:/ipfs/Qme3ZGKP1YYMt98rFJ8uRRZ2jgWaqNdKAS9HaEP4HYPrB6"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreData.sol":{"keccak256":"0x4e451128c33a01d520c1944b3db42a62c158aea8fa11e786a58a0f719a189526","urls":["bzz-raw://c2f98f30a7b2c9ef020e274b87ae0fa66d1380343a00ecf6bd796ae31cd9b279","dweb:/ipfs/QmYXHSBn4Hp7cimDLKy86ep23v2VRUS6dLPevcVMs3dJrw"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreHook.sol":{"keccak256":"0xd267686b3961da4d9a39e2cd39b89d7074ed27a516a03085bb69a6efea0a424e","urls":["bzz-raw://c8c96a99b6c8dab12799165b888ed5c647638a1114bec138dd65ad46c6d1cf34","dweb:/ipfs/QmaMAkfEmRivfHts72hfYiiQiVc15QSRsXkPHM3d2AbFjf"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreRead.sol":{"keccak256":"0xd918972009bd009dbad7032b8ff076928cec18c0891bb12493a1799df83e9cfa","urls":["bzz-raw://966bb2090623b9a6aae0e5df9ae4c9c21bbde97867a239303c934c765eebf738","dweb:/ipfs/QmRui6vJ8UfNHAueDyRuSXfW7wwuxRxAHgGjB7wVJEB6cJ"],"license":"MIT"},"node_modules/@latticexyz/store/src/StoreSwitch.sol":{"keccak256":"0xf132af10f960a498f49c0534027056e715f4bdcb8fbdb53ac6879c92309ab416","urls":["bzz-raw://e85a09aeb7543bcd9d74b7ad319ae61e1f7f15a6a0ad9e79aff750fbd18111c7","dweb:/ipfs/QmY6xgqeeaR1FsCPLmFbVgjm1D2UyrXNABKXWLfFaSmBhR"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/index.sol":{"keccak256":"0xf337a5abb2d43ef00c1c200e7fbec30fc89c7c701e457ab4277194b700d2aea3","urls":["bzz-raw://eccdf6158076b4e8f1b587a0310228f53323705e054a44eaa7733f38805c3ee6","dweb:/ipfs/QmbXEVNTctg54dK9awdCVyAjeuUjR6ckfmmXBP8DrFmjyq"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Hooks.sol":{"keccak256":"0x6ba24d7c79f616a40a5a28466a113c3b491196ed43a236124ae9f52f940ebae6","urls":["bzz-raw://c055a11a1a52d820e5f71c1434b94b2083304d94655d7dbcefb7c7b4e42a095f","dweb:/ipfs/QmUU119ZHn9S3ExK8ZhNyHbdxWMu3RasLDZco9vR9KDQJw"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/ResourceIds.sol":{"keccak256":"0x0d5cb177f2e3f968b5d8962727ee95f6ec12f2f02635bd3388e8ba658a513782","urls":["bzz-raw://6c1f989b97f782ba8a7b7aa85c79564a4eeca21e8c0c255d287d5a2fb42700e9","dweb:/ipfs/QmXVeQ9p6b8GRMYE8QWPR89xRsMWRQsxPMgQHsUvMWbLeb"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/StoreHooks.sol":{"keccak256":"0x92e5306a8572903c6ed2ede4713de8356221511aaa9043a115010d8dc504d95d","urls":["bzz-raw://c36a58e47472e86c8b995c33eef1be95c7073d30e8e4b59b4c65413cbe34f695","dweb:/ipfs/QmaHP8apm4XnMSQkMT4Wysu8LxVSnH5JcPne5PV8YPyJNv"],"license":"MIT"},"node_modules/@latticexyz/store/src/codegen/tables/Tables.sol":{"keccak256":"0xc1ce9530a25c9e1ebc6a4d1789f26b9607f09b38132a64ced9cfcf34e3011e91","urls":["bzz-raw://d67414de99946c6c199fce2700a2765e279d4fa9c0ff665035193883221979ee","dweb:/ipfs/QmViGZuPahjSGa18UtAjSXbAao9wuMK4m6hxjtX6pDqqU7"],"license":"MIT"},"node_modules/@latticexyz/store/src/constants.sol":{"keccak256":"0x9e37c64c119ef07ad914bc589ee3f6d67946ab95877978c1ee3e2c1ffae07076","urls":["bzz-raw://3fad47e542025382aa28e8171253e34f93b2f149434b67a26989542d70218793","dweb:/ipfs/QmW6JsKNwPc6oAMrgcikgR2EPwMUtQANiuZSQSGCd29HHC"],"license":"MIT"},"node_modules/@latticexyz/store/src/leftMask.sol":{"keccak256":"0xe050786c52cfb1da012bba86744d2a89f8aa6507342e498c96fbe013b0d6302f","urls":["bzz-raw://a62d2f8eb85ddc6de911a0b415bbcf666001ecfd15e681f718cb9ae053a3a793","dweb:/ipfs/QmXZHfKXZNQRJMqLpS15kgZgMfMUkoB8FhypDWDaYaqtJG"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeHookTypes.sol":{"keccak256":"0x60880298016fa117ed9a43ddfd020f11d98a2d345bdcb08e5884e40df98eddd5","urls":["bzz-raw://3619dfda1fd514c0fc5fb34c14d5b5aa41dd6ba6045d37d5f4c8199f3a826f81","dweb:/ipfs/QmbzRBYfVa423gNzCitpGN3i2N9oeGYfinVE1jgtqxnNZX"],"license":"MIT"},"node_modules/@latticexyz/store/src/storeResourceTypes.sol":{"keccak256":"0xada1867ba72930fc5cf5562dd4e36de849dbac9c833b7969cb1b046a808fabf2","urls":["bzz-raw://6e4b5fdcaa54f567a3f8561c2c3fbc0d68c8dad892a4a8e5418bbce8efc53d84","dweb:/ipfs/QmTWbYJX1yrCqrEwUKB9rGpHdRvLNU8GCkBbxnLjGD4d2t"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/DecodeSlice.sol":{"keccak256":"0x1af0fd984640123391ec2df855d00298504b7ce186a56c2caca769cfd9e08e04","urls":["bzz-raw://7305a62318890d2cc6420ba7dec13d9f2c1cb67ac689015fc83b9cbccd0696f1","dweb:/ipfs/QmR8jGNLbt64Tv1YZKRVBCVsd71oeUQFzGHHtpsrs4PuRq"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/EncodeArray.sol":{"keccak256":"0x1c280d24360282e196d9c4833c58c2437108cea2af0ac7596f95be81389e306d","urls":["bzz-raw://6b4556b6eeae9328fbd9adcce346547e823c397503276a4d63effb67e00b5b49","dweb:/ipfs/QmUsynVsMYzjh8oJR8YB7SRrwFMdXcsQsHBrXxLEEFxsiB"],"license":"MIT"},"node_modules/@latticexyz/store/src/tightcoder/TightCoder.sol":{"keccak256":"0xca2e2218bccd60ed690f29152b234a553f3021cad4903c0cfb5cf757fa41d650","urls":["bzz-raw://65f3bf5b851072ba1367ec74b3c66cab6185f3c8c8d6ada007cdc8c513465d25","dweb:/ipfs/QmdHsBNc7ccvTK7VDB9yAktdbRNBrEsUdBNFZTqdq8Vao2"],"license":"MIT"},"node_modules/@latticexyz/store/src/version.sol":{"keccak256":"0x01029999a48b7c1d85de84cae465dd24ec126c95b8a865cd20c7ed5dfcc0f02c","urls":["bzz-raw://9750164ce996badb0fd7df2f526780b9cb9558912405fe46f31064bd7c522491","dweb:/ipfs/QmYf8m2ZXFANRc9ysHgNkNtSF327ccxKYjCUJ49UXBKADk"],"license":"MIT"},"node_modules/@latticexyz/store/test/EchoSubscriber.sol":{"keccak256":"0xeed6f185742836b27c83efa603b05f632c11371852763eceec9d1e8ecaae8989","urls":["bzz-raw://c2fea07d8036022a725d60862dad31b7ac72e99272731d3c7391b8be95fe9e97","dweb:/ipfs/QmTEgF2AGtisNesKsRAsu1brs23CcMvsKPVu6abKoAEbDt"],"license":"MIT"},"node_modules/@latticexyz/store/test/FieldLayoutEncodeHelper.sol":{"keccak256":"0xfe4f71b7fb06de6ba0913882bd26144aefe4a66574f5e9aac12b998b3354fb06","urls":["bzz-raw://3c68240bf15eeb39641d347ea918607175265965e688bfdf8d87855143c67d47","dweb:/ipfs/QmX1ZSNs8KhqwozScUGCXcQd1g2UqHfpe7XjQotrpef6GC"],"license":"MIT"},"node_modules/@latticexyz/store/test/RevertSubscriber.sol":{"keccak256":"0x7c1e61e92d2b2f441b99178273bcc2f04e79c316960feba1c7b098d2de1005b7","urls":["bzz-raw://3457cc431d79b53712df1f7ccdba25d3b9b75c006c0ad8eebcb436e277ce296e","dweb:/ipfs/QmTbaA9BvNdY3BUGNX2ECUVEArb6JAm5ZXfVgVdHBum5qM"],"license":"MIT"},"node_modules/@latticexyz/store/test/SchemaEncodeHelper.sol":{"keccak256":"0xf3e2bd87ad4e739859c154c04273b00570d42f4bc7baf811686f55d500131bbf","urls":["bzz-raw://a1c595200d3c743daa570303bc53a567fa496f58250d40730e49c1ff5d592c07","dweb:/ipfs/Qmd8rfJ2YvqCmPgAm4tuhqzyz9UQ3s6p7ozvqfakwvg86b"],"license":"MIT"},"node_modules/@latticexyz/world/src/AccessControl.sol":{"keccak256":"0x963a4fc3983bf92a473e67f49b62b8f52d94360bb904664b24bbff844e6a4a41","urls":["bzz-raw://2cf0ea9f68a1a9738b116259dc2cb06e98cc591d82b2c271b0e70e8daa742952","dweb:/ipfs/QmRVxuBtGgw49v3KGm3HTBNS5ZJ9wEvENwipJEFEtoiaZ4"],"license":"MIT"},"node_modules/@latticexyz/world/src/Delegation.sol":{"keccak256":"0x09324c2d43eac847a312e1879de1019d1b6eb333d9c9e0d42c449d76f5d9fc89","urls":["bzz-raw://bd6f751c31f1305ffb328b1cd4bcc3999439f63f2b8ad9a33bbebdccdf60e716","dweb:/ipfs/QmRfj5xWwC3wzFr9iAQBr1pAQmLYPJhDRXyRcJpYfhDdoE"],"license":"MIT"},"node_modules/@latticexyz/world/src/DelegationControl.sol":{"keccak256":"0x1ed755a4addafd3d0fd1b527d46ea9951920496f8104fa836b297b2544d6fed0","urls":["bzz-raw://a55b1fa9ac9bd53177d529fd9a000d5e4b455a6aec23004c71365d352c6e6fda","dweb:/ipfs/QmWhetkDnCTiyi8C6qZf23misxJfnGWjesStFZV8sdD8oe"],"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":"0xbf3da1c6ab38b3db62a4f4dd0235280d1fb07d8d465a145d6fd9eaf4bb4c3553","urls":["bzz-raw://30205a69d660ed8de5bf34ee73ec9033737d544bc7572130c439b2467606469d","dweb:/ipfs/QmUWTNdSW1bxXjaQzMUCLqBBoLYYre7CgDko4Qy12DaRNS"],"license":"MIT"},"node_modules/@latticexyz/world/src/IERC165.sol":{"keccak256":"0x7997ebbdee6a2493f28e7032c7a8b906ade40f807d95734e2653c8f1b023ff47","urls":["bzz-raw://c8ca41bb2619bf27e5bf886d1322f0e2dffd096c49f7ae6e716541dd1e1ddce5","dweb:/ipfs/Qmb8zATUWWTtiWaSLjbAe6PGnJPes9ANvEyk7pYoWR3P3Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/IModule.sol":{"keccak256":"0x9ace961d4e283e0974762fddb14bb15e256d1d1086c813957fa0a0c9abeca900","urls":["bzz-raw://3ce3e6875d5ae61e12f3a36b8cdd2aa42e137f4d356109f89101fc7ea2d38f35","dweb:/ipfs/QmbCarvuyKZhaEKebPnzwxCrXPGZvZB5AnJxfXgCgex9py"],"license":"MIT"},"node_modules/@latticexyz/world/src/ISystemHook.sol":{"keccak256":"0x96b32546011ad67c3d03815dfd9375e9f8a255f98aaf89880afa1c8548d372b9","urls":["bzz-raw://c58294560e554b8d8c6e3e870768523aa034631d4908ce25e730bb372ce7795c","dweb:/ipfs/QmU9KfaZRNmQdoZE5bNrMN6QJCm7HGfsCBPvBGbMLLq9E5"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldContextConsumer.sol":{"keccak256":"0xc7da95c29b6dc76d21ea866139e4cefeceeec094326811a4e5afafe494d6a881","urls":["bzz-raw://3048f85d42046b460ff285e38091a18ff848a489670e278b233669baecc2d6ef","dweb:/ipfs/QmPbeYVnPefPmtpaXXAGAjEGXjducZf9sF8fKqgfENCpwj"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldErrors.sol":{"keccak256":"0xc3e7975e5785574543229eac51e3441f4185863d7f5346c0ae08a27b4541f8a7","urls":["bzz-raw://62cc0dc109e6e5475bb07fb95643a31c74337c23521db0557a36dad6117a1e83","dweb:/ipfs/Qmb8jbE1XQTUdreKFr4Jw3xmjctaLuReRZjPxZKQ2uW9p4"],"license":"MIT"},"node_modules/@latticexyz/world/src/IWorldKernel.sol":{"keccak256":"0x9dc133cb55dc23fd6fcbbef8078bb4ea9bf67d698400cf89fc62b905b60cf5eb","urls":["bzz-raw://7c1a57df7052218483eafe72d873660f39a73e2e06c1b14ad8a579d85b94bc6c","dweb:/ipfs/Qme7dnjvADGZyM2L7nZ51nSjsjXXF9isTVCpWaUCd1cEGs"],"license":"MIT"},"node_modules/@latticexyz/world/src/Module.sol":{"keccak256":"0xd0060c58956a1fe0855bcd9099e8764922f0d3b96f9683bd9622b8da05524f19","urls":["bzz-raw://6098c318c6b2606aa0a31554c6dd5923b6c106c24daa2f1119311cd4f4e47bce","dweb:/ipfs/QmZTSSpfmNWakCYvFFZhd7zjmnkNPuSeYKhfCQwZ2gjRWL"],"license":"MIT"},"node_modules/@latticexyz/world/src/System.sol":{"keccak256":"0x7bece0ec86fdc458054e6db0ac4316fc98882fa3ba76b2fa107d3de5382053cd","urls":["bzz-raw://d154183426723bbf133d4dc5f8d051e9521f7b7cabe63925731fa4af99379cdd","dweb:/ipfs/QmZXxPGcqknGLCwTByaZFKhqvKbrfiZkywmnh8buGTC2Mc"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemCall.sol":{"keccak256":"0x2ec34d896ea59d4bd47b99c1c1476c9c8f94f21d8af5f35ceebfeced4dd48ec2","urls":["bzz-raw://97dc97678b209c5e69d8b45adb3fe8c8d8b8fffbd725a8deb462c790a6a58a01","dweb:/ipfs/QmbUntQJj9n55PDjXcdJtmsWSPdWzyhbe6UCK9iHJuq3XM"],"license":"MIT"},"node_modules/@latticexyz/world/src/SystemHook.sol":{"keccak256":"0x343831ac06e3fafc03ee1d484f60fe03ba4a9fb7c0b4a2abacbe56f4323dc531","urls":["bzz-raw://c5b3e313801e9a430c6baf8a58e01813443612e84ceecc9c7cf49f7c3b5bbeac","dweb:/ipfs/QmVQbL4eqmYFtY3LyhA6H2oGDkQX9vdqW27AEichb7XNVc"],"license":"MIT"},"node_modules/@latticexyz/world/src/World.sol":{"keccak256":"0x2fa1e13f367a2110bce824ed5fc8b3d74cf60b0075492a7831dc887fc47de54b","urls":["bzz-raw://a7afd2c5fddf3d635a25a03aeb34991036ec8a9a59f44ea323f8c1f3f17bbf14","dweb:/ipfs/QmbYiNvJmD8mCjeAY83Jebb54dTcgYd4Knr9jbKnMcDwf6"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldContext.sol":{"keccak256":"0xa11d93077d94f18683f1098b69c4713a48001ae15054476135ec9569041abb9a","urls":["bzz-raw://9b1d3384def68b4061c445b55602dd9cbcd4e8c58c13db5e945f284a05c1b518","dweb:/ipfs/Qma5DUZrSKZUxrxiGCpyRPWMJNdHU2wu6qDEsFWEJSnLfN"],"license":"MIT"},"node_modules/@latticexyz/world/src/WorldResourceId.sol":{"keccak256":"0x7daa706e844ddc2ffa9ff2197139fa73faee614030c5d541e339c219129005ff","urls":["bzz-raw://62da4413068810e6fa32ef87b2a83386a0084ec2bb26722515127e5893281cbc","dweb:/ipfs/Qma5SLsHRq3igdXfKz24XSGfMd3dXyNxv52WSTsrcLRWPV"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IAccessManagementSystem.sol":{"keccak256":"0xc912f14d0f2e2e9e728a9d18e250ebe3eb2f51d0b4d79993c9d997991bbd5593","urls":["bzz-raw://29621425847a1c11205307896b04e2a6c97934dd619f23ce6774ce52520f1255","dweb:/ipfs/QmeuTe3q8U11Dqkp5tahxVWnp9Cd5ezQmRZ5vhEHtv14Eu"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBalanceTransferSystem.sol":{"keccak256":"0xf04594c29c5c5b3110453ac189a8008735753de864ab4a7dfa97ccd3ae5f4a55","urls":["bzz-raw://4a3061f72b969a294dc96c3b2e59277e762ce6571cedcc7e280412431453dde5","dweb:/ipfs/QmWB9aboakrCH9AmzGiZ1mCceh9atF4ks5ndEYFzUVbaHT"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol":{"keccak256":"0xf103db760a912d42dac0c409feb2d1929864ae81f89a7186047ea6f98b9db2ed","urls":["bzz-raw://9ee556bbf7f7aa2f221e1f5a9d80caca8d4e5bc9282f59d5611a7c9ea7c06024","dweb:/ipfs/QmQouopBhk5VuzdUSVc9MC3C5nhbm1MgHmQhemf6w66WxE"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IBatchCallSystem.sol":{"keccak256":"0xb4d323470e22b1d3f0168a44196eb09466f602b7564c75e5739c5f53a5036f97","urls":["bzz-raw://acad752208d00b731baaa1cfa192ff3981001fd030953bdc604e4f69ec2cd0b8","dweb:/ipfs/QmRFw3RgmX2CHqg7PqsP3rqVKxBVYNq5hHcFiyA2Y7iAaX"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/ICoreRegistrationSystem.sol":{"keccak256":"0xb5e41596b245dbb0f4317174ae08c963a55df07cfd1a2e65bd082628bc446350","urls":["bzz-raw://007f0e50c7f40d3932c5db51f729148f7d67573ef2f429043d901c7b017d7f43","dweb:/ipfs/QmdmnY9RFyGjhmjSif3wZYHSMhtkTNhxi74dzVzsQBgi2N"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IModuleInstallationSystem.sol":{"keccak256":"0x5be1d1ee90a7a03258e8c4fce7542453332c637a51b015e0cc29151ef2792263","urls":["bzz-raw://df6d97356b2ca9d97b7593f4c0772742529fea73f1665e55a879a368b399cae0","dweb:/ipfs/QmXCs5X4Z95isKRzjP4TQjQxwiB7773tHiJWLWkjLv3SLj"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/interfaces/IWorldRegistrationSystem.sol":{"keccak256":"0xd7e31957e7fcf056912fe16e10a0411bdb071c14c45853e7da264dfbfd6bcb62","urls":["bzz-raw://c4ce02327ac8971177685fc2655733ed3c07f5dfb72846680544a48953180aad","dweb:/ipfs/QmQMNtkeCXdZfyyvtY8vUrKh5RUbpM7HYMGrzbxZGzTEFh"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Balances.sol":{"keccak256":"0x2fd9727c04a06dacd957c320e5c91844e389df164a02f6c35e169852d974a1f8","urls":["bzz-raw://cfab99486f9011db6590d75947a8510540bc5d6160866cfd1fafe16daa024961","dweb:/ipfs/QmPAyaKJwhawWcyegfHv1QkJYzdAMpySok2gDKVPpw1rvD"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSelectors.sol":{"keccak256":"0x8bcbbd417bc83b92c1d40444cf2e617d8a5c7e4d7486dcc3467fef2470338bcb","urls":["bzz-raw://aedd3d896ccc900aa9a4f53ec7a9245e5630f51e847a0e2356e12e4492084a8e","dweb:/ipfs/QmRQJwy5XYHGXT973hYdPUR6cG8fSDPi8kPgprYJXUfuVf"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/FunctionSignatures.sol":{"keccak256":"0xed3112d1dfeb8afa9be21cc3bf70f7af31b0443e9579f080e7ac2640664b8426","urls":["bzz-raw://571277bf66022fb97fb43948379b560c6d6904dc0272f91b30d3ab16a5b76c91","dweb:/ipfs/QmNhb9rrrW8KXzLfg3eiUR86hnRhaD2kzN5mAcWuWQ4pu5"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/InstalledModules.sol":{"keccak256":"0x334f30cf5cac3f795cd63f15582a6a50c91c91644000a1a5c3005a4c17b075ac","urls":["bzz-raw://79369df71ea24d4eb6579f9edc5ac3f8c8d4fe2563db7438c957f7cd8fd696d4","dweb:/ipfs/QmZBQv6xBpXWocxy4nX5o8XJYuvi88y69YmHJYUGgGFRN9"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceDelegationControl.sol":{"keccak256":"0x760eec42bbfbdb497a80fa704956c82bca38d21ee220a1671ac7fc1364ddc0ed","urls":["bzz-raw://313982b1791750271b460fa94c3ea54eeb2d88b3093ab2cace6014a6c9ee387b","dweb:/ipfs/QmVagcNagZkFZeVieECp53rjZEYBB6LU8HP4BjKzfiC4Qr"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/NamespaceOwner.sol":{"keccak256":"0xb59422d88ec4d7ea5870bfbcd26cce216808aca2524d78be044e6246c2e0c8cd","urls":["bzz-raw://690489521124436a18dd3b2efc1c28636488414b82c6dabf743bde1c8f9ab70b","dweb:/ipfs/Qma89LxYq3aBdNZnsiH2qKuq47gmSn9QpeoFe23pahus5Z"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/ResourceAccess.sol":{"keccak256":"0xa6dd49d8d3bc8ce68d45ebc01f087ef83b1d758e9967322fd15cf641331c2527","urls":["bzz-raw://a80f0382a7bad47b1b947bc9b447eafb35599b0e11a9bdcb45c7cddb3bc1375a","dweb:/ipfs/QmRBWAsqUya6uxXn5fqJPgnkytDfp8HXixcymwTmYKuoPc"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemHooks.sol":{"keccak256":"0x43cb675401e3e464a93ae0ddaefdb6ac03b734b7226ba89b8727d6421e50e2e8","urls":["bzz-raw://6a37a9d6881779113b1b78b0e9175b64089da881be1176fc764ceaee9fc65436","dweb:/ipfs/QmXgCyyJUAAn99Czgv51nkr6qi9hFduhJpybkn95ipJHJL"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/SystemRegistry.sol":{"keccak256":"0xd0128bfb43b2afdc0c0410b6a642ce7b5ae4e5c90c367e542ea0b3e8d02eba22","urls":["bzz-raw://59fd7075792470f625e15e7c7a5d377b6657b26ce22a82c705888c2773840330","dweb:/ipfs/QmdPygA9VW1Zdds4FTejEDSEKzaPWDFvXP1VqsaJB6KF8q"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol":{"keccak256":"0x20ad3ee26ef118cb8b055803c4a5ef2aac4791ce9e8720fc6a549120c53ab37a","urls":["bzz-raw://58c1a2e3abb381a36696aeb3588a2604706e88b8505caddbdb696f96249e6231","dweb:/ipfs/QmQvPVUFGBRpbaK9et2L7rVVmCByD1gDhaFvtJNL7cM7d2"],"license":"MIT"},"node_modules/@latticexyz/world/src/codegen/tables/UserDelegationControl.sol":{"keccak256":"0xa9a5ebaa93ce6fe8b1f2cef5fd1350ea755d2ab0ff7ae2a5c369e493c2d205d5","urls":["bzz-raw://5ba46cddd36f4a69e120e11edb0cbb8cd8d8363636544fe21e9712e41786f231","dweb:/ipfs/Qmc87CiTYDULyEwTZmbfHcrqx2gNRrkSakYdS6wRXi7LQN"],"license":"MIT"},"node_modules/@latticexyz/world/src/constants.sol":{"keccak256":"0x07faffa7dc4a2adc4f9bfe93d5a59a7dd89241d360996537608e38f61c2d0588","urls":["bzz-raw://b96d4ce331b257a24de2f18503a11b986ed32d218810db9d5e3e7eddc17c2218","dweb:/ipfs/Qme7Cw4RN1eaFWt2j3hk6ZMB7GWUfMY5oyZKYfMvAVxdBc"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreModule.sol":{"keccak256":"0x1854f68cb404adb13910c7cb5dc91b4db83b33705a92717485df16742acfac43","urls":["bzz-raw://1119dea8f6a76977e6327b789fae9023eedd63df9a50b6a7b4c6190f02de10a9","dweb:/ipfs/QmXJ6YthgxX5ybpCgcECBHC2uPnycnC7mzh3KTbF9vZWDz"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/CoreRegistrationSystem.sol":{"keccak256":"0x4969fab8e65df062b3ee1d5c55c5dc980b4c8d531a90977e5f318500eafe2125","urls":["bzz-raw://94ca575dec2084e8ec0558c6866af383fea4f5111079f06db8c78b1a7dc78417","dweb:/ipfs/QmZCHfyhMQ4Z4sJvW9uzYhuTNTThoRwH8Usqx6q95AbNSb"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/constants.sol":{"keccak256":"0xbe6408440b758884cfff869ae6c8aefa476ab97b07855dd51571bb358e9ecae0","urls":["bzz-raw://854427618d6d700c2dbba45cc475bd341b14612d4dc05af687371dc725e0a11e","dweb:/ipfs/QmXueKPv6WDyAwjwej5XHnBTMQeUYEbtgNryqt4Tnsj3sK"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/AccessManagementSystem.sol":{"keccak256":"0x29cd0f1a2ec749bc25774682977cad4dd238602a3b4e926cc08bb7781fabf2bc","urls":["bzz-raw://98d1f0b23e9ed303b543e943abcb5641d0744e2c1ae003df6dea877a070f96e0","dweb:/ipfs/QmfQj5P8Lw6DfMfVnhsAaDCtN6iYfKp8V4uxX5LQQnzxLo"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BalanceTransferSystem.sol":{"keccak256":"0x8170eb46e9716b8040b9a95d8740e1e897538afb1da95a1994cba7907522b4fc","urls":["bzz-raw://b19dbd9f3ca1f541883879985589095f851bdd201d9cdde2d6742dda9ad01a2e","dweb:/ipfs/QmTgSMvsVFAEMK72D7myoJtEykDxAMweueJNEagSChyA1Y"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/BatchCallSystem.sol":{"keccak256":"0xf24b9cc96cccb8ef98c9aa8585e4a5c003b3b8a00c5a9c6db5c750460960a7d1","urls":["bzz-raw://afa918bcba66835a0866a11c5b43b5da11d68fb68c697f89a273d5dd3a5f1f5c","dweb:/ipfs/QmZyyVdNoUiyLMimmNkZkQv5o86k4sGyo1CGEMrt794eC2"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/ModuleInstallationSystem.sol":{"keccak256":"0xc9b0efce92d9be51ff564fa18efc13365a64cde8dd2e2ef88bac4abe7d432a3d","urls":["bzz-raw://86d2a49cc96ad7e783490c6e44aa2d078444505edc49d1061711200a607441a6","dweb:/ipfs/QmbKkJnRkUE47uWwmhqqmaVozRXLt45ebSZbZnpJpnJfvj"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/StoreRegistrationSystem.sol":{"keccak256":"0xf7edf07894b8c6938b77491d36944d22b37b9e9e8105a689120f66e76450d3dc","urls":["bzz-raw://55be67cb294109fbb9a323c5f788aa7d1b844f7bc57f5bed6b758d2d80447a24","dweb:/ipfs/QmUv8FwmcV6mP2o7aZiZkRxrnQdnaRLYiFWs8ifaEadKJr"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/implementations/WorldRegistrationSystem.sol":{"keccak256":"0xbae6190d740add0ee986f82b1143f8f160d232e0f3c2eb4d7908040f07b45427","urls":["bzz-raw://022b092b8757770e5799d22de9b09b774f6ecae9820e91847f794785fbdf7198","dweb:/ipfs/QmaSUvvjFYZT2NmNUQJer7L9qAz4P1KJVQ8Z2Giro9Cpxm"],"license":"MIT"},"node_modules/@latticexyz/world/src/modules/core/types.sol":{"keccak256":"0x256b3269e1e7eb6c8b6e26432bbe6799b4d45a88ef1b0e795ea71e604cec3a8a","urls":["bzz-raw://99bf6320ce9671ed74e7352b4e6c462d741ca9a894c48b526e7d8513308fa6b3","dweb:/ipfs/QmRFJcWFMDRkg7soJ4r4MrqacKmj16vUEMFEGWJuvFi4vJ"],"license":"MIT"},"node_modules/@latticexyz/world/src/requireInterface.sol":{"keccak256":"0x229777eeaac1099104e10832f59bc02f3494a5b6de8225810a3b175643d97039","urls":["bzz-raw://0bf7e4df65be1808418d8dbb1decb346ec2a3b7a11b895818ae90f319522f795","dweb:/ipfs/Qmco2UnqR9oop9ppY2Zbv1LWCQKGM99A7j6iWGsMCrwSmy"],"license":"MIT"},"node_modules/@latticexyz/world/src/revertWithBytes.sol":{"keccak256":"0x16795bdbfd7956d733df9ada1030ee7a1a714e3b9da5899149a7b07568c4af55","urls":["bzz-raw://7a71128b4989e78215d5fc57dae8c2f84c6b5e503c159178c0df6f642b8228df","dweb:/ipfs/QmNYTfBe62SdGESZ32fxME72CbAxEqk4j79jBT7655C4u7"],"license":"MIT"},"node_modules/@latticexyz/world/src/systemHookTypes.sol":{"keccak256":"0xdd201aa30700e70c35c1d4e50c375e511d798961183c8531f947c2d15969debb","urls":["bzz-raw://d9c165b1beb7c1d3f75107407c34a5b3424ec8cb322d494892bceed23323ffb9","dweb:/ipfs/QmdH8rtgJaENsMc6HodAbahKg7PiZUJwoZufnHCw3TwrBx"],"license":"MIT"},"node_modules/@latticexyz/world/src/version.sol":{"keccak256":"0x5db84611779a814a582b5559f636640e3599dba1f36b99c529a19ce73b2d2d44","urls":["bzz-raw://b06ae2f3b888ba3dc719b2d19f60deb7c3398324f636c9dad0b92706dfc08f5a","dweb:/ipfs/QmaLgppohesJhF3ZdMWwM8NHcLiv8SRSCArS4QssfG2dC1"],"license":"MIT"},"node_modules/@latticexyz/world/src/worldResourceTypes.sol":{"keccak256":"0xc7e0aa6e4746b2d0e2eace7e462adf2f03dbc7f0c880794a577bfdbce426fcc3","urls":["bzz-raw://d7538caf090fc69fff272049cfc00d0f35ae63ee700c2091b9cc4ed5709a3b45","dweb:/ipfs/QmYriK2VpsVAePPLTP6mDZkTYMT9AkgmC2C93ktjVMDaP4"],"license":"MIT"},"node_modules/@latticexyz/world/test/DelegationControlMock.sol":{"keccak256":"0x6f3abd5c97a6e25ee4e879fd906b687f12c45bbad8c85d1e6cff131c7a308bf1","urls":["bzz-raw://438754f984d0dacbc1ada66fec67093c9d5fa390980f92f4becd559b7e562f2b","dweb:/ipfs/QmSpm2u5znk5aFWaLiKWeTpji58LQmFLqgZjEZdL9NXE6a"],"license":"MIT"},"node_modules/@latticexyz/world/test/World.t.sol":{"keccak256":"0x57c5375e26378df3616937fd0e5b519ef3685f40dcca4f0a4b2e5eff55726713","urls":["bzz-raw://167d2143d092092d532a25eb3febf60c9dffc1f338d40102a6e6acbee1dbb709","dweb:/ipfs/QmNbZ3s8LsUEw5qzT638X84RysFi5ieYgbdL9yohz2MuyJ"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/AddressArray.sol":{"keccak256":"0x343fba19d487b4c8cca11feb13382b1d26c1f5a49858e4e4cf44eb7d420ceeb1","urls":["bzz-raw://7a91604f92bd8329ece0f6c6b5cd92ee2a941f8003a4089f0b9b3c0b6c98c53c","dweb:/ipfs/Qmc2tdP9VLaXbSLQoNGABmausgLrVKanfbRduqaEjuXBG3"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/Bool.sol":{"keccak256":"0x80dd791c832b8a7e7e66b0f4f3c16fb78146c82314d4976f66f5df50250e65b9","urls":["bzz-raw://5270d8479084f21050cb2b526b4a5fef4f8b8ed956c21485bac84dc710bb5c89","dweb:/ipfs/Qmf9Z99HsDZPfxtHgRJaRsEeV2d2QBbYdydFpiyQhrW3iW"],"license":"MIT"},"node_modules/@latticexyz/world/test/codegen/tables/TwoFields.sol":{"keccak256":"0x7064d8834de15fb800529d746a7f447245118b2a0228283f419c5578c729162c","urls":["bzz-raw://2b4ff2acb60a2e1f85745bfb73825354a6e64c7d8dcf687d81e63d9c23e4c057","dweb:/ipfs/QmUCJyJ3XBjz7q9KhHRzYvo61stHx3HkHrAaDYquvj4Wcu"],"license":"MIT"},"node_modules/@latticexyz/world/test/createCoreModule.sol":{"keccak256":"0xb0baab0e9c67c1b945a95291aed4e16cf73ed7b95bc671076fd1a7d960e043d8","urls":["bzz-raw://b603f7c656fed7e592cd598ca94ac46fab6ed31a6d951cf4661bc7f3f24166f2","dweb:/ipfs/QmeNDUPYh3yuUj6oQ19VgKYruY1kDWenNhywzWYXeuxy39"],"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":"0x4ffc74a2efd60b85017e62f86a7064080af340b9035bf966ca4d8828e651b844","urls":["bzz-raw://05c8e2327cc3cab8b86a501f2c1ac7a11f48ae0f630f6da83313e148b86a9305","dweb:/ipfs/QmTRnkUjw3Z6arL1VVfUezcUPdJkVTeFupfCj8zMjCYhkU"],"license":"MIT"},"src/modules/std-delegations/StandardDelegationsModule.sol":{"keccak256":"0xefb2c0521832d7beef2b28b8c1e84cc4489814f924ca10b7b1ac46c6df407f1e","urls":["bzz-raw://464f0c716bb54b2a68c158d1344bb6caef6f4f4880198d0d14518c1f0410916a","dweb:/ipfs/QmQRv3CEjJQBYRPQqKAKPCXy8EQ9zRKMRyxyMaDLQ4yoZ8"],"license":"MIT"},"src/modules/std-delegations/SystemboundDelegationControl.sol":{"keccak256":"0x1a50addb0b25faa7b7ce3fa6476fdc95441307b401a9b270db48c27a4f765482","urls":["bzz-raw://4ebbef452bbc2c6e6bbfe65ebb4e0fe1a66f5eec8fdea7ee21e08ba971345fd8","dweb:/ipfs/QmebvardDX1wS6ccHrCy2RNmjk8XyqxfheJULV9sP3ZwEf"],"license":"MIT"},"src/modules/std-delegations/TimeboundDelegationControl.sol":{"keccak256":"0xe51c156a060064d97a2c2a808b970eb6b505f18ebc35367d112dedcadd15570f","urls":["bzz-raw://3ac21cb1fe67133ca85705426efff56e07102bf91b5341b05fe143049ceab402","dweb:/ipfs/QmXTsVdx6L9wCaJyGXBoHuVEPPcRMF73Zkd6nJGAh4QvUk"],"license":"MIT"},"src/modules/std-delegations/constants.sol":{"keccak256":"0x49909035aea56d5d624d7b2d838b8fd178b15ea4eb61436ab95055acb756e3ff","urls":["bzz-raw://48ad133faf1c1f17f1f4cd0009fc0e244bfd9d2dd44168ce85c58ea2ee6f592f","dweb:/ipfs/QmQb69qiCyf4GwWn4rwzGb9kmBHnWNbsgH6t8pbm76xMy8"],"license":"MIT"},"src/modules/std-delegations/tables/CallboundDelegations.sol":{"keccak256":"0x83ded262b7376dc2427e138c8a59bfbc4067acd02c497b1a5f9a042994123ff7","urls":["bzz-raw://5fa21173779b1117c074534bbd783e5dfcaa976d5e6a6fd7c5d394edd1e7ea88","dweb:/ipfs/QmRxHALpWmzU2MZGu6q3b4FVtwt7VnryiVkrivdDek68FF"],"license":"MIT"},"src/modules/std-delegations/tables/SystemboundDelegations.sol":{"keccak256":"0xa049680113330862d69bd953b261381ae22110c7a267a46bad3f76335c4a61bf","urls":["bzz-raw://319cff0545ceab895d470a98306b8fd87503ab799346190b90322098fd3bba89","dweb:/ipfs/QmS4dBSi2McCyv18jntMkY5dAqqASu5XXubdY6NakS3RkS"],"license":"MIT"},"src/modules/std-delegations/tables/TimeboundDelegations.sol":{"keccak256":"0xe9c40ceb0b9742eb11cde0068c0eea7696c04c2daf2977174ebbb7fbb5c24921","urls":["bzz-raw://6916eadd6f0fadc1f475754ba46e65ac81b6949c9be335c221f293a0e006afe2","dweb:/ipfs/QmQgwZaLovgA2XLDyYwwjkP4GqHjqt1QxFz2RyP7sdvQpg"],"license":"MIT"},"test/StandardDelegationsModule.t.sol":{"keccak256":"0xb7c382f15a6ffa8de738ed6e902e63c5420614da9f8a97b47150329635c1aba0","urls":["bzz-raw://da3c7433e4d640af2bb4efc99f38ba0a96828acf5861f21766438b6b05f00a9f","dweb:/ipfs/QmeiR8RihDBAP947yY6QgHp9EHXZk9AZnsBzHTY3PbXwDP"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"test/StandardDelegationsModule.t.sol","id":134861,"exportedSymbols":{"CALLBOUND_DELEGATION":[120838],"CallboundDelegationControl":[120474],"DELEGATION_CONTROL_INTERFACE_ID":[22169],"GasReporter":[226],"IBaseWorld":[24400],"IWorldErrors":[22430],"RESOURCE_SYSTEM":[37052],"ResourceId":[2782],"SYSTEMBOUND_DELEGATION":[120856],"StandardDelegationsModule":[120653],"StandardDelegationsModuleTest":[134860],"System":[22601],"SystemboundDelegationControl":[120749],"Systems":[33812],"TIMEBOUND_DELEGATION":[120874],"Test":[58812],"TimeboundDelegationControl":[120806],"World":[23730],"WorldResourceIdInstance":[24272],"WorldResourceIdLib":[24145],"WorldTestSystem":[37452],"WorldTestSystemReturn":[37248],"createCoreModule":[46913]},"nodeType":"SourceUnit","src":"32:7478:199","nodes":[{"id":134256,"nodeType":"PragmaDirective","src":"32:25:199","nodes":[],"literals":["solidity",">=","0.8",".21"]},{"id":134258,"nodeType":"ImportDirective","src":"59:42:199","nodes":[],"absolutePath":"node_modules/forge-std/src/Test.sol","file":"forge-std/Test.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":58813,"symbolAliases":[{"foreign":{"id":134257,"name":"Test","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58812,"src":"68:4:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134260,"nodeType":"ImportDirective","src":"102:73:199","nodes":[],"absolutePath":"node_modules/@latticexyz/gas-report/src/GasReporter.sol","file":"@latticexyz/gas-report/src/GasReporter.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":227,"symbolAliases":[{"foreign":{"id":134259,"name":"GasReporter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"111:11:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134262,"nodeType":"ImportDirective","src":"177:56:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/World.sol","file":"@latticexyz/world/src/World.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":23731,"symbolAliases":[{"foreign":{"id":134261,"name":"World","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":23730,"src":"186:5:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134266,"nodeType":"ImportDirective","src":"234:116:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/WorldResourceId.sol","file":"@latticexyz/world/src/WorldResourceId.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":24273,"symbolAliases":[{"foreign":{"id":134263,"name":"ResourceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"243:10:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134264,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"255:18:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134265,"name":"WorldResourceIdInstance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24272,"src":"275:23:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134268,"nodeType":"ImportDirective","src":"351:58:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/System.sol","file":"@latticexyz/world/src/System.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":22602,"symbolAliases":[{"foreign":{"id":134267,"name":"System","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22601,"src":"360:6:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134270,"nodeType":"ImportDirective","src":"410:79:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/worldResourceTypes.sol","file":"@latticexyz/world/src/worldResourceTypes.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":37059,"symbolAliases":[{"foreign":{"id":134269,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"419:15:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134272,"nodeType":"ImportDirective","src":"491:85:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","file":"@latticexyz/world/src/codegen/interfaces/IBaseWorld.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":24401,"symbolAliases":[{"foreign":{"id":134271,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"500:10:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134274,"nodeType":"ImportDirective","src":"577:70:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IWorldErrors.sol","file":"@latticexyz/world/src/IWorldErrors.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":22431,"symbolAliases":[{"foreign":{"id":134273,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"586:12:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134276,"nodeType":"ImportDirective","src":"648:95:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/IDelegationControl.sol","file":"@latticexyz/world/src/IDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":22186,"symbolAliases":[{"foreign":{"id":134275,"name":"DELEGATION_CONTROL_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22169,"src":"657:31:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134278,"nodeType":"ImportDirective","src":"745:79:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/createCoreModule.sol","file":"@latticexyz/world/test/createCoreModule.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":46914,"symbolAliases":[{"foreign":{"id":134277,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"754:16:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134280,"nodeType":"ImportDirective","src":"825:75:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/src/codegen/tables/Systems.sol","file":"@latticexyz/world/src/codegen/tables/Systems.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":33823,"symbolAliases":[{"foreign":{"id":134279,"name":"Systems","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33812,"src":"834:7:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134282,"nodeType":"ImportDirective","src":"902:105:199","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":120654,"symbolAliases":[{"foreign":{"id":134281,"name":"StandardDelegationsModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120653,"src":"911:25:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134284,"nodeType":"ImportDirective","src":"1008:107:199","nodes":[],"absolutePath":"src/modules/std-delegations/CallboundDelegationControl.sol","file":"../src/modules/std-delegations/CallboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":120475,"symbolAliases":[{"foreign":{"id":134283,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120474,"src":"1017:26:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134286,"nodeType":"ImportDirective","src":"1116:111:199","nodes":[],"absolutePath":"src/modules/std-delegations/SystemboundDelegationControl.sol","file":"../src/modules/std-delegations/SystemboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":120750,"symbolAliases":[{"foreign":{"id":134285,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120749,"src":"1125:28:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134288,"nodeType":"ImportDirective","src":"1228:107:199","nodes":[],"absolutePath":"src/modules/std-delegations/TimeboundDelegationControl.sol","file":"../src/modules/std-delegations/TimeboundDelegationControl.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":120807,"symbolAliases":[{"foreign":{"id":134287,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120806,"src":"1237:26:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134292,"nodeType":"ImportDirective","src":"1336:146:199","nodes":[],"absolutePath":"src/modules/std-delegations/StandardDelegationsModule.sol","file":"../src/modules/std-delegations/StandardDelegationsModule.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":120654,"symbolAliases":[{"foreign":{"id":134289,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120838,"src":"1345:20:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134290,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120856,"src":"1367:22:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134291,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120874,"src":"1391:20:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134295,"nodeType":"ImportDirective","src":"1484:92:199","nodes":[],"absolutePath":"node_modules/@latticexyz/world/test/World.t.sol","file":"@latticexyz/world/test/World.t.sol","nameLocation":"-1:-1:-1","scope":134861,"sourceUnit":43540,"symbolAliases":[{"foreign":{"id":134293,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"1493:15:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":134294,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37248,"src":"1510:21:199","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":134860,"nodeType":"ContractDefinition","src":"1578:5931:199","nodes":[{"id":134303,"nodeType":"UsingForDirective","src":"1642:45:199","nodes":[],"global":false,"libraryName":{"id":134300,"name":"WorldResourceIdInstance","nameLocations":["1648:23:199"],"nodeType":"IdentifierPath","referencedDeclaration":24272,"src":"1648:23:199"},"typeName":{"id":134302,"nodeType":"UserDefinedTypeName","pathNode":{"id":134301,"name":"ResourceId","nameLocations":["1676:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1676:10:199"},"referencedDeclaration":2782,"src":"1676:10:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}},{"id":134306,"nodeType":"VariableDeclaration","src":"1690:24:199","nodes":[],"constant":false,"mutability":"mutable","name":"world","nameLocation":"1709:5:199","scope":134860,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"},"typeName":{"id":134305,"nodeType":"UserDefinedTypeName","pathNode":{"id":134304,"name":"IBaseWorld","nameLocations":["1690:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":24400,"src":"1690:10:199"},"referencedDeclaration":24400,"src":"1690:10:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"visibility":"private"},{"id":134315,"nodeType":"VariableDeclaration","src":"1718:132:199","nodes":[],"constant":false,"mutability":"mutable","name":"systemId","nameLocation":"1737:8:199","scope":134860,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134308,"nodeType":"UserDefinedTypeName","pathNode":{"id":134307,"name":"ResourceId","nameLocations":["1718:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"1718:10:199"},"referencedDeclaration":2782,"src":"1718:10:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"value":{"arguments":[{"id":134311,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"1788:15:199","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":134312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1816:11:199","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"7465737453797374656d","id":134313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1835:12:199","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":134309,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"1752:18:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":134310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1771:6:199","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"1752:25:199","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":134314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["1780:6:199","1805:9:199","1829:4:199"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"1752:98:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"private"},{"id":134321,"nodeType":"VariableDeclaration","src":"1854:38:199","nodes":[],"constant":false,"mutability":"mutable","name":"delegator","nameLocation":"1870:9:199","scope":134860,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134316,"name":"address","nodeType":"ElementaryTypeName","src":"1854:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"31","id":134319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:199","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":134318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1882:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134317,"name":"address","nodeType":"ElementaryTypeName","src":"1882:7:199","typeDescriptions":{}}},"id":134320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1882:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":134327,"nodeType":"VariableDeclaration","src":"1896:38:199","nodes":[],"constant":false,"mutability":"mutable","name":"delegatee","nameLocation":"1912:9:199","scope":134860,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134322,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"32","id":134325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1932:1:199","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":134324,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1924:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134323,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:199","typeDescriptions":{}}},"id":134326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":134387,"nodeType":"FunctionDefinition","src":"1939:381:199","nodes":[],"body":{"id":134386,"nodeType":"Block","src":"1963:357:199","nodes":[],"statements":[{"expression":{"id":134340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":134330,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"1969:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1996:9:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_World_$23730_$","typeString":"function () returns (contract World)"},"typeName":{"id":134335,"nodeType":"UserDefinedTypeName","pathNode":{"id":134334,"name":"World","nameLocations":["2000:5:199"],"nodeType":"IdentifierPath","referencedDeclaration":23730,"src":"2000:5:199"},"referencedDeclaration":23730,"src":"2000:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}},"id":134337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1996:11:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_World_$23730","typeString":"contract World"}],"id":134333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1988:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134332,"name":"address","nodeType":"ElementaryTypeName","src":"1988:7:199","typeDescriptions":{}}},"id":134338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1988:20:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":134331,"name":"IBaseWorld","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24400,"src":"1977:10:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseWorld_$24400_$","typeString":"type(contract IBaseWorld)"}},"id":134339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1977:32:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"src":"1969:40:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134341,"nodeType":"ExpressionStatement","src":"1969:40:199"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134345,"name":"createCoreModule","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46913,"src":"2032:16:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$_t_contract$_CoreModule_$35431_$","typeString":"function () returns (contract CoreModule)"}},"id":134346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2032:18:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CoreModule_$35431","typeString":"contract CoreModule"}],"expression":{"id":134342,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"2015:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2021:10:199","memberName":"initialize","nodeType":"MemberAccess","referencedDeclaration":22506,"src":"2015:16:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$returns$__$","typeString":"function (contract IModule) external"}},"id":134347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2015:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134348,"nodeType":"ExpressionStatement","src":"2015:36:199"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":134354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2081:29:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_StandardDelegationsModule_$120653_$","typeString":"function () returns (contract StandardDelegationsModule)"},"typeName":{"id":134353,"nodeType":"UserDefinedTypeName","pathNode":{"id":134352,"name":"StandardDelegationsModule","nameLocations":["2085:25:199"],"nodeType":"IdentifierPath","referencedDeclaration":120653,"src":"2085:25:199"},"referencedDeclaration":120653,"src":"2085:25:199","typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$120653","typeString":"contract StandardDelegationsModule"}}},"id":134355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2081:31:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardDelegationsModule_$120653","typeString":"contract StandardDelegationsModule"}},{"arguments":[{"hexValue":"30","id":134358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2124:1:199","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":134357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2114:9:199","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":134356,"name":"bytes","nodeType":"ElementaryTypeName","src":"2118:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":134359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2114:12:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardDelegationsModule_$120653","typeString":"contract StandardDelegationsModule"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134349,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"2057:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2063:17:199","memberName":"installRootModule","nodeType":"MemberAccess","referencedDeclaration":22448,"src":"2057:23:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IModule_$22254_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IModule,bytes memory) external"}},"id":134360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2057:70:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134361,"nodeType":"ExpressionStatement","src":"2057:70:199"},{"assignments":[134364],"declarations":[{"constant":false,"id":134364,"mutability":"mutable","name":"system","nameLocation":"2179:6:199","nodeType":"VariableDeclaration","scope":134386,"src":"2163:22:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"},"typeName":{"id":134363,"nodeType":"UserDefinedTypeName","pathNode":{"id":134362,"name":"WorldTestSystem","nameLocations":["2163:15:199"],"nodeType":"IdentifierPath","referencedDeclaration":37452,"src":"2163:15:199"},"referencedDeclaration":37452,"src":"2163:15:199","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}},"visibility":"internal"}],"id":134369,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":134367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2188:19:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_WorldTestSystem_$37452_$","typeString":"function () returns (contract WorldTestSystem)"},"typeName":{"id":134366,"nodeType":"UserDefinedTypeName","pathNode":{"id":134365,"name":"WorldTestSystem","nameLocations":["2192:15:199"],"nodeType":"IdentifierPath","referencedDeclaration":37452,"src":"2192:15:199"},"referencedDeclaration":37452,"src":"2192:15:199","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}}},"id":134368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2188:21:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}},"nodeType":"VariableDeclarationStatement","src":"2163:46:199"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":134373,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"2239:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"id":134374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2248:14:199","memberName":"getNamespaceId","nodeType":"MemberAccess","referencedDeclaration":24191,"src":"2239:23:199","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":134375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2239:25:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}],"expression":{"id":134370,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"2215:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2221:17:199","memberName":"registerNamespace","nodeType":"MemberAccess","referencedDeclaration":24460,"src":"2215:23:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$returns$__$","typeString":"function (ResourceId) external"}},"id":134376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2215:50:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134377,"nodeType":"ExpressionStatement","src":"2215:50:199"},{"expression":{"arguments":[{"id":134381,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"2292:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":134382,"name":"system","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134364,"src":"2302:6:199","typeDescriptions":{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"}},{"hexValue":"74727565","id":134383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2310:4:199","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_WorldTestSystem_$37452","typeString":"contract WorldTestSystem"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":134378,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"2271:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2277:14:199","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"2271:20:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":134384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2271:44:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134385,"nodeType":"ExpressionStatement","src":"2271:44:199"}]},"functionSelector":"0a9254e4","implemented":true,"kind":"function","modifiers":[],"name":"setUp","nameLocation":"1948:5:199","parameters":{"id":134328,"nodeType":"ParameterList","parameters":[],"src":"1953:2:199"},"returnParameters":{"id":134329,"nodeType":"ParameterList","parameters":[],"src":"1963:0:199"},"scope":134860,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134500,"nodeType":"FunctionDefinition","src":"2324:1231:199","nodes":[],"body":{"id":134499,"nodeType":"Block","src":"2374:1181:199","nodes":[],"statements":[{"expression":{"arguments":[{"id":134393,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"2478:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134390,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"2469:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2472:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"2469:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2469:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134395,"nodeType":"ExpressionStatement","src":"2469:19:199"},{"expression":{"arguments":[{"hexValue":"726567697374657220612063616c6c626f756e642064656c65676174696f6e","id":134397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2509:33:199","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":134396,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2494:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2494:49:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134399,"nodeType":"ExpressionStatement","src":"2494:49:199"},{"expression":{"arguments":[{"id":134403,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"2581:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134404,"name":"CALLBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120838,"src":"2598:20:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134407,"name":"CallboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120474,"src":"2650:26:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CallboundDelegationControl_$120474_$","typeString":"type(contract CallboundDelegationControl)"}},"id":134408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2677:14:199","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":120473,"src":"2650:41:199","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":134409,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"2702:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134410,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"2713:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134413,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"2738:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2754:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"2738:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134415,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2765:2:199","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":134411,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2723:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134412,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2727:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"2723:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2723:45:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"31","id":134417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2770:1:199","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"id":134418,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2701:71:199","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":134405,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2626:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2630:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"2626:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2626:154:199","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":134400,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"2549:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2555:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"2549:24:199","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":134420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2549:237:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134421,"nodeType":"ExpressionStatement","src":"2549:237:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134422,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"2792:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2792:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134424,"nodeType":"ExpressionStatement","src":"2792:14:199"},{"expression":{"arguments":[{"id":134428,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"2889:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134425,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"2880:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2883:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"2880:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2880:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134430,"nodeType":"ExpressionStatement","src":"2880:19:199"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612063616c6c626f756e642064656c65676174696f6e","id":134432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2920:42:199","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":134431,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"2905:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2905:58:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134434,"nodeType":"ExpressionStatement","src":"2905:58:199"},{"assignments":[134436],"declarations":[{"constant":false,"id":134436,"mutability":"mutable","name":"returnData","nameLocation":"2982:10:199","nodeType":"VariableDeclaration","scope":134499,"src":"2969:23:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134435,"name":"bytes","nodeType":"ElementaryTypeName","src":"2969:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":134448,"initialValue":{"arguments":[{"id":134439,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"3010:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134440,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"3021:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134443,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"3046:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3062:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"3046:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134445,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3073:2:199","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":134441,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3031:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3035:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"3031:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3031:45:199","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":134437,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"2995:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3001:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"2995:14:199","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":134447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2969:108:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134449,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3083:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3083:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134451,"nodeType":"ExpressionStatement","src":"3083:14:199"},{"assignments":[134453],"declarations":[{"constant":false,"id":134453,"mutability":"mutable","name":"returnedAddress","nameLocation":"3111:15:199","nodeType":"VariableDeclaration","scope":134499,"src":"3103:23:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134452,"name":"address","nodeType":"ElementaryTypeName","src":"3103:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":134461,"initialValue":{"arguments":[{"id":134456,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134436,"src":"3140:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134458,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3153:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134457,"name":"address","nodeType":"ElementaryTypeName","src":"3153:7:199","typeDescriptions":{}}}],"id":134459,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3152:9:199","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":134454,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3129:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134455,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3133:6:199","memberName":"decode","nodeType":"MemberAccess","src":"3129:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3129:33:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"3103:59:199"},{"expression":{"arguments":[{"id":134463,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134453,"src":"3244:15:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134464,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"3261:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134462,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"3235:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3235:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134466,"nodeType":"ExpressionStatement","src":"3235:36:199"},{"expression":{"arguments":[{"id":134470,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"3337:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134467,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3328:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3331:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"3328:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3328:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134472,"nodeType":"ExpressionStatement","src":"3328:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134478,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"3392:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3405:24:199","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22397,"src":"3392:37:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":134480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3430:8:199","memberName":"selector","nodeType":"MemberAccess","src":"3392:46:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":134481,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"3440:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134482,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"3451:9:199","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":134476,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3369:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3373:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"3369:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3369:92:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134473,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3353:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3356:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"3353:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:109:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134485,"nodeType":"ExpressionStatement","src":"3353:109:199"},{"expression":{"arguments":[{"id":134489,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"3483:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134490,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"3494:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134493,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"3519:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3535:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"3519:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134495,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3546:2:199","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":134491,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3504:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3508:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"3504:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3504:45:199","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":134486,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"3468:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3474:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"3468:14:199","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":134497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3468:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134498,"nodeType":"ExpressionStatement","src":"3468:82:199"}]},"functionSelector":"e187dc8f","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromCallboundDelegation","nameLocation":"2333:31:199","parameters":{"id":134388,"nodeType":"ParameterList","parameters":[],"src":"2364:2:199"},"returnParameters":{"id":134389,"nodeType":"ParameterList","parameters":[],"src":"2374:0:199"},"scope":134860,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134647,"nodeType":"FunctionDefinition","src":"3559:1592:199","nodes":[],"body":{"id":134646,"nodeType":"Block","src":"3606:1545:199","nodes":[],"statements":[{"expression":{"arguments":[{"id":134506,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"3712:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134503,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"3703:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3706:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"3703:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3703:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134508,"nodeType":"ExpressionStatement","src":"3703:19:199"},{"expression":{"arguments":[{"hexValue":"726567697374657220612073797374656d626f756e642064656c65676174696f6e","id":134510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3743:35:199","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":134509,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"3728:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3728:51:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134512,"nodeType":"ExpressionStatement","src":"3728:51:199"},{"expression":{"arguments":[{"id":134516,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"3817:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134517,"name":"SYSTEMBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120856,"src":"3834:22:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134520,"name":"SystemboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120749,"src":"3879:28:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SystemboundDelegationControl_$120749_$","typeString":"type(contract SystemboundDelegationControl)"}},"id":134521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3908:14:199","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":120748,"src":"3879:43:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_userDefinedValueType$_ResourceId_$2782_$_t_uint256_$returns$__$","typeString":"function SystemboundDelegationControl.initDelegation(address,ResourceId,uint256)"}},{"components":[{"id":134522,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"3925:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134523,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"3936:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"hexValue":"32","id":134524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3946:1:199","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":134525,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3924:24:199","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":134518,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3864:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3868:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"3864:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3864:85:199","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":134513,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"3785:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3791:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"3785:24:199","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":134527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3785:170:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134528,"nodeType":"ExpressionStatement","src":"3785:170:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134529,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"3961:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3961:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134531,"nodeType":"ExpressionStatement","src":"3961:14:199"},{"expression":{"arguments":[{"id":134535,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"4058:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134532,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4049:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4052:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4049:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4049:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134537,"nodeType":"ExpressionStatement","src":"4049:19:199"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612073797374656d626f756e642064656c65676174696f6e","id":134539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4089:44:199","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":134538,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"4074:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4074:60:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134541,"nodeType":"ExpressionStatement","src":"4074:60:199"},{"assignments":[134543],"declarations":[{"constant":false,"id":134543,"mutability":"mutable","name":"returnData","nameLocation":"4153:10:199","nodeType":"VariableDeclaration","scope":134646,"src":"4140:23:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134542,"name":"bytes","nodeType":"ElementaryTypeName","src":"4140:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":134555,"initialValue":{"arguments":[{"id":134546,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"4181:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134547,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"4192:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134550,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"4217:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4233:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"4217:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134552,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4244:2:199","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":134548,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4202:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4206:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"4202:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4202:45:199","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":134544,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"4166:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4172:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"4166:14:199","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":134554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4166:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4140:108:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134556,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"4254:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134558,"nodeType":"ExpressionStatement","src":"4254:14:199"},{"assignments":[134560],"declarations":[{"constant":false,"id":134560,"mutability":"mutable","name":"returnedAddress","nameLocation":"4282:15:199","nodeType":"VariableDeclaration","scope":134646,"src":"4274:23:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134559,"name":"address","nodeType":"ElementaryTypeName","src":"4274:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":134568,"initialValue":{"arguments":[{"id":134563,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134543,"src":"4311:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4324:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134564,"name":"address","nodeType":"ElementaryTypeName","src":"4324:7:199","typeDescriptions":{}}}],"id":134566,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4323:9:199","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":134561,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4300:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4304:6:199","memberName":"decode","nodeType":"MemberAccess","src":"4300:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4300:33:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"4274:59:199"},{"expression":{"arguments":[{"id":134570,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134560,"src":"4415:15:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134571,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"4432:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134569,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4406:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4406:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134573,"nodeType":"ExpressionStatement","src":"4406:36:199"},{"expression":{"arguments":[{"id":134577,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"4537:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134574,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4528:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4531:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4528:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4528:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134579,"nodeType":"ExpressionStatement","src":"4528:19:199"},{"expression":{"id":134596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":134580,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134543,"src":"4553:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":134583,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"4581:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134584,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"4592:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134587,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"4617:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4633:4:199","memberName":"echo","nodeType":"MemberAccess","referencedDeclaration":37292,"src":"4617:20:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$37248_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"}},{"components":[{"arguments":[{"hexValue":"30","id":134591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4648:1:199","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":134590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4640:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":134589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4640:7:199","typeDescriptions":{}}},"id":134592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4640:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":134593,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4639:12:199","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_declaration_view$_t_bytes32_$returns$_t_struct$_WorldTestSystemReturn_$37248_memory_ptr_$","typeString":"function WorldTestSystem.echo(bytes32) view returns (struct WorldTestSystemReturn memory)"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":134585,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4602:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4606:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"4602:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4602:50:199","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":134581,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"4566:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4572:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"4566:14:199","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":134595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4566:87:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4553:100:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134597,"nodeType":"ExpressionStatement","src":"4553:100:199"},{"assignments":[134600],"declarations":[{"constant":false,"id":134600,"mutability":"mutable","name":"returnedStruct","nameLocation":"4688:14:199","nodeType":"VariableDeclaration","scope":134646,"src":"4659:43:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_memory_ptr","typeString":"struct WorldTestSystemReturn"},"typeName":{"id":134599,"nodeType":"UserDefinedTypeName","pathNode":{"id":134598,"name":"WorldTestSystemReturn","nameLocations":["4659:21:199"],"nodeType":"IdentifierPath","referencedDeclaration":37248,"src":"4659:21:199"},"referencedDeclaration":37248,"src":"4659:21:199","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_storage_ptr","typeString":"struct WorldTestSystemReturn"}},"visibility":"internal"}],"id":134607,"initialValue":{"arguments":[{"id":134603,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134543,"src":"4716:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134604,"name":"WorldTestSystemReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37248,"src":"4729:21:199","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$37248_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"id":134605,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4728:23:199","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$37248_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_struct$_WorldTestSystemReturn_$37248_storage_ptr_$","typeString":"type(struct WorldTestSystemReturn storage pointer)"}],"expression":{"id":134601,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4705:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4709:6:199","memberName":"decode","nodeType":"MemberAccess","src":"4705:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4705:47:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"nodeType":"VariableDeclarationStatement","src":"4659:93:199"},{"expression":{"arguments":[{"expression":{"id":134609,"name":"returnedStruct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134600,"src":"4834:14:199","typeDescriptions":{"typeIdentifier":"t_struct$_WorldTestSystemReturn_$37248_memory_ptr","typeString":"struct WorldTestSystemReturn memory"}},"id":134610,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4849:6:199","memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":37245,"src":"4834:21:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134611,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"4857:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134608,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"4825:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134612,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4825:42:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134613,"nodeType":"ExpressionStatement","src":"4825:42:199"},{"expression":{"arguments":[{"id":134617,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"4933:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134614,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4924:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4927:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"4924:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4924:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134619,"nodeType":"ExpressionStatement","src":"4924:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134625,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"4988:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5001:24:199","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22397,"src":"4988:37:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":134627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5026:8:199","memberName":"selector","nodeType":"MemberAccess","src":"4988:46:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":134628,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"5036:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134629,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"5047:9:199","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":134623,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4965:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4969:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4965:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4965:92:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134620,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"4949:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4952:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"4949:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4949:109:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134632,"nodeType":"ExpressionStatement","src":"4949:109:199"},{"expression":{"arguments":[{"id":134636,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"5079:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134637,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"5090:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134640,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"5115:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5131:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"5115:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134642,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5142:2:199","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":134638,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5100:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134639,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5104:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"5100:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5100:45:199","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":134633,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"5064:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5070:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"5064:14:199","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":134644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5064:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134645,"nodeType":"ExpressionStatement","src":"5064:82:199"}]},"functionSelector":"d671f65b","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromSystemDelegation","nameLocation":"3568:28:199","parameters":{"id":134501,"nodeType":"ParameterList","parameters":[],"src":"3596:2:199"},"returnParameters":{"id":134502,"nodeType":"ParameterList","parameters":[],"src":"3606:0:199"},"scope":134860,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134796,"nodeType":"FunctionDefinition","src":"5155:1492:199","nodes":[],"body":{"id":134795,"nodeType":"Block","src":"5205:1442:199","nodes":[],"statements":[{"assignments":[134651],"declarations":[{"constant":false,"id":134651,"mutability":"mutable","name":"maxTimestamp","nameLocation":"5219:12:199","nodeType":"VariableDeclaration","scope":134795,"src":"5211:20:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":134650,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":134653,"initialValue":{"hexValue":"34323432","id":134652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5234:4:199","typeDescriptions":{"typeIdentifier":"t_rational_4242_by_1","typeString":"int_const 4242"},"value":"4242"},"nodeType":"VariableDeclarationStatement","src":"5211:27:199"},{"expression":{"arguments":[{"hexValue":"31","id":134657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5291:1:199","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":134654,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5283:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5286:4:199","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":59874,"src":"5283:7:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":134658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5283:10:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134659,"nodeType":"ExpressionStatement","src":"5283:10:199"},{"expression":{"arguments":[{"id":134663,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"5350:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134660,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5341:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5344:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5341:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5341:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134665,"nodeType":"ExpressionStatement","src":"5341:19:199"},{"expression":{"arguments":[{"hexValue":"726567697374657220612074696d65626f756e642064656c65676174696f6e","id":134667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5381:33:199","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":134666,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5366:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:49:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134669,"nodeType":"ExpressionStatement","src":"5366:49:199"},{"expression":{"arguments":[{"id":134673,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"5453:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134674,"name":"TIMEBOUND_DELEGATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120874,"src":"5470:20:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134677,"name":"TimeboundDelegationControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120806,"src":"5513:26:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TimeboundDelegationControl_$120806_$","typeString":"type(contract TimeboundDelegationControl)"}},"id":134678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5540:14:199","memberName":"initDelegation","nodeType":"MemberAccess","referencedDeclaration":120805,"src":"5513:41:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function TimeboundDelegationControl.initDelegation(address,uint256)"}},{"components":[{"id":134679,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"5557:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134680,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134651,"src":"5568:12:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":134681,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5556:25:199","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":134675,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5498:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5502:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"5498:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:84:199","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":134670,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"5421:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5427:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"5421:24:199","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":134683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5421:167:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134684,"nodeType":"ExpressionStatement","src":"5421:167:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134685,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5594:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5594:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134687,"nodeType":"ExpressionStatement","src":"5594:14:199"},{"expression":{"arguments":[{"id":134691,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"5691:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134688,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"5682:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"5682:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5682:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134693,"nodeType":"ExpressionStatement","src":"5682:19:199"},{"expression":{"arguments":[{"hexValue":"63616c6c20612073797374656d2076696120612074696d65626f756e642064656c65676174696f6e","id":134695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5722:42:199","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":134694,"name":"startGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":84,"src":"5707:14:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":134696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5707:58:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134697,"nodeType":"ExpressionStatement","src":"5707:58:199"},{"assignments":[134699],"declarations":[{"constant":false,"id":134699,"mutability":"mutable","name":"returnData","nameLocation":"5784:10:199","nodeType":"VariableDeclaration","scope":134795,"src":"5771:23:199","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":134698,"name":"bytes","nodeType":"ElementaryTypeName","src":"5771:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":134711,"initialValue":{"arguments":[{"id":134702,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"5812:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134703,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"5823:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134706,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"5848:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5864:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"5848:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134708,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5875:2:199","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":134704,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5833:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5837:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"5833:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5833:45:199","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":134700,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"5797:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5803:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"5797:14:199","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":134710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5797:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5771:108:199"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":134712,"name":"endGasReport","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":138,"src":"5885:12:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":134713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5885:14:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134714,"nodeType":"ExpressionStatement","src":"5885:14:199"},{"assignments":[134716],"declarations":[{"constant":false,"id":134716,"mutability":"mutable","name":"returnedAddress","nameLocation":"5913:15:199","nodeType":"VariableDeclaration","scope":134795,"src":"5905:23:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134715,"name":"address","nodeType":"ElementaryTypeName","src":"5905:7:199","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":134724,"initialValue":{"arguments":[{"id":134719,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134699,"src":"5942:10:199","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":134721,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5955:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134720,"name":"address","nodeType":"ElementaryTypeName","src":"5955:7:199","typeDescriptions":{}}}],"id":134722,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5954:9:199","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":134717,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5931:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5935:6:199","memberName":"decode","nodeType":"MemberAccess","src":"5931:10:199","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":134723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5931:33:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"VariableDeclarationStatement","src":"5905:59:199"},{"expression":{"arguments":[{"id":134726,"name":"returnedAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134716,"src":"6046:15:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134727,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"6063:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":134725,"name":"assertEq","nodeType":"Identifier","overloadedDeclarations":[49399,49424,49437,49453,49495,49537,49579,49616,49653,49690,47234,47259,47289,47314,47373,47398,47428,47453,48926,48961],"referencedDeclaration":47234,"src":"6037:8:199","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":134728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6037:36:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134729,"nodeType":"ExpressionStatement","src":"6037:36:199"},{"expression":{"arguments":[{"id":134733,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134651,"src":"6173:12:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":134730,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6165:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6168:4:199","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":59874,"src":"6165:7:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":134734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6165:21:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134735,"nodeType":"ExpressionStatement","src":"6165:21:199"},{"expression":{"arguments":[{"id":134739,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"6201:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134736,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6192:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6195:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6192:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6192:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134741,"nodeType":"ExpressionStatement","src":"6192:19:199"},{"expression":{"arguments":[{"id":134745,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"6232:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134746,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"6243:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134749,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"6268:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6284:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"6268:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6295:2:199","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":134747,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6253:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6257:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"6253:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6253:45:199","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":134742,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"6217:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6223:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"6217:14:199","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":134753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6217:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134754,"nodeType":"ExpressionStatement","src":"6217:82:199"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":134760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":134758,"name":"maxTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134651,"src":"6397:12:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":134759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6412:1:199","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6397:16:199","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":134755,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6389:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6392:4:199","memberName":"warp","nodeType":"MemberAccess","referencedDeclaration":59874,"src":"6389:7:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":134761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6389:25:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134762,"nodeType":"ExpressionStatement","src":"6389:25:199"},{"expression":{"arguments":[{"id":134766,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"6429:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134763,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6420:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6423:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"6420:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6420:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134768,"nodeType":"ExpressionStatement","src":"6420:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134774,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"6484:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6497:24:199","memberName":"World_DelegationNotFound","nodeType":"MemberAccess","referencedDeclaration":22397,"src":"6484:37:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$__$","typeString":"function (address,address) pure"}},"id":134776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6522:8:199","memberName":"selector","nodeType":"MemberAccess","src":"6484:46:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":134777,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"6532:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134778,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"6543:9:199","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":134772,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6461:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6465:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"6461:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6461:92:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134769,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"6445:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6448:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"6445:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6445:109:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134781,"nodeType":"ExpressionStatement","src":"6445:109:199"},{"expression":{"arguments":[{"id":134785,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"6575:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134786,"name":"systemId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134315,"src":"6586:8:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"expression":{"id":134789,"name":"WorldTestSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37452,"src":"6611:15:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldTestSystem_$37452_$","typeString":"type(contract WorldTestSystem)"}},"id":134790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6627:9:199","memberName":"msgSender","nodeType":"MemberAccess","referencedDeclaration":37277,"src":"6611:25:199","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$__$returns$_t_address_$","typeString":"function WorldTestSystem.msgSender() view returns (address)"}},{"components":[],"id":134791,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6638:2:199","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":134787,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6596:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6600:10:199","memberName":"encodeCall","nodeType":"MemberAccess","src":"6596:14:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":134792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6596:45:199","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":134782,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"6560:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6566:8:199","memberName":"callFrom","nodeType":"MemberAccess","referencedDeclaration":22474,"src":"6560:14:199","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":134793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6560:82:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":134794,"nodeType":"ExpressionStatement","src":"6560:82:199"}]},"functionSelector":"89403ab3","implemented":true,"kind":"function","modifiers":[],"name":"testCallFromTimeboundDelegation","nameLocation":"5164:31:199","parameters":{"id":134648,"nodeType":"ParameterList","parameters":[],"src":"5195:2:199"},"returnParameters":{"id":134649,"nodeType":"ParameterList","parameters":[],"src":"5205:0:199"},"scope":134860,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":134859,"nodeType":"FunctionDefinition","src":"6651:856:199","nodes":[],"body":{"id":134858,"nodeType":"Block","src":"6719:788:199","nodes":[],"statements":[{"assignments":[134801],"declarations":[{"constant":false,"id":134801,"mutability":"mutable","name":"noDelegationControlSystem","nameLocation":"6797:25:199","nodeType":"VariableDeclaration","scope":134858,"src":"6790:32:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"},"typeName":{"id":134800,"nodeType":"UserDefinedTypeName","pathNode":{"id":134799,"name":"System","nameLocations":["6790:6:199"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"6790:6:199"},"referencedDeclaration":22601,"src":"6790:6:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}},"visibility":"internal"}],"id":134806,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":134804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"6825:10:199","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$__$returns$_t_contract$_System_$22601_$","typeString":"function () returns (contract System)"},"typeName":{"id":134803,"nodeType":"UserDefinedTypeName","pathNode":{"id":134802,"name":"System","nameLocations":["6829:6:199"],"nodeType":"IdentifierPath","referencedDeclaration":22601,"src":"6829:6:199"},"referencedDeclaration":22601,"src":"6829:6:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}}},"id":134805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6825:12:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}},"nodeType":"VariableDeclarationStatement","src":"6790:47:199"},{"assignments":[134809],"declarations":[{"constant":false,"id":134809,"mutability":"mutable","name":"noDelegationControlId","nameLocation":"6854:21:199","nodeType":"VariableDeclaration","scope":134858,"src":"6843:32:199","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},"typeName":{"id":134808,"nodeType":"UserDefinedTypeName","pathNode":{"id":134807,"name":"ResourceId","nameLocations":["6843:10:199"],"nodeType":"IdentifierPath","referencedDeclaration":2782,"src":"6843:10:199"},"referencedDeclaration":2782,"src":"6843:10:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"visibility":"internal"}],"id":134816,"initialValue":{"arguments":[{"id":134812,"name":"RESOURCE_SYSTEM","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37052,"src":"6920:15:199","typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},{"hexValue":"6e616d657370616365","id":134813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6954:11:199","typeDescriptions":{"typeIdentifier":"t_stringliteral_300f800aee223ec4f0f7f13ec0e9fb1b8a8186bbfdb275780ce6218872155189","typeString":"literal_string \"namespace\""},"value":"namespace"},{"hexValue":"6e6f44656c65676174696f6e","id":134814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6979:14:199","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":134810,"name":"WorldResourceIdLib","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24145,"src":"6878:18:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WorldResourceIdLib_$24145_$","typeString":"type(library WorldResourceIdLib)"}},"id":134811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6897:6:199","memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":24073,"src":"6878:25:199","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":134815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":["6912:6:199","6943:9:199","6973:4:199"],"names":["typeId","namespace","name"],"nodeType":"FunctionCall","src":"6878:122:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},"nodeType":"VariableDeclarationStatement","src":"6843:157:199"},{"expression":{"arguments":[{"id":134820,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134809,"src":"7027:21:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"id":134821,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134801,"src":"7050:25:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}},{"hexValue":"74727565","id":134822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7077:4:199","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"},{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":134817,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"7006:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7012:14:199","memberName":"registerSystem","nodeType":"MemberAccess","referencedDeclaration":24491,"src":"7006:20:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_userDefinedValueType$_ResourceId_$2782_$_t_contract$_WorldContextConsumer_$23800_$_t_bool_$returns$__$","typeString":"function (ResourceId,contract WorldContextConsumer,bool) external"}},"id":134823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7006:76:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134824,"nodeType":"ExpressionStatement","src":"7006:76:199"},{"expression":{"arguments":[{"id":134828,"name":"delegator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134321,"src":"7205:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":134825,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7196:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7199:5:199","memberName":"prank","nodeType":"MemberAccess","referencedDeclaration":59937,"src":"7196:8:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":134829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7196:19:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134830,"nodeType":"ExpressionStatement","src":"7196:19:199"},{"expression":{"arguments":[{"arguments":[{"expression":{"expression":{"id":134836,"name":"IWorldErrors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22430,"src":"7276:12:199","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWorldErrors_$22430_$","typeString":"type(contract IWorldErrors)"}},"id":134837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7289:27:199","memberName":"World_InterfaceNotSupported","nodeType":"MemberAccess","referencedDeclaration":22414,"src":"7276:40:199","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes4_$returns$__$","typeString":"function (address,bytes4) pure"}},"id":134838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7317:8:199","memberName":"selector","nodeType":"MemberAccess","src":"7276:49:199","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"arguments":[{"id":134841,"name":"noDelegationControlSystem","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134801,"src":"7343:25:199","typeDescriptions":{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_System_$22601","typeString":"contract System"}],"id":134840,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7335:7:199","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134839,"name":"address","nodeType":"ElementaryTypeName","src":"7335:7:199","typeDescriptions":{}}},"id":134842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7335:34:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134843,"name":"DELEGATION_CONTROL_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22169,"src":"7379:31:199","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":134834,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7244:3:199","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":134835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7248:18:199","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"7244:22:199","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":134844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7244:174:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":134831,"name":"vm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49264,"src":"7221:2:199","typeDescriptions":{"typeIdentifier":"t_contract$_Vm_$60339","typeString":"contract Vm"}},"id":134833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7224:12:199","memberName":"expectRevert","nodeType":"MemberAccess","referencedDeclaration":59993,"src":"7221:15:199","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory) external"}},"id":134845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7221:203:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134846,"nodeType":"ExpressionStatement","src":"7221:203:199"},{"expression":{"arguments":[{"id":134850,"name":"delegatee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134327,"src":"7455:9:199","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":134851,"name":"noDelegationControlId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134809,"src":"7466:21:199","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ResourceId_$2782","typeString":"ResourceId"}},{"arguments":[{"hexValue":"31","id":134854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7499:1:199","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":134853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7489:9:199","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":134852,"name":"bytes","nodeType":"ElementaryTypeName","src":"7493:5:199","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":134855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7489:12:199","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":134847,"name":"world","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":134306,"src":"7430:5:199","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseWorld_$24400","typeString":"contract IBaseWorld"}},"id":134849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7436:18:199","memberName":"registerDelegation","nodeType":"MemberAccess","referencedDeclaration":24523,"src":"7430:24:199","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":134856,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7430:72:199","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":134857,"nodeType":"ExpressionStatement","src":"7430:72:199"}]},"functionSelector":"9d4218e6","implemented":true,"kind":"function","modifiers":[],"name":"testRegisterDelegationRevertInterfaceNotSupported","nameLocation":"6660:49:199","parameters":{"id":134797,"nodeType":"ParameterList","parameters":[],"src":"6709:2:199"},"returnParameters":{"id":134798,"nodeType":"ParameterList","parameters":[],"src":"6719:0:199"},"scope":134860,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":134296,"name":"Test","nameLocations":["1620:4:199"],"nodeType":"IdentifierPath","referencedDeclaration":58812,"src":"1620:4:199"},"id":134297,"nodeType":"InheritanceSpecifier","src":"1620:4:199"},{"baseName":{"id":134298,"name":"GasReporter","nameLocations":["1626:11:199"],"nodeType":"IdentifierPath","referencedDeclaration":226,"src":"1626:11:199"},"id":134299,"nodeType":"InheritanceSpecifier","src":"1626:11:199"}],"canonicalName":"StandardDelegationsModuleTest","contractDependencies":[22601,23730,35431,35451,35650,35830,36019,37452,120653],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[134860,226,58812,49271,49268,58761,54499,54209,53445,51391,50698,49205],"name":"StandardDelegationsModuleTest","nameLocation":"1587:29:199","scope":134861,"usedErrors":[],"usedEvents":[46919,46923,46927,46931,46935,46939,46943,46947,46953,46959,46967,46975,46981,46987,46993,46999,49293,49298,49303,49310,49317,49324]}],"license":"MIT"},"id":199}
|