@excubiae/contracts
Version:
1 lines • 217 kB
JSON
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"deployer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"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":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"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":"view"},{"type":"function","name":"guarded","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"invalidEvidence","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"invalidGroupId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"invalidGroupIdEvidence","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"invalidGroupIdProof","inputs":[],"outputs":[{"name":"merkleTreeDepth","type":"uint256","internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","internalType":"uint256"},{"name":"nullifier","type":"uint256","internalType":"uint256"},{"name":"message","type":"uint256","internalType":"uint256"},{"name":"scope","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"invalidProof","inputs":[],"outputs":[{"name":"merkleTreeDepth","type":"uint256","internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","internalType":"uint256"},{"name":"nullifier","type":"uint256","internalType":"uint256"},{"name":"message","type":"uint256","internalType":"uint256"},{"name":"scope","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"invalidProverEvidence","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"invalidProverProof","inputs":[],"outputs":[{"name":"merkleTreeDepth","type":"uint256","internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","internalType":"uint256"},{"name":"nullifier","type":"uint256","internalType":"uint256"},{"name":"message","type":"uint256","internalType":"uint256"},{"name":"scope","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"notOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"notSubject","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"subject","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"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":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"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":"test_factory_deployAndInitialize","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_policyCheckerMockks_enforce_whenCheckFails_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenAlreadyEnforced_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenInvalidProof_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenScopeGroupIdIncorrect_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenScopeProverIncorrect_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_enforce_whenValid_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_getAppendedBytes","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_policy_setTarget_whenAlreadySet_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_setTarget_whenCallerNotOwner_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_setTarget_whenValidAddress_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_setTarget_whenZeroAddress_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_target_returnsExpectedAddress","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_policy_trait_returnsCorrectValue","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_policy_whenAlreadyInitialized_reverts","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validEvidence","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"validGroupId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validProof","inputs":[],"outputs":[{"name":"merkleTreeDepth","type":"uint256","internalType":"uint256"},{"name":"merkleTreeRoot","type":"uint256","internalType":"uint256"},{"name":"nullifier","type":"uint256","internalType":"uint256"},{"name":"message","type":"uint256","internalType":"uint256"},{"name":"scope","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"Enforced","inputs":[{"name":"subject","type":"address","indexed":true,"internalType":"address"},{"name":"guarded","type":"address","indexed":true,"internalType":"address"},{"name":"evidence","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"TargetSet","inputs":[{"name":"guarded","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"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":"0x60806040819052600c8054600160ff199182168117909255601f8054909116821790556001625e79b760e01b03199091526084525f5160206174e15f395f51905f5263ffa1864960a4602060405180830381865afa158015610063573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061008791906106c3565b602680546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600260048201525f5160206174e15f395f51905f529063ffa1864990602401602060405180830381865afa1580156100f1573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061011591906106c3565b602780546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600360048201525f5160206174e15f395f51905f529063ffa1864990602401602060405180830381865afa15801561017f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101a391906106c3565b602880546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b031981526004808201525f5160206174e15f395f51905f529063ffa1864990602401602060405180830381865afa15801561020c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023091906106c3565b602980546001600160a01b0319166001600160a01b03929092169190911790556040516001625e79b760e01b03198152600560048201525f5160206174e15f395f51905f529063ffa1864990602401602060405180830381865afa15801561029a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102be91906106c3565b602a80546001600160a01b0319166001600160a01b03929092169190911790555f602b8190556001602c8190556040805160c0808201835292815260208082018581528284018681526060808501888152602854821b6001600160601b0319166080808801918252885161010081018a528b81529687018b90529786018a905291850189905295840188905260a080850189905296840188905260e08401979097529483018290528251602d9081559051602e559351602f559151603055925160315561038f906032906008610671565b50506040805160c08082018352600182525f60208084018281528486018381526060808701858152602b54602a54831b6001600160601b031916176080808a019182528a5161010081018c5288815296870188905299860187905291850186905297840185905260a080850186905295840185905260e08401949094529385018290528451603a9081559051603b559251603c559351603d5551603e559092509061043e90603f906008610671565b50506040805160c08082018352600182525f60208084018281528486018381526060808701858152602c54602854831b6001600160601b031916176080808a019182528a5161010081018c5288815296870188905299860187905291850186905297840185905260a080850186905295840185905260e084019490945293850182905284516047908155905160485592516049559351604a5551604b55909250906104ed90604c906008610671565b50506040805160c0808201835260018083525f60208085018281528587018481526060808801858152602b54602854831b6001600160601b031916176080808b019182528b5161010081018d5298895295880187905299870186905290860185905292850184905260a080860185905295850184905260e085019390935293850183905284516054908155935160555590516056555160575592516058559092509061059d906059906008610671565b505050602d6040516020016105b291906106f0565b604051602081830303815290604052606190816105cf91906107eb565b50603a6040516020016105e291906106f0565b604051602081830303815290604052606290816105ff91906107eb565b50604760405160200161061291906106f0565b6040516020818303038152906040526063908161062f91906107eb565b50605460405160200161064291906106f0565b6040516020818303038152906040526064908161065f91906107eb565b5034801561066b575f5ffd5b506108a5565b826008810192821561069f579160200282015b8281111561069f578251825591602001919060010190610684565b506106ab9291506106af565b5090565b5b808211156106ab575f81556001016106b0565b5f602082840312156106d3575f5ffd5b81516001600160a01b03811681146106e9575f5ffd5b9392505050565b81548152600182015460208201526002820154604082015260038201546060820152600482015460808201526101a0810160a08201600584015f5b600881101561074a57815483526020909201916001918201910161072b565b50505092915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061077b57607f821691505b60208210810361079957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156107e657805f5260205f20601f840160051c810160208510156107c45750805b601f840160051c820191505b818110156107e3575f81556001016107d0565b50505b505050565b81516001600160401b0381111561080457610804610753565b610818816108128454610767565b8461079f565b6020601f82116001811461084a575f83156108335750848201515b5f19600385901b1c1916600184901b1784556107e3565b5f84815260208120601f198516915b828110156108795787850151825560209485019460019092019101610859565b508482101561089657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b616c2f806108b25f395ff3fe608060405234801561000f575f5ffd5b50600436106102d8575f3560e01c80638498417c11610187578063cee617b4116100dd578063e20c9f7111610093578063eb5579d61161006e578063eb5579d61461059e578063f661a689146105a6578063fa7626d4146105ae575f5ffd5b8063e20c9f7114610586578063e5f05d701461058e578063e6a8775d14610596575f5ffd5b8063d5f39488116100c3578063d5f394881461053e578063d81a69591461055e578063db5b7a511461057e575f5ffd5b8063cee617b41461051c578063d25a8bd714610536575f5ffd5b80639fa5dc801161013d578063b5508aa911610118578063b5508aa9146104f4578063ba414fa6146104fc578063c7e76f9114610514575f5ffd5b80639fa5dc80146104ca578063a2c8490e146104d2578063b0464fdc146104ec575f5ffd5b806389d8bda91161016d57806389d8bda9146104a5578063916a17c6146104ad57806399ccfc42146104c2575f5ffd5b80638498417c1461048857806385226c8114610490575f5ffd5b80633e5e3c231161023c57806366d9a9a0116101f257806376548b75116101cd57806376548b751461046f5780637bb29ca91461047757806383a323c514610480575f5ffd5b806366d9a9a01461043257806372f7a030146104475780637468b87f14610467575f5ffd5b80634e693a63116102225780634e693a631461040b578063536c82ed14610413578063629fe4241461041b575f5ffd5b80633e5e3c23146103fb5780633f7286f414610403575f5ffd5b80630b584c4a11610291578063251c9d6311610277578063251c9d63146103ac5780632ade3880146103cc57806332756e33146103e1575f5ffd5b80630b584c4a1461038f5780631ed7831c14610397575f5ffd5b806307bfb8c5116102c157806307bfb8c5146103385780630a59a98c146103425780630a9254e414610387575f5ffd5b80630187ba5c146102dc57806307a86e8514610323575b5f5ffd5b6054546055546056546057546058546102f6949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0015b60405180910390f35b61032b6105bb565b60405161031a9190613f3b565b610340610647565b005b6028546103629073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161031a565b610340610a42565b61034061150e565b61039f61185e565b60405161031a9190613f54565b6029546103629073ffffffffffffffffffffffffffffffffffffffff1681565b6103d46118cb565b60405161031a9190613fac565b604754604854604954604a54604b546102f6949392919085565b61039f611a14565b61039f611a7f565b610340611aea565b610340611ca1565b610424602c5481565b60405190815260200161031a565b61043a612164565b60405161031a919061411a565b6027546103629073ffffffffffffffffffffffffffffffffffffffff1681565b6103406122dd565b610340612646565b610424602b5481565b61032b612870565b61032b61287d565b61049861288a565b60405161031a91906141b6565b610340612955565b6104b5612a45565b60405161031a919061422b565b610340612b48565b610340612d06565b603a54603b54603c54603d54603e546102f6949392919085565b6104b5613056565b610498613159565b610504613224565b604051901515815260200161031a565b6103406132f4565b602d54602e54602f546030546031546102f6949392919085565b6103406134db565b6026546103629073ffffffffffffffffffffffffffffffffffffffff1681565b602a546103629073ffffffffffffffffffffffffffffffffffffffff1681565b6103406135d4565b61039f61378a565b6103406137f5565b61034061392c565b610340613c7c565b61032b613d16565b601f546105049060ff1681565b606280546105c8906142cd565b80601f01602080910402602001604051908101604052809291908181526020018280546105f4906142cd565b801561063f5780601f106106165761010080835404028352916020019161063f565b820191905f5260205f20905b81548152906001019060200180831161062257829003601f168201915b505050505081565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156106c3575f5ffd5b505af11580156106d5573d5f5f3e3d5ffd5b5050602480546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116935063776d1a019250015f604051808303815f87803b158015610744575f5ffd5b505af1158015610756573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156107c1575f5ffd5b505af11580156107d3573d5f5f3e3d5ffd5b50506027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015610853575f5ffd5b505af1158015610865573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f471549450000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb3935061090b9201613f3b565b5f604051808303815f87803b158015610922575f5ffd5b505af1158015610934573d5f5f3e3d5ffd5b50506024546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef1935061099692909116906061906004016143f3565b5f604051808303815f87803b1580156109ad575f5ffd5b505af11580156109bf573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a2a575f5ffd5b505af1158015610a3c573d5f5f3e3d5ffd5b50505050565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015610abe575f5ffd5b505af1158015610ad0573d5f5f3e3d5ffd5b505f925060019150610adf9050565b604051908082528060200260200182016040528015610b08578160200160208202803683370190505b506040805160028082526060820183529293505f92909160208301908036833750506040805160028082526060820183529394505f9390925090602083019080368337019050509050602b54835f81518110610b6657610b66614456565b602002602001018181525050602d60020154825f81518110610b8a57610b8a614456565b60200260200101818152505060546002015482600181518110610baf57610baf614456565b6020026020010181815250506001815f81518110610bcf57610bcf614456565b6020026020010190151590811515815250505f81600181518110610bf557610bf5614456565b602002602001019015159081151581525050828282604051610c1690613ebb565b610c22939291906144b3565b604051809103905ff080158015610c3b573d5f5f3e3d5ffd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051610c8890613ec8565b604051809103905ff080158015610ca1573d5f5f3e3d5ffd5b50602080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055604051610cf390613ed5565b604051809103905ff080158015610d0c573d5f5f3e3d5ffd5b50602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055604051610d5e90613ee2565b604051809103905ff080158015610d77573d5f5f3e3d5ffd5b5060255f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166341af2f526040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610e1e575f5ffd5b505af1158015610e30573d5f5f3e3d5ffd5b5050602254601f54602b546040517f4956eaf000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff61010090930483166004820152602481019190915291169250634956eaf091506044016020604051808303815f875af1158015610eb5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed99190614546565b505f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663191553a46040518163ffffffff1660e01b81526004015f604051808303815f875af1158015610f46573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610f8b919081019061468f565b90505f815f81518110610fa057610fa0614456565b60200260200101515f0151600181518110610fbd57610fbd614456565b6020908102919091010151602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055604080517f41af2f520000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916341af2f52916004808201925f9290919082900301818387803b15801561106f575f5ffd5b505af1158015611081573d5f5f3e3d5ffd5b50506025546021546040517f4c96a38900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169250634c96a38991506024016020604051808303815f875af11580156110f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111a9190614546565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663191553a46040518163ffffffff1660e01b81526004015f604051808303815f875af1158015611186573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111cb919081019061468f565b91505f825f815181106111e0576111e0614456565b60200260200101515f01516001815181106111fd576111fd614456565b6020908102919091010151602380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055604080517f41af2f520000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916341af2f52916004808201925f9290919082900301818387803b1580156112af575f5ffd5b505af11580156112c1573d5f5f3e3d5ffd5b50506025546020546040517f4c96a38900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169250634c96a38991506024016020604051808303815f875af1158015611336573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135a9190614546565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663191553a46040518163ffffffff1660e01b81526004015f604051808303815f875af11580156113c6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261140b919081019061468f565b92505f835f8151811061142057611420614456565b60200260200101515f015160018151811061143d5761143d614456565b6020908102919091010151602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055604080517f90c5013b0000000000000000000000000000000000000000000000000000000081529051919250737109709ecfa91a80626ff3989d68f67f5b1dd12d916390c5013b916004808201925f9290919082900301818387803b1580156114ef575f5ffd5b505af1158015611501573d5f5f3e3d5ffd5b5050505050505050505050565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561158a575f5ffd5b505af115801561159c573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b15801561160c575f5ffd5b505af115801561161e573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611689575f5ffd5b505af115801561169b573d5f5f3e3d5ffd5b50506027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b15801561171b575f5ffd5b505af115801561172d573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdb140e400000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb393506117d39201613f3b565b5f604051808303815f87803b1580156117ea575f5ffd5b505af11580156117fc573d5f5f3e3d5ffd5b50506023546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef1935061099692909116906063906004016143f3565b606060168054806020026020016040519081016040528092919081815260200182805480156118c157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611896575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611a0b575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156119f4578382905f5260205f20018054611969906142cd565b80601f0160208091040260200160405190810160405280929190818152602001828054611995906142cd565b80156119e05780601f106119b7576101008083540402835291602001916119e0565b820191905f5260205f20905b8154815290600101906020018083116119c357829003601f168201915b50505050508152602001906001019061194c565b5050505081525050815260200190600101906118ee565b50505050905090565b606060188054806020026020016040519081016040528092919081815260200182805480156118c157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611896575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156118c157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611896575050505050905090565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611b66575f5ffd5b505af1158015611b78573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd92e233d0000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350611c1e9201613f3b565b5f604051808303815f87803b158015611c35575f5ffd5b505af1158015611c47573d5f5f3e3d5ffd5b50506023546040517f776d1a010000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff909116925063776d1a019150602401610996565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611d1d575f5ffd5b505af1158015611d2f573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b158015611d9f575f5ffd5b505af1158015611db1573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611e1c575f5ffd5b505af1158015611e2e573d5f5f3e3d5ffd5b50506027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015611eae575f5ffd5b505af1158015611ec0573d5f5f3e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b158015611f3c575f5ffd5b505af1158015611f4e573d5f5f3e3d5ffd5b505060275460285460405173ffffffffffffffffffffffffffffffffffffffff9283169450911691507fc013b39287cb7a53f776482ac9573829321f002f31ef8782129b41d60047bda090611fa590606190614833565b60405180910390a36023546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831692631e898ef19261200a929116906061906004016143f3565b5f604051808303815f87803b158015612021575f5ffd5b505af1158015612033573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd10324cc0000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb393506120d99201613f3b565b5f604051808303815f87803b1580156120f0575f5ffd5b505af1158015612102573d5f5f3e3d5ffd5b50506023546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef1935061099692909116906061906004016143f3565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611a0b578382905f5260205f2090600202016040518060400160405290815f820180546121b7906142cd565b80601f01602080910402602001604051908101604052809291908181526020018280546121e3906142cd565b801561222e5780601f106122055761010080835404028352916020019161222e565b820191905f5260205f20905b81548152906001019060200180831161221157829003601f168201915b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156122c557602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116122725790505b50505050508152505081526020019060010190612187565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612359575f5ffd5b505af115801561236b573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b1580156123db575f5ffd5b505af11580156123ed573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612458575f5ffd5b505af115801561246a573d5f5f3e3d5ffd5b50506027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156124ea575f5ffd5b505af11580156124fc573d5f5f3e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b158015612578575f5ffd5b505af115801561258a573d5f5f3e3d5ffd5b505060275460285460405173ffffffffffffffffffffffffffffffffffffffff9283169450911691507fc013b39287cb7a53f776482ac9573829321f002f31ef8782129b41d60047bda0906125e190606190614833565b60405180910390a36023546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831692631e898ef192610996929116906061906004016143f3565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156126c2575f5ffd5b505af11580156126d4573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b158015612744575f5ffd5b505af1158015612756573d5f5f3e3d5ffd5b5050505061280960235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372f7a0306040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127eb9190614546565b60275473ffffffffffffffffffffffffffffffffffffffff16613d23565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a2a575f5ffd5b606480546105c8906142cd565b606380546105c8906142cd565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611a0b578382905f5260205f200180546128ca906142cd565b80601f01602080910402602001604051908101604052809291908181526020018280546128f6906142cd565b80156129415780601f1061291857610100808354040283529160200191612941565b820191905f5260205f20905b81548152906001019060200180831161292457829003601f168201915b5050505050815260200190600101906128ad565b602354604080517fce343deb0000000000000000000000000000000000000000000000000000000081529051612a439273ffffffffffffffffffffffffffffffffffffffff169163ce343deb916004808301925f9291908290030181865afa1580156129c3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612a089190810190614845565b6040518060400160405280600981526020017f53656d6170686f72650000000000000000000000000000000000000000000000815250613dbd565b565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015611a0b575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015612b3057602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612add5790505b50505050508152505081526020019060010190612a68565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612bc4575f5ffd5b505af1158015612bd6573d5f5f3e3d5ffd5b50506040517f491cc7c200000000000000000000000000000000000000000000000000000000815260016004820181905260248201819052604482018190526064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063491cc7c291506084015f604051808303815f87803b158015612c52575f5ffd5b505af1158015612c64573d5f5f3e3d5ffd5b505060275460405173ffffffffffffffffffffffffffffffffffffffff90911692507f3bfb4bbf112628248058745a3c57e35b13369386e474b8e56c552f3063a4a19691505f90a26023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015291169063776d1a0190602401610996565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612d82575f5ffd5b505af1158015612d94573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b158015612e04575f5ffd5b505af1158015612e16573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612e81575f5ffd5b505af1158015612e93573d5f5f3e3d5ffd5b50506027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015612f13575f5ffd5b505af1158015612f25573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5945f53b0000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350612fcb9201613f3b565b5f604051808303815f87803b158015612fe2575f5ffd5b505af1158015612ff4573d5f5f3e3d5ffd5b50506023546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef1935061099692909116906062906004016143f3565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015611a0b575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561314157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116130ee5790505b50505050508152505081526020019060010190613079565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015611a0b578382905f5260205f20018054613199906142cd565b80601f01602080910402602001604051908101604052809291908181526020018280546131c5906142cd565b80156132105780601f106131e757610100808354040283529160200191613210565b820191905f5260205f20905b8154815290600101906020018083116131f357829003601f168201915b50505050508152602001906001019061317c565b6008545f9060ff161561323b575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa1580156132c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ed919061488a565b1415905090565b6029546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613370575f5ffd5b505af1158015613382573d5f5f3e3d5ffd5b50506029546040805173ffffffffffffffffffffffffffffffffffffffff90921660248084019190915281518084039091018152604490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f118cdaa700000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb392506134549190600401613f3b565b5f604051808303815f87803b15801561346b575f5ffd5b505af115801561347d573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a019150602401610996565b602354604080517fb41a4b190000000000000000000000000000000000000000000000000000000081529051612a439273ffffffffffffffffffffffffffffffffffffffff169163b41a4b19916004808301925f9291908290030181865afa158015613549573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261358e91908101906148a1565b6026546021546040805173ffffffffffffffffffffffffffffffffffffffff93841660208201529290911690820152606001604051602081830303815290604052613e0f565b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613650575f5ffd5b505af1158015613662573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b1580156136d2575f5ffd5b505af11580156136e4573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe0f2d7b10000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb393506134549201613f3b565b606060158054806020026020016040519081016040528092919081815260200182805480156118c157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611896575050505050905090565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0dc149f00000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9263f28dceb39261389992909101613f3b565b5f604051808303815f87803b1580156138b0575f5ffd5b505af11580156138c2573d5f5f3e3d5ffd5b5050505060235f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a2a575f5ffd5b6026546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156139a8575f5ffd5b505af11580156139ba573d5f5f3e3d5ffd5b50506023546027546040517f776d1a0100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529116925063776d1a0191506024015f604051808303815f87803b158015613a2a575f5ffd5b505af1158015613a3c573d5f5f3e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613aa7575f5ffd5b505af1158015613ab9573d5f5f3e3d5ffd5b50506027546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b158015613b39575f5ffd5b505af1158015613b4b573d5f5f3e3d5ffd5b50506040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f09bde3390000000000000000000000000000000000000000000000000000000017905291517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d945063f28dceb39350613bf19201613f3b565b5f604051808303815f87803b158015613c08575f5ffd5b505af1158015613c1a573d5f5f3e3d5ffd5b50506023546028546040517f1e898ef100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283169450631e898ef1935061099692909116906064906004016143f3565b602354604080517f158ef93e0000000000000000000000000000000000000000000000000000000081529051612a439273ffffffffffffffffffffffffffffffffffffffff169163158ef93e9160048083019260209291908290030181865afa158015613ceb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d0f91906148d3565b6001613e61565b606180546105c8906142cd565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b158015613da3575f5ffd5b505afa158015613db5573d5f5f3e3d5ffd5b505050505050565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390613d8d90859085906004016148f2565b6040517f97624631000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d90639762463190613d8d90859085906004016148f2565b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe347790604401613d8d565b6107ea8061492083390190565b6101358061510a83390190565b610a718061523f83390190565b610f4a80615cb083390190565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f613f4d6020830184613eef565b9392505050565b602080825282518282018190525f918401906040840190835b81811015613fa157835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101613f6d565b509095945050505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156140b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015614098577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352614082848651613eef565b6020958601959094509290920191600101614048565b509197505050602094850194929092019150600101613fd2565b50929695505050505050565b5f8151808452602084019350602083