{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DAI","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"TBTC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"USDC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"USDT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WBTC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"_WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"deployAndApprovePosm","inputs":[{"name":"poolManager","type":"address","internalType":"contract IPoolManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPermit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookModifyLiquidities","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookSavesDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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":"nativeCurrencyLabel","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nativeCurrencyLabelBytes","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"positionDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"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_bytecodeSize_positionDescriptor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_bytecodeSize_proxy","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_currencyRatioPriority_mainnet_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_currencyRatioPriority_notMainnet_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_flipRatio_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_nativeCurrencyLabel_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_native_tokenURI_succeeds","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_position_descriptor_initcodeHash","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_setup_succeeds","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_tokenURI_revertsWithInvalidTokenId","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_tokenURI_succeeds","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},{"type":"error","name":"InvalidAddressLength","inputs":[{"name":"len","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a9042906103d9565b604555604b80546001600160a01b03191661050017905560405161013d906103cb565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b03929092166001600160a01b0319928316179055604e8054821661abcd17905560508054909116610f801790556040805180820190915260048152630ae8aa8960e31b60208201526101b3906102ac565b605480546001600160a01b03929092166001600160a01b0319928316179055605580548216736b175474e89094c44da98b954eedeac495271d0f17905560568054821673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4817905560578054821673dac17f958d2ee523a2206206994597c13d831ec7179055605880548216738daebade922df735c38c80c7ebd708af50815faa17905560598054909116732260fac5e5542a773aa44fbcfedf7c193bc2c59917905560408051808201909152600381526208aa8960eb1b6020820152605a906102909082610496565b506208aa8960eb1b605b553480156102a6575f80fd5b506105d7565b5f6102b6826102bd565b5092915050565b5f80826040516020016102d09190610550565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015610339573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035d9190610566565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906103999085908790600401610593565b5f604051808303815f87803b1580156103b0575f80fd5b505af11580156103c2573d5f803e3d5ffd5b50505050915091565b61121e8062014f5a83390190565b808201808211156103f857634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061042657607f821691505b60208210810361044457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561049157805f5260205f20601f840160051c8101602085101561046f5750805b601f840160051c820191505b8181101561048e575f815560010161047b565b50505b505050565b81516001600160401b038111156104af576104af6103fe565b6104c3816104bd8454610412565b8461044a565b6020601f8211600181146104f5575f83156104de5750848201515b5f19600385901b1c1916600184901b17845561048e565b5f84815260208120601f198516915b828110156105245787850151825560209485019460019092019101610504565b508482101561054157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f920191825250919050565b5f60208284031215610576575f80fd5b81516001600160a01b038116811461058c575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6201497480620005e65f395ff3fe6080604052600436106102e5575f3560e01c806393ad73ed11610186578063c0406226116100dc578063e0bab4c411610087578063f8ccbf4711610062578063f8ccbf471461084c578063f8ce27ef1461087d578063fa7626d414610891575f80fd5b8063e0bab4c4146107f8578063e20c9f7114610824578063ea502e5214610838575f80fd5b8063c9ec1872116100b7578063c9ec1872146107bc578063cb695390146107d0578063dd39f19c146107e4575f80fd5b8063c040622614610768578063c54e44eb1461077c578063c7b8e15d146107a8575f80fd5b8063b0464fdc1161013c578063b5d12c4e11610117578063b5d12c4e1461070f578063b7af3cdc14610723578063ba414fa614610744575f80fd5b8063b0464fdc1461067d578063b1a73b8a14610691578063b5508aa9146106fb575f80fd5b8063a12837ed1161016c578063a12837ed14610632578063a18246e214610646578063abbd42f114610669575f80fd5b806393ad73ed146105d95780639406840814610606575f80fd5b80634dede3de1161023b57806367382c05116101f157806385226c81116101cc57806385226c811461056b57806389a302711461058c578063916a17c6146105b8575f80fd5b806367382c051461052f57806372961883146105435780638173a5d614610557575f80fd5b806363e8f7281161022157806363e8f728146104ce5780636602ca0e146104fa57806366d9a9a01461050e575f80fd5b80634dede3de1461048e578063542524dd146104ba575f80fd5b8063307b90841161029b5780633f7286f4116102765780633f7286f41461043a5780634aa4a4fc1461044e5780634b4b6ca31461047a575f80fd5b8063307b9084146103bd57806339cd2013146103d15780633e5e3c2314610426575f80fd5b8063106d0231116102cb578063106d0231146103255780631ed7831c1461037b5780632ade38801461039c575f80fd5b806303ef31f6146102f05780630a9254e414610311575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061030f61030a366004617ade565b6108aa565b005b34801561031c575f80fd5b5061030f6108be565b348015610330575f80fd5b506047546103519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610386575f80fd5b5061038f610a4b565b6040516103729190617af9565b3480156103a7575f80fd5b506103b0610ab8565b6040516103729190617b9d565b3480156103c8575f80fd5b5061030f610c01565b3480156103dc575f80fd5b506023546024546025546103fe92600281810b936301000000909204900b9184565b60408051600295860b81529390940b6020840152928201526060810191909152608001610372565b348015610431575f80fd5b5061038f610fd7565b348015610445575f80fd5b5061038f611042565b348015610459575f80fd5b506054546103519073ffffffffffffffffffffffffffffffffffffffff1681565b348015610485575f80fd5b5061030f6110ad565b348015610499575f80fd5b506059546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c5575f80fd5b5061035161120f565b3480156104d9575f80fd5b50604d546103519073ffffffffffffffffffffffffffffffffffffffff1681565b348015610505575f80fd5b5061030f611231565b348015610519575f80fd5b506105226112fd565b6040516103729190617d0b565b34801561053a575f80fd5b5061030f611476565b34801561054e575f80fd5b5061030f61158a565b348015610562575f80fd5b5061030f61208a565b348015610576575f80fd5b5061057f61228d565b6040516103729190617da7565b348015610597575f80fd5b506056546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105c3575f80fd5b506105cc612358565b6040516103729190617e1c565b3480156105e4575f80fd5b506020546021546022546103fe92600281810b936301000000909204900b9184565b348015610611575f80fd5b506058546103519073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063d575f80fd5b5061030f61245b565b348015610651575f80fd5b5061065b605b5481565b604051908152602001610372565b348015610674575f80fd5b5061030f6124fc565b348015610688575f80fd5b506105cc6128e8565b34801561069c575f80fd5b506026546027546028546106c89260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff1690820152606001610372565b348015610706575f80fd5b5061057f6129eb565b34801561071a575f80fd5b5061030f612ab6565b34801561072e575f80fd5b50610737612f49565b6040516103729190617ebe565b34801561074f575f80fd5b50610758612fd5565b6040519015158152602001610372565b348015610773575f80fd5b506103516130a5565b348015610787575f80fd5b506057546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107b3575f80fd5b5061035161316b565b3480156107c7575f80fd5b5061035161317b565b3480156107db575f80fd5b5061030f613189565b3480156107ef575f80fd5b5061030f613311565b348015610803575f80fd5b506055546103519073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082f575f80fd5b5061038f6135de565b348015610843575f80fd5b5061030f613649565b348015610857575f80fd5b506043546107589074010000000000000000000000000000000000000000900460ff1681565b348015610888575f80fd5b5061030f613de6565b34801561089c575f80fd5b50601f546107589060ff1681565b6108b381614262565b6108bb614405565b50565b6108c6614449565b6108ce6144d4565b602a805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560298054949093169316831790915561093e91905f610bb86c0100000000000000000000000061454a565b508051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b54610a4991166108aa565b565b60606016805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382905f5260205f20018054610b5690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290617ed0565b8015610bcd5780601f10610ba457610100808354040283529160200191610bcd565b820191905f5260205f20905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b39565b505050508152505081526020019060010190610adb565b50505050905090565b603754770100000000000000000000000000000000000000000000009004600290810b905f90610c32908390617f4e565b905068056bc75e2d63100000805f610c6a6c01000000000000000000000000610c5a876146a6565b610c63876146a6565b86866149a3565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603854831660e085015290835289810b6020808501919091529089900b8385015260445484517f75794a3c00000000000000000000000000000000000000000000000000000000815294516fffffffffffffffffffffffffffffffff96909616965092945f9493909216926375794a3c92600480830193928290030181865afa158015610d78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9c9190617f6d565b9050610dd7828460015f5b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b50614ac4565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fed15e6cf00000000000000000000000000000000000000000000000000000000610e1d846001617fb1565b604051602401610e2f91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252610ebf91600401617ebe565b5f604051808303815f87803b158015610ed6575f80fd5b505af1158015610ee8573d5f803e3d5ffd5b505060495460445473ffffffffffffffffffffffffffffffffffffffff918216935063e9dc6375925016610f1d846001617fb1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015f60405180830381865afa158015610f88573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fcd91908101906180a0565b5050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b604954604080517fdc4c90d3000000000000000000000000000000000000000000000000000000008152905161115e9273ffffffffffffffffffffffffffffffffffffffff169163dc4c90d39160048083019260209291908290030181865afa15801561111c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114091906180d2565b602b5473ffffffffffffffffffffffffffffffffffffffff16614b62565b604954604080517feb6d3a110000000000000000000000000000000000000000000000000000000081529051610a499273ffffffffffffffffffffffffffffffffffffffff169163eb6d3a119160048083019260209291908290030181865afa1580156111cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f191906180d2565b60545473ffffffffffffffffffffffffffffffffffffffff16614b62565b61122e600173fffd8963efd1fc6a506488495d951d5263988d266180ed565b81565b604954604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152601360448201527f70726f78792062797465636f64652073697a6500000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a906084015b5f604051808303815f87803b1580156112e5575f80fd5b505af11580156112f7573d5f803e3d5ffd5b50505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f2090600202016040518060400160405290815f8201805461135090617ed0565b80601f016020809104026020016040519081016040528092919081815260200182805461137c90617ed0565b80156113c75780601f1061139e576101008083540402835291602001916113c7565b820191905f5260205f20905b8154815290600101906020018083116113aa57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561145e57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161140b5790505b50505050508152505081526020019060010190611320565b5f60405161148390617a85565b604051809103905ff08015801561149c573d5f803e3d5ffd5b50604b546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401611513929190618119565b5f604051808303815f87803b15801561152a575f80fd5b505af115801561153c573d5f803e3d5ffd5b5050604b54604a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b602a546115c0905f9073ffffffffffffffffffffffffffffffffffffffff1681610bb86c0100000000000000000000000061454a565b508051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931681029290921790819055608090940151603b805490931693169290921790559004600290810b905f906116d7908390617f4e565b90506116fd60405180606001604052806060815260200160608152602001606081525090565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801561176a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178e9190617f6d565b905068056bc75e2d63100000805f6117bf6c010000000000000000000000006117b6896146a6565b610c63896146a6565b604080516101008101825260395473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603b5490921660e084015282528a810b602083015289900b918101919091526fffffffffffffffffffffffffffffffff9190911691506118ba6c01000000000000000000000000828460015f6040519080825280601f01601f1916602001820160405280156118b4576020820181803683370190505b50614bfc565b604080518082018252601d8082527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020909201919091526049546044805493517fe9dc637500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481018a905292935f9392169163e9dc637591015f60405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119af91908101906180a0565b90505f8190505f8382516119c39190618147565b67ffffffffffffffff8111156119db576119db617f84565b6040519080825280601f01601f191660200182016040528015611a05576020820181803683370190505b5090505f5b8151811015611a815782611a1e8683617fb1565b81518110611a2e57611a2e61815a565b602001015160f81c60f81b828281518110611a4b57611a4b61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101611a0a565b505f611a8c82614caf565b6040517f6a82600a00000000000000000000000000000000000000000000000000000000815290915081905f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636a82600a90611ae3908590600401617ebe565b5f60405180830381865afa158015611afd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b429190810190618187565b905080806020019051810190611b5891906181cc565b604954603954603a546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152929f50611c149d50169a5063dee91a2c99506044019750611bd09650505050505050565b602060405180830381865afa158015611beb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0f91906182b5565b614e80565b603954605a80545f92611cc49273ffffffffffffffffffffffffffffffffffffffff90911691611c4390617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6f90617ed0565b8015611cba5780601f10611c9157610100808354040283529160200191611cba565b820191905f5260205f20905b815481529060010190602001808311611c9d57829003601f168201915b5050505050614ef6565b603a54605a80549293505f92611cf59273ffffffffffffffffffffffffffffffffffffffff169190611c4390617ed0565b603a549091505f90611d239074010000000000000000000000000000000000000000900462ffffff16614f7c565b603a546029549192505f91611d9b918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b602a54611d959073ffffffffffffffffffffffffffffffffffffffff1661528f565b5f6153bb565b603a546029549192505f91611deb918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b9050611e2287604001518486888686604051602001611e0e9594939291906182eb565b604051602081830303815290604052615579565b5050602b545f90611e489073ffffffffffffffffffffffffffffffffffffffff166155cb565b6039549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611e9257603954611e8d9073ffffffffffffffffffffffffffffffffffffffff166155cb565b611ec9565b6040518060400160405280600681526020017f4e617469766500000000000000000000000000000000000000000000000000008152505b603a549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611f1357603a54611f0e9073ffffffffffffffffffffffffffffffffffffffff166155cb565b611f4a565b6040518060400160405280600681526020017f4e617469766500000000000000000000000000000000000000000000000000008152505b90505f611f56886155ee565b603b549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611fbf57603b54611f9b9073ffffffffffffffffffffffffffffffffffffffff166155cb565b604051602001611fab91906183e2565b604051602081830303815290604052611ff6565b6040518060400160405280600781526020017f4e6f20486f6f6b000000000000000000000000000000000000000000000000008152505b905061207c8a5f0151888a888b888e60405160200161201a96959493929190618413565b60405160208183030381529060405286848a8760405160200161204094939291906185be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e0e9291602001618795565b505050505050505050505050565b6040517f8d1cc92500000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f506f736974696f6e44657363726970746f722e736f6c3a506f736974696f6e4460448201527f657363726970746f7200000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a908290638d1cc925906084015f60405180830381865afa15801561214b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121909190810190618187565b6040516020016121a091906187a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209091012060e084901b7fffffffff000000000000000000000000000000000000000000000000000000001683526004830191909152604a60448301527f706f736974696f6e2064657363726970746f7220696e6974636f64652068617360648301527f682028776974686f757420636f6e7374727563746f7220706172616d732c206160848301527f732075696e74323536290000000000000000000000000000000000000000000060a4830152602482015260c4016112ce565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f200180546122cd90617ed0565b80601f01602080910402602001604051908101604052809291908181526020018280546122f990617ed0565b80156123445780601f1061231b57610100808354040283529160200191612344565b820191905f5260205f20905b81548152906001019060200180831161232757829003601f168201915b5050505050815260200190600101906122b0565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561244357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123f05790505b5050505050815250508152602001906001019061237b565b604754604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152602060448201527f706f736974696f6e44657363726970746f722062797465636f64652073697a65606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a906084016112ce565b6049546054546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526125bd92919091169063166c5978906024015b602060405180830381865afa158015612573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125979190617f6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c615727565b6049546040517f166c59780000000000000000000000000000000000000000000000000000000081525f60048201526126159173ffffffffffffffffffffffffffffffffffffffff169063166c597890602401612558565b6049546056546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526126b692919091169063166c5978906024015b602060405180830381865afa15801561268c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b09190617f6d565b5f615727565b6049546057546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261271692919091169063166c597890602401612671565b6049546055546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261277692919091169063166c597890602401612671565b6049546058546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526127d692919091169063166c597890602401612671565b6049546059546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261283692919091169063166c597890602401612671565b60495460408051808201909152600581527f414c4943450000000000000000000000000000000000000000000000000000006020820152610a499173ffffffffffffffffffffffffffffffffffffffff169063166c5978906128979061577f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401612671565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156129d357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116129805790505b5050505050815250508152602001906001019061290b565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f20018054612a2b90617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5790617ed0565b8015612aa25780601f10612a7957610100808354040283529160200191612aa2565b820191905f5260205f20905b815481529060010190602001808311612a8557829003601f168201915b505050505081526020019060010190612a0e565b6040517f4049ddd200000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634049ddd2906024015f604051808303815f87803b158015612b19575f80fd5b505af1158015612b2b573d5f803e3d5ffd5b50506049546054546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612b8d94509116915063166c597890602401612558565b6049546040517f166c59780000000000000000000000000000000000000000000000000000000081525f6004820152612be59173ffffffffffffffffffffffffffffffffffffffff169063166c597890602401612558565b6049546056546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612c8792919091169063166c597890602401602060405180830381865afa158015612c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7f9190617f6d565b61012c615727565b6049546057546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612d2892919091169063166c597890602401602060405180830381865afa158015612cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d219190617f6d565b60c8615727565b6049546055546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612dc992919091169063166c597890602401602060405180830381865afa158015612d9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc29190617f6d565b6064615727565b6049546058546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612e8992919091169063166c597890602401602060405180830381865afa158015612e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e639190617f6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff38615727565b6049546059546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261283692919091169063166c597890602401602060405180830381865afa158015612eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f239190617f6d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4615727565b605a8054612f5690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054612f8290617ed0565b8015612fcd5780601f10612fa457610100808354040283529160200191612fcd565b820191905f5260205f20905b815481529060010190602001808311612fb057829003601f168201915b505050505081565b6008545f9060ff1615612fec575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561307a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309e9190617f6d565b1415905090565b5f80604051806123e001604052806123c08152602001620125286123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290613128906e22d473030f116ddee9f6b43ac78ba3908590600401618119565b5f604051808303815f87803b15801561313f575f80fd5b505af1158015613151573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b61122e6401000276a360016187b4565b5f6131846130a5565b905090565b5f60405161319690617a93565b604051809103905ff0801580156131af573d5f803e3d5ffd5b506050546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401613226929190618119565b5f604051808303815f87803b15801561323d575f80fd5b505af115801561324f573d5f803e3d5ffd5b5050605054604f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604480546046546040517f90107afe000000000000000000000000000000000000000000000000000000008152918516600483015290931660248401529093506390107afe9250015b5f604051808303815f87803b1580156132f8575f80fd5b505af115801561330a573d5f803e3d5ffd5b5050505050565b6040517f4049ddd200000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634049ddd2906024015f604051808303815f87803b158015613374575f80fd5b505af1158015613386573d5f803e3d5ffd5b50506049546056546054546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261343294509116915063dee91a2c90604401602060405180830381865afa158015613409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061342d91906182b5565b615790565b6049546055546056546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261349d92919091169063dee91a2c90604401611bd0565b6049546059546054546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261350892919091169063dee91a2c90604401611bd0565b6049546059546056546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261357392919091169063dee91a2c90604401611bd0565b6049546059546055546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152610a4992919091169063dee91a2c90604401611bd0565b60606015805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b603754770100000000000000000000000000000000000000000000009004600290810b905f9061367a908390617f4e565b90505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061370b9190617f6d565b905061373160405180606001604052806060815260200160608152602001606081525090565b68056bc75e2d63100000805f6137576c010000000000000000000000006117b6896146a6565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c085015260385490921660e084015282528a810b602083015289900b918101919091526fffffffffffffffffffffffffffffffff919091169150613819818360015f610da7565b604080518082018252601d8082527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020909201919091526049546044805493517fe9dc637500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481018b905292935f9392169163e9dc637591015f60405180830381865afa1580156138c9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261390e91908101906180a0565b90505f8190505f8382516139229190618147565b67ffffffffffffffff81111561393a5761393a617f84565b6040519080825280601f01601f191660200182016040528015613964576020820181803683370190505b5090505f5b81518110156139e0578261397d8683617fb1565b8151811061398d5761398d61815a565b602001015160f81c60f81b8282815181106139aa576139aa61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101613969565b505f6139eb82614caf565b6040517f6a82600a00000000000000000000000000000000000000000000000000000000815290915081905f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636a82600a90613a42908590600401617ebe565b5f60405180830381865afa158015613a5c573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613aa19190810190618187565b905080806020019051810190613ab791906181cc565b6049546036546037546040517fdee91a2c000000000000000000000000000000000000000000000000000000008152939f50613b2b9e5073ffffffffffffffffffffffffffffffffffffffff9283169d5063dee91a2c9c50611bd09b509082169950169650600401945061828e9350505050565b602954605a80545f92613b5a9273ffffffffffffffffffffffffffffffffffffffff90911691611c4390617ed0565b602a54605a80549293505f92613b8b9273ffffffffffffffffffffffffffffffffffffffff169190611c4390617ed0565b6037549091505f90613bb99074010000000000000000000000000000000000000000900462ffffff16614f7c565b6037546029549192505f91613c09918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b6037546029549192505f91613c59918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b9050613c7c86604001518486888686604051602001611e0e9594939291906182eb565b5050602b545f90613ca29073ffffffffffffffffffffffffffffffffffffffff166155cb565b6029549091505f90613cc99073ffffffffffffffffffffffffffffffffffffffff166155cb565b602a549091505f90613cf09073ffffffffffffffffffffffffffffffffffffffff166155cb565b90505f613cfc896155ee565b6038549091505f9073ffffffffffffffffffffffffffffffffffffffff1615613d6557603854613d419073ffffffffffffffffffffffffffffffffffffffff166155cb565b604051602001613d5191906183e2565b604051602081830303815290604052613d9c565b6040518060400160405280600781526020017f4e6f20486f6f6b000000000000000000000000000000000000000000000000008152505b905061207c895f0151888a888b88604051602001613dbe9594939291906187e0565b6040516020818303038152906040528a87858b886040516020016120409594939291906188d6565b604954604080517fb7af3cdc0000000000000000000000000000000000000000000000000000000081529051613f279273ffffffffffffffffffffffffffffffffffffffff169163b7af3cdc916004808301925f9291908290030181865afa158015613e54573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e9991908101906180a0565b605a8054613ea690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054613ed290617ed0565b8015613f1d5780601f10613ef457610100808354040283529160200191613f1d565b820191905f5260205f20905b815481529060010190602001808311613f0057829003601f168201915b5050505050615579565b602b545f90613f6c9073ffffffffffffffffffffffffffffffffffffffff167f504f4c00000000000000000000000000000000000000000000000000000000006157e2565b90506140398173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015613fb9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613ffe91908101906180a0565b6040518060400160405280600381526020017f504f4c0000000000000000000000000000000000000000000000000000000000815250615579565b602b545f9061407e9073ffffffffffffffffffffffffffffffffffffffff167f424e4200000000000000000000000000000000000000000000000000000000006157e2565b905061414b8173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156140cb573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261411091908101906180a0565b6040518060400160405280600381526020017f424e420000000000000000000000000000000000000000000000000000000000815250615579565b602b545f906141909073ffffffffffffffffffffffffffffffffffffffff167f41564158000000000000000000000000000000000000000000000000000000006157e2565b905061425d8173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156141dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261422291908101906180a0565b6040518060400160405280600481526020017f4156415800000000000000000000000000000000000000000000000000000000815250615579565b505050565b61426a61317b565b604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556142b7615900565b604d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055614326817f45544800000000000000000000000000000000000000000000000000000000006157e2565b604980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604654604d5460408051808201909152600181527f030000000000000000000000000000000000000000000000000000000000000060208201526143bd94869493811693620186a09390929116906159e6565b604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6029546144279073ffffffffffffffffffffffffffffffffffffffff16615b96565b602a54610a499073ffffffffffffffffffffffffffffffffffffffff16615b96565b3060405161445690617aa1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561448c573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f805f61450260027f8000000000000000000000000000000000000000000000000000000000000000615cc6565b9050614541815f815181106145195761451961815a565b6020026020010151826001815181106145345761453461815a565b6020026020010151615e4f565b92509250509091565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80891682528716602082015262ffffff85169181018290525f91606082019062800000146145d6576145c6606487618b0c565b6145d1906002618b31565b6145d9565b603c5b60020b815273ffffffffffffffffffffffffffffffffffffffff871660209091015260a08120909250602b546040517f6276cbbe00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690636276cbbe9061465b9085908790600401618b4f565b6020604051808303815f875af1158015614677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061469b9190618bf5565b509550959350505050565b60020b5f60ff82901d80830118620d89e88111156146e8576146e87f8b86327a0000000000000000000000000000000000000000000000000000000084615e9c565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615614731576ffff97272373d413259a46990580e213a0260801c5b6004821615614750576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561476f576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561478e576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156147ad576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156147cc576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156147eb576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561480b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561482b576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561484b576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561486b576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561488b576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156148ab576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156148cb576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156148eb576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561490c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561492c576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561494b576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614968576b048a170391f7dc42444e8fa20260801c5b5f841315614993577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156149dc579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1611614a2157614a1a858585615eab565b9050614abb565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015614aad575f614a61878686615eab565b90505f614a6f878986615f68565b9050806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610614aa25780614aa4565b815b92505050614abb565b614ab8858584615f68565b90505b95945050505050565b5f614ad185858585615fc0565b6044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff9091169163dd46508f91614b2e91859190600401618c15565b5f604051808303815f87803b158015614b45575f80fd5b505af1158015614b57573d5f803e3d5ffd5b505050505050505050565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b158015614be2575f80fd5b505afa158015614bf4573d5f803e3d5ffd5b505050505050565b5f614c2986614c0e87602001516146a6565b614c1b88604001516146a6565b614c2488615fe0565b616028565b5090505f614c3986868686615fc0565b60445490915073ffffffffffffffffffffffffffffffffffffffff1663dd46508f614c65846001617fb1565b836045546040518463ffffffff1660e01b8152600401614c86929190618c15565b5f604051808303818588803b158015614c9d575f80fd5b505af115801561207c573d5f803e3d5ffd5b805160609082905f03614cd557604080515f80825260208201909252905b509392505050565b60048151614ce39190618c36565b15614d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c696420626173653634206465636f64657220696e7075740000000060448201526064015b60405180910390fd5b5f6040518060a0016040528060808152602001620148e86080913990505f60048351614d7b9190618c49565b614d86906003618c5c565b90505f614d94826020617fb1565b67ffffffffffffffff811115614dac57614dac617f84565b6040519080825280601f01601f191660200182016040528015614dd6576020820181803683370190505b5090508351840151603d60ff821603614e0357600183039250613d3d61ffff821603614e03576001830392505b50818152600183018485518101602084015b81831015614e7257600483019250825160ff8082168601511660ff808360081c168701511660061b0160ff808360101c1687015116600c1b60ff808460181c168801511660121b010190508060e81b825250600381019050614e15565b509298975050505050505050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b5f6040518083038186803b158015614ee4575f80fd5b505afa15801561330a573d5f803e3d5ffd5b606073ffffffffffffffffffffffffffffffffffffffff8316614f1a575080614f76565b5f614f45847f95d89b4100000000000000000000000000000000000000000000000000000000616111565b905080515f03614f6057614f5884616264565b915050614f76565b8051600c1015614f7357614f5881616271565b90505b92915050565b60606280000062ffffff831603614fc657505060408051808201909152600781527f44796e616d696300000000000000000000000000000000000000000000000000602082015290565b8162ffffff165f0361500b57505060408051808201909152600281527f3025000000000000000000000000000000000000000000000000000000000000602082015290565b815f805b62ffffff8316156150785760ff811615615035578061502d81618c73565b915050615058565b615040600a84618c91565b62ffffff1615615058578061505481618c73565b9150505b8161506281618cb6565b92506150719050600a84618b0c565b925061500f565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905290600584106151b5575f60046150d060ff861687618147565b10156150dd5760016150df565b5f5b60ff1690506150ef600185618ced565b60ff166150fd600587618147565b1061512a5761510d600185618ced565b60ff1661511b600587618147565b6151259190618147565b61512c565b5f5b60ff851660808501819052909250600190615148908490617fb1565b6151529190618147565b60ff1660a08401526080830151819061516d90600190618ced565b60ff1661517a9190617fb1565b60ff9081166040850152819061519290861684617fb1565b61519d906001617fb1565b6151a79190617fb1565b60ff1660208401525061522a565b6151c0846005618147565b6002608084018190529091506001906151d99083617fb1565b6151e39190618147565b60ff90811660a08401526151f990841682617fb1565b615204906002617fb1565b60ff166020830181905261521a90600290618ced565b60ff166040830152600160c08301525b61523760ff841685618147565b61524290600a618e27565b6152519062ffffff8916618c49565b8252600160e083015260048411615268575f615273565b615273600485618147565b60ff16606083015261528482616306565b979650505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82166152b357506012919050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290515f91829173ffffffffffffffffffffffffffffffffffffffff861691615330916187a9565b5f60405180830381855afa9150503d805f8114615368576040519150601f19603f3d011682016040523d82523d5f602084013e61536d565b606091505b50915091508161538057505f9392505050565b80516020036153b2575f8180602001905181019061539e9190617f6d565b905060ff81116153b057949350505050565b505b505f9392505050565b6060846153e8817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618618e32565b6153f29190617f4e565b60020b8660020b0361547957811561543f576040518060400160405280600381526020017f4d41580000000000000000000000000000000000000000000000000000000000815250614a1a565b5060408051808201909152600381527f4d494e00000000000000000000000000000000000000000000000000000000006020820152614abb565b8461548781620d89e8618e32565b6154919190617f4e565b60020b8660020b036155185781156154de576040518060400160405280600381526020017f4d494e0000000000000000000000000000000000000000000000000000000000815250614a1a565b5060408051808201909152600381527f4d415800000000000000000000000000000000000000000000000000000000006020820152614abb565b5f615522876146a6565b905082156155665761556373ffffffffffffffffffffffffffffffffffffffff82167801000000000000000000000000000000000000000000000000618c49565b90505b615571818686616667565b915050614abb565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390614bcc9085908590600401618ea5565b6060614f768273ffffffffffffffffffffffffffffffffffffffff1660146168a0565b6060815f0361563057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b815f5b8115615659578061564381618cb6565b91506156529050600a83618c49565b9150615633565b5f8167ffffffffffffffff81111561567357615673617f84565b6040519080825280601f01601f19166020018201604052801561569d576020820181803683370190505b5090505b841561571f576156b2600183618147565b91506156bf600a86618c36565b6156ca906030617fb1565b60f81b8183815181106156df576156df61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350615718600a86618c49565b94506156a1565b949350505050565b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b90604401614bcc565b5f61578982616ad3565b5092915050565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401614ece565b604d5460408051808201909152600181525f602082018190529161582091859173ffffffffffffffffffffffffffffffffffffffff16908590616c2e565b604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604e5460408051602080820183525f82528251808401909352600183527f0300000000000000000000000000000000000000000000000000000000000000908301526158b594929092169190616dcc565b604880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790559392505050565b5f806159406040518060400160405280600481526020017f574554480000000000000000000000000000000000000000000000000000000081525061577f565b604c5460408051602073ffffffffffffffffffffffffffffffffffffffff909316803b8083018501909352828252939450737109709ecfa91a80626ff3989d68f67f5b1dd12d9363b4d6c782938693915f918401903c6040518363ffffffff1660e01b81526004016159b3929190618119565b5f604051808303815f87803b1580156159ca575f80fd5b505af11580156159dc573d5f803e3d5ffd5b5092949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80891660208301528088169282019290925260608101869052818516608082015290831660a08201525f90819060c001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152602360248301527f506f736974696f6e4d616e616765722e736f6c3a506f736974696f6e4d616e6160448301527f6765720000000000000000000000000000000000000000000000000000000000606483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906084015f60405180830381865afa158015615b18573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052615b5d9190810190618187565b82604051602001615b6f929190618795565b6040516020818303038152906040529050838151602083015ff59998505050505050505050565b6046546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529082169063095ea7b3906044016020604051808303815f875af1158015615c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190615c4f91906182b5565b50604654604480546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152918216602482015291820181905265ffffffffffff6064830152909116906387517c45906084016132e1565b60608260ff1667ffffffffffffffff811115615ce457615ce4617f84565b604051908082528060200260200182016040528015615d0d578160200160208202803683370190505b5090505f5b8360ff168160ff161015615789576012604051615d2e90617aaf565b615d389190618ec9565b604051809103905ff080158015615d51573d5f803e3d5ffd5b50828260ff1681518110615d6757615d6761815a565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff1681518110615db657615db661815a565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b158015615e2d575f80fd5b505af1158015615e3f573d5f803e3d5ffd5b505060019092019150615d129050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161015615e8f575082905081615e95565b50819050825b9250929050565b815f528060020b60045260245ffd5b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115615ee4579192915b5f615f298573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616eb7565b9050615f5d615f588483615f3d89896180ed565b73ffffffffffffffffffffffffffffffffffffffff16616eb7565b616f72565b9150505b9392505050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115615fa1579192915b61571f615f58836c01000000000000000000000000615f3d88886180ed565b6060614abb85856fffffffffffffffffffffffffffffffff808787616fee565b806fffffffffffffffffffffffffffffffff81168114616023576160237f93dafdf10000000000000000000000000000000000000000000000000000000061707a565b919050565b5f808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616062579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16116160a7576160a0858585617082565b9150616108565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610156160fa576160e6868585617082565b91506160f385878561713e565b9050616108565b61610585858561713e565b90505b94509492505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617905290516060915f91829173ffffffffffffffffffffffffffffffffffffffff87169161619491906187a9565b5f60405180830381855afa9150503d805f81146161cc576040519150601f19603f3d011682016040523d82523d5f602084013e6161d1565b606091505b5091509150816161f35760405180602001604052805f81525092505050614f76565b8051602003616226575f818060200190518101906162119190617f6d565b905061621c816171c0565b9350505050614f76565b60408151111561624d578080602001905181019061624491906180a0565b92505050614f76565b505060408051602081019091525f81529392505050565b6060614f76826006617349565b60408051600c80825281830190925260609183915f916020820181803683370190505090505f5b600c811015614ccd578281815181106162b3576162b361815a565b602001015160f81c60f81b8282815181106162d0576162d061815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101616298565b60605f826020015160ff1667ffffffffffffffff81111561632957616329617f84565b6040519080825280601f01601f191660200182016040528015616353576020820181803683370190505b5090508260e00151156163cf577f250000000000000000000000000000000000000000000000000000000000000081600183516163909190618147565b815181106163a0576163a061815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b8260c001511561649d577f3000000000000000000000000000000000000000000000000000000000000000815f8151811061640c5761640c61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f2e000000000000000000000000000000000000000000000000000000000000008160018151811061646e5761646e61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b608083015160ff165b60a08401516164b6906001618f53565b60ff1681101561650d57603060f81b8282815181106164d7576164d761815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016164a6565b505b825115614f76575f836060015160ff161180156165395750826060015160ff16836040015160ff16145b156165bd577f2e000000000000000000000000000000000000000000000000000000000000008184604001805180919061657290618f6c565b60ff1660ff1681525060ff168151811061658e5761658e61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b82516165cb90600a90618c36565b6165d6906030617fb1565b60f81b81846040015160ff16815181106165f2576165f261815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506040830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff1690528251600a90849061665f908390618c49565b90525061650f565b60605f616675858585617518565b90505f61668c828368010000000000000000616eb7565b90506c01000000000000000000000000821080156166da576166d38272047bf19673df52e37f2410011d100000000000700100000000000000000000000000000000616eb7565b91506166fc565b6166f982620186a0700100000000000000000000000000000000616eb7565b91505b815f5b8115616725578061670f81618c73565b915061671e9050600a83618c49565b91506166ff565b616730600182618ced565b90505f8061673e868461766d565b915091508015616756578261675281618c73565b9350505b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091528515616801576167a784602b618ced565b6167b2906007618f53565b60ff9081166020830152600260808301526167d0908516602b618147565b6167db906001617fb1565b60ff1660a082015260208101516167f490600190618ced565b60ff166040820152616876565b60098460ff161061684857616817600485618ced565b60ff16602082018190526005608083015261683490600190618ced565b60ff1660a082015260046040820152616876565b600660208201526005604082018190526168629085618ced565b61686d906001618f53565b60ff1660608201525b82815285151560c08201525f60e082015261689081616306565b9c9b505050505050505050505050565b60605f6168ae836002618c5c565b6168b9906002617fb1565b67ffffffffffffffff8111156168d1576168d1617f84565b6040519080825280601f01601f1916602001820160405280156168fb576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106169315761693161815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106169935761699361815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6169cd846002618c5c565b6169d8906001617fb1565b90505b6001811115616a6a57600f8516600a8110616a03576169fb816057618f53565b60f81b616a12565b616a0e816030618f53565b60f81b5b838381518110616a2457616a2461815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505060049490941c93616a6381618fa6565b90506169db565b508315614f73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f486578206c656e67746820696e73756666696369656e740000000000000000006044820152606401614d46565b5f8082604051602001616ae691906187a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015616b83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616ba791906180d2565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890616bfc9085908790600401618119565b5f604051808303815f87803b158015616c13575f80fd5b505af1158015616c25573d5f803e3d5ffd5b50505050915091565b6040805173ffffffffffffffffffffffffffffffffffffffff8087166020830152851691810191909152606081018390525f908190608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152602960248301527f506f736974696f6e44657363726970746f722e736f6c3a506f736974696f6e4460448301527f657363726970746f720000000000000000000000000000000000000000000000606483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906084015b5f60405180830381865afa158015616d50573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052616d959190810190618187565b82604051602001616da7929190618795565b6040516020818303038152906040529050838151602083015ff5979650505050505050565b5f80858585604051602001616de393929190618fda565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152603b60248301527f5472616e73706172656e745570677261646561626c6550726f78792e736f6c3a60448301527f5472616e73706172656e745570677261646561626c6550726f78790000000000606483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590608401616d36565b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411616ef5575f80fd5b805f03616f0757508290049050615f61565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff81168114616023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6c6971756964697479206f766572666c6f7700000000000000000000000000006044820152606401614d46565b60605f616ff96176f6565b90506170606002895f01518a602001518b604001518b8b8b8b8b60405160200161702a989796959493929190619024565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052839190617752565b50875161706e908290617966565b98975050505050505050565b805f5260045ffd5b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156170bb579192915b73ffffffffffffffffffffffffffffffffffffffff84166171347bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661710287876180ed565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16616eb7565b61571f9190618c49565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115617177579192915b61571f6fffffffffffffffffffffffffffffffff831661719786866180ed565b73ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616eb7565b6040805160208082528183019092526060915f91906020820181803683370190505090505f805b6020811015617289575f8582602081106172035761720361815a565b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561728057808484815181106172445761724461815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508261727c81618cb6565b9350505b506001016171e7565b505f8167ffffffffffffffff8111156172a4576172a4617f84565b6040519080825280601f01601f1916602001820160405280156172ce576020820181803683370190505b5090505f5b82811015617340578381815181106172ed576172ed61815a565b602001015160f81c60f81b82828151811061730a5761730a61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016172d3565b50949350505050565b6060617356600283618c36565b15801561736257505f82115b801561736f575060288211155b6173a8576040517f6d1eca2800000000000000000000000000000000000000000000000000000000815260048101839052602401614d46565b5f8267ffffffffffffffff8111156173c2576173c2617f84565b6040519080825280601f01601f1916602001820160405280156173ec576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff84165f5b617413600286618c49565b81101561750e575f617426826013618147565b617431906008618c5c565b83901c9050600f600482901c165f61744c60f0841684618ced565b905061745782617a0c565b86617463866002618c5c565b815181106174735761747361815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506174aa81617a0c565b866174b6866002618c5c565b6174c1906001617fb1565b815181106174d1576174d161815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535050600190920191506174089050565b5090949350505050565b5f8061753261752d60ff808616908716619130565b617a38565b90505f81118015617544575060128111155b1561764d578260ff168460ff1611156175d657617562600282618c49565b61756d90600a618e27565b61758d9073ffffffffffffffffffffffffffffffffffffffff8716618c5c565b915061759a600282618c36565b6001036175d1576175ce827003298b075b4b6a5240945790619b37fd4a700100000000000000000000000000000000616eb7565b91505b614ccd565b6175e1600282618c49565b6175ec90600a618e27565b61760c9073ffffffffffffffffffffffffffffffffffffffff8716618c49565b9150617619600282618c36565b6001036175d1576175ce827001000000000000000000000000000000007003298b075b4b6a5240945790619b37fd4a616eb7565b505073ffffffffffffffffffffffffffffffffffffffff90921692915050565b5f805f60058460ff16111561769f57617687600585618ced565b61769290600a61914f565b61769c9086618c49565b94505b5f60046176ad600a88618c36565b1190506176bb600a87618c49565b955080156176d1576176ce866001617fb1565b95505b85620186a0036176ed576176e6600a87618c49565b9550600191505b50939492505050565b60408051808201825260608082526020808301829052835191820184525f8285018181528352845181815280830190955292939192908301919061774a565b60608152602001906001900390816177355790505b509052919050565b60408051808201909152606080825260208201525f84602001515160016177799190617fb1565b67ffffffffffffffff81111561779157617791617f84565b6040519080825280601f01601f1916602001820160405280156177bb576020820181803683370190505b5090505f85602001515160016177d19190617fb1565b67ffffffffffffffff8111156177e9576177e9617f84565b60405190808252806020026020018201604052801561781c57816020015b60608152602001906001900390816178075790505b5090505f5b6001825161782f9190618147565b8110156178d9578660200151818151811061784c5761784c61815a565b60200260200101518282815181106178665761786661815a565b6020026020010181905250865f015181815181106178865761788661815a565b602001015160f81c60f81b8382815181106178a3576178a361815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101617821565b508381600183516178ea9190618147565b815181106178fa576178fa61815a565b60200260200101819052508460f81b82600183516179189190618147565b815181106179285761792861815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b80516040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526060916179cb91601291015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052859190617752565b50617a0260128360200151604051602001617995919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b50614f7383617a53565b5f600a8260ff161015617a2d57617a24826030618f53565b60f81b92915050565b617a24826037618f53565b5f80821215617a4f57617a4a8261915d565b614f76565b5090565b6060815f01518260200151604051602001617a6f929190619193565b6040516020818303038152906040529050919050565b610804806200922783390190565b610f908062009a2b83390190565b616a05806200a9bb83390190565b61116880620113c083390190565b73ffffffffffffffffffffffffffffffffffffffff811681146108bb575f80fd5b5f60208284031215617aee575f80fd5b8135614f7381617abd565b602080825282518282018190525f918401906040840190835b81811015617b4657835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101617b12565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015617c89577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c73848651617b51565b6020958601959094509290920191600101617c39565b509197505050602094850194929092019150600101617bc3565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015617d015781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cc1565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d756040880182617b51565b9050602082015191508681036020880152617d908183617caf565b965050506020938401939190910190600101617d31565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e07858351617b51565b94506020938401939190910190600101617dcd565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152617ea86040870182617caf565b9550506020938401939190910190600101617e42565b602081525f614f736020830184617b51565b600181811c90821680617ee457607f821691505b602082108103617f1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8260020b8260020b028060020b915080821461578957615789617f21565b5f60208284031215617f7d575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b80820180821115614f7657614f76617f21565b6040516060810167ffffffffffffffff81118282101715617fe757617fe7617f84565b60405290565b5f8067ffffffffffffffff84111561800757618007617f84565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561805457618054617f84565b60405283815290508082840185101561806b575f80fd5b8383602083015e5f60208583010152509392505050565b5f82601f830112618091575f80fd5b614f7383835160208501617fed565b5f602082840312156180b0575f80fd5b815167ffffffffffffffff8111156180c6575f80fd5b61571f84828501618082565b5f602082840312156180e2575f80fd5b8151614f7381617abd565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390811115614f7657614f76617f21565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f61571f6040830184617b51565b81810381811115614f7657614f76617f21565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215618197575f80fd5b815167ffffffffffffffff8111156181ad575f80fd5b8201601f810184136181bd575f80fd5b61571f84825160208401617fed565b5f602082840312156181dc575f80fd5b815167ffffffffffffffff8111156181f2575f80fd5b820160608185031215618203575f80fd5b61820b617fc4565b815167ffffffffffffffff811115618221575f80fd5b61822d86828501618082565b825250602082015167ffffffffffffffff811115618249575f80fd5b61825586828501618082565b602083015250604082015167ffffffffffffffff811115618274575f80fd5b61828086828501618082565b604083015250949350505050565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b5f602082840312156182c5575f80fd5b81518015158114614f73575f80fd5b5f81518060208401855e5f93019283525090919050565b7f556e6973776170202d200000000000000000000000000000000000000000000081525f61831c600a8301886182d4565b7f202d200000000000000000000000000000000000000000000000000000000000815261834c60038201886182d4565b90507f2f00000000000000000000000000000000000000000000000000000000000000815261837e60018201876182d4565b90507f202d20000000000000000000000000000000000000000000000000000000000081526183b060038201866182d4565b90507f3c3e000000000000000000000000000000000000000000000000000000000000815261706e60028201856182d4565b7f307800000000000000000000000000000000000000000000000000000000000081525f614f7360028301846182d4565b7f54686973204e465420726570726573656e74732061206c69717569646974792081527f706f736974696f6e20696e206120556e6973776170207634200000000000000060208201525f61846a60398301896182d4565b7f2d00000000000000000000000000000000000000000000000000000000000000815261851b6185156184a0600184018b6182d4565b7f20706f6f6c2e20546865206f776e6572206f662074686973204e46542063616e81527f206d6f64696679206f722072656465656d2074686520706f736974696f6e2e0a60208201527f0a506f6f6c204d616e6167657220416464726573733a20000000000000000000604082015260570190565b886182d4565b90507f0a00000000000000000000000000000000000000000000000000000000000000815261854d60018201876182d4565b90507f20416464726573733a2000000000000000000000000000000000000000000000815261857f600a8201866182d4565b90507f0a0000000000000000000000000000000000000000000000000000000000000081526185b160018201856182d4565b9998505050505050505050565b7f20416464726573733a200000000000000000000000000000000000000000000081525f6185ef600a8301876182d4565b7f0a486f6f6b20416464726573733a200000000000000000000000000000000000815261861f600f8201876182d4565b90507f0a46656520546965723a200000000000000000000000000000000000000000008152618651600b8201866182d4565b90507f0a546f6b656e2049443a200000000000000000000000000000000000000000008152618683600b8201856182d4565b7f0a0a00000000000000000000000000000000000000000000000000000000000081527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560028201527f20697320696d7065726174697665207768656e20617373657373696e6720746860228201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560428201527f73736573206d61746368207468652065787065637465642063757272656e636960628201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960828201527f6d6974617465642e00000000000000000000000000000000000000000000000060a2820152905060aa8101615284565b5f61571f6187a383866182d4565b846182d4565b5f614f7382846182d4565b73ffffffffffffffffffffffffffffffffffffffff8181168382160190811115614f7657614f76617f21565b7f54686973204e465420726570726573656e74732061206c69717569646974792081527f706f736974696f6e20696e206120556e6973776170207634200000000000000060208201525f61883660398301618515565b7f2d00000000000000000000000000000000000000000000000000000000000000815261887261886c6184a0600184018a6182d4565b876182d4565b90507f0a0000000000000000000000000000000000000000000000000000000000000081526188a460018201866182d4565b90507f20416464726573733a2000000000000000000000000000000000000000000000815261706e600a8201856182d4565b7f0a0000000000000000000000000000000000000000000000000000000000000081525f61890760018301886182d4565b7f20416464726573733a20000000000000000000000000000000000000000000008152618937600a8201886182d4565b90507f0a486f6f6b20416464726573733a2000000000000000000000000000000000008152618969600f8201876182d4565b90507f0a46656520546965723a20000000000000000000000000000000000000000000815261899b600b8201866182d4565b90507f0a546f6b656e2049443a2000000000000000000000000000000000000000000081526189cd600b8201856182d4565b7f0a0a00000000000000000000000000000000000000000000000000000000000081527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560028201527f20697320696d7065726174697665207768656e20617373657373696e6720746860228201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560428201527f73736573206d61746368207468652065787065637465642063757272656e636960628201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960828201527f6d6974617465642e00000000000000000000000000000000000000000000000060a2820152905060aa810161706e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62ffffff831680618b2057618b20618adf565b8062ffffff84160491505092915050565b62ffffff818116838216029081169081811461578957615789617f21565b60c08101618bd2828573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b5f60208284031215618c05575f80fd5b81518060020b8114614f73575f80fd5b604081525f618c276040830185617b51565b90508260208301529392505050565b5f82618c4457618c44618adf565b500690565b5f82618c5757618c57618adf565b500490565b8082028115828204841417614f7657614f76617f21565b5f60ff821660ff8103618c8857618c88617f21565b60010192915050565b5f62ffffff831680618ca557618ca5618adf565b8062ffffff84160691505092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203618ce657618ce6617f21565b5060010190565b60ff8281168282160390811115614f7657614f76617f21565b6001815b6001841115618d4157808504811115618d2557618d25617f21565b6001841615618d3357908102905b60019390931c928002618d0a565b935093915050565b5f82618d5757506001614f76565b81618d6357505f614f76565b8160018114618d795760028114618d8357618d9f565b6001915050614f76565b60ff841115618d9457618d94617f21565b50506001821b614f76565b5060208310610133831016604e8410600b8410161715618dc2575081810a614f76565b618ded7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484618d06565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115618e1f57618e1f617f21565b029392505050565b5f614f738383618d49565b5f8160020b8360020b80618e4857618e48618adf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615618e9c57618e9c617f21565b90059392505050565b604081525f618eb76040830185617b51565b8281036020840152615f5d8185617b51565b606081525f618f0560608301600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b8281036020840152618f4181600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b91505060ff8316604083015292915050565b60ff8181168382160190811115614f7657614f76617f21565b5f60ff821680618f7e57618f7e617f21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b5f81618fb457618fb4617f21565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b73ffffffffffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f614abb6060830184617b51565b6190a3818a73ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8760020b60a08201528660020b60c08201528560e08201526fffffffffffffffffffffffffffffffff85166101008201526fffffffffffffffffffffffffffffffff841661012082015273ffffffffffffffffffffffffffffffffffffffff83166101408201526101806101608201525f619122610180830184617b51565b9a9950505050505050505050565b8181035f83128015838313168383128216171561578957615789617f21565b5f614f7360ff841683618d49565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361918d5761918d617f21565b505f0390565b604081525f6191a56040830185617b51565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015619218577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018552619202838351617b51565b60209586019590935091909101906001016191c8565b50909897505050505050505056fe6080604052348015600e575f80fd5b506107e88061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106100da575f3560e01c80636fe7e6eb11610088578063b6a8b0fa11610063578063b6a8b0fa14610252578063d934d2f714610260578063dc98354e14610273578063e1b4af6914610252575f80fd5b80636fe7e6eb146101e35780639f063efc146101f1578063b47b2fb114610204575f80fd5b806357c5b148116100b857806357c5b1481461017d578063623ea21a1461018e5780636c2bbe7e14610198575f80fd5b806321d0ee70146100de578063259982e5146100de578063575e24b414610127575b5f80fd5b6100f16100ec3660046104d7565b610281565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61013a61013536600461055e565b6102b4565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff169082015260600161011e565b5f545b60405190815260200161011e565b6101966102e9565b005b6101ab6101a63660046105b8565b6102f5565b604080517fffffffff00000000000000000000000000000000000000000000000000000000909316835260208301919091520161011e565b6100f16100ec366004610643565b6101ab6101ff3660046105b8565b61035c565b6102176102123660046106a2565b6103c3565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b60208301520161011e565b6100f16100ec366004610723565b61018061026e36600461077d565b6103f7565b6100f16100ec366004610794565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102f35f80610415565b565b5f8061032c865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f6c2bbe7e00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f80610393865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f9f063efc00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8181548110610405575f80fd5b5f91825260209091200154905081565b5080545f8255905f5260205f20908101906104309190610433565b50565b5b80821115610447575f8155600101610434565b5090565b73ffffffffffffffffffffffffffffffffffffffff81168114610430575f80fd5b5f60a0828403121561047c575f80fd5b50919050565b5f6080828403121561047c575f80fd5b5f8083601f8401126104a2575f80fd5b50813567ffffffffffffffff8111156104b9575f80fd5b6020830191508360208285010111156104d0575f80fd5b9250929050565b5f805f805f61016086880312156104ec575f80fd5b85356104f78161044b565b9450610506876020880161046c565b93506105158760c08801610482565b925061014086013567ffffffffffffffff811115610531575f80fd5b61053d88828901610492565b969995985093965092949392505050565b5f6060828403121561047c575f80fd5b5f805f805f6101408688031215610573575f80fd5b853561057e8161044b565b945061058d876020880161046c565b935061059c8760c0880161054e565b925061012086013567ffffffffffffffff811115610531575f80fd5b5f805f805f805f6101a0888a0312156105cf575f80fd5b87356105da8161044b565b96506105e98960208a0161046c565b95506105f88960c08a01610482565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115610624575f80fd5b6106308a828b01610492565b989b979a50959850939692959293505050565b5f805f806101008587031215610657575f80fd5b84356106628161044b565b9350610671866020870161046c565b925060c08501356106818161044b565b915060e0850135600281900b8114610697575f80fd5b939692955090935050565b5f805f805f8061016087890312156106b8575f80fd5b86356106c38161044b565b95506106d2886020890161046c565b94506106e18860c0890161054e565b9350610120870135925061014087013567ffffffffffffffff811115610705575f80fd5b61071189828a01610492565b979a9699509497509295939492505050565b5f805f805f806101208789031215610739575f80fd5b86356107448161044b565b9550610753886020890161046c565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115610705575f80fd5b5f6020828403121561078d575f80fd5b5035919050565b5f805f60e084860312156107a6575f80fd5b83356107b18161044b565b92506107c0856020860161046c565b915060c08401356107d08161044b565b80915050925092509256fea164736f6c634300081a000a6080604052348015600e575f80fd5b50610f748061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806390107afe11610088578063b6a8b0fa11610063578063b6a8b0fa146102d6578063d934d2f7146102e4578063dc98354e146102f7578063e1b4af69146102d6575f80fd5b806390107afe146102145780639f063efc14610275578063b47b2fb114610288575f80fd5b806357c5b148116100c357806357c5b1481461019b578063623ea21a146101ac5780636c2bbe7e146101b65780636fe7e6eb14610201575f80fd5b806321d0ee70146100e9578063259982e514610132578063575e24b414610145575b5f80fd5b6100fc6100f736600461090d565b610305565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100fc61014036600461090d565b6103d1565b610158610153366004610994565b61049d565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff1690820152606001610129565b5f545b604051908152602001610129565b6101b4610592565b005b6101c96101c43660046109ee565b61059e565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352602083019190915201610129565b6100fc61020f366004610a79565b610605565b6101b4610222366004610ad8565b6001805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560028054929093169116179055565b6101c96102833660046109ee565b610638565b61029b610296366004610b0f565b61069f565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b602083015201610129565b6100fc61020f366004610b90565b61019e6102f2366004610bea565b6106d3565b6100fc61020f366004610c01565b5f81156103a6575f8061031a84860186610d4e565b6001546040517f4afe393c00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690634afe393c906103769085908590600401610e93565b5f604051808303815f87803b15801561038d575f80fd5b505af115801561039f573d5f803e3d5ffd5b5050505050505b507f21d0ee700000000000000000000000000000000000000000000000000000000095945050505050565b5f8115610472575f806103e684860186610d4e565b6001546040517f4afe393c00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690634afe393c906104429085908590600401610e93565b5f604051808303815f87803b158015610459575f80fd5b505af115801561046b573d5f803e3d5ffd5b5050505050505b507f259982e50000000000000000000000000000000000000000000000000000000095945050505050565b5f80806104b56104b06020890189610f26565b6106f1565b6104c86104b06040890160208a01610f26565b5f806104d686880188610d4e565b6001546040517f4afe393c00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690634afe393c906105329085908590600401610e93565b5f604051808303815f87803b158015610549575f80fd5b505af115801561055b573d5f803e3d5ffd5b507f575e24b4000000000000000000000000000000000000000000000000000000009d5f9d508d9c509a5050505050505050505050565b61059c5f8061084b565b565b5f806105d5865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f6c2bbe7e00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061066f865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f9f063efc00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81815481106106e1575f80fd5b5f91825260209091200154905081565b6002546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529082169063095ea7b3906044016020604051808303815f875af1158015610786573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107aa9190610f48565b506002546001546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291821660248201526044810182905265ffffffffffff60648201529116906387517c45906084015f604051808303815f87803b158015610832575f80fd5b505af1158015610844573d5f803e3d5ffd5b5050505050565b5080545f8255905f5260205f20908101906108669190610869565b50565b5b8082111561087d575f815560010161086a565b5090565b73ffffffffffffffffffffffffffffffffffffffff81168114610866575f80fd5b5f60a082840312156108b2575f80fd5b50919050565b5f608082840312156108b2575f80fd5b5f8083601f8401126108d8575f80fd5b50813567ffffffffffffffff8111156108ef575f80fd5b602083019150836020828501011115610906575f80fd5b9250929050565b5f805f805f6101608688031215610922575f80fd5b853561092d81610881565b945061093c87602088016108a2565b935061094b8760c088016108b8565b925061014086013567ffffffffffffffff811115610967575f80fd5b610973888289016108c8565b969995985093965092949392505050565b5f606082840312156108b2575f80fd5b5f805f805f61014086880312156109a9575f80fd5b85356109b481610881565b94506109c387602088016108a2565b93506109d28760c08801610984565b925061012086013567ffffffffffffffff811115610967575f80fd5b5f805f805f805f6101a0888a031215610a05575f80fd5b8735610a1081610881565b9650610a1f8960208a016108a2565b9550610a2e8960c08a016108b8565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115610a5a575f80fd5b610a668a828b016108c8565b989b979a50959850939692959293505050565b5f805f806101008587031215610a8d575f80fd5b8435610a9881610881565b9350610aa786602087016108a2565b925060c0850135610ab781610881565b915060e0850135600281900b8114610acd575f80fd5b939692955090935050565b5f8060408385031215610ae9575f80fd5b8235610af481610881565b91506020830135610b0481610881565b809150509250929050565b5f805f805f806101608789031215610b25575f80fd5b8635610b3081610881565b9550610b3f88602089016108a2565b9450610b4e8860c08901610984565b9350610120870135925061014087013567ffffffffffffffff811115610b72575f80fd5b610b7e89828a016108c8565b979a9699509497509295939492505050565b5f805f805f806101208789031215610ba6575f80fd5b8635610bb181610881565b9550610bc088602089016108a2565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115610b72575f80fd5b5f60208284031215610bfa575f80fd5b5035919050565b5f805f60e08486031215610c13575f80fd5b8335610c1e81610881565b9250610c2d85602086016108a2565b915060c0840135610c3d81610881565b809150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610cbc57610cbc610c48565b604052919050565b5f82601f830112610cd3575f80fd5b813567ffffffffffffffff811115610ced57610ced610c48565b610d1e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610c75565b818152846020838601011115610d32575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215610d5f575f80fd5b823567ffffffffffffffff811115610d75575f80fd5b610d8185828601610cc4565b925050602083013567ffffffffffffffff811115610d9d575f80fd5b8301601f81018513610dad575f80fd5b803567ffffffffffffffff811115610dc757610dc7610c48565b8060051b610dd760208201610c75565b91825260208184018101929081019088841115610df2575f80fd5b6020850192505b83831015610e3857823567ffffffffffffffff811115610e17575f80fd5b610e268a602083890101610cc4565b83525060209283019290910190610df9565b80955050505050509250929050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081525f610ea56040830185610e47565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015610f18577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018552610f02838351610e47565b6020958601959093509190910190600101610ec8565b509098975050505050505050565b5f60208284031215610f36575f80fd5b8135610f4181610881565b9392505050565b5f60208284031215610f58575f80fd5b81518015158114610f41575f80fdfea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b6040516102389190615c3b565b61022e61036e366004615c00565b610c09565b34801561037e575f80fd5b5061026061038d366004615971565b610c67565b34801561039d575f80fd5b506103b16103ac366004615c7d565b610cd8565b6040516102389190615cbc565b3480156103c9575f80fd5b506102ae6103d8366004615d0f565b610e2a565b3480156103e8575f80fd5b506102606103f7366004615d50565b610ecc565b348015610407575f80fd5b5061022e6104163660046159a3565b600560209081525f938452604080852082529284528284209052825290205481565b348015610443575f80fd5b50610457610452366004615d7a565b610f66565b60408051928352602083019190915201610238565b348015610477575f80fd5b5061048b610486366004615e3b565b611165565b60405160029190910b8152602001610238565b3480156104a9575f80fd5b506102ae6104b8366004615d0f565b6113fc565b3480156104c8575f80fd5b506102ae6104d7366004615908565b6114ed565b3480156104e7575f80fd5b5061022e6104f63660046159a3565b6115ac565b348015610506575f80fd5b505f546105269073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610238565b348015610556575f80fd5b5061022e610565366004615c00565b60016020525f908152604090205481565b348015610581575f80fd5b50610353610590366004615e71565b611714565b3480156105a0575f80fd5b506102ae6105af366004615c00565b61174d565b3480156105bf575f80fd5b506102606105ce366004615ee2565b600360209081525f928352604080842090915290825290205460ff1681565b3480156105f8575f80fd5b50610353610607366004615e71565b6117a3565b348015610617575f80fd5b506002546105269073ffffffffffffffffffffffffffffffffffffffff1681565b348015610643575f80fd5b5061022e6106523660046159e1565b6117da565b348015610662575f80fd5b506102ae610671366004615c00565b6117e4565b348015610681575f80fd5b5061022e610690366004615f0e565b6118d3565b3480156106a0575f80fd5b506102ae6106af366004615971565b611a85565b3480156106bf575f80fd5b506102606106ce366004615fcc565b611b09565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061076557507f0f632fb3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061079690849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f908152600460209081526040808320868452909152812080548492906107da90849061604f565b9091555050604080513380825260208201859052859273ffffffffffffffffffffffffffffffffffffffff8816927f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a45060015b9392505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61088e5761088e7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b6108a38361089b83611cfd565b5f0333611d42565b6108c473ffffffffffffffffffffffffffffffffffffffff84168383611da2565b505050565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610919576109197f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61092233611ebf565b905090565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610976576109767f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b816109848161089b84611cfd565b6109a58473ffffffffffffffffffffffffffffffffffffffff831684611fa8565b50505050565b5f81545f5260205ff35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610a0557610a057f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610a0d612047565b60a086205f818152600660205260409020610a27816120af565b6080880151610a509073ffffffffffffffffffffffffffffffffffffffff1689898989896120f6565b610a5b8188886121d9565b9250610a688884336122d3565b6040805188815260208101889052339184917f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb910160405180910390a36080880151610ace9073ffffffffffffffffffffffffffffffffffffffff1689898989896122fb565b505095945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b85548352602083019250600186019550808310610bec5781810382f35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610c5957610c597f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61076582611ebf565b919050565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a79061082c9087815260200190565b60607fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c15610d2a57610d2a7f5090d6c600000000000000000000000000000000000000000000000000000000611cf5565b610d326123d3565b6040517f91dd734600000000000000000000000000000000000000000000000000000000815233906391dd734690610d7090869086906004016160a9565b5f604051808303815f875af1158015610d8b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dd091908101906160bc565b90507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c15610e2257610e227f5212cba100000000000000000000000000000000000000000000000000000000611cf5565b6107656123f9565b604082015162ffffff1662800000141580610e755750816080015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ea357610ea37f30d2164100000000000000000000000000000000000000000000000000000000611cf5565b610eb18162ffffff1661241e565b60a082205f8181526006602052604090206108c4908361245d565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f807fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610fb757610fb77f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610fbf612047565b60a086205f818152600660205260409020610fd9816120af565b60808801516110019073ffffffffffffffffffffffffffffffffffffffff16898989896124b6565b5f6110756040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a5f015160020b81526020018a6020015160020b81526020016110528b60400151612677565b600f0b81526060808d015160020b60208301528b015160409091015283906126ac565b945090506110838185612af1565b945050503373ffffffffffffffffffffffffffffffffffffffff16817ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec885f015189602001518a604001518b606001516040516111019493929190600294850b81529290930b60208301526040820152606081019190915260800190565b60405180910390a360808701515f906111359073ffffffffffffffffffffffffffffffffffffffff16898987878b8b612b24565b9094509050801561114f5761114f88828a608001516122d3565b61115a8885336122d3565b505094509492505050565b5f61116e612047565b6060830151617fff60029190910b13156111b25760608301516111b2907fb70024f80000000000000000000000000000000000000000000000000000000090612cfb565b600160020b836060015160020b12156111f55760608301516111f5907fe9e905880000000000000000000000000000000000000000000000000000000090612cfb565b8251602084015173ffffffffffffffffffffffffffffffffffffffff90811691161061124d578251602084015161124d917f6e6c98300000000000000000000000000000000000000000000000000000000091612d0a565b61127e8360400151846080015173ffffffffffffffffffffffffffffffffffffffff16612d4d90919063ffffffff16565b6112b25760808301516112b2907fe65af6a00000000000000000000000000000000000000000000000000000000090612e1b565b5f6112c5846040015162ffffff16612e3d565b60808501519091506112ee9073ffffffffffffffffffffffffffffffffffffffff168585612e62565b60a084205f81815260066020526040902061130a908584612f35565b9250846020015173ffffffffffffffffffffffffffffffffffffffff16855f015173ffffffffffffffffffffffffffffffffffffffff16827fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438886040015189606001518a608001518a8a6040516113c595949392919062ffffff959095168552600293840b602086015273ffffffffffffffffffffffffffffffffffffffff928316604086015291166060840152900b608082015260a00190565b60405180910390a460808501516113f49073ffffffffffffffffffffffffffffffffffffffff16868686612fed565b505092915050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611444576114447f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b6103e9610fff821610623e900062fff0008316101661148c5761148c7fa7abe2f70000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b60a082206114ae826114a8835f90815260066020526040902090565b906130c2565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61153c5761153c7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b335f90815273ffffffffffffffffffffffffffffffffffffffff8316602052604081205c9061156a83611cfd565b90508181600f0b1461159f5761159f7fbda73abf00000000000000000000000000000000000000000000000000000000611cf5565b6109a584825f0333611d42565b6002545f9073ffffffffffffffffffffffffffffffffffffffff1633146115f6576115f67f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff831615158015611654575073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c8116908416145b15611682576116827fc79e594800000000000000000000000000000000000000000000000000000000611cf5565b811561168e57816116b4565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020545b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260408120805492935083929091906116ed90849061603c565b90915550610838905073ffffffffffffffffffffffffffffffffffffffff84168583611da2565b606060405180602082528360208301526040820191508360051b8201855b80355c845260209384019301818410611732575b5081810382f35b73ffffffffffffffffffffffffffffffffffffffff811661177357611770613116565b50565b5f6117938273ffffffffffffffffffffffffffffffffffffffff1661313b565b905061179f82826131ea565b5050565b606060405180602082528360208301526040820191508360051b8201855b80355484526020938401930181841015611746576117c1565b5f815c5f5260205ff35b5f5473ffffffffffffffffffffffffffffffffffffffff163314611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610b55565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611923576119237f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61192b612047565b83602001515f0361195f5761195f7fbe8b850700000000000000000000000000000000000000000000000000000000611cf5565b60a085205f818152600660205260409020611979816120af565b60808701515f90819081906119a79073ffffffffffffffffffffffffffffffffffffffff168b8b8b8b61324a565b809350819550829450505050611a2384866040518060a001604052808681526020018e6060015160020b81526020018d5f0151151581526020018d6040015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152508c5f0151611a1c578d602001516133f1565b8d516133f1565b60808b01519096505f9250611a54915073ffffffffffffffffffffffffffffffffffffffff168a8a888b8b886134f2565b90955090508015611a6e57611a6e89828b608001516122d3565b611a798986336122d3565b50505050949350505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611ad457611ad47f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b81611ae881611ae284611cfd565b33611d42565b6109a58473ffffffffffffffffffffffffffffffffffffffff83168461368b565b5f3373ffffffffffffffffffffffffffffffffffffffff861614801590611b60575073ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832033845290915290205460ff16155b15611c095773ffffffffffffffffffffffffffffffffffffffff85165f90815260056020908152604080832033845282528083208684529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0757611bce838261603c565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260056020908152604080832033845282528083208884529091529020555b505b73ffffffffffffffffffffffffffffffffffffffff85165f90815260046020908152604080832086845290915281208054849290611c4890849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f90815260046020908152604080832086845290915281208054849290611c8c90849061604f565b90915550506040805133815260208101849052849173ffffffffffffffffffffffffffffffffffffffff80881692908916917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6f800000000000000000000000000000008210611d3e57611d3e7f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5090565b81600f0b5f03611d5157505050565b5f80611d7473ffffffffffffffffffffffffffffffffffffffff8616848661379c565b91509150805f03611d8c57611d876137e2565b611d9b565b815f03611d9b57611d9b613830565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dfd575f805f8085875af1905080611df857611df8835f7ff4b3b1bc0000000000000000000000000000000000000000000000000000000061387e565b6109a5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806109a5576109a5847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e40000000000000000000000000000000000000000000000000000000061387e565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c73ffffffffffffffffffffffffffffffffffffffff8116611f0557349150611f8f565b3415611f3457611f347fb0ec849e00000000000000000000000000000000000000000000000000000000611cf5565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f611f7673ffffffffffffffffffffffffffffffffffffffff841661313b565b9050611f82828261603c565b9350611f8c613116565b50505b611fa281611f9c84611cfd565b85611d42565b50919050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290611fe790849061604f565b90915550506040805133815260208101839052839173ffffffffffffffffffffffffffffffffffffffff8616915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a4505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146120ad576120ad7f0d89438e00000000000000000000000000000000000000000000000000000000611cf5565b565b805473ffffffffffffffffffffffffffffffffffffffff165f03611770576117707f486aa30700000000000000000000000000000000000000000000000000000000611cf5565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760208716156121d0576121ce33878787878760405160240161213b9695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb6a8b0fa0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b505b50505050505050565b60038301545f906fffffffffffffffffffffffffffffffff16808203612222576122227fa74f97ab00000000000000000000000000000000000000000000000000000000611cf5565b61225961222e85611cfd565b5f0361223985611cfd565b5f0360809190911b6fffffffffffffffffffffffffffffffff9091161790565b91508315612293576001850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008702040190555b82156122cb576002850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008602040190555b509392505050565b82516122e9906122e38460801d90565b83611d42565b6108c483602001516122e384600f0b90565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760108716156121d0576121ce3387878787876040516024016123409695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1b4af690000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b620f424062ffffff82161115611770576117707f140021130000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b612466826120af565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167cffffff000000000000000000000000000000000000000000000000000060d083901b16175b90915550565b843373ffffffffffffffffffffffffffffffffffffffff82161461266f575f84604001511380156124ea5750610800861615155b156125a45761259e338686868660405160240161250b95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f259982e50000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b5061266f565b5f8460400151131580156125bb5750610200861615155b1561266f576121d033868686866040516024016125dc95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21d0ee700000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b505050505050565b80600f81900b8114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b6060810151602082015160408301515f92839290916126cb8282613a48565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f1461289b576127048884865f613b0f565b6fffffffffffffffffffffffffffffffff1660208301521515815261272c8883866001613b0f565b6fffffffffffffffffffffffffffffffff166060830152151560408201525f600f85900b126128605760808701515f9060020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761881810783139082900503620d89e891909105036001016fffffffffffffffffffffffffffffffff049050806fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff161115612804576128047fb8e3c3850000000000000000000000000000000000000000000000000000000085612cfb565b806fffffffffffffffffffffffffffffffff1682606001516fffffffffffffffffffffffffffffffff16111561285e5761285e7fb8e3c3850000000000000000000000000000000000000000000000000000000084612cfb565b505b80511561287c57608087015161287c9060058a01908590613bf8565b80604001511561289b57608087015161289b9060058a01908490613bf8565b5f806128a88a8686613c4a565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080612905838a8787613cfe565b9150915061293a61291583611cfd565b61291e83611cfd565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b995050505050505f84600f0b12156129a35780511561297657600283810b5f90815260048a016020526040812081815560018101829055909101555b8060400151156129a357600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14612ae75786545f806129bf8360a01c60020b90565b73ffffffffffffffffffffffffffffffffffffffff8416915091508460020b8260020b1215612a1b57612a14612a0e612a096129fa88613e2f565b612a0388613e2f565b8a61412c565b612677565b60801b90565b9750612ae3565b8360020b8260020b1215612abe57612a52612a3c612a0983612a0388613e2f565b61291e612a09612a4b89613e2f565b858b614164565b60038b0154909850612a76906fffffffffffffffffffffffffffffffff1687614190565b60038b0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612ae3565b612ae05f61291e612a09612ad189613e2f565b612ada89613e2f565b8b614164565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01612b1b612b1283612677565b61291e83612677565b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff89163303612b4d57508490505f612cef565b8591505f87604001511315612c3557610400891615612c3057612c2133898989898989604051602401612b86979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9f063efc0000000000000000000000000000000000000000000000000000000017905260028b1615155b73ffffffffffffffffffffffffffffffffffffffff8c1691906141c0565b9050612c2d828261421a565b91505b612cef565b610100891615612cef57612ce033898989898989604051602401612c5f979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6c2bbe7e0000000000000000000000000000000000000000000000000000000017905260018b161515612c03565b9050612cec828261421a565b91505b97509795505050505050565b815f528060020b60045260245ffd5b60405183815273ffffffffffffffffffffffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604481fd5b5f60808316158015612d6157506008831615155b15612d6d57505f610765565b60408316158015612d8057506004831615155b15612d8c57505f610765565b6104008316158015612da057506002831615155b15612dac57505f610765565b6101008316158015612dc057506001831615155b15612dcc57505f610765565b73ffffffffffffffffffffffffffffffffffffffff831615612e0a57613fff8316151580612e0557506280000062ffffff831614610838565b610838565b5062ffffff16628000001415919050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b5f6280000062ffffff831603612e5457505f919050565b611d3e8262ffffff1661241e565b823373ffffffffffffffffffffffffffffffffffffffff8216146109a5576120008416156109a557611d9b338484604051602401612ea29392919061640c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdc98354e0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff86169061394c565b82545f9073ffffffffffffffffffffffffffffffffffffffff1615612f7d57612f7d7f7983c05100000000000000000000000000000000000000000000000000000000611cf5565b612f868361423b565b90507cffffff000000000000000000000000000000000000000000000000000060d083901b1673ffffffffffffffffffffffffffffffffffffffff841660a083901b76ffffff00000000000000000000000000000000000000001617179093555090919050565b833373ffffffffffffffffffffffffffffffffffffffff821614611d9b57611000851615611d9b5761266f3385858560405160240161302f94939291906164cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fe7e6eb0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff87169061394c565b6130cb826120af565b81547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1679ffffff000000000000000000000000000000000000000000000060b883901b16176124b0565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d565b5f73ffffffffffffffffffffffffffffffffffffffff821661315e575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156131c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610765919061659d565b73ffffffffffffffffffffffffffffffffffffffff82167f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f8073ffffffffffffffffffffffffffffffffffffffff88163303613276575f91506133e6565b60808816156133e6575f61331889338a8a8a8a60405160240161329d9594939291906165b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f575e24b40000000000000000000000000000000000000000000000000000000017905261394c565b9050805160601461334c5761334c7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b604088015162ffffff16628000000361336757606081015191505b60088916156133e457604081015192505f6133828460801d90565b905080600f0b5f146133e2575f851261339f600f83900b8761669c565b9550806133ae575f86126133b2565b5f86135b156133e0576133e07ffa0b71d600000000000000000000000000000000000000000000000000000000611cf5565b505b505b505b955095509592505050565b5f80808080613400898861455f565b93509350935093505f83111561343b5773ffffffffffffffffffffffffffffffffffffffff86165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6134688760801d90565b61347288600f0b90565b85516040808801516020808a01518351600f97880b81529590960b9085015273ffffffffffffffffffffffffffffffffffffffff909216908301526fffffffffffffffffffffffffffffffff16606082015260029190910b608082015262ffffff861660a082015260c00160405180910390a35091979650505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff8916330361351b57508490505f612cef565b5f6135268460801d90565b90505f61353385600f0b90565b905060408b1615613606576135f9612a09338c8c8c8c8c60405160240161355f969594939291906166bb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb47b2fb10000000000000000000000000000000000000000000000000000000017905260048e16151573ffffffffffffffffffffffffffffffffffffffff8f1691906141c0565b61360390826167aa565b90505b5f81600f0b5f14158061361c575082600f0b5f14155b1561367957895160208b01515f1390151514613650576fffffffffffffffffffffffffffffffff8316608083901b1761366a565b6fffffffffffffffffffffffffffffffff8216608084901b175b9050613676898261421a565b98505b979b979a509698505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff841681148015906136e4575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526003602090815260408083209385168352929052205460ff16155b156137915773ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209385168352928152828220868352905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461378f57613754838261603c565b73ffffffffffffffffffffffffffffffffffffffff8087165f9081526005602090815260408083209387168352928152828220888352905220555b505b6109a5848484614dfc565b73ffffffffffffffffffffffffffffffffffffffff8281165f90815290841660205260408120805c91906137d4600f85900b8461669c565b915081815d50935093915050565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181039050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181019050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b60605f805f8451602086015f885af1905080613995576139958461396f856167f8565b7fa9e35b2f0000000000000000000000000000000000000000000000000000000061387e565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080613a13575060208301517fffffffff00000000000000000000000000000000000000000000000000000000166139ee836020015190565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15613a4157613a417f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b5092915050565b8060020b8260020b12613a8057613a807fc4433ed5000000000000000000000000000000000000000000000000000000008383614e92565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600283900b1215613ad657613ad67fd5e2f7ab0000000000000000000000000000000000000000000000000000000083612cfb565b620d89e8600282900b131561179f5761179f7f1ad777f80000000000000000000000000000000000000000000000000000000082612cfb565b600283900b5f908152600485016020526040812080548291906fffffffffffffffffffffffffffffffff8116907001000000000000000000000000000000009004600f0b613b5d8288614190565b6fffffffffffffffffffffffffffffffff808216159084168015919091141596509094505f03613bb057885460a01c60020b60020b8860020b13613bb0576001808a0154908401556002808a0154908401555b5f86613bc557613bc088836167aa565b613bcf565b613bcf8883616864565b90508060801b6fffffffffffffffffffffffffffffffff86161784555050505094509492505050565b600291820b910b80820715613c255760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215613ca0578160010154836001015403945081600201548360020154039350613cf3565b8560020b8160020b12613ccc578260010154826001015403945082600201548260020154039350613cf3565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906fffffffffffffffffffffffffffffffff16600f86900b8203613d6857806fffffffffffffffffffffffffffffffff165f03613d6357613d637faefeb92400000000000000000000000000000000000000000000000000000000611cf5565b613daf565b613d728187614190565b87547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff919091161787555b613de387600101548603826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b9250613e1987600201548503826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115613e7157613e717f8b86327a0000000000000000000000000000000000000000000000000000000084612cfb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613eba576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f17576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f36576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f55576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f74576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f94576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fb4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fd4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ff4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614014576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614034576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614054576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614074576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614095576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140b5576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140d4576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140f1576b048a170391f7dc42444e8fa20260801c5b5f84131561411c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8082600f0b126141535761414c6141478585856001614f6a565b6150a7565b5f03611ced565b611ced6141478585855f035f614f6a565b5f8082600f0b1261417f5761414c61414785858560016150d9565b611ced6141478585855f035f6150d9565b6fffffffffffffffffffffffffffffffff8216600f82900b01608081901c15610765576393dafdf15f526004601cfd5b5f806141cc858561394c565b9050826141dc575f915050610838565b805160401461420e5761420e7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03612b1b612b1283612677565b5f73fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830173ffffffffffffffffffffffffffffffffffffffff1611156142ba576142ba7f614875240000000000000000000000000000000000000000000000000000000083612e1b565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6142e482615144565b60ff169050608081106142ff57607f810383901c9150614309565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14614550578873ffffffffffffffffffffffffffffffffffffffff1661452882613e2f565b73ffffffffffffffffffffffffffffffffffffffff16111561454a5781614552565b80614552565b815b9998505050505050505050565b604080516060810182525f8082526020820181905291810182905281908190855460408601515f8161459957610fff60c484901c166145a3565b610fff60b884901c165b885173ffffffffffffffffffffffffffffffffffffffff8516865261ffff9190911691505f60a085901c60020b60020b602087015260038b01546fffffffffffffffffffffffffffffffff16604087015260808a01515f9062400000166146135760d086901c62ffffff16614625565b6146258b6080015162ffffff166151d8565b9050831561464b57620f4240610fff851662ffffff83168181029290920491010361464d565b805b975050620f42408762ffffff16106146915789515f1215614691576146917f9620624600000000000000000000000000000000000000000000000000000000611cf5565b89515f036146a9575f80985098505050505050614df3565b831561478c5760608a015173ffffffffffffffffffffffffffffffffffffffff86811691161061471b5761471b73ffffffffffffffffffffffffffffffffffffffff86165b60608c01517f7c9c6e8f000000000000000000000000000000000000000000000000000000009190612d0a565b6401000276a373ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff16116147875760608a0151614787907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b61484a565b60608a015173ffffffffffffffffffffffffffffffffffffffff8681169116116147cf576147cf73ffffffffffffffffffffffffffffffffffffffff86166146ee565b73fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff161061484a5760608a015161484a907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915284614899578b6002015461489f565b8b600101545b60e08201525b8215806148e457508a6060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff16145b614c7f57865173ffffffffffffffffffffffffffffffffffffffff168152602080880151908c015161491b9160058f0191886151e7565b1515604083015260020b602082018190527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761812614979577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860208201525b620d89e860020b816020015160020b1261499757620d89e860208201525b6149a48160200151613e2f565b73ffffffffffffffffffffffffffffffffffffffff90811660608381018290528951908e01516149ee939192911680821891811160018a161891909102188960400151868c615312565b60c085015260a0840152608083015273ffffffffffffffffffffffffffffffffffffffff1687528a515f1215614a5757614a2b8160a001516150a7565b83039250614a468160c001518260800151614147919061604f565b614a5090836168b2565b9150614a88565b614a6a8160c001518260800151016150a7565b83019250614a7b8160a001516150a7565b614a85908361669c565b91505b8315614ad7575f848962ffffff1614614abf57620f4240858360c001518460800151010281614ab957614ab96168d1565b04614ac5565b8160c001515b60c08301805182900390529990990198505b60408701516fffffffffffffffffffffffffffffffff1615614b3657614b2a8160c0015170010000000000000000000000000000000089604001516fffffffffffffffffffffffffffffffff1691020490565b60e08201805190910190525b806060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff1603614c4c57806040015115614c27575f8086614b90578d600101548360e00151614b9b565b8260e001518e600201545b915091505f614bf38f85602001518585600292830b5f908152600490940160205260409093206001810180549092039091559081018054909203909155547001000000000000000000000000000000009004600f0b90565b90508715614bfe575f035b614c0c8a6040015182614190565b6fffffffffffffffffffffffffffffffff1660408b01525050505b84614c36578060200151614c3f565b60018160200151035b60020b60208801526148a5565b8051875173ffffffffffffffffffffffffffffffffffffffff908116911614614c7a578651614c3f9061423b565b6148a5565b86516020880151614d149190614cd690899060a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff919091161790565b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161790565b8c55604087015160038d01546fffffffffffffffffffffffffffffffff908116911614614d8357604087015160038d0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b84614d975760e081015160028d0155614da2565b60e081015160018d01555b8a515f1385151514614dcf57614dc8614dba83612677565b61291e858e5f015103612677565b9950614dec565b614de9614de0848d5f015103612677565b61291e84612677565b99505b5050505050505b92959194509250565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290614e3b90849061603c565b9091555050604080513381526020810183905283915f9173ffffffffffffffffffffffffffffffffffffffff8716917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910161203a565b6040518381528260020b60048201528160020b6024820152604481fd5b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411614eed575f80fd5b805f03614eff57508290049050610838565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115614fa3579293925b73ffffffffffffffffffffffffffffffffffffffff8516614fca5762bfc9215f526004601cfd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b1673ffffffffffffffffffffffffffffffffffffffff8686031683615056578673ffffffffffffffffffffffffffffffffffffffff1661504383838973ffffffffffffffffffffffffffffffffffffffff16614eaf565b81615050576150506168d1565b0461509c565b61509c61507a83838973ffffffffffffffffffffffffffffffffffffffff16615482565b8873ffffffffffffffffffffffffffffffffffffffff16808204910615150190565b979650505050505050565b805f811215610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5f73ffffffffffffffffffffffffffffffffffffffff8481169086160360ff81901d908101186c010000000000000000000000006fffffffffffffffffffffffffffffffff851661512b818484614eaf565b9350845f83858409111684019350505050949350505050565b5f808211615150575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b62bfffff8116610c628161241e565b5f80600284810b9086900b818107831391900503831561528557600281900b60081d600181900b5f908152602089905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff808516908190039190911c91821680151595509091908561526757888360ff1686030261527a565b8861527182615144565b840360ff168603025b965050505050615308565b6001908101600281900b60081d80830b5f90815260208a905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841694851b0119908116801515955092939192856152ee57888360ff0360ff16860102615301565b88836152f9836154b2565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff851673ffffffffffffffffffffffffffffffffffffffff808a16908b16101582881280156153f5575f6153588a5f0385620f424003620f4240614eaf565b9050826153715761536c8d8d8d60016150d9565b61537e565b61537e8c8e8d6001614f6a565b96508681106153b2578b9750620f424084146153a9576153a4878586620f424003615482565b6153ab565b865b94506153cb565b8096506153c18d8c838661554c565b9750868a5f030394505b826153e1576153dc8d898d5f614f6a565b6153ed565b6153ed888e8d5f6150d9565b955050615473565b8161540b576154068c8c8c5f614f6a565b615417565b6154178b8d8c5f6150d9565b9450848910615428578a965061543a565b8894506154378c8b87856155b0565b96505b816154515761544c8c888c60016150d9565b61545e565b61545e878d8c6001614f6a565b9550615470868485620f424003615482565b93505b50505095509550955095915050565b5f61548e848484614eaf565b9050818061549e5761549e6168d1565b838509156108385760010180610838575f80fd5b5f8082116154be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff861615171561558c57634f2461b85f526004601cfd5b816155a35761559e8585856001615609565b612b1b565b612b1b858585600161576b565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff86161517156155f057634f2461b85f526004601cfd5b816156015761559e8585855f61576b565b612b1b8585855f5b5f81156156ae575f73ffffffffffffffffffffffffffffffffffffffff84111561565c57615657846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614eaf565b61567c565b61567c6fffffffffffffffffffffffffffffffff8616606086901b6168fe565b90506156a66156a18273ffffffffffffffffffffffffffffffffffffffff891661604f565b6158a0565b915050611ced565b5f73ffffffffffffffffffffffffffffffffffffffff8411156156fa576156f5846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16615482565b615720565b615720606085901b6fffffffffffffffffffffffffffffffff8716808204910615150190565b90508073ffffffffffffffffffffffffffffffffffffffff87161161574c57634323a5555f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff8616039050611ced565b5f825f0361577a575083611ced565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156158455773ffffffffffffffffffffffffffffffffffffffff8616848102908582816157cd576157cd6168d1565b040361580a57818101828110615808576157fe838973ffffffffffffffffffffffffffffffffffffffff1683615482565b9350505050611ced565b505b506156a6818561583073ffffffffffffffffffffffffffffffffffffffff8a16836168fe565b61583a919061604f565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff86168481029085820414818311166158795763f5c787f15f526004601cfd5b8082036157fe6156a18473ffffffffffffffffffffffffffffffffffffffff8b1684615482565b8073ffffffffffffffffffffffffffffffffffffffff81168114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff81168114611770575f80fd5b5f8060408385031215615919575f80fd5b8235615924816158e7565b946020939093013593505050565b5f60208284031215615942575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610838575f80fd5b5f805f60608486031215615983575f80fd5b833561598e816158e7565b95602085013595506040909401359392505050565b5f805f606084860312156159b5575f80fd5b83356159c0816158e7565b925060208401356159d0816158e7565b929592945050506040919091013590565b5f602082840312156159f1575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715615a4857615a486159f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615a9557615a956159f8565b604052919050565b803562ffffff81168114610c62575f80fd5b8035600281900b8114610c62575f80fd5b5f60a08284031215615ad0575f80fd5b60405160a0810167ffffffffffffffff81118282101715615af357615af36159f8565b6040529050808235615b04816158e7565b81526020830135615b14816158e7565b6020820152615b2560408401615a9d565b6040820152615b3660608401615aaf565b60608201526080830135615b49816158e7565b6080919091015292915050565b5f8083601f840112615b66575f80fd5b50813567ffffffffffffffff811115615b7d575f80fd5b602083019150836020828501011115615b94575f80fd5b9250929050565b5f805f805f6101008688031215615bb0575f80fd5b615bba8787615ac0565b945060a0860135935060c0860135925060e086013567ffffffffffffffff811115615be3575f80fd5b615bef88828901615b56565b969995985093965092949392505050565b5f60208284031215615c10575f80fd5b8135610838816158e7565b5f8060408385031215615c2c575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015615c72578351835260209384019390920191600101615c54565b509095945050505050565b5f8060208385031215615c8e575f80fd5b823567ffffffffffffffff811115615ca4575f80fd5b615cb085828601615b56565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8060c08385031215615d20575f80fd5b615d2a8484615ac0565b9150615d3860a08401615a9d565b90509250929050565b80358015158114610c62575f80fd5b5f8060408385031215615d61575f80fd5b8235615d6c816158e7565b9150615d3860208401615d41565b5f805f80848603610140811215615d8f575f80fd5b615d998787615ac0565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615dca575f80fd5b50615dd3615a25565b615ddf60a08701615aaf565b8152615ded60c08701615aaf565b602082015260e086013560408201526101008601356060820152925061012085013567ffffffffffffffff811115615e23575f80fd5b615e2f87828801615b56565b95989497509550505050565b5f8060c08385031215615e4c575f80fd5b615e568484615ac0565b915060a0830135615e66816158e7565b809150509250929050565b5f8060208385031215615e82575f80fd5b823567ffffffffffffffff811115615e98575f80fd5b8301601f81018513615ea8575f80fd5b803567ffffffffffffffff811115615ebe575f80fd5b8560208260051b8401011115615ed2575f80fd5b6020919091019590945092505050565b5f8060408385031215615ef3575f80fd5b8235615efe816158e7565b91506020830135615e66816158e7565b5f805f80848603610120811215615f23575f80fd5b615f2d8787615ac0565b945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615f5e575f80fd5b506040516060810167ffffffffffffffff81118282101715615f8257615f826159f8565b604052615f9160a08701615d41565b815260c0860135602082015260e0860135615fab816158e7565b6040820152925061010085013567ffffffffffffffff811115615e23575f80fd5b5f805f8060808587031215615fdf575f80fd5b8435615fea816158e7565b93506020850135615ffa816158e7565b93969395505050506040820135916060013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107655761076561600f565b808201808211156107655761076561600f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611ced602083018486616062565b5f602082840312156160cc575f80fd5b815167ffffffffffffffff8111156160e2575f80fd5b8201601f810184136160f2575f80fd5b805167ffffffffffffffff81111561610c5761610c6159f8565b61613d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615a4e565b818152856020838501011115616151575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff87168152616209602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8460c08201528360e08201526101206101008201525f61622e61012083018486616062565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff861681526162d5602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f61509c61016083018486616062565b73ffffffffffffffffffffffffffffffffffffffff881681526163b7602082018873ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8551600290810b60c08301526020870151900b60e08201526040860151610100820152606086015161012082015284610140820152836101608201526101a06101808201525f6145526101a083018486616062565b73ffffffffffffffffffffffffffffffffffffffff8416815260e081016164ab602083018573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660c0830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152610100810161656f602083018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff841660c08301528260020b60e083015295945050505050565b5f602082840312156165ad575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8616815261664f602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351151560c0820152602084015160e0820152604084015173ffffffffffffffffffffffffffffffffffffffff166101008201526101406101208201525f61509c61014083018486616062565b8082018281125f8312801582168215821617156113f4576113f461600f565b73ffffffffffffffffffffffffffffffffffffffff87168152616756602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8451151560c0820152602085015160e0820152604085015173ffffffffffffffffffffffffffffffffffffffff16610100820152836101208201526101606101408201525f61622e61016083018486616062565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156107655761076561600f565b805160208201517fffffffff0000000000000000000000000000000000000000000000000000000081169190600482101561685d577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156107655761076561600f565b8181035f831280158383131683831282161715613a4157613a4161600f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82616931577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c634300081a000a60e060405234801561000f575f80fd5b5060405161116838038061116883398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610d716103f75f395f6104cf01525f61049a01525f6101590152610d715ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610acd565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610af5565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610acd565b6104f1565b005b6101336101b8366004610b2f565b60036020525f908152604090205481565b6101336101d7366004610b2f565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610acd565b61050c565b61011a610211366004610acd565b610516565b6101a8610224366004610b4f565b610599565b610133610237366004610bbc565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610bed565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610bed565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c6b565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610bed565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c7e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d51565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c6b565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac8575f80fd5b919050565b5f8060408385031215610ade575f80fd5b610ae783610aa5565b946020939093013593505050565b5f805f60608486031215610b07575f80fd5b610b1084610aa5565b9250610b1e60208501610aa5565b929592945050506040919091013590565b5f60208284031215610b3f575f80fd5b610b4882610aa5565b9392505050565b5f805f805f805f60e0888a031215610b65575f80fd5b610b6e88610aa5565b9650610b7c60208901610aa5565b95506040880135945060608801359350608088013560ff81168114610b9f575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bcd575f80fd5b610bd683610aa5565b9150610be460208401610aa5565b90509250929050565b600181811c90821680610c0157607f821691505b602082108103610c38577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c3e565b5f8083545f8160011c90506001821680610c9957607f821691505b602082108103610cd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610ce45760018114610d1757610d45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d45565b5f888152602090205f5b84811015610d3d57815489820152600190910190602001610d21565b505082870194505b50929695505050505050565b8082018082111561035157610351610c3e56fea164736f6c634300081a000a6040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f0000000000000000000000000000000000000000000000000000000000007a6903611b69577fd5a17abc3865df5c1400c0299bd4ce2eefc8114aec5f9d3dded1745783e57b9890565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000a164736f6c634300081a000a60e060405234801561000f575f80fd5b506040518060400160405280600d81526020016c2bb930b83832b21022ba3432b960991b815250604051806040016040528060048152602001630ae8aa8960e31b8152506012825f908161006391906101c0565b50600161007083826101c0565b5060ff81166080524660a052610084610090565b60c052506102eb915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516100c0919061027a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061015057607f821691505b60208210810361016e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101bb57805f5260205f20601f840160051c810160208510156101995750805b601f840160051c820191505b818110156101b8575f81556001016101a5565b50505b505050565b81516001600160401b038111156101d9576101d9610128565b6101ed816101e7845461013c565b84610174565b6020601f82116001811461021f575f83156102085750848201515b5f19600385901b1c1916600184901b1784556101b8565b5f84815260208120601f198516915b8281101561024e578785015182556020948501946001909201910161022e565b508482101561026b57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546102878161013c565b60018216801561029e57600181146102b3576102e0565b60ff19831686528115158202860193506102e0565b865f5260205f205f5b838110156102d8578154888201526001909101906020016102bc565b505081860193505b509195945050505050565b60805160a05160c051610f096103155f395f6105f101525f6105bc01525f6101ba0152610f095ff3fe6080604052600436106100dc575f3560e01c806370a082311161007c578063a9059cbb11610057578063a9059cbb1461026c578063d0e30db01461028b578063d505accf14610293578063dd62ed3e146102b2575f80fd5b806370a08231146102025780637ecebe001461022d57806395d89b4114610258575f80fd5b806323b872dd116100b757806323b872dd1461016b5780632e1a7d4d1461018a578063313ce567146101a95780633644e515146101ee575f80fd5b806306fdde03146100ef578063095ea7b31461011957806318160ddd14610148575f80fd5b366100eb576100e96102e8565b005b5f80fd5b3480156100fa575f80fd5b50610103610329565b6040516101109190610bd3565b60405180910390f35b348015610124575f80fd5b50610138610133366004610c4e565b6103b4565b6040519015158152602001610110565b348015610153575f80fd5b5061015d60025481565b604051908152602001610110565b348015610176575f80fd5b50610138610185366004610c76565b61042d565b348015610195575f80fd5b506100e96101a4366004610cb0565b61056d565b3480156101b4575f80fd5b506101dc7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610110565b3480156101f9575f80fd5b5061015d6105b9565b34801561020d575f80fd5b5061015d61021c366004610cc7565b60036020525f908152604090205481565b348015610238575f80fd5b5061015d610247366004610cc7565b60056020525f908152604090205481565b348015610263575f80fd5b50610103610613565b348015610277575f80fd5b50610138610286366004610c4e565b610620565b6100e96102e8565b34801561029e575f80fd5b506100e96102ad366004610ce7565b6106a3565b3480156102bd575f80fd5b5061015d6102cc366004610d54565b600460209081525f928352604080842090915290825290205481565b6102f233346109c1565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b5f805461033590610d85565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610d85565b80156103ac5780601f10610383576101008083540402835291602001916103ac565b820191905f5260205f20905b81548152906001019060200180831161038f57829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061041b9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104bf5761048e8382610e03565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f90815260036020526040812080548592906104f3908490610e03565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061055a9087815260200190565b60405180910390a3506001949350505050565b6105773382610a38565b60405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a26105b63382610ac4565b50565b5f7f000000000000000000000000000000000000000000000000000000000000000046146105ee576105e9610b3b565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461033590610d85565b335f90815260036020526040812080548391908390610640908490610e03565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061041b9086815260200190565b42841015610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161071d6105b9565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561086b573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906108e657508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61094c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610709565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b8060025f8282546109d29190610e16565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526003602052604081208054839290610a6c908490610e03565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a2c565b5f805f805f85875af1905080610b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610709565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051610b6b9190610e29565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c49575f80fd5b919050565b5f8060408385031215610c5f575f80fd5b610c6883610c26565b946020939093013593505050565b5f805f60608486031215610c88575f80fd5b610c9184610c26565b9250610c9f60208501610c26565b929592945050506040919091013590565b5f60208284031215610cc0575f80fd5b5035919050565b5f60208284031215610cd7575f80fd5b610ce082610c26565b9392505050565b5f805f805f805f60e0888a031215610cfd575f80fd5b610d0688610c26565b9650610d1460208901610c26565b95506040880135945060608801359350608088013560ff81168114610d37575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610d65575f80fd5b610d6e83610c26565b9150610d7c60208401610c26565b90509250929050565b600181811c90821680610d9957607f821691505b602082108103610dd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561042757610427610dd6565b8082018082111561042757610427610dd6565b5f8083545f8160011c90506001821680610e4457607f821691505b602082108103610e7b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610e8f5760018114610ec257610ef0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610ef0565b5f888152602090205f5b84811015610ee857815489820152600190910190602001610ecc565b505082870194505b5092969550505050505056fea164736f6c634300081a000a","sourceMap":"3126:44:9:-:0;;;-1:-1:-1;;3126:44:9;;;3166:4;3126:44;;;;;;1016:26:19;;;;;;;;;-1:-1:-1;;993:17697:195;2461:87:127;;;2512:3;2461:87;;;;2533:4;2461:87;;;;3126:44:9;2461:87:127;;;;;2405:143;;;-1:-1:-1;;2405:143:127;;;;;;;;;;;;;;;;;3126:44:9;2617:88:127;;;;;;;;;-1:-1:-1;;2617:88:127;;;;;;;;2554:151;;;;;;;;;;;;;;;;;;2751:88;993:17697:195;2751:88:127;2617;2751;;;-1:-1:-1;;2751:88:127;;;;356:29:125;2751:88:127;;;;2711:128;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2711:128:127;;;;;;;;3511:32;;;;;;3541:2;3511:32;;;3549:74;;;-1:-1:-1;;;;;;;;;;;800:28:7;;;;;;974:19:254;;:15;;:19;:::i;:::-;954:39;;1996:103:258;;;-1:-1:-1;;;;;;1996:103:258;2031:66;1996:103;;;2122:10;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2106:26:258;;;-1:-1:-1;;;;;2106:26:258;;;;-1:-1:-1;;;;;;2106:26:258;;;;;;2165:36;;;;;2194:6;2165:36;;;2257:268;;;;;;2331:178;2257:268;;;1107:16:195;;;;;;;;;;;;-1:-1:-1;;;1107:16:195;;;;;;:8;:16::i;:::-;1084:39;;;-1:-1:-1;;;;;1084:39:195;;;;-1:-1:-1;;;;;;1084:39:195;;;;;;1129:63;;;;;1150:42;1129:63;;;1198:64;;;;;1220:42;1198:64;;;1268;;;;;1290:42;1268:64;;;1338;;;;;1360:42;1338:64;;;1408;;;;;;1430:42;1408:64;;;1478:41;;;;;;;;;;;;-1:-1:-1;;;1478:41:195;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;1525:47:195;;993:17697;;;;;;;;;;;;20454:125:10;20518:12;20552:20;20567:4;20552:14;:20::i;:::-;-1:-1:-1;20542:30:10;20454:125;-1:-1:-1;;20454:125:10:o;20173:242::-;20243:12;20257:18;20335:4;20318:22;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;20318:22:10;;;;;;;20308:33;;20318:22;20308:33;;;;-1:-1:-1;;;;;;20359:19:10;;;;;3336:25:262;;;20308:33:10;-1:-1:-1;20359:7:10;;;;3309:18:262;;20359:19:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20388:20;;-1:-1:-1;;;20388:20:10;;20352:26;;-1:-1:-1;20388:8:10;;;;:20;;20352:26;;20403:4;;20388:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20173:242;;;:::o;993:17697:195:-;;;;;;;;:::o;14:222:262:-;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;241:127::-;302:10;297:3;293:20;290:1;283:31;333:4;330:1;323:15;357:4;354:1;347:15;373:380;452:1;448:12;;;;495;;;516:61;;570:4;562:6;558:17;548:27;;516:61;623:2;615:6;612:14;592:18;589:38;586:161;;669:10;664:3;660:20;657:1;650:31;704:4;701:1;694:15;732:4;729:1;722:15;586:161;;373:380;;;:::o;884:518::-;986:2;981:3;978:11;975:421;;;1022:5;1019:1;1012:16;1066:4;1063:1;1053:18;1136:2;1124:10;1120:19;1117:1;1113:27;1107:4;1103:38;1172:4;1160:10;1157:20;1154:47;;;-1:-1:-1;1195:4:262;1154:47;1250:2;1245:3;1241:12;1238:1;1234:20;1228:4;1224:31;1214:41;;1305:81;1323:2;1316:5;1313:13;1305:81;;;1382:1;1368:16;;1349:1;1338:13;1305:81;;;1309:3;;975:421;884:518;;;:::o;1578:1299::-;1698:10;;-1:-1:-1;;;;;1720:30:262;;1717:56;;;1753:18;;:::i;:::-;1782:97;1872:6;1832:38;1864:4;1858:11;1832:38;:::i;:::-;1826:4;1782:97;:::i;:::-;1928:4;1959:2;1948:14;;1976:1;1971:649;;;;2664:1;2681:6;2678:89;;;-1:-1:-1;2733:19:262;;;2727:26;2678:89;-1:-1:-1;;1535:1:262;1531:11;;;1527:24;1523:29;1513:40;1559:1;1555:11;;;1510:57;2780:81;;1941:930;;1971:649;831:1;824:14;;;868:4;855:18;;-1:-1:-1;;2007:20:262;;;2125:222;2139:7;2136:1;2133:14;2125:222;;;2221:19;;;2215:26;2200:42;;2328:4;2313:20;;;;2281:1;2269:14;;;;2155:12;2125:222;;;2129:3;2375:6;2366:7;2363:19;2360:201;;;2436:19;;;2430:26;-1:-1:-1;;2519:1:262;2515:14;;;2531:3;2511:24;2507:37;2503:42;2488:58;2473:74;;2360:201;-1:-1:-1;;;;2607:1:262;2591:14;;;2587:22;2574:36;;-1:-1:-1;1578:1299:262:o;2882:303::-;3013:3;3051:6;3045:13;3097:6;3090:4;3082:6;3078:17;3073:3;3067:37;3159:1;3123:16;;3148:13;;;-1:-1:-1;3123:16:262;2882:303;-1:-1:-1;2882:303:262:o;3372:290::-;3442:6;3495:2;3483:9;3474:7;3470:23;3466:32;3463:52;;;3511:1;3508;3501:12;3463:52;3537:16;;-1:-1:-1;;;;;3582:31:262;;3572:42;;3562:70;;3628:1;3625;3618:12;3562:70;3651:5;3372:290;-1:-1:-1;;;3372:290:262:o;3667:515::-;3873:1;3869;3864:3;3860:11;3856:19;3848:6;3844:32;3833:9;3826:51;3913:2;3908;3897:9;3893:18;3886:30;3807:4;3945:6;3939:13;3988:6;3983:2;3972:9;3968:18;3961:34;4047:6;4042:2;4034:6;4030:15;4025:2;4014:9;4010:18;4004:50;4103:1;4098:2;4089:6;4078:9;4074:22;4070:31;4063:42;4173:2;4166;4162:7;4157:2;4149:6;4145:15;4141:29;4130:9;4126:45;4122:54;4114:62;;;3667:515;;;;;:::o;:::-;993:17697:195;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102e5575f3560e01c806393ad73ed11610186578063c0406226116100dc578063e0bab4c411610087578063f8ccbf4711610062578063f8ccbf471461084c578063f8ce27ef1461087d578063fa7626d414610891575f80fd5b8063e0bab4c4146107f8578063e20c9f7114610824578063ea502e5214610838575f80fd5b8063c9ec1872116100b7578063c9ec1872146107bc578063cb695390146107d0578063dd39f19c146107e4575f80fd5b8063c040622614610768578063c54e44eb1461077c578063c7b8e15d146107a8575f80fd5b8063b0464fdc1161013c578063b5d12c4e11610117578063b5d12c4e1461070f578063b7af3cdc14610723578063ba414fa614610744575f80fd5b8063b0464fdc1461067d578063b1a73b8a14610691578063b5508aa9146106fb575f80fd5b8063a12837ed1161016c578063a12837ed14610632578063a18246e214610646578063abbd42f114610669575f80fd5b806393ad73ed146105d95780639406840814610606575f80fd5b80634dede3de1161023b57806367382c05116101f157806385226c81116101cc57806385226c811461056b57806389a302711461058c578063916a17c6146105b8575f80fd5b806367382c051461052f57806372961883146105435780638173a5d614610557575f80fd5b806363e8f7281161022157806363e8f728146104ce5780636602ca0e146104fa57806366d9a9a01461050e575f80fd5b80634dede3de1461048e578063542524dd146104ba575f80fd5b8063307b90841161029b5780633f7286f4116102765780633f7286f41461043a5780634aa4a4fc1461044e5780634b4b6ca31461047a575f80fd5b8063307b9084146103bd57806339cd2013146103d15780633e5e3c2314610426575f80fd5b8063106d0231116102cb578063106d0231146103255780631ed7831c1461037b5780632ade38801461039c575f80fd5b806303ef31f6146102f05780630a9254e414610311575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061030f61030a366004617ade565b6108aa565b005b34801561031c575f80fd5b5061030f6108be565b348015610330575f80fd5b506047546103519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610386575f80fd5b5061038f610a4b565b6040516103729190617af9565b3480156103a7575f80fd5b506103b0610ab8565b6040516103729190617b9d565b3480156103c8575f80fd5b5061030f610c01565b3480156103dc575f80fd5b506023546024546025546103fe92600281810b936301000000909204900b9184565b60408051600295860b81529390940b6020840152928201526060810191909152608001610372565b348015610431575f80fd5b5061038f610fd7565b348015610445575f80fd5b5061038f611042565b348015610459575f80fd5b506054546103519073ffffffffffffffffffffffffffffffffffffffff1681565b348015610485575f80fd5b5061030f6110ad565b348015610499575f80fd5b506059546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104c5575f80fd5b5061035161120f565b3480156104d9575f80fd5b50604d546103519073ffffffffffffffffffffffffffffffffffffffff1681565b348015610505575f80fd5b5061030f611231565b348015610519575f80fd5b506105226112fd565b6040516103729190617d0b565b34801561053a575f80fd5b5061030f611476565b34801561054e575f80fd5b5061030f61158a565b348015610562575f80fd5b5061030f61208a565b348015610576575f80fd5b5061057f61228d565b6040516103729190617da7565b348015610597575f80fd5b506056546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105c3575f80fd5b506105cc612358565b6040516103729190617e1c565b3480156105e4575f80fd5b506020546021546022546103fe92600281810b936301000000909204900b9184565b348015610611575f80fd5b506058546103519073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063d575f80fd5b5061030f61245b565b348015610651575f80fd5b5061065b605b5481565b604051908152602001610372565b348015610674575f80fd5b5061030f6124fc565b348015610688575f80fd5b506105cc6128e8565b34801561069c575f80fd5b506026546027546028546106c89260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff1690820152606001610372565b348015610706575f80fd5b5061057f6129eb565b34801561071a575f80fd5b5061030f612ab6565b34801561072e575f80fd5b50610737612f49565b6040516103729190617ebe565b34801561074f575f80fd5b50610758612fd5565b6040519015158152602001610372565b348015610773575f80fd5b506103516130a5565b348015610787575f80fd5b506057546103519073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107b3575f80fd5b5061035161316b565b3480156107c7575f80fd5b5061035161317b565b3480156107db575f80fd5b5061030f613189565b3480156107ef575f80fd5b5061030f613311565b348015610803575f80fd5b506055546103519073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082f575f80fd5b5061038f6135de565b348015610843575f80fd5b5061030f613649565b348015610857575f80fd5b506043546107589074010000000000000000000000000000000000000000900460ff1681565b348015610888575f80fd5b5061030f613de6565b34801561089c575f80fd5b50601f546107589060ff1681565b6108b381614262565b6108bb614405565b50565b6108c6614449565b6108ce6144d4565b602a805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560298054949093169316831790915561093e91905f610bb86c0100000000000000000000000061454a565b508051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b54610a4991166108aa565b565b60606016805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015610be1578382905f5260205f20018054610b5690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8290617ed0565b8015610bcd5780601f10610ba457610100808354040283529160200191610bcd565b820191905f5260205f20905b815481529060010190602001808311610bb057829003601f168201915b505050505081526020019060010190610b39565b505050508152505081526020019060010190610adb565b50505050905090565b603754770100000000000000000000000000000000000000000000009004600290810b905f90610c32908390617f4e565b905068056bc75e2d63100000805f610c6a6c01000000000000000000000000610c5a876146a6565b610c63876146a6565b86866149a3565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603854831660e085015290835289810b6020808501919091529089900b8385015260445484517f75794a3c00000000000000000000000000000000000000000000000000000000815294516fffffffffffffffffffffffffffffffff96909616965092945f9493909216926375794a3c92600480830193928290030181865afa158015610d78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9c9190617f6d565b9050610dd7828460015f5b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b50614ac4565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63f28dceb37fed15e6cf00000000000000000000000000000000000000000000000000000000610e1d846001617fb1565b604051602401610e2f91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252610ebf91600401617ebe565b5f604051808303815f87803b158015610ed6575f80fd5b505af1158015610ee8573d5f803e3d5ffd5b505060495460445473ffffffffffffffffffffffffffffffffffffffff918216935063e9dc6375925016610f1d846001617fb1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015f60405180830381865afa158015610f88573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fcd91908101906180a0565b5050505050505050565b60606018805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b60606017805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b604954604080517fdc4c90d3000000000000000000000000000000000000000000000000000000008152905161115e9273ffffffffffffffffffffffffffffffffffffffff169163dc4c90d39160048083019260209291908290030181865afa15801561111c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114091906180d2565b602b5473ffffffffffffffffffffffffffffffffffffffff16614b62565b604954604080517feb6d3a110000000000000000000000000000000000000000000000000000000081529051610a499273ffffffffffffffffffffffffffffffffffffffff169163eb6d3a119160048083019260209291908290030181865afa1580156111cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f191906180d2565b60545473ffffffffffffffffffffffffffffffffffffffff16614b62565b61122e600173fffd8963efd1fc6a506488495d951d5263988d266180ed565b81565b604954604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152601360448201527f70726f78792062797465636f64652073697a6500000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a906084015b5f604051808303815f87803b1580156112e5575f80fd5b505af11580156112f7573d5f803e3d5ffd5b50505050565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f2090600202016040518060400160405290815f8201805461135090617ed0565b80601f016020809104026020016040519081016040528092919081815260200182805461137c90617ed0565b80156113c75780601f1061139e576101008083540402835291602001916113c7565b820191905f5260205f20905b8154815290600101906020018083116113aa57829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561145e57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161140b5790505b50505050508152505081526020019060010190611320565b5f60405161148390617a85565b604051809103905ff08015801561149c573d5f803e3d5ffd5b50604b546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401611513929190618119565b5f604051808303815f87803b15801561152a575f80fd5b505af115801561153c573d5f803e3d5ffd5b5050604b54604a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b602a546115c0905f9073ffffffffffffffffffffffffffffffffffffffff1681610bb86c0100000000000000000000000061454a565b508051603980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff938416179091556020830151603a8054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16770100000000000000000000000000000000000000000000009190931681029290921790819055608090940151603b805490931693169290921790559004600290810b905f906116d7908390617f4e565b90506116fd60405180606001604052806060815260200160608152602001606081525090565b604454604080517f75794a3c00000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916375794a3c9160048083019260209291908290030181865afa15801561176a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178e9190617f6d565b905068056bc75e2d63100000805f6117bf6c010000000000000000000000006117b6896146a6565b610c63896146a6565b604080516101008101825260395473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152603b5490921660e084015282528a810b602083015289900b918101919091526fffffffffffffffffffffffffffffffff9190911691506118ba6c01000000000000000000000000828460015f6040519080825280601f01601f1916602001820160405280156118b4576020820181803683370190505b50614bfc565b604080518082018252601d8082527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020909201919091526049546044805493517fe9dc637500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481018a905292935f9392169163e9dc637591015f60405180830381865afa15801561196a573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119af91908101906180a0565b90505f8190505f8382516119c39190618147565b67ffffffffffffffff8111156119db576119db617f84565b6040519080825280601f01601f191660200182016040528015611a05576020820181803683370190505b5090505f5b8151811015611a815782611a1e8683617fb1565b81518110611a2e57611a2e61815a565b602001015160f81c60f81b828281518110611a4b57611a4b61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101611a0a565b505f611a8c82614caf565b6040517f6a82600a00000000000000000000000000000000000000000000000000000000815290915081905f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636a82600a90611ae3908590600401617ebe565b5f60405180830381865afa158015611afd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b429190810190618187565b905080806020019051810190611b5891906181cc565b604954603954603a546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152929f50611c149d50169a5063dee91a2c99506044019750611bd09650505050505050565b602060405180830381865afa158015611beb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0f91906182b5565b614e80565b603954605a80545f92611cc49273ffffffffffffffffffffffffffffffffffffffff90911691611c4390617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054611c6f90617ed0565b8015611cba5780601f10611c9157610100808354040283529160200191611cba565b820191905f5260205f20905b815481529060010190602001808311611c9d57829003601f168201915b5050505050614ef6565b603a54605a80549293505f92611cf59273ffffffffffffffffffffffffffffffffffffffff169190611c4390617ed0565b603a549091505f90611d239074010000000000000000000000000000000000000000900462ffffff16614f7c565b603a546029549192505f91611d9b918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b602a54611d959073ffffffffffffffffffffffffffffffffffffffff1661528f565b5f6153bb565b603a546029549192505f91611deb918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b9050611e2287604001518486888686604051602001611e0e9594939291906182eb565b604051602081830303815290604052615579565b5050602b545f90611e489073ffffffffffffffffffffffffffffffffffffffff166155cb565b6039549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611e9257603954611e8d9073ffffffffffffffffffffffffffffffffffffffff166155cb565b611ec9565b6040518060400160405280600681526020017f4e617469766500000000000000000000000000000000000000000000000000008152505b603a549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611f1357603a54611f0e9073ffffffffffffffffffffffffffffffffffffffff166155cb565b611f4a565b6040518060400160405280600681526020017f4e617469766500000000000000000000000000000000000000000000000000008152505b90505f611f56886155ee565b603b549091505f9073ffffffffffffffffffffffffffffffffffffffff1615611fbf57603b54611f9b9073ffffffffffffffffffffffffffffffffffffffff166155cb565b604051602001611fab91906183e2565b604051602081830303815290604052611ff6565b6040518060400160405280600781526020017f4e6f20486f6f6b000000000000000000000000000000000000000000000000008152505b905061207c8a5f0151888a888b888e60405160200161201a96959493929190618413565b60405160208183030381529060405286848a8760405160200161204094939291906185be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611e0e9291602001618795565b505050505050505050505050565b6040517f8d1cc92500000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f506f736974696f6e44657363726970746f722e736f6c3a506f736974696f6e4460448201527f657363726970746f7200000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a908290638d1cc925906084015f60405180830381865afa15801561214b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526121909190810190618187565b6040516020016121a091906187a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152828252805160209091012060e084901b7fffffffff000000000000000000000000000000000000000000000000000000001683526004830191909152604a60448301527f706f736974696f6e2064657363726970746f7220696e6974636f64652068617360648301527f682028776974686f757420636f6e7374727563746f7220706172616d732c206160848301527f732075696e74323536290000000000000000000000000000000000000000000060a4830152602482015260c4016112ce565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f200180546122cd90617ed0565b80601f01602080910402602001604051908101604052809291908181526020018280546122f990617ed0565b80156123445780601f1061231b57610100808354040283529160200191612344565b820191905f5260205f20905b81548152906001019060200180831161232757829003601f168201915b5050505050815260200190600101906122b0565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561244357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116123f05790505b5050505050815250508152602001906001019061237b565b604754604080517f51db805a0000000000000000000000000000000000000000000000000000000081526004810191909152602060448201527f706f736974696f6e44657363726970746f722062797465636f64652073697a65606482015273ffffffffffffffffffffffffffffffffffffffff9091163b6024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906351db805a906084016112ce565b6049546054546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526125bd92919091169063166c5978906024015b602060405180830381865afa158015612573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125979190617f6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c615727565b6049546040517f166c59780000000000000000000000000000000000000000000000000000000081525f60048201526126159173ffffffffffffffffffffffffffffffffffffffff169063166c597890602401612558565b6049546056546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526126b692919091169063166c5978906024015b602060405180830381865afa15801561268c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b09190617f6d565b5f615727565b6049546057546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261271692919091169063166c597890602401612671565b6049546055546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261277692919091169063166c597890602401612671565b6049546058546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526127d692919091169063166c597890602401612671565b6049546059546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261283692919091169063166c597890602401612671565b60495460408051808201909152600581527f414c4943450000000000000000000000000000000000000000000000000000006020820152610a499173ffffffffffffffffffffffffffffffffffffffff169063166c5978906128979061577f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401612671565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015610bf8575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156129d357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116129805790505b5050505050815250508152602001906001019061290b565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015610bf8578382905f5260205f20018054612a2b90617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a5790617ed0565b8015612aa25780601f10612a7957610100808354040283529160200191612aa2565b820191905f5260205f20905b815481529060010190602001808311612a8557829003601f168201915b505050505081526020019060010190612a0e565b6040517f4049ddd200000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634049ddd2906024015f604051808303815f87803b158015612b19575f80fd5b505af1158015612b2b573d5f803e3d5ffd5b50506049546054546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612b8d94509116915063166c597890602401612558565b6049546040517f166c59780000000000000000000000000000000000000000000000000000000081525f6004820152612be59173ffffffffffffffffffffffffffffffffffffffff169063166c597890602401612558565b6049546056546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612c8792919091169063166c597890602401602060405180830381865afa158015612c5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c7f9190617f6d565b61012c615727565b6049546057546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612d2892919091169063166c597890602401602060405180830381865afa158015612cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d219190617f6d565b60c8615727565b6049546055546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612dc992919091169063166c597890602401602060405180830381865afa158015612d9e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc29190617f6d565b6064615727565b6049546058546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612e8992919091169063166c597890602401602060405180830381865afa158015612e3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e639190617f6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff38615727565b6049546059546040517f166c597800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015261283692919091169063166c597890602401602060405180830381865afa158015612eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f239190617f6d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed4615727565b605a8054612f5690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054612f8290617ed0565b8015612fcd5780601f10612fa457610100808354040283529160200191612fcd565b820191905f5260205f20905b815481529060010190602001808311612fb057829003601f168201915b505050505081565b6008545f9060ff1615612fec575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561307a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061309e9190617f6d565b1415905090565b5f80604051806123e001604052806123c08152602001620125286123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c78290613128906e22d473030f116ddee9f6b43ac78ba3908590600401618119565b5f604051808303815f87803b15801561313f575f80fd5b505af1158015613151573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b61122e6401000276a360016187b4565b5f6131846130a5565b905090565b5f60405161319690617a93565b604051809103905ff0801580156131af573d5f803e3d5ffd5b506050546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401613226929190618119565b5f604051808303815f87803b15801561323d575f80fd5b505af115801561324f573d5f803e3d5ffd5b5050605054604f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604480546046546040517f90107afe000000000000000000000000000000000000000000000000000000008152918516600483015290931660248401529093506390107afe9250015b5f604051808303815f87803b1580156132f8575f80fd5b505af115801561330a573d5f803e3d5ffd5b5050505050565b6040517f4049ddd200000000000000000000000000000000000000000000000000000000815260016004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634049ddd2906024015f604051808303815f87803b158015613374575f80fd5b505af1158015613386573d5f803e3d5ffd5b50506049546056546054546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261343294509116915063dee91a2c90604401602060405180830381865afa158015613409573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061342d91906182b5565b615790565b6049546055546056546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261349d92919091169063dee91a2c90604401611bd0565b6049546059546054546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261350892919091169063dee91a2c90604401611bd0565b6049546059546056546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9283166004820152908216602482015261357392919091169063dee91a2c90604401611bd0565b6049546059546055546040517fdee91a2c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152610a4992919091169063dee91a2c90604401611bd0565b60606015805480602002602001604051908101604052809291908181526020018280548015610aae57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a83575050505050905090565b603754770100000000000000000000000000000000000000000000009004600290810b905f9061367a908390617f4e565b90505f60445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061370b9190617f6d565b905061373160405180606001604052806060815260200160608152602001606081525090565b68056bc75e2d63100000805f6137576c010000000000000000000000006117b6896146a6565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301908152603754808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c085015260385490921660e084015282528a810b602083015289900b918101919091526fffffffffffffffffffffffffffffffff919091169150613819818360015f610da7565b604080518082018252601d8082527f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000006020909201919091526049546044805493517fe9dc637500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152602481018b905292935f9392169163e9dc637591015f60405180830381865afa1580156138c9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261390e91908101906180a0565b90505f8190505f8382516139229190618147565b67ffffffffffffffff81111561393a5761393a617f84565b6040519080825280601f01601f191660200182016040528015613964576020820181803683370190505b5090505f5b81518110156139e0578261397d8683617fb1565b8151811061398d5761398d61815a565b602001015160f81c60f81b8282815181106139aa576139aa61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101613969565b505f6139eb82614caf565b6040517f6a82600a00000000000000000000000000000000000000000000000000000000815290915081905f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90636a82600a90613a42908590600401617ebe565b5f60405180830381865afa158015613a5c573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613aa19190810190618187565b905080806020019051810190613ab791906181cc565b6049546036546037546040517fdee91a2c000000000000000000000000000000000000000000000000000000008152939f50613b2b9e5073ffffffffffffffffffffffffffffffffffffffff9283169d5063dee91a2c9c50611bd09b509082169950169650600401945061828e9350505050565b602954605a80545f92613b5a9273ffffffffffffffffffffffffffffffffffffffff90911691611c4390617ed0565b602a54605a80549293505f92613b8b9273ffffffffffffffffffffffffffffffffffffffff169190611c4390617ed0565b6037549091505f90613bb99074010000000000000000000000000000000000000000900462ffffff16614f7c565b6037546029549192505f91613c09918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b6037546029549192505f91613c59918a917701000000000000000000000000000000000000000000000090910460020b90611d739073ffffffffffffffffffffffffffffffffffffffff1661528f565b9050613c7c86604001518486888686604051602001611e0e9594939291906182eb565b5050602b545f90613ca29073ffffffffffffffffffffffffffffffffffffffff166155cb565b6029549091505f90613cc99073ffffffffffffffffffffffffffffffffffffffff166155cb565b602a549091505f90613cf09073ffffffffffffffffffffffffffffffffffffffff166155cb565b90505f613cfc896155ee565b6038549091505f9073ffffffffffffffffffffffffffffffffffffffff1615613d6557603854613d419073ffffffffffffffffffffffffffffffffffffffff166155cb565b604051602001613d5191906183e2565b604051602081830303815290604052613d9c565b6040518060400160405280600781526020017f4e6f20486f6f6b000000000000000000000000000000000000000000000000008152505b905061207c895f0151888a888b88604051602001613dbe9594939291906187e0565b6040516020818303038152906040528a87858b886040516020016120409594939291906188d6565b604954604080517fb7af3cdc0000000000000000000000000000000000000000000000000000000081529051613f279273ffffffffffffffffffffffffffffffffffffffff169163b7af3cdc916004808301925f9291908290030181865afa158015613e54573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613e9991908101906180a0565b605a8054613ea690617ed0565b80601f0160208091040260200160405190810160405280929190818152602001828054613ed290617ed0565b8015613f1d5780601f10613ef457610100808354040283529160200191613f1d565b820191905f5260205f20905b815481529060010190602001808311613f0057829003601f168201915b5050505050615579565b602b545f90613f6c9073ffffffffffffffffffffffffffffffffffffffff167f504f4c00000000000000000000000000000000000000000000000000000000006157e2565b90506140398173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa158015613fb9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052613ffe91908101906180a0565b6040518060400160405280600381526020017f504f4c0000000000000000000000000000000000000000000000000000000000815250615579565b602b545f9061407e9073ffffffffffffffffffffffffffffffffffffffff167f424e4200000000000000000000000000000000000000000000000000000000006157e2565b905061414b8173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156140cb573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261411091908101906180a0565b6040518060400160405280600381526020017f424e420000000000000000000000000000000000000000000000000000000000815250615579565b602b545f906141909073ffffffffffffffffffffffffffffffffffffffff167f41564158000000000000000000000000000000000000000000000000000000006157e2565b905061425d8173ffffffffffffffffffffffffffffffffffffffff1663b7af3cdc6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156141dd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261422291908101906180a0565b6040518060400160405280600481526020017f4156415800000000000000000000000000000000000000000000000000000000815250615579565b505050565b61426a61317b565b604680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556142b7615900565b604d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055614326817f45544800000000000000000000000000000000000000000000000000000000006157e2565b604980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604654604d5460408051808201909152600181527f030000000000000000000000000000000000000000000000000000000000000060208201526143bd94869493811693620186a09390929116906159e6565b604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6029546144279073ffffffffffffffffffffffffffffffffffffffff16615b96565b602a54610a499073ffffffffffffffffffffffffffffffffffffffff16615b96565b3060405161445690617aa1565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561448c573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f805f61450260027f8000000000000000000000000000000000000000000000000000000000000000615cc6565b9050614541815f815181106145195761451961815a565b6020026020010151826001815181106145345761453461815a565b6020026020010151615e4f565b92509250509091565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a08101825273ffffffffffffffffffffffffffffffffffffffff80891682528716602082015262ffffff85169181018290525f91606082019062800000146145d6576145c6606487618b0c565b6145d1906002618b31565b6145d9565b603c5b60020b815273ffffffffffffffffffffffffffffffffffffffff871660209091015260a08120909250602b546040517f6276cbbe00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690636276cbbe9061465b9085908790600401618b4f565b6020604051808303815f875af1158015614677573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061469b9190618bf5565b509550959350505050565b60020b5f60ff82901d80830118620d89e88111156146e8576146e87f8b86327a0000000000000000000000000000000000000000000000000000000084615e9c565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615614731576ffff97272373d413259a46990580e213a0260801c5b6004821615614750576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561476f576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561478e576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156147ad576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156147cc576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156147eb576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561480b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561482b576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561484b576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561486b576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561488b576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156148ab576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156148cb576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156148eb576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561490c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561492c576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561494b576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614968576b048a170391f7dc42444e8fa20260801c5b5f841315614993577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156149dc579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1611614a2157614a1a858585615eab565b9050614abb565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161015614aad575f614a61878686615eab565b90505f614a6f878986615f68565b9050806fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff1610614aa25780614aa4565b815b92505050614abb565b614ab8858584615f68565b90505b95945050505050565b5f614ad185858585615fc0565b6044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff9091169163dd46508f91614b2e91859190600401618c15565b5f604051808303815f87803b158015614b45575f80fd5b505af1158015614b57573d5f803e3d5ffd5b505050505050505050565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b158015614be2575f80fd5b505afa158015614bf4573d5f803e3d5ffd5b505050505050565b5f614c2986614c0e87602001516146a6565b614c1b88604001516146a6565b614c2488615fe0565b616028565b5090505f614c3986868686615fc0565b60445490915073ffffffffffffffffffffffffffffffffffffffff1663dd46508f614c65846001617fb1565b836045546040518463ffffffff1660e01b8152600401614c86929190618c15565b5f604051808303818588803b158015614c9d575f80fd5b505af115801561207c573d5f803e3d5ffd5b805160609082905f03614cd557604080515f80825260208201909252905b509392505050565b60048151614ce39190618c36565b15614d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c696420626173653634206465636f64657220696e7075740000000060448201526064015b60405180910390fd5b5f6040518060a0016040528060808152602001620148e86080913990505f60048351614d7b9190618c49565b614d86906003618c5c565b90505f614d94826020617fb1565b67ffffffffffffffff811115614dac57614dac617f84565b6040519080825280601f01601f191660200182016040528015614dd6576020820181803683370190505b5090508351840151603d60ff821603614e0357600183039250613d3d61ffff821603614e03576001830392505b50818152600183018485518101602084015b81831015614e7257600483019250825160ff8082168601511660ff808360081c168701511660061b0160ff808360101c1687015116600c1b60ff808460181c168801511660121b010190508060e81b825250600381019050614e15565b509298975050505050505050565b6040517fa59828850000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063a5982885906024015b5f6040518083038186803b158015614ee4575f80fd5b505afa15801561330a573d5f803e3d5ffd5b606073ffffffffffffffffffffffffffffffffffffffff8316614f1a575080614f76565b5f614f45847f95d89b4100000000000000000000000000000000000000000000000000000000616111565b905080515f03614f6057614f5884616264565b915050614f76565b8051600c1015614f7357614f5881616271565b90505b92915050565b60606280000062ffffff831603614fc657505060408051808201909152600781527f44796e616d696300000000000000000000000000000000000000000000000000602082015290565b8162ffffff165f0361500b57505060408051808201909152600281527f3025000000000000000000000000000000000000000000000000000000000000602082015290565b815f805b62ffffff8316156150785760ff811615615035578061502d81618c73565b915050615058565b615040600a84618c91565b62ffffff1615615058578061505481618c73565b9150505b8161506281618cb6565b92506150719050600a84618b0c565b925061500f565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905290600584106151b5575f60046150d060ff861687618147565b10156150dd5760016150df565b5f5b60ff1690506150ef600185618ced565b60ff166150fd600587618147565b1061512a5761510d600185618ced565b60ff1661511b600587618147565b6151259190618147565b61512c565b5f5b60ff851660808501819052909250600190615148908490617fb1565b6151529190618147565b60ff1660a08401526080830151819061516d90600190618ced565b60ff1661517a9190617fb1565b60ff9081166040850152819061519290861684617fb1565b61519d906001617fb1565b6151a79190617fb1565b60ff1660208401525061522a565b6151c0846005618147565b6002608084018190529091506001906151d99083617fb1565b6151e39190618147565b60ff90811660a08401526151f990841682617fb1565b615204906002617fb1565b60ff166020830181905261521a90600290618ced565b60ff166040830152600160c08301525b61523760ff841685618147565b61524290600a618e27565b6152519062ffffff8916618c49565b8252600160e083015260048411615268575f615273565b615273600485618147565b60ff16606083015261528482616306565b979650505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82166152b357506012919050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f313ce5670000000000000000000000000000000000000000000000000000000017905290515f91829173ffffffffffffffffffffffffffffffffffffffff861691615330916187a9565b5f60405180830381855afa9150503d805f8114615368576040519150601f19603f3d011682016040523d82523d5f602084013e61536d565b606091505b50915091508161538057505f9392505050565b80516020036153b2575f8180602001905181019061539e9190617f6d565b905060ff81116153b057949350505050565b505b505f9392505050565b6060846153e8817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618618e32565b6153f29190617f4e565b60020b8660020b0361547957811561543f576040518060400160405280600381526020017f4d41580000000000000000000000000000000000000000000000000000000000815250614a1a565b5060408051808201909152600381527f4d494e00000000000000000000000000000000000000000000000000000000006020820152614abb565b8461548781620d89e8618e32565b6154919190617f4e565b60020b8660020b036155185781156154de576040518060400160405280600381526020017f4d494e0000000000000000000000000000000000000000000000000000000000815250614a1a565b5060408051808201909152600381527f4d415800000000000000000000000000000000000000000000000000000000006020820152614abb565b5f615522876146a6565b905082156155665761556373ffffffffffffffffffffffffffffffffffffffff82167801000000000000000000000000000000000000000000000000618c49565b90505b615571818686616667565b915050614abb565b6040517ff320d963000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f320d96390614bcc9085908590600401618ea5565b6060614f768273ffffffffffffffffffffffffffffffffffffffff1660146168a0565b6060815f0361563057505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b815f5b8115615659578061564381618cb6565b91506156529050600a83618c49565b9150615633565b5f8167ffffffffffffffff81111561567357615673617f84565b6040519080825280601f01601f19166020018201604052801561569d576020820181803683370190505b5090505b841561571f576156b2600183618147565b91506156bf600a86618c36565b6156ca906030617fb1565b60f81b8183815181106156df576156df61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350615718600a86618c49565b94506156a1565b949350505050565b6040517ffe74f05b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d9063fe74f05b90604401614bcc565b5f61578982616ad3565b5092915050565b6040517f0c9fd5810000000000000000000000000000000000000000000000000000000081528115156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90630c9fd58190602401614ece565b604d5460408051808201909152600181525f602082018190529161582091859173ffffffffffffffffffffffffffffffffffffffff16908590616c2e565b604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604e5460408051602080820183525f82528251808401909352600183527f0300000000000000000000000000000000000000000000000000000000000000908301526158b594929092169190616dcc565b604880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790559392505050565b5f806159406040518060400160405280600481526020017f574554480000000000000000000000000000000000000000000000000000000081525061577f565b604c5460408051602073ffffffffffffffffffffffffffffffffffffffff909316803b8083018501909352828252939450737109709ecfa91a80626ff3989d68f67f5b1dd12d9363b4d6c782938693915f918401903c6040518363ffffffff1660e01b81526004016159b3929190618119565b5f604051808303815f87803b1580156159ca575f80fd5b505af11580156159dc573d5f803e3d5ffd5b5092949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff80891660208301528088169282019290925260608101869052818516608082015290831660a08201525f90819060c001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152602360248301527f506f736974696f6e4d616e616765722e736f6c3a506f736974696f6e4d616e6160448301527f6765720000000000000000000000000000000000000000000000000000000000606483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906084015f60405180830381865afa158015615b18573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052615b5d9190810190618187565b82604051602001615b6f929190618795565b6040516020818303038152906040529050838151602083015ff59998505050505050505050565b6046546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529082169063095ea7b3906044016020604051808303815f875af1158015615c2b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190615c4f91906182b5565b50604654604480546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152918216602482015291820181905265ffffffffffff6064830152909116906387517c45906084016132e1565b60608260ff1667ffffffffffffffff811115615ce457615ce4617f84565b604051908082528060200260200182016040528015615d0d578160200160208202803683370190505b5090505f5b8360ff168160ff161015615789576012604051615d2e90617aaf565b615d389190618ec9565b604051809103905ff080158015615d51573d5f803e3d5ffd5b50828260ff1681518110615d6757615d6761815a565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160ff1681518110615db657615db661815a565b60209081029190910101516040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f19906044015f604051808303815f87803b158015615e2d575f80fd5b505af1158015615e3f573d5f803e3d5ffd5b505060019092019150615d129050565b5f808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161015615e8f575082905081615e95565b50819050825b9250929050565b815f528060020b60045260245ffd5b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115615ee4579192915b5f615f298573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616eb7565b9050615f5d615f588483615f3d89896180ed565b73ffffffffffffffffffffffffffffffffffffffff16616eb7565b616f72565b9150505b9392505050565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115615fa1579192915b61571f615f58836c01000000000000000000000000615f3d88886180ed565b6060614abb85856fffffffffffffffffffffffffffffffff808787616fee565b806fffffffffffffffffffffffffffffffff81168114616023576160237f93dafdf10000000000000000000000000000000000000000000000000000000061707a565b919050565b5f808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115616062579293925b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16116160a7576160a0858585617082565b9150616108565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610156160fa576160e6868585617082565b91506160f385878561713e565b9050616108565b61610585858561713e565b90505b94509492505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000851617905290516060915f91829173ffffffffffffffffffffffffffffffffffffffff87169161619491906187a9565b5f60405180830381855afa9150503d805f81146161cc576040519150601f19603f3d011682016040523d82523d5f602084013e6161d1565b606091505b5091509150816161f35760405180602001604052805f81525092505050614f76565b8051602003616226575f818060200190518101906162119190617f6d565b905061621c816171c0565b9350505050614f76565b60408151111561624d578080602001905181019061624491906180a0565b92505050614f76565b505060408051602081019091525f81529392505050565b6060614f76826006617349565b60408051600c80825281830190925260609183915f916020820181803683370190505090505f5b600c811015614ccd578281815181106162b3576162b361815a565b602001015160f81c60f81b8282815181106162d0576162d061815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101616298565b60605f826020015160ff1667ffffffffffffffff81111561632957616329617f84565b6040519080825280601f01601f191660200182016040528015616353576020820181803683370190505b5090508260e00151156163cf577f250000000000000000000000000000000000000000000000000000000000000081600183516163909190618147565b815181106163a0576163a061815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b8260c001511561649d577f3000000000000000000000000000000000000000000000000000000000000000815f8151811061640c5761640c61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f2e000000000000000000000000000000000000000000000000000000000000008160018151811061646e5761646e61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b608083015160ff165b60a08401516164b6906001618f53565b60ff1681101561650d57603060f81b8282815181106164d7576164d761815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016164a6565b505b825115614f76575f836060015160ff161180156165395750826060015160ff16836040015160ff16145b156165bd577f2e000000000000000000000000000000000000000000000000000000000000008184604001805180919061657290618f6c565b60ff1660ff1681525060ff168151811061658e5761658e61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b82516165cb90600a90618c36565b6165d6906030617fb1565b60f81b81846040015160ff16815181106165f2576165f261815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506040830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff1690528251600a90849061665f908390618c49565b90525061650f565b60605f616675858585617518565b90505f61668c828368010000000000000000616eb7565b90506c01000000000000000000000000821080156166da576166d38272047bf19673df52e37f2410011d100000000000700100000000000000000000000000000000616eb7565b91506166fc565b6166f982620186a0700100000000000000000000000000000000616eb7565b91505b815f5b8115616725578061670f81618c73565b915061671e9050600a83618c49565b91506166ff565b616730600182618ced565b90505f8061673e868461766d565b915091508015616756578261675281618c73565b9350505b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091528515616801576167a784602b618ced565b6167b2906007618f53565b60ff9081166020830152600260808301526167d0908516602b618147565b6167db906001617fb1565b60ff1660a082015260208101516167f490600190618ced565b60ff166040820152616876565b60098460ff161061684857616817600485618ced565b60ff16602082018190526005608083015261683490600190618ced565b60ff1660a082015260046040820152616876565b600660208201526005604082018190526168629085618ced565b61686d906001618f53565b60ff1660608201525b82815285151560c08201525f60e082015261689081616306565b9c9b505050505050505050505050565b60605f6168ae836002618c5c565b6168b9906002617fb1565b67ffffffffffffffff8111156168d1576168d1617f84565b6040519080825280601f01601f1916602001820160405280156168fb576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106169315761693161815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106169935761699361815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6169cd846002618c5c565b6169d8906001617fb1565b90505b6001811115616a6a57600f8516600a8110616a03576169fb816057618f53565b60f81b616a12565b616a0e816030618f53565b60f81b5b838381518110616a2457616a2461815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505060049490941c93616a6381618fa6565b90506169db565b508315614f73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f486578206c656e67746820696e73756666696369656e740000000000000000006044820152606401614d46565b5f8082604051602001616ae691906187a9565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015616b83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190616ba791906180d2565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890616bfc9085908790600401618119565b5f604051808303815f87803b158015616c13575f80fd5b505af1158015616c25573d5f803e3d5ffd5b50505050915091565b6040805173ffffffffffffffffffffffffffffffffffffffff8087166020830152851691810191909152606081018390525f908190608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152602960248301527f506f736974696f6e44657363726970746f722e736f6c3a506f736974696f6e4460448301527f657363726970746f720000000000000000000000000000000000000000000000606483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906084015b5f60405180830381865afa158015616d50573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052616d959190810190618187565b82604051602001616da7929190618795565b6040516020818303038152906040529050838151602083015ff5979650505050505050565b5f80858585604051602001616de393929190618fda565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152603b60248301527f5472616e73706172656e745570677261646561626c6550726f78792e736f6c3a60448301527f5472616e73706172656e745570677261646561626c6550726f78790000000000606483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc92590608401616d36565b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411616ef5575f80fd5b805f03616f0757508290049050615f61565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff81168114616023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6c6971756964697479206f766572666c6f7700000000000000000000000000006044820152606401614d46565b60605f616ff96176f6565b90506170606002895f01518a602001518b604001518b8b8b8b8b60405160200161702a989796959493929190619024565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052839190617752565b50875161706e908290617966565b98975050505050505050565b805f5260045ffd5b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156170bb579192915b73ffffffffffffffffffffffffffffffffffffffff84166171347bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1661710287876180ed565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16616eb7565b61571f9190618c49565b5f8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115617177579192915b61571f6fffffffffffffffffffffffffffffffff831661719786866180ed565b73ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000616eb7565b6040805160208082528183019092526060915f91906020820181803683370190505090505f805b6020811015617289575f8582602081106172035761720361815a565b1a60f81b90507fff0000000000000000000000000000000000000000000000000000000000000081161561728057808484815181106172445761724461815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508261727c81618cb6565b9350505b506001016171e7565b505f8167ffffffffffffffff8111156172a4576172a4617f84565b6040519080825280601f01601f1916602001820160405280156172ce576020820181803683370190505b5090505f5b82811015617340578381815181106172ed576172ed61815a565b602001015160f81c60f81b82828151811061730a5761730a61815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506001016172d3565b50949350505050565b6060617356600283618c36565b15801561736257505f82115b801561736f575060288211155b6173a8576040517f6d1eca2800000000000000000000000000000000000000000000000000000000815260048101839052602401614d46565b5f8267ffffffffffffffff8111156173c2576173c2617f84565b6040519080825280601f01601f1916602001820160405280156173ec576020820181803683370190505b50905073ffffffffffffffffffffffffffffffffffffffff84165f5b617413600286618c49565b81101561750e575f617426826013618147565b617431906008618c5c565b83901c9050600f600482901c165f61744c60f0841684618ced565b905061745782617a0c565b86617463866002618c5c565b815181106174735761747361815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053506174aa81617a0c565b866174b6866002618c5c565b6174c1906001617fb1565b815181106174d1576174d161815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535050600190920191506174089050565b5090949350505050565b5f8061753261752d60ff808616908716619130565b617a38565b90505f81118015617544575060128111155b1561764d578260ff168460ff1611156175d657617562600282618c49565b61756d90600a618e27565b61758d9073ffffffffffffffffffffffffffffffffffffffff8716618c5c565b915061759a600282618c36565b6001036175d1576175ce827003298b075b4b6a5240945790619b37fd4a700100000000000000000000000000000000616eb7565b91505b614ccd565b6175e1600282618c49565b6175ec90600a618e27565b61760c9073ffffffffffffffffffffffffffffffffffffffff8716618c49565b9150617619600282618c36565b6001036175d1576175ce827001000000000000000000000000000000007003298b075b4b6a5240945790619b37fd4a616eb7565b505073ffffffffffffffffffffffffffffffffffffffff90921692915050565b5f805f60058460ff16111561769f57617687600585618ced565b61769290600a61914f565b61769c9086618c49565b94505b5f60046176ad600a88618c36565b1190506176bb600a87618c49565b955080156176d1576176ce866001617fb1565b95505b85620186a0036176ed576176e6600a87618c49565b9550600191505b50939492505050565b60408051808201825260608082526020808301829052835191820184525f8285018181528352845181815280830190955292939192908301919061774a565b60608152602001906001900390816177355790505b509052919050565b60408051808201909152606080825260208201525f84602001515160016177799190617fb1565b67ffffffffffffffff81111561779157617791617f84565b6040519080825280601f01601f1916602001820160405280156177bb576020820181803683370190505b5090505f85602001515160016177d19190617fb1565b67ffffffffffffffff8111156177e9576177e9617f84565b60405190808252806020026020018201604052801561781c57816020015b60608152602001906001900390816178075790505b5090505f5b6001825161782f9190618147565b8110156178d9578660200151818151811061784c5761784c61815a565b60200260200101518282815181106178665761786661815a565b6020026020010181905250865f015181815181106178865761788661815a565b602001015160f81c60f81b8382815181106178a3576178a361815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600101617821565b508381600183516178ea9190618147565b815181106178fa576178fa61815a565b60200260200101819052508460f81b82600183516179189190618147565b815181106179285761792861815a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053509085526020850152509192915050565b80516040805173ffffffffffffffffffffffffffffffffffffffff90921660208301526060916179cb91601291015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052859190617752565b50617a0260128360200151604051602001617995919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b50614f7383617a53565b5f600a8260ff161015617a2d57617a24826030618f53565b60f81b92915050565b617a24826037618f53565b5f80821215617a4f57617a4a8261915d565b614f76565b5090565b6060815f01518260200151604051602001617a6f929190619193565b6040516020818303038152906040529050919050565b610804806200922783390190565b610f908062009a2b83390190565b616a05806200a9bb83390190565b61116880620113c083390190565b73ffffffffffffffffffffffffffffffffffffffff811681146108bb575f80fd5b5f60208284031215617aee575f80fd5b8135614f7381617abd565b602080825282518282018190525f918401906040840190835b81811015617b4657835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101617b12565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015617c89577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352617c73848651617b51565b6020958601959094509290920191600101617c39565b509197505050602094850194929092019150600101617bc3565b50929695505050505050565b5f8151808452602084019350602083015f5b82811015617d015781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101617cc1565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805160408752617d756040880182617b51565b9050602082015191508681036020880152617d908183617caf565b965050506020938401939190910190600101617d31565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452617e07858351617b51565b94506020938401939190910190600101617dcd565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015617ca3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452815173ffffffffffffffffffffffffffffffffffffffff81511686526020810151905060406020870152617ea86040870182617caf565b9550506020938401939190910190600101617e42565b602081525f614f736020830184617b51565b600181811c90821680617ee457607f821691505b602082108103617f1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8260020b8260020b028060020b915080821461578957615789617f21565b5f60208284031215617f7d575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b80820180821115614f7657614f76617f21565b6040516060810167ffffffffffffffff81118282101715617fe757617fe7617f84565b60405290565b5f8067ffffffffffffffff84111561800757618007617f84565b506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85018116603f0116810181811067ffffffffffffffff8211171561805457618054617f84565b60405283815290508082840185101561806b575f80fd5b8383602083015e5f60208583010152509392505050565b5f82601f830112618091575f80fd5b614f7383835160208501617fed565b5f602082840312156180b0575f80fd5b815167ffffffffffffffff8111156180c6575f80fd5b61571f84828501618082565b5f602082840312156180e2575f80fd5b8151614f7381617abd565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390811115614f7657614f76617f21565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f61571f6040830184617b51565b81810381811115614f7657614f76617f21565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215618197575f80fd5b815167ffffffffffffffff8111156181ad575f80fd5b8201601f810184136181bd575f80fd5b61571f84825160208401617fed565b5f602082840312156181dc575f80fd5b815167ffffffffffffffff8111156181f2575f80fd5b820160608185031215618203575f80fd5b61820b617fc4565b815167ffffffffffffffff811115618221575f80fd5b61822d86828501618082565b825250602082015167ffffffffffffffff811115618249575f80fd5b61825586828501618082565b602083015250604082015167ffffffffffffffff811115618274575f80fd5b61828086828501618082565b604083015250949350505050565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b5f602082840312156182c5575f80fd5b81518015158114614f73575f80fd5b5f81518060208401855e5f93019283525090919050565b7f556e6973776170202d200000000000000000000000000000000000000000000081525f61831c600a8301886182d4565b7f202d200000000000000000000000000000000000000000000000000000000000815261834c60038201886182d4565b90507f2f00000000000000000000000000000000000000000000000000000000000000815261837e60018201876182d4565b90507f202d20000000000000000000000000000000000000000000000000000000000081526183b060038201866182d4565b90507f3c3e000000000000000000000000000000000000000000000000000000000000815261706e60028201856182d4565b7f307800000000000000000000000000000000000000000000000000000000000081525f614f7360028301846182d4565b7f54686973204e465420726570726573656e74732061206c69717569646974792081527f706f736974696f6e20696e206120556e6973776170207634200000000000000060208201525f61846a60398301896182d4565b7f2d00000000000000000000000000000000000000000000000000000000000000815261851b6185156184a0600184018b6182d4565b7f20706f6f6c2e20546865206f776e6572206f662074686973204e46542063616e81527f206d6f64696679206f722072656465656d2074686520706f736974696f6e2e0a60208201527f0a506f6f6c204d616e6167657220416464726573733a20000000000000000000604082015260570190565b886182d4565b90507f0a00000000000000000000000000000000000000000000000000000000000000815261854d60018201876182d4565b90507f20416464726573733a2000000000000000000000000000000000000000000000815261857f600a8201866182d4565b90507f0a0000000000000000000000000000000000000000000000000000000000000081526185b160018201856182d4565b9998505050505050505050565b7f20416464726573733a200000000000000000000000000000000000000000000081525f6185ef600a8301876182d4565b7f0a486f6f6b20416464726573733a200000000000000000000000000000000000815261861f600f8201876182d4565b90507f0a46656520546965723a200000000000000000000000000000000000000000008152618651600b8201866182d4565b90507f0a546f6b656e2049443a200000000000000000000000000000000000000000008152618683600b8201856182d4565b7f0a0a00000000000000000000000000000000000000000000000000000000000081527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560028201527f20697320696d7065726174697665207768656e20617373657373696e6720746860228201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560428201527f73736573206d61746368207468652065787065637465642063757272656e636960628201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960828201527f6d6974617465642e00000000000000000000000000000000000000000000000060a2820152905060aa8101615284565b5f61571f6187a383866182d4565b846182d4565b5f614f7382846182d4565b73ffffffffffffffffffffffffffffffffffffffff8181168382160190811115614f7657614f76617f21565b7f54686973204e465420726570726573656e74732061206c69717569646974792081527f706f736974696f6e20696e206120556e6973776170207634200000000000000060208201525f61883660398301618515565b7f2d00000000000000000000000000000000000000000000000000000000000000815261887261886c6184a0600184018a6182d4565b876182d4565b90507f0a0000000000000000000000000000000000000000000000000000000000000081526188a460018201866182d4565b90507f20416464726573733a2000000000000000000000000000000000000000000000815261706e600a8201856182d4565b7f0a0000000000000000000000000000000000000000000000000000000000000081525f61890760018301886182d4565b7f20416464726573733a20000000000000000000000000000000000000000000008152618937600a8201886182d4565b90507f0a486f6f6b20416464726573733a2000000000000000000000000000000000008152618969600f8201876182d4565b90507f0a46656520546965723a20000000000000000000000000000000000000000000815261899b600b8201866182d4565b90507f0a546f6b656e2049443a2000000000000000000000000000000000000000000081526189cd600b8201856182d4565b7f0a0a00000000000000000000000000000000000000000000000000000000000081527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560028201527f20697320696d7065726174697665207768656e20617373657373696e6720746860228201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560428201527f73736573206d61746368207468652065787065637465642063757272656e636960628201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960828201527f6d6974617465642e00000000000000000000000000000000000000000000000060a2820152905060aa810161706e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62ffffff831680618b2057618b20618adf565b8062ffffff84160491505092915050565b62ffffff818116838216029081169081811461578957615789617f21565b60c08101618bd2828573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b5f60208284031215618c05575f80fd5b81518060020b8114614f73575f80fd5b604081525f618c276040830185617b51565b90508260208301529392505050565b5f82618c4457618c44618adf565b500690565b5f82618c5757618c57618adf565b500490565b8082028115828204841417614f7657614f76617f21565b5f60ff821660ff8103618c8857618c88617f21565b60010192915050565b5f62ffffff831680618ca557618ca5618adf565b8062ffffff84160691505092915050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203618ce657618ce6617f21565b5060010190565b60ff8281168282160390811115614f7657614f76617f21565b6001815b6001841115618d4157808504811115618d2557618d25617f21565b6001841615618d3357908102905b60019390931c928002618d0a565b935093915050565b5f82618d5757506001614f76565b81618d6357505f614f76565b8160018114618d795760028114618d8357618d9f565b6001915050614f76565b60ff841115618d9457618d94617f21565b50506001821b614f76565b5060208310610133831016604e8410600b8410161715618dc2575081810a614f76565b618ded7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484618d06565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115618e1f57618e1f617f21565b029392505050565b5f614f738383618d49565b5f8160020b8360020b80618e4857618e48618adf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615618e9c57618e9c617f21565b90059392505050565b604081525f618eb76040830185617b51565b8281036020840152615f5d8185617b51565b606081525f618f0560608301600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b8281036020840152618f4181600481527f5445535400000000000000000000000000000000000000000000000000000000602082015260400190565b91505060ff8316604083015292915050565b60ff8181168382160190811115614f7657614f76617f21565b5f60ff821680618f7e57618f7e617f21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b5f81618fb457618fb4617f21565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b73ffffffffffffffffffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201525f614abb6060830184617b51565b6190a3818a73ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8760020b60a08201528660020b60c08201528560e08201526fffffffffffffffffffffffffffffffff85166101008201526fffffffffffffffffffffffffffffffff841661012082015273ffffffffffffffffffffffffffffffffffffffff83166101408201526101806101608201525f619122610180830184617b51565b9a9950505050505050505050565b8181035f83128015838313168383128216171561578957615789617f21565b5f614f7360ff841683618d49565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361918d5761918d617f21565b505f0390565b604081525f6191a56040830185617b51565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015619218577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018552619202838351617b51565b60209586019590935091909101906001016191c8565b50909897505050505050505056fe6080604052348015600e575f80fd5b506107e88061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106100da575f3560e01c80636fe7e6eb11610088578063b6a8b0fa11610063578063b6a8b0fa14610252578063d934d2f714610260578063dc98354e14610273578063e1b4af6914610252575f80fd5b80636fe7e6eb146101e35780639f063efc146101f1578063b47b2fb114610204575f80fd5b806357c5b148116100b857806357c5b1481461017d578063623ea21a1461018e5780636c2bbe7e14610198575f80fd5b806321d0ee70146100de578063259982e5146100de578063575e24b414610127575b5f80fd5b6100f16100ec3660046104d7565b610281565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b61013a61013536600461055e565b6102b4565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff169082015260600161011e565b5f545b60405190815260200161011e565b6101966102e9565b005b6101ab6101a63660046105b8565b6102f5565b604080517fffffffff00000000000000000000000000000000000000000000000000000000909316835260208301919091520161011e565b6100f16100ec366004610643565b6101ab6101ff3660046105b8565b61035c565b6102176102123660046106a2565b6103c3565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b60208301520161011e565b6100f16100ec366004610723565b61018061026e36600461077d565b6103f7565b6100f16100ec366004610794565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6102f35f80610415565b565b5f8061032c865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f6c2bbe7e00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f80610393865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f9f063efc00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8181548110610405575f80fd5b5f91825260209091200154905081565b5080545f8255905f5260205f20908101906104309190610433565b50565b5b80821115610447575f8155600101610434565b5090565b73ffffffffffffffffffffffffffffffffffffffff81168114610430575f80fd5b5f60a0828403121561047c575f80fd5b50919050565b5f6080828403121561047c575f80fd5b5f8083601f8401126104a2575f80fd5b50813567ffffffffffffffff8111156104b9575f80fd5b6020830191508360208285010111156104d0575f80fd5b9250929050565b5f805f805f61016086880312156104ec575f80fd5b85356104f78161044b565b9450610506876020880161046c565b93506105158760c08801610482565b925061014086013567ffffffffffffffff811115610531575f80fd5b61053d88828901610492565b969995985093965092949392505050565b5f6060828403121561047c575f80fd5b5f805f805f6101408688031215610573575f80fd5b853561057e8161044b565b945061058d876020880161046c565b935061059c8760c0880161054e565b925061012086013567ffffffffffffffff811115610531575f80fd5b5f805f805f805f6101a0888a0312156105cf575f80fd5b87356105da8161044b565b96506105e98960208a0161046c565b95506105f88960c08a01610482565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115610624575f80fd5b6106308a828b01610492565b989b979a50959850939692959293505050565b5f805f806101008587031215610657575f80fd5b84356106628161044b565b9350610671866020870161046c565b925060c08501356106818161044b565b915060e0850135600281900b8114610697575f80fd5b939692955090935050565b5f805f805f8061016087890312156106b8575f80fd5b86356106c38161044b565b95506106d2886020890161046c565b94506106e18860c0890161054e565b9350610120870135925061014087013567ffffffffffffffff811115610705575f80fd5b61071189828a01610492565b979a9699509497509295939492505050565b5f805f805f806101208789031215610739575f80fd5b86356107448161044b565b9550610753886020890161046c565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115610705575f80fd5b5f6020828403121561078d575f80fd5b5035919050565b5f805f60e084860312156107a6575f80fd5b83356107b18161044b565b92506107c0856020860161046c565b915060c08401356107d08161044b565b80915050925092509256fea164736f6c634300081a000a6080604052348015600e575f80fd5b50610f748061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806390107afe11610088578063b6a8b0fa11610063578063b6a8b0fa146102d6578063d934d2f7146102e4578063dc98354e146102f7578063e1b4af69146102d6575f80fd5b806390107afe146102145780639f063efc14610275578063b47b2fb114610288575f80fd5b806357c5b148116100c357806357c5b1481461019b578063623ea21a146101ac5780636c2bbe7e146101b65780636fe7e6eb14610201575f80fd5b806321d0ee70146100e9578063259982e514610132578063575e24b414610145575b5f80fd5b6100fc6100f736600461090d565b610305565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b6100fc61014036600461090d565b6103d1565b610158610153366004610994565b61049d565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff1690820152606001610129565b5f545b604051908152602001610129565b6101b4610592565b005b6101c96101c43660046109ee565b61059e565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352602083019190915201610129565b6100fc61020f366004610a79565b610605565b6101b4610222366004610ad8565b6001805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560028054929093169116179055565b6101c96102833660046109ee565b610638565b61029b610296366004610b0f565b61069f565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b602083015201610129565b6100fc61020f366004610b90565b61019e6102f2366004610bea565b6106d3565b6100fc61020f366004610c01565b5f81156103a6575f8061031a84860186610d4e565b6001546040517f4afe393c00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690634afe393c906103769085908590600401610e93565b5f604051808303815f87803b15801561038d575f80fd5b505af115801561039f573d5f803e3d5ffd5b5050505050505b507f21d0ee700000000000000000000000000000000000000000000000000000000095945050505050565b5f8115610472575f806103e684860186610d4e565b6001546040517f4afe393c00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690634afe393c906104429085908590600401610e93565b5f604051808303815f87803b158015610459575f80fd5b505af115801561046b573d5f803e3d5ffd5b5050505050505b507f259982e50000000000000000000000000000000000000000000000000000000095945050505050565b5f80806104b56104b06020890189610f26565b6106f1565b6104c86104b06040890160208a01610f26565b5f806104d686880188610d4e565b6001546040517f4afe393c00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690634afe393c906105329085908590600401610e93565b5f604051808303815f87803b158015610549575f80fd5b505af115801561055b573d5f803e3d5ffd5b507f575e24b4000000000000000000000000000000000000000000000000000000009d5f9d508d9c509a5050505050505050505050565b61059c5f8061084b565b565b5f806105d5865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f6c2bbe7e00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061066f865f80546001810182559080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5630155565b507f9f063efc00000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f806040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81815481106106e1575f80fd5b5f91825260209091200154905081565b6002546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529082169063095ea7b3906044016020604051808303815f875af1158015610786573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107aa9190610f48565b506002546001546040517f87517c4500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291821660248201526044810182905265ffffffffffff60648201529116906387517c45906084015f604051808303815f87803b158015610832575f80fd5b505af1158015610844573d5f803e3d5ffd5b5050505050565b5080545f8255905f5260205f20908101906108669190610869565b50565b5b8082111561087d575f815560010161086a565b5090565b73ffffffffffffffffffffffffffffffffffffffff81168114610866575f80fd5b5f60a082840312156108b2575f80fd5b50919050565b5f608082840312156108b2575f80fd5b5f8083601f8401126108d8575f80fd5b50813567ffffffffffffffff8111156108ef575f80fd5b602083019150836020828501011115610906575f80fd5b9250929050565b5f805f805f6101608688031215610922575f80fd5b853561092d81610881565b945061093c87602088016108a2565b935061094b8760c088016108b8565b925061014086013567ffffffffffffffff811115610967575f80fd5b610973888289016108c8565b969995985093965092949392505050565b5f606082840312156108b2575f80fd5b5f805f805f61014086880312156109a9575f80fd5b85356109b481610881565b94506109c387602088016108a2565b93506109d28760c08801610984565b925061012086013567ffffffffffffffff811115610967575f80fd5b5f805f805f805f6101a0888a031215610a05575f80fd5b8735610a1081610881565b9650610a1f8960208a016108a2565b9550610a2e8960c08a016108b8565b94506101408801359350610160880135925061018088013567ffffffffffffffff811115610a5a575f80fd5b610a668a828b016108c8565b989b979a50959850939692959293505050565b5f805f806101008587031215610a8d575f80fd5b8435610a9881610881565b9350610aa786602087016108a2565b925060c0850135610ab781610881565b915060e0850135600281900b8114610acd575f80fd5b939692955090935050565b5f8060408385031215610ae9575f80fd5b8235610af481610881565b91506020830135610b0481610881565b809150509250929050565b5f805f805f806101608789031215610b25575f80fd5b8635610b3081610881565b9550610b3f88602089016108a2565b9450610b4e8860c08901610984565b9350610120870135925061014087013567ffffffffffffffff811115610b72575f80fd5b610b7e89828a016108c8565b979a9699509497509295939492505050565b5f805f805f806101208789031215610ba6575f80fd5b8635610bb181610881565b9550610bc088602089016108a2565b945060c0870135935060e0870135925061010087013567ffffffffffffffff811115610b72575f80fd5b5f60208284031215610bfa575f80fd5b5035919050565b5f805f60e08486031215610c13575f80fd5b8335610c1e81610881565b9250610c2d85602086016108a2565b915060c0840135610c3d81610881565b809150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610cbc57610cbc610c48565b604052919050565b5f82601f830112610cd3575f80fd5b813567ffffffffffffffff811115610ced57610ced610c48565b610d1e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610c75565b818152846020838601011115610d32575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215610d5f575f80fd5b823567ffffffffffffffff811115610d75575f80fd5b610d8185828601610cc4565b925050602083013567ffffffffffffffff811115610d9d575f80fd5b8301601f81018513610dad575f80fd5b803567ffffffffffffffff811115610dc757610dc7610c48565b8060051b610dd760208201610c75565b91825260208184018101929081019088841115610df2575f80fd5b6020850192505b83831015610e3857823567ffffffffffffffff811115610e17575f80fd5b610e268a602083890101610cc4565b83525060209283019290910190610df9565b80955050505050509250929050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b604081525f610ea56040830185610e47565b828103602084015280845180835260208301915060208160051b840101602087015f5b83811015610f18577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018552610f02838351610e47565b6020958601959093509190910190600101610ec8565b509098975050505050505050565b5f60208284031215610f36575f80fd5b8135610f4181610881565b9392505050565b5f60208284031215610f58575f80fd5b81518015158114610f41575f80fdfea164736f6c634300081a000a60a0604052348015600e575f80fd5b50604051616a05380380616a05833981016040819052602b91607f565b5f80546001600160a01b0319166001600160a01b038316908117825560405183928392917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35050306080525060aa565b5f60208284031215608e575f80fd5b81516001600160a01b038116811460a3575f80fd5b9392505050565b6080516169436100c25f395f61205f01526169435ff3fe6080604052600436106101f4575f3560e01c80635a6bcfda11610117578063a5841194116100ac578063f135baaa1161007c578063f3cd914c11610062578063f3cd914c14610676578063f5298aca14610695578063fe99049a146106b4575f80fd5b8063f135baaa14610638578063f2fde38b14610657575f80fd5b8063a584119414610595578063b6363cf2146105b4578063dbd035ff146105ed578063f02de3b21461060c575f80fd5b80638161b874116100e75780638161b874146104dc5780638da5cb5b146104fb57806397e8cd4e1461054b5780639bf6645f14610576575f80fd5b80635a6bcfda146104385780636276cbbe1461046c5780637e87ce7d1461049e57806380f0b44c146104bd575f80fd5b80632d7713891161018d57806348c894911161015d57806348c894911461039257806352759651146103be578063558a7297146103dd578063598af9e7146103fc575f80fd5b80632d7713891461031557806335fd631a146103345780633dd45adb14610360578063426a849314610373575f80fd5b806311da60b4116101c857806311da60b4146102b0578063156e29f6146102b85780631e2eaeaf146102d7578063234266d7146102f6575f80fd5b8062fdd58e146101f857806301ffc9a714610241578063095bcdb6146102705780630b0d9c091461028f575b5f80fd5b348015610203575f80fd5b5061022e610212366004615908565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561024c575f80fd5b5061026061025b366004615932565b6106d3565b6040519015158152602001610238565b34801561027b575f80fd5b5061026061028a366004615971565b61076b565b34801561029a575f80fd5b506102ae6102a93660046159a3565b61083f565b005b61022e6108c9565b3480156102c3575f80fd5b506102ae6102d2366004615971565b610927565b3480156102e2575f80fd5b5061022e6102f13660046159e1565b6109ab565b348015610301575f80fd5b5061022e610310366004615b9b565b6109b5565b348015610320575f80fd5b506102ae61032f366004615c00565b610ad9565b34801561033f575f80fd5b5061035361034e366004615c1b565b610bcc565b6040516102389190615c3b565b61022e61036e366004615c00565b610c09565b34801561037e575f80fd5b5061026061038d366004615971565b610c67565b34801561039d575f80fd5b506103b16103ac366004615c7d565b610cd8565b6040516102389190615cbc565b3480156103c9575f80fd5b506102ae6103d8366004615d0f565b610e2a565b3480156103e8575f80fd5b506102606103f7366004615d50565b610ecc565b348015610407575f80fd5b5061022e6104163660046159a3565b600560209081525f938452604080852082529284528284209052825290205481565b348015610443575f80fd5b50610457610452366004615d7a565b610f66565b60408051928352602083019190915201610238565b348015610477575f80fd5b5061048b610486366004615e3b565b611165565b60405160029190910b8152602001610238565b3480156104a9575f80fd5b506102ae6104b8366004615d0f565b6113fc565b3480156104c8575f80fd5b506102ae6104d7366004615908565b6114ed565b3480156104e7575f80fd5b5061022e6104f63660046159a3565b6115ac565b348015610506575f80fd5b505f546105269073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610238565b348015610556575f80fd5b5061022e610565366004615c00565b60016020525f908152604090205481565b348015610581575f80fd5b50610353610590366004615e71565b611714565b3480156105a0575f80fd5b506102ae6105af366004615c00565b61174d565b3480156105bf575f80fd5b506102606105ce366004615ee2565b600360209081525f928352604080842090915290825290205460ff1681565b3480156105f8575f80fd5b50610353610607366004615e71565b6117a3565b348015610617575f80fd5b506002546105269073ffffffffffffffffffffffffffffffffffffffff1681565b348015610643575f80fd5b5061022e6106523660046159e1565b6117da565b348015610662575f80fd5b506102ae610671366004615c00565b6117e4565b348015610681575f80fd5b5061022e610690366004615f0e565b6118d3565b3480156106a0575f80fd5b506102ae6106af366004615971565b611a85565b3480156106bf575f80fd5b506102606106ce366004615fcc565b611b09565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061076557507f0f632fb3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061079690849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f908152600460209081526040808320868452909152812080548492906107da90849061604f565b9091555050604080513380825260208201859052859273ffffffffffffffffffffffffffffffffffffffff8816927f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a45060015b9392505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61088e5761088e7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b6108a38361089b83611cfd565b5f0333611d42565b6108c473ffffffffffffffffffffffffffffffffffffffff84168383611da2565b505050565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610919576109197f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61092233611ebf565b905090565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610976576109767f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b816109848161089b84611cfd565b6109a58473ffffffffffffffffffffffffffffffffffffffff831684611fa8565b50505050565b5f81545f5260205ff35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610a0557610a057f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610a0d612047565b60a086205f818152600660205260409020610a27816120af565b6080880151610a509073ffffffffffffffffffffffffffffffffffffffff1689898989896120f6565b610a5b8188886121d9565b9250610a688884336122d3565b6040805188815260208101889052339184917f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb910160405180910390a36080880151610ace9073ffffffffffffffffffffffffffffffffffffffff1689898989896122fb565b505095945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b85548352602083019250600186019550808310610bec5781810382f35b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610c5957610c597f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61076582611ebf565b919050565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a79061082c9087815260200190565b60607fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c15610d2a57610d2a7f5090d6c600000000000000000000000000000000000000000000000000000000611cf5565b610d326123d3565b6040517f91dd734600000000000000000000000000000000000000000000000000000000815233906391dd734690610d7090869086906004016160a9565b5f604051808303815f875af1158015610d8b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dd091908101906160bc565b90507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c15610e2257610e227f5212cba100000000000000000000000000000000000000000000000000000000611cf5565b6107656123f9565b604082015162ffffff1662800000141580610e755750816080015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610ea357610ea37f30d2164100000000000000000000000000000000000000000000000000000000611cf5565b610eb18162ffffff1661241e565b60a082205f8181526006602052604090206108c4908361245d565b335f81815260036020908152604080832073ffffffffffffffffffffffffffffffffffffffff871680855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f807fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c610fb757610fb77f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b610fbf612047565b60a086205f818152600660205260409020610fd9816120af565b60808801516110019073ffffffffffffffffffffffffffffffffffffffff16898989896124b6565b5f6110756040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018a5f015160020b81526020018a6020015160020b81526020016110528b60400151612677565b600f0b81526060808d015160020b60208301528b015160409091015283906126ac565b945090506110838185612af1565b945050503373ffffffffffffffffffffffffffffffffffffffff16817ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec885f015189602001518a604001518b606001516040516111019493929190600294850b81529290930b60208301526040820152606081019190915260800190565b60405180910390a360808701515f906111359073ffffffffffffffffffffffffffffffffffffffff16898987878b8b612b24565b9094509050801561114f5761114f88828a608001516122d3565b61115a8885336122d3565b505094509492505050565b5f61116e612047565b6060830151617fff60029190910b13156111b25760608301516111b2907fb70024f80000000000000000000000000000000000000000000000000000000090612cfb565b600160020b836060015160020b12156111f55760608301516111f5907fe9e905880000000000000000000000000000000000000000000000000000000090612cfb565b8251602084015173ffffffffffffffffffffffffffffffffffffffff90811691161061124d578251602084015161124d917f6e6c98300000000000000000000000000000000000000000000000000000000091612d0a565b61127e8360400151846080015173ffffffffffffffffffffffffffffffffffffffff16612d4d90919063ffffffff16565b6112b25760808301516112b2907fe65af6a00000000000000000000000000000000000000000000000000000000090612e1b565b5f6112c5846040015162ffffff16612e3d565b60808501519091506112ee9073ffffffffffffffffffffffffffffffffffffffff168585612e62565b60a084205f81815260066020526040902061130a908584612f35565b9250846020015173ffffffffffffffffffffffffffffffffffffffff16855f015173ffffffffffffffffffffffffffffffffffffffff16827fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438886040015189606001518a608001518a8a6040516113c595949392919062ffffff959095168552600293840b602086015273ffffffffffffffffffffffffffffffffffffffff928316604086015291166060840152900b608082015260a00190565b60405180910390a460808501516113f49073ffffffffffffffffffffffffffffffffffffffff16868686612fed565b505092915050565b60025473ffffffffffffffffffffffffffffffffffffffff163314611444576114447f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b6103e9610fff821610623e900062fff0008316101661148c5761148c7fa7abe2f70000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b60a082206114ae826114a8835f90815260066020526040902090565b906130c2565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61153c5761153c7f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b335f90815273ffffffffffffffffffffffffffffffffffffffff8316602052604081205c9061156a83611cfd565b90508181600f0b1461159f5761159f7fbda73abf00000000000000000000000000000000000000000000000000000000611cf5565b6109a584825f0333611d42565b6002545f9073ffffffffffffffffffffffffffffffffffffffff1633146115f6576115f67f48f5c3ed00000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff831615158015611654575073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c8116908416145b15611682576116827fc79e594800000000000000000000000000000000000000000000000000000000611cf5565b811561168e57816116b4565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600160205260409020545b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160205260408120805492935083929091906116ed90849061603c565b90915550610838905073ffffffffffffffffffffffffffffffffffffffff84168583611da2565b606060405180602082528360208301526040820191508360051b8201855b80355c845260209384019301818410611732575b5081810382f35b73ffffffffffffffffffffffffffffffffffffffff811661177357611770613116565b50565b5f6117938273ffffffffffffffffffffffffffffffffffffffff1661313b565b905061179f82826131ea565b5050565b606060405180602082528360208301526040820191508360051b8201855b80355484526020938401930181841015611746576117c1565b5f815c5f5260205ff35b5f5473ffffffffffffffffffffffffffffffffffffffff163314611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610b55565b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611923576119237f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b61192b612047565b83602001515f0361195f5761195f7fbe8b850700000000000000000000000000000000000000000000000000000000611cf5565b60a085205f818152600660205260409020611979816120af565b60808701515f90819081906119a79073ffffffffffffffffffffffffffffffffffffffff168b8b8b8b61324a565b809350819550829450505050611a2384866040518060a001604052808681526020018e6060015160020b81526020018d5f0151151581526020018d6040015173ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152508c5f0151611a1c578d602001516133f1565b8d516133f1565b60808b01519096505f9250611a54915073ffffffffffffffffffffffffffffffffffffffff168a8a888b8b886134f2565b90955090508015611a6e57611a6e89828b608001516122d3565b611a798986336122d3565b50505050949350505050565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c611ad457611ad47f54e3ca0d00000000000000000000000000000000000000000000000000000000611cf5565b81611ae881611ae284611cfd565b33611d42565b6109a58473ffffffffffffffffffffffffffffffffffffffff83168461368b565b5f3373ffffffffffffffffffffffffffffffffffffffff861614801590611b60575073ffffffffffffffffffffffffffffffffffffffff85165f90815260036020908152604080832033845290915290205460ff16155b15611c095773ffffffffffffffffffffffffffffffffffffffff85165f90815260056020908152604080832033845282528083208684529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611c0757611bce838261603c565b73ffffffffffffffffffffffffffffffffffffffff87165f90815260056020908152604080832033845282528083208884529091529020555b505b73ffffffffffffffffffffffffffffffffffffffff85165f90815260046020908152604080832086845290915281208054849290611c4890849061603c565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f90815260046020908152604080832086845290915281208054849290611c8c90849061604f565b90915550506040805133815260208101849052849173ffffffffffffffffffffffffffffffffffffffff80881692908916917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6f800000000000000000000000000000008210611d3e57611d3e7f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5090565b81600f0b5f03611d5157505050565b5f80611d7473ffffffffffffffffffffffffffffffffffffffff8616848661379c565b91509150805f03611d8c57611d876137e2565b611d9b565b815f03611d9b57611d9b613830565b5050505050565b5f73ffffffffffffffffffffffffffffffffffffffff8416611dfd575f805f8085875af1905080611df857611df8835f7ff4b3b1bc0000000000000000000000000000000000000000000000000000000061387e565b6109a5565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806109a5576109a5847fa9059cbb000000000000000000000000000000000000000000000000000000007ff27f64e40000000000000000000000000000000000000000000000000000000061387e565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c73ffffffffffffffffffffffffffffffffffffffff8116611f0557349150611f8f565b3415611f3457611f347fb0ec849e00000000000000000000000000000000000000000000000000000000611cf5565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f611f7673ffffffffffffffffffffffffffffffffffffffff841661313b565b9050611f82828261603c565b9350611f8c613116565b50505b611fa281611f9c84611cfd565b85611d42565b50919050565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290611fe790849061604f565b90915550506040805133815260208101839052839173ffffffffffffffffffffffffffffffffffffffff8616915f917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885991015b60405180910390a4505050565b3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146120ad576120ad7f0d89438e00000000000000000000000000000000000000000000000000000000611cf5565b565b805473ffffffffffffffffffffffffffffffffffffffff165f03611770576117707f486aa30700000000000000000000000000000000000000000000000000000000611cf5565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760208716156121d0576121ce33878787878760405160240161213b9695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb6a8b0fa0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b505b50505050505050565b60038301545f906fffffffffffffffffffffffffffffffff16808203612222576122227fa74f97ab00000000000000000000000000000000000000000000000000000000611cf5565b61225961222e85611cfd565b5f0361223985611cfd565b5f0360809190911b6fffffffffffffffffffffffffffffffff9091161790565b91508315612293576001850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008702040190555b82156122cb576002850180546fffffffffffffffffffffffffffffffff83167001000000000000000000000000000000008602040190555b509392505050565b82516122e9906122e38460801d90565b83611d42565b6108c483602001516122e384600f0b90565b853373ffffffffffffffffffffffffffffffffffffffff8216146121d05760108716156121d0576121ce3387878787876040516024016123409695949392919061616e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fe1b4af690000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff89169061394c565b60017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b5f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d565b620f424062ffffff82161115611770576117707f140021130000000000000000000000000000000000000000000000000000000062ffffff8316612e1b565b612466826120af565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff167cffffff000000000000000000000000000000000000000000000000000060d083901b16175b90915550565b843373ffffffffffffffffffffffffffffffffffffffff82161461266f575f84604001511380156124ea5750610800861615155b156125a45761259e338686868660405160240161250b95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f259982e50000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b5061266f565b5f8460400151131580156125bb5750610200861615155b1561266f576121d033868686866040516024016125dc95949392919061623a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f21d0ee700000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff88169061394c565b505050505050565b80600f81900b8114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b6060810151602082015160408301515f92839290916126cb8282613a48565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f1461289b576127048884865f613b0f565b6fffffffffffffffffffffffffffffffff1660208301521515815261272c8883866001613b0f565b6fffffffffffffffffffffffffffffffff166060830152151560408201525f600f85900b126128605760808701515f9060020b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761881810783139082900503620d89e891909105036001016fffffffffffffffffffffffffffffffff049050806fffffffffffffffffffffffffffffffff1682602001516fffffffffffffffffffffffffffffffff161115612804576128047fb8e3c3850000000000000000000000000000000000000000000000000000000085612cfb565b806fffffffffffffffffffffffffffffffff1682606001516fffffffffffffffffffffffffffffffff16111561285e5761285e7fb8e3c3850000000000000000000000000000000000000000000000000000000084612cfb565b505b80511561287c57608087015161287c9060058a01908590613bf8565b80604001511561289b57608087015161289b9060058a01908490613bf8565b5f806128a88a8686613c4a565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080612905838a8787613cfe565b9150915061293a61291583611cfd565b61291e83611cfd565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b995050505050505f84600f0b12156129a35780511561297657600283810b5f90815260048a016020526040812081815560018101829055909101555b8060400151156129a357600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14612ae75786545f806129bf8360a01c60020b90565b73ffffffffffffffffffffffffffffffffffffffff8416915091508460020b8260020b1215612a1b57612a14612a0e612a096129fa88613e2f565b612a0388613e2f565b8a61412c565b612677565b60801b90565b9750612ae3565b8360020b8260020b1215612abe57612a52612a3c612a0983612a0388613e2f565b61291e612a09612a4b89613e2f565b858b614164565b60038b0154909850612a76906fffffffffffffffffffffffffffffffff1687614190565b60038b0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612ae3565b612ae05f61291e612a09612ad189613e2f565b612ada89613e2f565b8b614164565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01612b1b612b1283612677565b61291e83612677565b95945050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff89163303612b4d57508490505f612cef565b8591505f87604001511315612c3557610400891615612c3057612c2133898989898989604051602401612b86979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9f063efc0000000000000000000000000000000000000000000000000000000017905260028b1615155b73ffffffffffffffffffffffffffffffffffffffff8c1691906141c0565b9050612c2d828261421a565b91505b612cef565b610100891615612cef57612ce033898989898989604051602401612c5f979695949392919061631c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6c2bbe7e0000000000000000000000000000000000000000000000000000000017905260018b161515612c03565b9050612cec828261421a565b91505b97509795505050505050565b815f528060020b60045260245ffd5b60405183815273ffffffffffffffffffffffffffffffffffffffff8316600482015273ffffffffffffffffffffffffffffffffffffffff82166024820152604481fd5b5f60808316158015612d6157506008831615155b15612d6d57505f610765565b60408316158015612d8057506004831615155b15612d8c57505f610765565b6104008316158015612da057506002831615155b15612dac57505f610765565b6101008316158015612dc057506001831615155b15612dcc57505f610765565b73ffffffffffffffffffffffffffffffffffffffff831615612e0a57613fff8316151580612e0557506280000062ffffff831614610838565b610838565b5062ffffff16628000001415919050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b5f6280000062ffffff831603612e5457505f919050565b611d3e8262ffffff1661241e565b823373ffffffffffffffffffffffffffffffffffffffff8216146109a5576120008416156109a557611d9b338484604051602401612ea29392919061640c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fdc98354e0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff86169061394c565b82545f9073ffffffffffffffffffffffffffffffffffffffff1615612f7d57612f7d7f7983c05100000000000000000000000000000000000000000000000000000000611cf5565b612f868361423b565b90507cffffff000000000000000000000000000000000000000000000000000060d083901b1673ffffffffffffffffffffffffffffffffffffffff841660a083901b76ffffff00000000000000000000000000000000000000001617179093555090919050565b833373ffffffffffffffffffffffffffffffffffffffff821614611d9b57611000851615611d9b5761266f3385858560405160240161302f94939291906164cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6fe7e6eb0000000000000000000000000000000000000000000000000000000017905273ffffffffffffffffffffffffffffffffffffffff87169061394c565b6130cb826120af565b81547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1679ffffff000000000000000000000000000000000000000000000060b883901b16176124b0565b5f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d565b5f73ffffffffffffffffffffffffffffffffffffffff821661315e575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa1580156131c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610765919061659d565b73ffffffffffffffffffffffffffffffffffffffff82167f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f8073ffffffffffffffffffffffffffffffffffffffff88163303613276575f91506133e6565b60808816156133e6575f61331889338a8a8a8a60405160240161329d9594939291906165b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f575e24b40000000000000000000000000000000000000000000000000000000017905261394c565b9050805160601461334c5761334c7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b604088015162ffffff16628000000361336757606081015191505b60088916156133e457604081015192505f6133828460801d90565b905080600f0b5f146133e2575f851261339f600f83900b8761669c565b9550806133ae575f86126133b2565b5f86135b156133e0576133e07ffa0b71d600000000000000000000000000000000000000000000000000000000611cf5565b505b505b505b955095509592505050565b5f80808080613400898861455f565b93509350935093505f83111561343b5773ffffffffffffffffffffffffffffffffffffffff86165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6134688760801d90565b61347288600f0b90565b85516040808801516020808a01518351600f97880b81529590960b9085015273ffffffffffffffffffffffffffffffffffffffff909216908301526fffffffffffffffffffffffffffffffff16606082015260029190910b608082015262ffffff861660a082015260c00160405180910390a35091979650505050505050565b5f8073ffffffffffffffffffffffffffffffffffffffff8916330361351b57508490505f612cef565b5f6135268460801d90565b90505f61353385600f0b90565b905060408b1615613606576135f9612a09338c8c8c8c8c60405160240161355f969594939291906166bb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fb47b2fb10000000000000000000000000000000000000000000000000000000017905260048e16151573ffffffffffffffffffffffffffffffffffffffff8f1691906141c0565b61360390826167aa565b90505b5f81600f0b5f14158061361c575082600f0b5f14155b1561367957895160208b01515f1390151514613650576fffffffffffffffffffffffffffffffff8316608083901b1761366a565b6fffffffffffffffffffffffffffffffff8216608084901b175b9050613676898261421a565b98505b979b979a509698505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff841681148015906136e4575073ffffffffffffffffffffffffffffffffffffffff8085165f9081526003602090815260408083209385168352929052205460ff16155b156137915773ffffffffffffffffffffffffffffffffffffffff8085165f9081526005602090815260408083209385168352928152828220868352905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461378f57613754838261603c565b73ffffffffffffffffffffffffffffffffffffffff8087165f9081526005602090815260408083209387168352928152828220888352905220555b505b6109a5848484614dfc565b73ffffffffffffffffffffffffffffffffffffffff8281165f90815290841660205260408120805c91906137d4600f85900b8461669c565b915081815d50935093915050565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181039050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c600181019050807f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d50565b6040517f90bfb8650000000000000000000000000000000000000000000000000000000080825273ffffffffffffffffffffffffffffffffffffffff851660048301527fffffffff0000000000000000000000000000000000000000000000000000000084166024830152608060448301526020601f3d018190040260a0810160648401523d608484015290913d5f60a483013e60048260a4018201527fffffffff0000000000000000000000000000000000000000000000000000000084168260c4018201528160e40181fd5b60605f805f8451602086015f885af1905080613995576139958461396f856167f8565b7fa9e35b2f0000000000000000000000000000000000000000000000000000000061387e565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080613a13575060208301517fffffffff00000000000000000000000000000000000000000000000000000000166139ee836020015190565b7fffffffff000000000000000000000000000000000000000000000000000000001614155b15613a4157613a417f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b5092915050565b8060020b8260020b12613a8057613a807fc4433ed5000000000000000000000000000000000000000000000000000000008383614e92565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618600283900b1215613ad657613ad67fd5e2f7ab0000000000000000000000000000000000000000000000000000000083612cfb565b620d89e8600282900b131561179f5761179f7f1ad777f80000000000000000000000000000000000000000000000000000000082612cfb565b600283900b5f908152600485016020526040812080548291906fffffffffffffffffffffffffffffffff8116907001000000000000000000000000000000009004600f0b613b5d8288614190565b6fffffffffffffffffffffffffffffffff808216159084168015919091141596509094505f03613bb057885460a01c60020b60020b8860020b13613bb0576001808a0154908401556002808a0154908401555b5f86613bc557613bc088836167aa565b613bcf565b613bcf8883616864565b90508060801b6fffffffffffffffffffffffffffffffff86161784555050505094509492505050565b600291820b910b80820715613c255760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215613ca0578160010154836001015403945081600201548360020154039350613cf3565b8560020b8160020b12613ccc578260010154826001015403945082600201548260020154039350613cf3565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906fffffffffffffffffffffffffffffffff16600f86900b8203613d6857806fffffffffffffffffffffffffffffffff165f03613d6357613d637faefeb92400000000000000000000000000000000000000000000000000000000611cf5565b613daf565b613d728187614190565b87547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff919091161787555b613de387600101548603826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b9250613e1987600201548503826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000614eaf565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115613e7157613e717f8b86327a0000000000000000000000000000000000000000000000000000000084612cfb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602700100000000000000000000000000000000186002821615613eba576ffff97272373d413259a46990580e213a0260801c5b6004821615613ed9576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613ef8576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613f17576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613f36576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613f55576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613f74576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613f94576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613fb4576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613fd4576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613ff4576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614014576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614034576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614054576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614074576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614095576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156140b5576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156140d4576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156140f1576b048a170391f7dc42444e8fa20260801c5b5f84131561411c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff045b63ffffffff0160201c9392505050565b5f8082600f0b126141535761414c6141478585856001614f6a565b6150a7565b5f03611ced565b611ced6141478585855f035f614f6a565b5f8082600f0b1261417f5761414c61414785858560016150d9565b611ced6141478585855f035f6150d9565b6fffffffffffffffffffffffffffffffff8216600f82900b01608081901c15610765576393dafdf15f526004601cfd5b5f806141cc858561394c565b9050826141dc575f915050610838565b805160401461420e5761420e7f1e048e1d00000000000000000000000000000000000000000000000000000000611cf5565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03612b1b612b1283612677565b5f73fffd8963efd1fc6a506488495d951d51639616827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830173ffffffffffffffffffffffffffffffffffffffff1611156142ba576142ba7f614875240000000000000000000000000000000000000000000000000000000083612e1b565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6142e482615144565b60ff169050608081106142ff57607f810383901c9150614309565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14614550578873ffffffffffffffffffffffffffffffffffffffff1661452882613e2f565b73ffffffffffffffffffffffffffffffffffffffff16111561454a5781614552565b80614552565b815b9998505050505050505050565b604080516060810182525f8082526020820181905291810182905281908190855460408601515f8161459957610fff60c484901c166145a3565b610fff60b884901c165b885173ffffffffffffffffffffffffffffffffffffffff8516865261ffff9190911691505f60a085901c60020b60020b602087015260038b01546fffffffffffffffffffffffffffffffff16604087015260808a01515f9062400000166146135760d086901c62ffffff16614625565b6146258b6080015162ffffff166151d8565b9050831561464b57620f4240610fff851662ffffff83168181029290920491010361464d565b805b975050620f42408762ffffff16106146915789515f1215614691576146917f9620624600000000000000000000000000000000000000000000000000000000611cf5565b89515f036146a9575f80985098505050505050614df3565b831561478c5760608a015173ffffffffffffffffffffffffffffffffffffffff86811691161061471b5761471b73ffffffffffffffffffffffffffffffffffffffff86165b60608c01517f7c9c6e8f000000000000000000000000000000000000000000000000000000009190612d0a565b6401000276a373ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff16116147875760608a0151614787907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b61484a565b60608a015173ffffffffffffffffffffffffffffffffffffffff8681169116116147cf576147cf73ffffffffffffffffffffffffffffffffffffffff86166146ee565b73fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff168a6060015173ffffffffffffffffffffffffffffffffffffffff161061484a5760608a015161484a907f9e4d7cc70000000000000000000000000000000000000000000000000000000090612e1b565b60408051610100810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915284614899578b6002015461489f565b8b600101545b60e08201525b8215806148e457508a6060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff16145b614c7f57865173ffffffffffffffffffffffffffffffffffffffff168152602080880151908c015161491b9160058f0191886151e7565b1515604083015260020b602082018190527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761812614979577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860208201525b620d89e860020b816020015160020b1261499757620d89e860208201525b6149a48160200151613e2f565b73ffffffffffffffffffffffffffffffffffffffff90811660608381018290528951908e01516149ee939192911680821891811160018a161891909102188960400151868c615312565b60c085015260a0840152608083015273ffffffffffffffffffffffffffffffffffffffff1687528a515f1215614a5757614a2b8160a001516150a7565b83039250614a468160c001518260800151614147919061604f565b614a5090836168b2565b9150614a88565b614a6a8160c001518260800151016150a7565b83019250614a7b8160a001516150a7565b614a85908361669c565b91505b8315614ad7575f848962ffffff1614614abf57620f4240858360c001518460800151010281614ab957614ab96168d1565b04614ac5565b8160c001515b60c08301805182900390529990990198505b60408701516fffffffffffffffffffffffffffffffff1615614b3657614b2a8160c0015170010000000000000000000000000000000089604001516fffffffffffffffffffffffffffffffff1691020490565b60e08201805190910190525b806060015173ffffffffffffffffffffffffffffffffffffffff16875f015173ffffffffffffffffffffffffffffffffffffffff1603614c4c57806040015115614c27575f8086614b90578d600101548360e00151614b9b565b8260e001518e600201545b915091505f614bf38f85602001518585600292830b5f908152600490940160205260409093206001810180549092039091559081018054909203909155547001000000000000000000000000000000009004600f0b90565b90508715614bfe575f035b614c0c8a6040015182614190565b6fffffffffffffffffffffffffffffffff1660408b01525050505b84614c36578060200151614c3f565b60018160200151035b60020b60208801526148a5565b8051875173ffffffffffffffffffffffffffffffffffffffff908116911614614c7a578651614c3f9061423b565b6148a5565b86516020880151614d149190614cd690899060a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff919091161790565b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161790565b8c55604087015160038d01546fffffffffffffffffffffffffffffffff908116911614614d8357604087015160038d0180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b84614d975760e081015160028d0155614da2565b60e081015160018d01555b8a515f1385151514614dcf57614dc8614dba83612677565b61291e858e5f015103612677565b9950614dec565b614de9614de0848d5f015103612677565b61291e84612677565b99505b5050505050505b92959194509250565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260046020908152604080832085845290915281208054839290614e3b90849061603c565b9091555050604080513381526020810183905283915f9173ffffffffffffffffffffffffffffffffffffffff8716917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859910161203a565b6040518381528260020b60048201528160020b6024820152604481fd5b5f838302817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870982811083820303915050808411614eed575f80fd5b805f03614eff57508290049050610838565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161115614fa3579293925b73ffffffffffffffffffffffffffffffffffffffff8516614fca5762bfc9215f526004601cfd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b1673ffffffffffffffffffffffffffffffffffffffff8686031683615056578673ffffffffffffffffffffffffffffffffffffffff1661504383838973ffffffffffffffffffffffffffffffffffffffff16614eaf565b81615050576150506168d1565b0461509c565b61509c61507a83838973ffffffffffffffffffffffffffffffffffffffff16615482565b8873ffffffffffffffffffffffffffffffffffffffff16808204910615150190565b979650505050505050565b805f811215610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b5f73ffffffffffffffffffffffffffffffffffffffff8481169086160360ff81901d908101186c010000000000000000000000006fffffffffffffffffffffffffffffffff851661512b818484614eaf565b9350845f83858409111684019350505050949350505050565b5f808211615150575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b62bfffff8116610c628161241e565b5f80600284810b9086900b818107831391900503831561528557600281900b60081d600181900b5f908152602089905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff808516908190039190911c91821680151595509091908561526757888360ff1686030261527a565b8861527182615144565b840360ff168603025b965050505050615308565b6001908101600281900b60081d80830b5f90815260208a905260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff841694851b0119908116801515955092939192856152ee57888360ff0360ff16860102615301565b88836152f9836154b2565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff851673ffffffffffffffffffffffffffffffffffffffff808a16908b16101582881280156153f5575f6153588a5f0385620f424003620f4240614eaf565b9050826153715761536c8d8d8d60016150d9565b61537e565b61537e8c8e8d6001614f6a565b96508681106153b2578b9750620f424084146153a9576153a4878586620f424003615482565b6153ab565b865b94506153cb565b8096506153c18d8c838661554c565b9750868a5f030394505b826153e1576153dc8d898d5f614f6a565b6153ed565b6153ed888e8d5f6150d9565b955050615473565b8161540b576154068c8c8c5f614f6a565b615417565b6154178b8d8c5f6150d9565b9450848910615428578a965061543a565b8894506154378c8b87856155b0565b96505b816154515761544c8c888c60016150d9565b61545e565b61545e878d8c6001614f6a565b9550615470868485620f424003615482565b93505b50505095509550955095915050565b5f61548e848484614eaf565b9050818061549e5761549e6168d1565b838509156108385760010180610838575f80fd5b5f8082116154be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff861615171561558c57634f2461b85f526004601cfd5b816155a35761559e8585856001615609565b612b1b565b612b1b858585600161576b565b5f6fffffffffffffffffffffffffffffffff84161573ffffffffffffffffffffffffffffffffffffffff86161517156155f057634f2461b85f526004601cfd5b816156015761559e8585855f61576b565b612b1b8585855f5b5f81156156ae575f73ffffffffffffffffffffffffffffffffffffffff84111561565c57615657846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16614eaf565b61567c565b61567c6fffffffffffffffffffffffffffffffff8616606086901b6168fe565b90506156a66156a18273ffffffffffffffffffffffffffffffffffffffff891661604f565b6158a0565b915050611ced565b5f73ffffffffffffffffffffffffffffffffffffffff8411156156fa576156f5846c01000000000000000000000000876fffffffffffffffffffffffffffffffff16615482565b615720565b615720606085901b6fffffffffffffffffffffffffffffffff8716808204910615150190565b90508073ffffffffffffffffffffffffffffffffffffffff87161161574c57634323a5555f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff8616039050611ced565b5f825f0361577a575083611ced565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b1682156158455773ffffffffffffffffffffffffffffffffffffffff8616848102908582816157cd576157cd6168d1565b040361580a57818101828110615808576157fe838973ffffffffffffffffffffffffffffffffffffffff1683615482565b9350505050611ced565b505b506156a6818561583073ffffffffffffffffffffffffffffffffffffffff8a16836168fe565b61583a919061604f565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff86168481029085820414818311166158795763f5c787f15f526004601cfd5b8082036157fe6156a18473ffffffffffffffffffffffffffffffffffffffff8b1684615482565b8073ffffffffffffffffffffffffffffffffffffffff81168114610c6257610c627f93dafdf100000000000000000000000000000000000000000000000000000000611cf5565b73ffffffffffffffffffffffffffffffffffffffff81168114611770575f80fd5b5f8060408385031215615919575f80fd5b8235615924816158e7565b946020939093013593505050565b5f60208284031215615942575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610838575f80fd5b5f805f60608486031215615983575f80fd5b833561598e816158e7565b95602085013595506040909401359392505050565b5f805f606084860312156159b5575f80fd5b83356159c0816158e7565b925060208401356159d0816158e7565b929592945050506040919091013590565b5f602082840312156159f1575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715615a4857615a486159f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615a9557615a956159f8565b604052919050565b803562ffffff81168114610c62575f80fd5b8035600281900b8114610c62575f80fd5b5f60a08284031215615ad0575f80fd5b60405160a0810167ffffffffffffffff81118282101715615af357615af36159f8565b6040529050808235615b04816158e7565b81526020830135615b14816158e7565b6020820152615b2560408401615a9d565b6040820152615b3660608401615aaf565b60608201526080830135615b49816158e7565b6080919091015292915050565b5f8083601f840112615b66575f80fd5b50813567ffffffffffffffff811115615b7d575f80fd5b602083019150836020828501011115615b94575f80fd5b9250929050565b5f805f805f6101008688031215615bb0575f80fd5b615bba8787615ac0565b945060a0860135935060c0860135925060e086013567ffffffffffffffff811115615be3575f80fd5b615bef88828901615b56565b969995985093965092949392505050565b5f60208284031215615c10575f80fd5b8135610838816158e7565b5f8060408385031215615c2c575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b81811015615c72578351835260209384019390920191600101615c54565b509095945050505050565b5f8060208385031215615c8e575f80fd5b823567ffffffffffffffff811115615ca4575f80fd5b615cb085828601615b56565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f8060c08385031215615d20575f80fd5b615d2a8484615ac0565b9150615d3860a08401615a9d565b90509250929050565b80358015158114610c62575f80fd5b5f8060408385031215615d61575f80fd5b8235615d6c816158e7565b9150615d3860208401615d41565b5f805f80848603610140811215615d8f575f80fd5b615d998787615ac0565b945060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615dca575f80fd5b50615dd3615a25565b615ddf60a08701615aaf565b8152615ded60c08701615aaf565b602082015260e086013560408201526101008601356060820152925061012085013567ffffffffffffffff811115615e23575f80fd5b615e2f87828801615b56565b95989497509550505050565b5f8060c08385031215615e4c575f80fd5b615e568484615ac0565b915060a0830135615e66816158e7565b809150509250929050565b5f8060208385031215615e82575f80fd5b823567ffffffffffffffff811115615e98575f80fd5b8301601f81018513615ea8575f80fd5b803567ffffffffffffffff811115615ebe575f80fd5b8560208260051b8401011115615ed2575f80fd5b6020919091019590945092505050565b5f8060408385031215615ef3575f80fd5b8235615efe816158e7565b91506020830135615e66816158e7565b5f805f80848603610120811215615f23575f80fd5b615f2d8787615ac0565b945060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6082011215615f5e575f80fd5b506040516060810167ffffffffffffffff81118282101715615f8257615f826159f8565b604052615f9160a08701615d41565b815260c0860135602082015260e0860135615fab816158e7565b6040820152925061010085013567ffffffffffffffff811115615e23575f80fd5b5f805f8060808587031215615fdf575f80fd5b8435615fea816158e7565b93506020850135615ffa816158e7565b93969395505050506040820135916060013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156107655761076561600f565b808201808211156107655761076561600f565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081525f611ced602083018486616062565b5f602082840312156160cc575f80fd5b815167ffffffffffffffff8111156160e2575f80fd5b8201601f810184136160f2575f80fd5b805167ffffffffffffffff81111561610c5761610c6159f8565b61613d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601615a4e565b818152856020838501011115616151575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b73ffffffffffffffffffffffffffffffffffffffff87168152616209602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8460c08201528360e08201526101206101008201525f61622e61012083018486616062565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff861681526162d5602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f61509c61016083018486616062565b73ffffffffffffffffffffffffffffffffffffffff881681526163b7602082018873ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8551600290810b60c08301526020870151900b60e08201526040860151610100820152606086015161012082015284610140820152836101608201526101a06101808201525f6145526101a083018486616062565b73ffffffffffffffffffffffffffffffffffffffff8416815260e081016164ab602083018573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff831660c0830152949350505050565b73ffffffffffffffffffffffffffffffffffffffff85168152610100810161656f602083018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b73ffffffffffffffffffffffffffffffffffffffff841660c08301528260020b60e083015295945050505050565b5f602082840312156165ad575f80fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff8616815261664f602082018673ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8351151560c0820152602084015160e0820152604084015173ffffffffffffffffffffffffffffffffffffffff166101008201526101406101208201525f61509c61014083018486616062565b8082018281125f8312801582168215821617156113f4576113f461600f565b73ffffffffffffffffffffffffffffffffffffffff87168152616756602082018773ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8451151560c0820152602085015160e0820152604085015173ffffffffffffffffffffffffffffffffffffffff16610100820152836101208201526101606101408201525f61622e61016083018486616062565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156107655761076561600f565b805160208201517fffffffff0000000000000000000000000000000000000000000000000000000081169190600482101561685d577fffffffff00000000000000000000000000000000000000000000000000000000808360040360031b1b82161692505b5050919050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff821317156107655761076561600f565b8181035f831280158383131683831282161715613a4157613a4161600f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82616931577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c634300081a000a60e060405234801561000f575f80fd5b5060405161116838038061116883398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610d716103f75f395f6104cf01525f61049a01525f6101590152610d715ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806370a08231116100885780639dc29fac116100635780639dc29fac146101f0578063a9059cbb14610203578063d505accf14610216578063dd62ed3e14610229575f80fd5b806370a08231146101aa5780637ecebe00146101c957806395d89b41146101e8575f80fd5b806323b872dd116100c357806323b872dd14610141578063313ce567146101545780633644e5151461018d57806340c10f1914610195575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610253565b6040516100fe9190610a52565b60405180910390f35b61011a610115366004610acd565b6102de565b60405190151581526020016100fe565b61013360025481565b6040519081526020016100fe565b61011a61014f366004610af5565b610357565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100fe565b610133610497565b6101a86101a3366004610acd565b6104f1565b005b6101336101b8366004610b2f565b60036020525f908152604090205481565b6101336101d7366004610b2f565b60056020525f908152604090205481565b6100f16104ff565b6101a86101fe366004610acd565b61050c565b61011a610211366004610acd565b610516565b6101a8610224366004610b4f565b610599565b610133610237366004610bbc565b600460209081525f928352604080842090915290825290205481565b5f805461025f90610bed565b80601f016020809104026020016040519081016040528092919081815260200182805461028b90610bed565b80156102d65780601f106102ad576101008083540402835291602001916102d6565b820191905f5260205f20905b8154815290600101906020018083116102b957829003601f168201915b505050505081565b335f81815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103459086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146103e9576103b88382610c6b565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85165f908152600360205260408120805485929061041d908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104849087815260200190565b60405180910390a3506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146104cc576104c76108b7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6104fb828261094f565b5050565b6001805461025f90610bed565b6104fb82826109c6565b335f90815260036020526040812080548391908390610536908490610c6b565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103459086815260200190565b42841015610608576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f6001610613610497565b73ffffffffffffffffffffffffffffffffffffffff8a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610761573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906107dc57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e455200000000000000000000000000000000000060448201526064016105ff565b73ffffffffffffffffffffffffffffffffffffffff9081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f6040516108e79190610c7e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546109609190610d51565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260036020526040812080548392906109fa908490610c6b565b90915550506002805482900390556040518181525f9073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016109ba565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ac8575f80fd5b919050565b5f8060408385031215610ade575f80fd5b610ae783610aa5565b946020939093013593505050565b5f805f60608486031215610b07575f80fd5b610b1084610aa5565b9250610b1e60208501610aa5565b929592945050506040919091013590565b5f60208284031215610b3f575f80fd5b610b4882610aa5565b9392505050565b5f805f805f805f60e0888a031215610b65575f80fd5b610b6e88610aa5565b9650610b7c60208901610aa5565b95506040880135945060608801359350608088013560ff81168114610b9f575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610bcd575f80fd5b610bd683610aa5565b9150610be460208401610aa5565b90509250929050565b600181811c90821680610c0157607f821691505b602082108103610c38577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561035157610351610c3e565b5f8083545f8160011c90506001821680610c9957607f821691505b602082108103610cd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b808015610ce45760018114610d1757610d45565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450610d45565b5f888152602090205f5b84811015610d3d57815489820152600190910190602001610d21565b505082870194505b50929695505050505050565b8082018082111561035157610351610c3e56fea164736f6c634300081a000a6040608081526004908136101561001557600080fd5b600090813560e01c80630d58b1db1461126c578063137c29fe146110755780632a2d80d114610db75780632b67b57014610bde57806330f28b7a14610ade5780633644e51514610a9d57806336c7851614610a285780633ff9dcb1146109a85780634fe02b441461093f57806365d9723c146107ac57806387517c451461067a578063927da105146105c3578063cc53287f146104a3578063edd9444b1461033a5763fe8ec1a7146100c657600080fd5b346103365760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff833581811161033257610114903690860161164b565b60243582811161032e5761012b903690870161161a565b6101336114e6565b9160843585811161032a5761014b9036908a016115c1565b98909560a43590811161032657610164913691016115c1565b969095815190610173826113ff565b606b82527f5065726d697442617463685769746e6573735472616e7366657246726f6d285460208301527f6f6b656e5065726d697373696f6e735b5d207065726d69747465642c61646472838301527f657373207370656e6465722c75696e74323536206e6f6e63652c75696e74323560608301527f3620646561646c696e652c000000000000000000000000000000000000000000608083015282519a8b9181610222602085018096611f93565b918237018a8152039961025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09b8c8101835282611437565b5190209085515161026b81611ebb565b908a5b8181106102f95750506102f6999a6102ed9183516102a081610294602082018095611f66565b03848101835282611437565b519020602089810151858b015195519182019687526040820192909252336060820152608081019190915260a081019390935260643560c08401528260e081015b03908101835282611437565b51902093611cf7565b80f35b8061031161030b610321938c5161175e565b51612054565b61031b828661175e565b52611f0a565b61026e565b8880fd5b8780fd5b8480fd5b8380fd5b5080fd5b5091346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103365767ffffffffffffffff9080358281116103325761038b903690830161164b565b60243583811161032e576103a2903690840161161a565b9390926103ad6114e6565b9160643590811161049f576103c4913691016115c1565b949093835151976103d489611ebb565b98885b81811061047d5750506102f697988151610425816103f9602082018095611f66565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611437565b5190206020860151828701519083519260208401947ffcf35f5ac6a2c28868dc44c302166470266239195f02b0ee408334829333b7668652840152336060840152608083015260a082015260a081526102ed8161141b565b808b61031b8261049461030b61049a968d5161175e565b9261175e565b6103d7565b8680fd5b5082346105bf57602090817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103325780359067ffffffffffffffff821161032e576104f49136910161161a565b929091845b848110610504578580f35b8061051a610515600193888861196c565b61197c565b61052f84610529848a8a61196c565b0161197c565b3389528385528589209173ffffffffffffffffffffffffffffffffffffffff80911692838b528652868a20911690818a5285528589207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690558551918252848201527f89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4853392a2016104f9565b8280fd5b50346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610676816105ff6114a0565b936106086114c3565b6106106114e6565b73ffffffffffffffffffffffffffffffffffffffff968716835260016020908152848420928816845291825283832090871683528152919020549251938316845260a083901c65ffffffffffff169084015260d09190911c604083015281906060820190565b0390f35b50346103365760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336576106b26114a0565b906106bb6114c3565b916106c46114e6565b65ffffffffffff926064358481169081810361032a5779ffffffffffff0000000000000000000000000000000000000000947fda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b94338a5260016020527fffffffffffff0000000000000000000000000000000000000000000000000000858b209873ffffffffffffffffffffffffffffffffffffffff809416998a8d5260205283878d209b169a8b8d52602052868c209486156000146107a457504216925b8454921697889360a01b16911617179055815193845260208401523392a480f35b905092610783565b5082346105bf5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576107e56114a0565b906107ee6114c3565b9265ffffffffffff604435818116939084810361032a57338852602091600183528489209673ffffffffffffffffffffffffffffffffffffffff80911697888b528452858a20981697888a5283528489205460d01c93848711156109175761ffff9085840316116108f05750907f55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f393929133895260018252838920878a528252838920888a5282528389209079ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff000000000000000000000000000000000000000000000000000083549260d01b16911617905582519485528401523392a480f35b84517f24d35a26000000000000000000000000000000000000000000000000000000008152fd5b5084517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b503461033657807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610336578060209273ffffffffffffffffffffffffffffffffffffffff61098f6114a0565b1681528084528181206024358252845220549051908152f35b5082346105bf57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf577f3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d90359160243533855284602052818520848652602052818520818154179055815193845260208401523392a280f35b8234610a9a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610a9a57610a606114a0565b610a686114c3565b610a706114e6565b6064359173ffffffffffffffffffffffffffffffffffffffff8316830361032e576102f6936117a1565b80fd5b503461033657817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657602090610ad7611b1e565b9051908152f35b508290346105bf576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf57610b1a3661152a565b90807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261033257610b4c611478565b9160e43567ffffffffffffffff8111610bda576102f694610b6f913691016115c1565b939092610b7c8351612054565b6020840151828501519083519260208401947f939c21a48a8dbe3a9a2404a1d46691e4d39f6583d6ec6b35714604c986d801068652840152336060840152608083015260a082015260a08152610bd18161141b565b51902091611c25565b8580fd5b509134610336576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033657610c186114a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360160c08112610332576080855191610c51836113e3565b1261033257845190610c6282611398565b73ffffffffffffffffffffffffffffffffffffffff91602435838116810361049f578152604435838116810361049f57602082015265ffffffffffff606435818116810361032a5788830152608435908116810361049f576060820152815260a435938285168503610bda576020820194855260c4359087830182815260e43567ffffffffffffffff811161032657610cfe90369084016115c1565b929093804211610d88575050918591610d786102f6999a610d7e95610d238851611fbe565b90898c511690519083519260208401947ff3841cd1ff0085026a6327b620b67997ce40f282c88a8e905a7a5626e310f3d086528401526060830152608082015260808152610d70816113ff565b519020611bd9565b916120c7565b519251169161199d565b602492508a51917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b5091346103365760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc93818536011261033257610df36114a0565b9260249081359267ffffffffffffffff9788851161032a578590853603011261049f578051978589018981108282111761104a578252848301358181116103265785019036602383011215610326578382013591610e50836115ef565b90610e5d85519283611437565b838252602093878584019160071b83010191368311611046578801905b828210610fe9575050508a526044610e93868801611509565b96838c01978852013594838b0191868352604435908111610fe557610ebb90369087016115c1565b959096804211610fba575050508998995151610ed681611ebb565b908b5b818110610f9757505092889492610d7892610f6497958351610f02816103f98682018095611f66565b5190209073ffffffffffffffffffffffffffffffffffffffff9a8b8b51169151928551948501957faf1b0d30d2cab0380e68f0689007e3254993c596f2fdd0aaa7f4d04f794408638752850152830152608082015260808152610d70816113ff565b51169082515192845b848110610f78578580f35b80610f918585610f8b600195875161175e565b5161199d565b01610f6d565b80610311610fac8e9f9e93610fb2945161175e565b51611fbe565b9b9a9b610ed9565b8551917fcd21db4f000000000000000000000000000000000000000000000000000000008352820152fd5b8a80fd5b6080823603126110465785608091885161100281611398565b61100b85611509565b8152611018838601611509565b838201526110278a8601611607565b8a8201528d611037818701611607565b90820152815201910190610e7a565b8c80fd5b84896041867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b5082346105bf576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105bf576110b03661152a565b91807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c360112610332576110e2611478565b67ffffffffffffffff93906101043585811161049f5761110590369086016115c1565b90936101243596871161032a57611125610bd1966102f6983691016115c1565b969095825190611134826113ff565b606482527f5065726d69745769746e6573735472616e7366657246726f6d28546f6b656e5060208301527f65726d697373696f6e73207065726d69747465642c6164647265737320737065848301527f6e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c60608301527f696e652c0000000000000000000000000000000000000000000000000000000060808301528351948591816111e3602085018096611f93565b918237018b8152039361121c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101835282611437565b5190209261122a8651612054565b6020878101518589015195519182019687526040820192909252336060820152608081019190915260a081019390935260e43560c08401528260e081016102e1565b5082346105bf576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033257813567ffffffffffffffff92838211610bda5736602383011215610bda5781013592831161032e576024906007368386831b8401011161049f57865b8581106112e5578780f35b80821b83019060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83360301126103265761139288876001946060835161132c81611398565b611368608461133c8d8601611509565b9485845261134c60448201611509565b809785015261135d60648201611509565b809885015201611509565b918291015273ffffffffffffffffffffffffffffffffffffffff80808093169516931691166117a1565b016112da565b6080810190811067ffffffffffffffff8211176113b457604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff8211176113b457604052565b60a0810190811067ffffffffffffffff8211176113b457604052565b60c0810190811067ffffffffffffffff8211176113b457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176113b457604052565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b600080fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b6044359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361149b57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01906080821261149b576040805190611563826113e3565b8082941261149b57805181810181811067ffffffffffffffff8211176113b457825260043573ffffffffffffffffffffffffffffffffffffffff8116810361149b578152602435602082015282526044356020830152606435910152565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020838186019501011161149b57565b67ffffffffffffffff81116113b45760051b60200190565b359065ffffffffffff8216820361149b57565b9181601f8401121561149b5782359167ffffffffffffffff831161149b576020808501948460061b01011161149b57565b91909160608184031261149b576040805191611666836113e3565b8294813567ffffffffffffffff9081811161149b57830182601f8201121561149b578035611693816115ef565b926116a087519485611437565b818452602094858086019360061b8501019381851161149b579086899897969594939201925b8484106116e3575050505050855280820135908501520135910152565b90919293949596978483031261149b578851908982019082821085831117611730578a928992845261171487611509565b81528287013583820152815201930191908897969594936116c6565b602460007f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b80518210156117725760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b92919273ffffffffffffffffffffffffffffffffffffffff604060008284168152600160205282828220961695868252602052818120338252602052209485549565ffffffffffff8760a01c16804211611884575082871696838803611812575b5050611810955016926118b5565b565b878484161160001461184f57602488604051907ff96fb0710000000000000000000000000000000000000000000000000000000082526004820152fd5b7fffffffffffffffffffffffff000000000000000000000000000000000000000084846118109a031691161790553880611802565b602490604051907fd81b2f2e0000000000000000000000000000000000000000000000000000000082526004820152fd5b9060006064926020958295604051947f23b872dd0000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af13d15601f3d116001600051141617161561190e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152fd5b91908110156117725760061b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361149b5790565b9065ffffffffffff908160608401511673ffffffffffffffffffffffffffffffffffffffff908185511694826020820151169280866040809401511695169560009187835260016020528383208984526020528383209916988983526020528282209184835460d01c03611af5579185611ace94927fc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec98979694508715600014611ad35779ffffffffffff00000000000000000000000000000000000000009042165b60a01b167fffffffffffff00000000000000000000000000000000000000000000000000006001860160d01b1617179055519384938491604091949373ffffffffffffffffffffffffffffffffffffffff606085019616845265ffffffffffff809216602085015216910152565b0390a4565b5079ffffffffffff000000000000000000000000000000000000000087611a60565b600484517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b467f0000000000000000000000000000000000000000000000000000000000007a6903611b69577fd5a17abc3865df5c1400c0299bd4ce2eefc8114aec5f9d3dded1745783e57b9890565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f9ac997416e8ff9d2ff6bebeb7149f65cdae5e32e2b90440b566bb3044041d36a604082015246606082015230608082015260808152611bd3816113ff565b51902090565b611be1611b1e565b906040519060208201927f190100000000000000000000000000000000000000000000000000000000000084526022830152604282015260428152611bd381611398565b9192909360a435936040840151804211611cc65750602084510151808611611c955750918591610d78611c6594611c60602088015186611e47565b611bd9565b73ffffffffffffffffffffffffffffffffffffffff809151511692608435918216820361149b57611810936118b5565b602490604051907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b602490604051907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b959093958051519560409283830151804211611e175750848803611dee57611d2e918691610d7860209b611c608d88015186611e47565b60005b868110611d42575050505050505050565b611d4d81835161175e565b5188611d5a83878a61196c565b01359089810151808311611dbe575091818888886001968596611d84575b50505050505001611d31565b611db395611dad9273ffffffffffffffffffffffffffffffffffffffff6105159351169561196c565b916118b5565b803888888883611d78565b6024908651907f3728b83d0000000000000000000000000000000000000000000000000000000082526004820152fd5b600484517fff633a38000000000000000000000000000000000000000000000000000000008152fd5b6024908551907fcd21db4f0000000000000000000000000000000000000000000000000000000082526004820152fd5b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b9216600052600060205260406000209060081c6000526020526040600020818154188091551615611e9157565b60046040517f756688fe000000000000000000000000000000000000000000000000000000008152fd5b90611ec5826115ef565b611ed26040519182611437565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611f0082946115ef565b0190602036910137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f375760010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b805160208092019160005b828110611f7f575050505090565b835185529381019392810192600101611f71565b9081519160005b838110611fab575050016000815290565b8060208092840101518185015201611f9a565b60405160208101917f65626cad6cb96493bf6f5ebea28756c966f023ab9e8a83a7101849d5573b3678835273ffffffffffffffffffffffffffffffffffffffff8082511660408401526020820151166060830152606065ffffffffffff9182604082015116608085015201511660a082015260a0815260c0810181811067ffffffffffffffff8211176113b45760405251902090565b6040516020808201927f618358ac3db8dc274f0cd8829da7e234bd48cd73c4a740aede1adec9846d06a1845273ffffffffffffffffffffffffffffffffffffffff81511660408401520151606082015260608152611bd381611398565b919082604091031261149b576020823592013590565b6000843b61222e5750604182036121ac576120e4828201826120b1565b939092604010156117725760209360009360ff6040608095013560f81c5b60405194855216868401526040830152606082015282805260015afa156121a05773ffffffffffffffffffffffffffffffffffffffff806000511691821561217657160361214c57565b60046040517f815e1d64000000000000000000000000000000000000000000000000000000008152fd5b60046040517f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b6040513d6000823e3d90fd5b60408203612204576121c0918101906120b1565b91601b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c019060ff8211611f375760209360009360ff608094612102565b60046040517f4be6321b000000000000000000000000000000000000000000000000000000008152fd5b929391601f928173ffffffffffffffffffffffffffffffffffffffff60646020957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604051988997889687947f1626ba7e000000000000000000000000000000000000000000000000000000009e8f8752600487015260406024870152816044870152868601378b85828601015201168101030192165afa9081156123a857829161232a575b507fffffffff000000000000000000000000000000000000000000000000000000009150160361230057565b60046040517fb0669cbc000000000000000000000000000000000000000000000000000000008152fd5b90506020813d82116123a0575b8161234460209383611437565b810103126103365751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610a9a57507fffffffff0000000000000000000000000000000000000000000000000000000090386122d4565b3d9150612337565b6040513d84823e3d90fdfea164736f6c6343000811000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e0000003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f101112131415161718190000000000001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000a164736f6c634300081a000a","sourceMap":"993:17697:195:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3263:126:258;;;;;;;;;;-1:-1:-1;3263:126:258;;;;;:::i;:::-;;:::i;:::-;;1676:252:195;;;;;;;;;;;;;:::i;1834:45:258:-;;;;;;;;;;-1:-1:-1;1834:45:258;;;;;;;;;;;680:42:262;668:55;;;650:74;;638:2;623:18;1834:45:258;;;;;;;;2907:134:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3823:151::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16380:929:195:-;;;;;;;;;;;;;:::i;2554:151:127:-;;;;;;;;;;-1:-1:-1;2554:151:127;;;;;;;;;;;;;;;;;;;;;;;;;;3795:1:262;3784:21;;;3766:40;;3842:21;;;;3837:2;3822:18;;3815:49;3880:18;;;3873:34;3938:2;3923:18;;3916:34;;;;3753:3;3738:19;2554:151:127;3545:411:262;3684:133:12;;;;;;;;;;;;;:::i;3385:141::-;;;;;;;;;;;;;:::i;1084:39:195:-;;;;;;;;;;-1:-1:-1;1084:39:195;;;;;;;;2555:196;;;;;;;;;;;;;:::i;1408:64::-;;;;;;;;;;-1:-1:-1;1408:64:195;;;;;;;;2329:69:127;;;;;;;;;;;;;:::i;2138:20:258:-;;;;;;;;;;-1:-1:-1;2138:20:258;;;;;;;;2407:142:195;;;;;;;;;;;;;:::i;3193:186:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2554:190:258:-;;;;;;;;;;;;;:::i;10664:5710:195:-;;;;;;;;;;;;;:::i;1934:296::-;;;;;;;;;;;;;:::i;3047:140:12:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1198:64:195:-;;;;;;;;;;-1:-1:-1;1198:64:195;;;;;;;;3532:146:12;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2405:143:127:-;;;;;;;;;;-1:-1:-1;2405:143:127;;;;;;;;;;;;;;;;;;;;;;1338:64:195;;;;;;;;;;-1:-1:-1;1338:64:195;;;;;;;;2236:165;;;;;;;;;;;;;:::i;1525:47::-;;;;;;;;;;;;;;;;;;;8504:25:262;;;8492:2;8477:18;1525:47:195;8358:177:262;4268:733:195;;;;;;;;;;;;;:::i;2754:147:12:-;;;;;;;;;;;;;:::i;2711:128:127:-;;;;;;;;;;-1:-1:-1;2711:128:127;;;;;;;;;;;;;;;;;;;;8759:14:262;;8752:22;8734:41;;8806:2;8791:18;;8784:34;;;;8866:42;8854:55;8834:18;;;8827:83;8722:2;8707:18;2711:128:127;8540:376:262;2459:141:12;;;;;;;;;;;;;:::i;3330:932:195:-;;;;;;;;;;;;;:::i;1478:41::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1243:204:8:-;;;;;;;;;;;;;:::i;:::-;;;9321:14:262;;9314:22;9296:41;;9284:2;9269:18;1243:204:8;9156:187:262;504:18479:5;;;;;;;;;;;;;:::i;1268:64:195:-;;;;;;;;;;-1:-1:-1;1268:64:195;;;;;;;;2254:69:127;;;;;;;;;;;;;:::i;419:79:5:-;;;;;;;;;;;;;:::i;2845:412:258:-;;;;;;;;;;;;;:::i;5007:437:195:-;;;;;;;;;;;;;:::i;1129:63::-;;;;;;;;;;-1:-1:-1;1129:63:195;;;;;;;;2606:142:12;;;;;;;;;;;;;:::i;5450:5208:195:-;;;;;;;;;;;;;:::i;800:28:7:-;;;;;;;;;;-1:-1:-1;800:28:7;;;;;;;;;;;2757:567:195;;;;;;;;;;;;;:::i;1016:26:19:-;;;;;;;;;;-1:-1:-1;1016:26:19;;;;;;;;3263:126:258;3336:23;3347:11;3336:10;:23::i;:::-;3369:13;:11;:13::i;:::-;3263:126;:::o;1676:252:195:-;1710:20;:18;:20::i;:::-;1765:26;:24;:26::i;:::-;1752:9;1740:51;;;;;;;;;;;;;;;1741:9;1740:51;;;;;;;;;;;;;1810:72;;1740:51;1741:9;1861:4;280:29:125;1810:8:195;:72::i;:::-;-1:-1:-1;1801:81:195;;1802:3;1801:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1913:7;;1892:29;;1913:7;1892:20;:29::i;:::-;1676:252::o;2907:134:12:-;2954:33;3018:16;2999:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2907:134;:::o;3823:151::-;3872:42;3948:19;3926:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:151;:::o;16380:929:195:-;16472:15;;;;;;;;;;16448;;16522:19;;16472:15;;16522:19;:::i;:::-;16498:44;-1:-1:-1;16577:6:195;;16552:22;16659:237;280:29:125;16740:38:195;16768:9;16740:27;:38::i;:::-;16792;16820:9;16792:27;:38::i;:::-;16844:14;16872;16659:39;:237::i;:::-;16938:74;;;;;;;;16963:3;16938:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17040:3;;:17;;;;;;;16634:262;;;;;;-1:-1:-1;16938:74:195;;16907:28;;17040:3;;;;;:15;;:17;;;;;16938:74;17040:17;;;;;:3;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17022:35;-1:-1:-1;17067:68:195;17072:6;17080:14;885:1:172;1714::125;1704:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1704:12:125;;17067:4:195;:68::i;:::-;17146:15;;17185:43;17230:11;:7;17240:1;17230:11;:::i;:::-;17162:80;;;;;;8504:25:262;;8492:2;8477:18;;8358:177;17162:80:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;17146:97;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17254:21:195;;17285:3;;17254:21;;;;;-1:-1:-1;17254:30:195;;-1:-1:-1;17285:3:195;17290:11;:7;17254:21;17290:11;:::i;:::-;17254:48;;;;;;;;;;11374:42:262;11362:55;;;17254:48:195;;;11344:74:262;11434:18;;;11427:34;11317:18;;17254:48:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16438:871;;;;;;;16380:929::o;3684:133:12:-;3730:33;3794:16;3775:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3684:133;:::o;3385:141::-;3433:35;3501:18;3480:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3385:141;:::o;2555:196:195:-;2625:21;;:35;;;;;;;;2608:72;;2625:21;;;:33;;:35;;;;;;;;;;;;;;:21;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2671:7;;;;2608:8;:72::i;:::-;2699:21;;:37;;;;;;;;2690:54;;2699:21;;;:35;;:37;;;;;;;;;;;;;;:21;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2738:5;;;;2690:8;:54::i;2329:69:127:-;2371:27;2397:1;2042:49:103;2371:27:127;:::i;:::-;2329:69;:::o;2407:142:195:-;2507:21;;2459:83;;;;;;;;;14198:21:262;;;;14255:2;14235:18;;;14228:30;14294:21;14274:18;;;14267:49;2459:16:195;2507:21;;;2499:42;14368:20:262;;;14361:36;2459:16:195;;;;14333:19:262;;2459:83:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2407:142::o;3193:186:12:-;3249:56;3346:26;3317:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:190:258;2607:19;2629:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2667:8:258;;2677:18;;;2659:7;2677:18;;;;;;;;;;;;;;;;;;2607:42;;-1:-1:-1;2659:7:258;;;;2667:8;;;;309:37:6;;2677:18:258;;;;;2659:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2728:8:258;;2706:4;:31;;;;2728:8;;;;2706:31;;;;;;-1:-1:-1;;;2554:190:258:o;10664:5710:195:-;10776:9;;10737:91;;1462:1:120;;10776:9:195;;1462:1:120;10807:4:195;280:29:125;10737:8:195;:91::i;:::-;-1:-1:-1;10722:106:195;;10723:9;10722:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10862:21;;10722:106;10862:21;;;;-1:-1:-1;;10918:25:195;;10862:21;;10918:25;:::i;:::-;10894:50;;10954:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;10954:18:195;11000:3;;:17;;;;;;;;10982:15;;11000:3;;;:15;;:17;;;;;;;;;;;;;;:3;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10982:35;-1:-1:-1;11066:6:195;;11041:22;11156:261;280:29:125;11245:38:195;11273:9;11245:27;:38::i;:::-;11301;11329:9;11301:27;:38::i;11156:261::-;11479:80;;;;;;;;11504:9;11479:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11131:286;;;;;;-1:-1:-1;11573:94:195;280:29:125;11479:80:195;11131:286;11479:80;11432:28;1704:12:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1704:12:125;;11573:14:195;:94::i;:::-;11808:38;;;;;;;;;;;;;;;;;;;;;11888:21;;11919:3;;;11888:44;;;;;:21;11919:3;;;11888:44;;;11344:74:262;11434:18;;;11427:34;;;11808:38:195;;-1:-1:-1;;11888:21:195;;;:30;;11317:18:262;11888:44:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11868:64;;11986:21;12016:3;11986:34;;12100:23;12154:12;12136:8;:15;:30;;;;:::i;:::-;12126:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12126:41:195;;12100:67;;12187:9;12182:123;12206:10;:17;12202:1;:21;12182:123;;;12264:8;12273:16;12277:12;12273:1;:16;:::i;:::-;12264:26;;;;;;;;:::i;:::-;;;;;;;;;12248:10;12259:1;12248:13;;;;;;;;:::i;:::-;;;;:42;;;;;;;;;;-1:-1:-1;12225:3:195;;12182:123;;;;12365:20;12388:33;12409:10;12388:13;:33::i;:::-;12533:18;;;;;12365:56;;-1:-1:-1;12365:56:195;;12435:18;;12533:12;;;;:18;;12365:56;;12533:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12513:38;;12584:4;12573:25;;;;;;;;;;;;:::i;:::-;12693:21;;12741:9;:19;12779;;12693:107;;;;;:21;12741:19;;;12693:107;;;16717:74:262;12779:19:195;;;16807:18:262;;;16800:83;12565:33:195;;-1:-1:-1;12668:142:195;;-1:-1:-1;12693:21:195;;-1:-1:-1;12693:31:195;;-1:-1:-1;16690:18:262;;;-1:-1:-1;12693:107:195;;-1:-1:-1;;;;;;;16543:346:262;12693:107:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12668:11;:142::i;:::-;12909:9;:19;12931;12857:94;;12821:21;;12857:94;;12909:19;;;;;12857:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:35;:94::i;:::-;13049:19;;13071;12997:94;;12821:130;;-1:-1:-1;12961:21:195;;12997:94;;13049:19;;;13071;12997:94;;;:::i;:::-;13151:13;;12961:130;;-1:-1:-1;13101:17:195;;13121:44;;13151:13;;;;;13121:29;:44::i;:::-;13295:21;;13388:9;;13101:64;;-1:-1:-1;13189:28:195;;13220:299;;13268:9;;13295:21;;;;;;;13334:65;;13388:9;;13334:37;:65::i;:::-;13471:9;;13417:65;;13471:9;;13417:37;:65::i;:::-;13500:5;13220:30;:299::i;:::-;13639:21;;13732:9;;13189:330;;-1:-1:-1;13533:28:195;;13564:299;;13612:9;;13639:21;;;;;;;13678:65;;13732:9;;13678:37;:65::i;13564:299::-;13533:330;;13878:270;13904:5;:10;;;14016:3;14028:7;14042;14058:14;14080;13960:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;13878:8;:270::i;:::-;-1:-1:-1;;14233:7:195;;14182:28;;14213:29;;14233:7;;14213:11;:29::i;:::-;14305:9;:19;14182:60;;-1:-1:-1;14256:30:195;;14289:50;14305:19;14289:50;:145;;14413:9;:19;14385:49;;14413:19;;14385:11;:49::i;:::-;14289:145;;;;;;;;;;;;;;;;;;;;;14497:19;;14256:178;;-1:-1:-1;14448:30:195;;14481:50;14497:19;14481:50;:145;;14605:19;;14577:49;;14605:19;;14577:11;:49::i;:::-;14481:145;;;;;;;;;;;;;;;;;;;;;14448:178;;14640:16;14659:21;14672:7;14659:12;:21::i;:::-;14730:15;;14640:40;;-1:-1:-1;14694:25:195;;14722:38;14730:15;14722:38;:154;;14857:15;;14837:37;;14857:15;;14837:11;:37::i;:::-;14814:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;14722:154;;;;;;;;;;;;;;;;;;;;;14694:182;;14891:1466;14917:5;:17;;;15164:7;15234;15392:14;15470:7;15549:16;15629:7;15022:640;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15776:16;15870:11;15955:3;16032:2;15688:615;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;14980:1345;;;15688:615;14980:1345;;:::i;14891:1466::-;14168:2200;;;;;10712:5662;;;;;;;10664:5710::o;1934:296::-;2155:55;;;;;23655:2:262;2155:55:195;;;23637:21:262;23694:2;23674:18;;;23667:30;23733:34;23713:18;;;23706:62;23804:11;23784:18;;;23777:39;2000:16:195;;;;;;2155:10;;23833:19:262;;2155:55:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2138:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;;2128:84;;2138:73;2128:84;;;;2000:223;;;;;;;;;;;24270:21:262;;;;24327:2;24307:18;;;24300:30;24366:34;24346:18;;;24339:62;24438:34;24417:19;;;24410:63;24510:12;24489:19;;;24482:41;24575:20;;;24568:36;24540:19;;2000:223:195;24058:552:262;3047:140:12;3095:34;3162:18;3141:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3532:146;3580:40;3653:18;3632:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2236:165:195;2362:18;;2301:93;;;;;;;;;24827:21:262;;;;24884:2;24864:18;;;24857:30;24923:34;24903:18;;;24896:62;2301:16:195;2362:18;;;2354:39;25010:18:262;;;25003:34;2301:16:195;;;;24975:19:262;;2301:93:195;24615:428:262;4268:733:195;4352:21;;4396:5;;4352:50;;;;;:21;4396:5;;;4352:50;;;650:74:262;4343:96:195;;4352:21;;;;;:43;;623:18:262;;4352:50:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;646:4:177;4343:8:195;:96::i;:::-;4458:21;;:55;;;;;:21;:55;;;650:74:262;4449:101:195;;4458:21;;;:43;;623:18:262;;4458:55:195;475:255:262;4449:101:195;4569:21;;4613:4;;4569:49;;;;;:21;4613:4;;;4569:49;;;650:74:262;4560:62:195;;4569:21;;;;;:43;;623:18:262;;4569:49:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4620:1;4560:8;:62::i;:::-;4641:21;;4685:4;;4641:49;;;;;:21;4685:4;;;4641:49;;;650:74:262;4632:62:195;;4641:21;;;;;:43;;623:18:262;;4641:49:195;475:255:262;4632:62:195;4713:21;;4757:3;;4713:48;;;;;:21;4757:3;;;4713:48;;;650:74:262;4704:61:195;;4713:21;;;;;:43;;623:18:262;;4713:48:195;475:255:262;4704:61:195;4784:21;;4828:4;;4784:49;;;;;:21;4828:4;;;4784:49;;;650:74:262;4775:62:195;;4784:21;;;;;:43;;623:18:262;;4784:49:195;475:255:262;4775:62:195;4856:21;;4900:4;;4856:49;;;;;:21;4900:4;;;4856:49;;;650:74:262;4847:62:195;;4856:21;;;;;:43;;623:18:262;;4856:49:195;475:255:262;4847:62:195;4928:21;;4972:17;;;;;;;;;;;;;;;;;4919:75;;4928:21;;;:43;;4972:17;;:8;:17::i;:::-;4928:62;;;;;;;;;;680:42:262;668:55;;;4928:62:195;;;650:74:262;623:18;;4928:62:195;475:255:262;2754:147:12;2803:40;2876:18;2855:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2459:141;2508:34;2575:18;2554:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3330:932:195;3402:13;;;;;3413:1;3402:13;;;8504:25:262;3402:10:195;;;;8477:18:262;;3402:13:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3434:21:195;;3478:5;;3434:50;;;;;:21;3478:5;;;3434:50;;;650:74:262;3425:96:195;;-1:-1:-1;3434:21:195;;;-1:-1:-1;3434:43:195;;623:18:262;;3434:50:195;475:255:262;3425:96:195;3540:21;;:55;;;;;:21;:55;;;650:74:262;3531:101:195;;3540:21;;;:43;;623:18:262;;3540:55:195;475:255:262;3531:101:195;3651:21;;3695:4;;3651:49;;;;;:21;3695:4;;;3651:49;;;650:74:262;3642:98:195;;3651:21;;;;;:43;;623:18:262;;3651:49:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;437:3:177;3642:8:195;:98::i;:::-;3759:21;;3803:4;;3759:49;;;;;:21;3803:4;;;3759:49;;;650:74:262;3750:98:195;;3759:21;;;;;:43;;623:18:262;;3759:49:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;479:3:177;3750:8:195;:98::i;:::-;3867:21;;3911:3;;3867:48;;;;;:21;3911:3;;;3867:48;;;650:74:262;3858:92:195;;3867:21;;;;;:43;;623:18:262;;3867:48:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;516:3:177;3858:8:195;:92::i;:::-;3969:21;;4013:4;;3969:49;;;;;:21;4013:4;;;3969:49;;;650:74:262;3960:100:195;;3969:21;;;;;:43;;623:18:262;;3969:49:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;606:4:177;3960:8:195;:100::i;:::-;4079:21;;4123:4;;4079:49;;;;;:21;4123:4;;;4079:49;;;650:74:262;4070:100:195;;4079:21;;;;;:43;;623:18:262;;4079:49:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;561:4:177;4070:8:195;:100::i;1478:41::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1243:204:8:-;1302:7;;1282:4;;1302:7;;1298:143;;;-1:-1:-1;1332:7:8;;;;;1243:204::o;1298:143::-;1377:39;;;;;:7;:39;;;11344:74:262;;;1398:17:8;11434:18:262;;;11427:34;1428:1:8;;1377:7;;11317:18:262;;1377:39:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;1370:60;;1243:204;:::o;504:18479:5:-;535:7;554:21;:18345;;;;;;;;;;;;;;;;;18910:34;;;;;554:18345;;-1:-1:-1;18910:7:5;;;;:34;;370:42;;554:18345;;18910:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:42;18954:22;;;504:18479;:::o;2254:69:127:-;2296:27;1862:10:103;2322:1:127;2296:27;:::i;419:79:5:-;460:7;486:5;:3;:5::i;:::-;479:12;;419:79;:::o;2845:412:258:-;2905:26;2934:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2979:25:258;;3006:18;;;2971:7;3006:18;;;;;;;;;;;;;;;;;;2905:56;;-1:-1:-1;2971:7:258;;;;2979:25;;;;309:37:6;;3006:18:258;;;;;2971:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3081:25:258;;3035:21;:72;;;;3081:25;;;;3035:72;;;;;;3237:3;;;3242:7;;3202:48;;;;;3237:3;;;3202:48;;;16717:74:262;3242:7:258;;;16807:18:262;;;16800:83;3081:25:258;;-1:-1:-1;3202:34:258;;-1:-1:-1;16690:18:262;3202:48:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2895:362;2845:412::o;5007:437:195:-;5059:13;;;;;5070:1;5059:13;;;8504:25:262;5059:10:195;;;;8477:18:262;;5059:13:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5129:21:195;;5161:4;;5167:5;;5129:44;;;;;:21;5161:4;;;5129:44;;;16717:74:262;5167:5:195;;;16807:18:262;;;16800:83;5118:56:195;;-1:-1:-1;5129:21:195;;;-1:-1:-1;5129:31:195;;16690:18:262;;5129:44:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5118:10;:56::i;:::-;5196:21;;5228:3;;5233:4;;5196:42;;;;;:21;5228:3;;;5196:42;;;16717:74:262;5233:4:195;;;16807:18:262;;;16800:83;5184:55:195;;5196:21;;;;;:31;;16690:18:262;;5196:42:195;16543:346:262;5184:55:195;5261:21;;5293:4;;5299:5;;5261:44;;;;;:21;5293:4;;;5261:44;;;16717:74:262;5299:5:195;;;16807:18:262;;;16800:83;5249:57:195;;5261:21;;;;;:31;;16690:18:262;;5261:44:195;16543:346:262;5249:57:195;5328:21;;5360:4;;5366;;5328:43;;;;;:21;5360:4;;;5328:43;;;16717:74:262;5366:4:195;;;16807:18:262;;;16800:83;5316:56:195;;5328:21;;;;;:31;;16690:18:262;;5328:43:195;16543:346:262;5316:56:195;5394:21;;5426:4;;5432:3;;5394:42;;;;;:21;5426:4;;;5394:42;;;16717:74:262;5432:3:195;;;16807:18:262;;;16800:83;5382:55:195;;5394:21;;;;;:31;;16690:18:262;;5394:42:195;16543:346:262;2606:142:12;2655:35;2723:18;2702:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:142;:::o;5450:5208:195:-;5525:15;;;;;;;;;;5501;;5575:19;;5525:15;;5575:19;:::i;:::-;5551:44;;5605:15;5623:3;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5605:35;;5650:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;5650:18:195;5717:6;;5692:22;5807:261;280:29:125;5896:38:195;5924:9;5896:27;:38::i;5807:261::-;6114:74;;;;;;;;6139:3;6114:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5782:286;;;;;;-1:-1:-1;6202:68:195;6114:74;5782:286;6114:74;6083:28;1704:12:125;;6202:68:195;6412:38;;;;;;;;;;;;;;;;;;;;;6492:21;;6523:3;;;6492:44;;;;;:21;6523:3;;;6492:44;;;11344:74:262;11434:18;;;11427:34;;;6412:38:195;;-1:-1:-1;;6492:21:195;;;:30;;11317:18:262;6492:44:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6472:64;;6590:21;6620:3;6590:34;;6704:23;6758:12;6740:8;:15;:30;;;;:::i;:::-;6730:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6730:41:195;;6704:67;;6791:9;6786:123;6810:10;:17;6806:1;:21;6786:123;;;6868:8;6877:16;6881:12;6877:1;:16;:::i;:::-;6868:26;;;;;;;;:::i;:::-;;;;;;;;;6852:10;6863:1;6852:13;;;;;;;;:::i;:::-;;;;:42;;;;;;;;;;-1:-1:-1;6829:3:195;;6786:123;;;;6969:20;6992:33;7013:10;6992:13;:33::i;:::-;7137:18;;;;;6969:56;;-1:-1:-1;6969:56:195;;7039:18;;7137:12;;;;:18;;6969:56;;7137:18;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7117:38;;7188:4;7177:25;;;;;;;;;;;;:::i;:::-;7284:21;;7332:3;:13;7364;;7284:95;;;;;7169:33;;-1:-1:-1;7272:108:195;;-1:-1:-1;7284:21:195;;;;;-1:-1:-1;7284:31:195;;-1:-1:-1;7284:95:195;;-1:-1:-1;7332:13:195;;;;-1:-1:-1;7364:13:195;;-1:-1:-1;7284:95:195;;;-1:-1:-1;7284:95:195;;-1:-1:-1;;;;7284:95:195:i;7272:108::-;7467:9;;7479:19;7415:84;;7391:21;;7415:84;;7467:9;;;;;7415:84;;;:::i;:::-;7585:9;;7597:19;7533:84;;7391:108;;-1:-1:-1;7509:21:195;;7533:84;;7585:9;;;7597:19;7533:84;;;:::i;:::-;7677:7;;7509:108;;-1:-1:-1;7627:17:195;;7647:38;;7677:7;;;;;7647:29;:38::i;:::-;7815:15;;7902:9;;7627:58;;-1:-1:-1;7709:28:195;;7740:293;;7788:9;;7815:15;;;;;;;7848:65;;7902:9;;7848:37;:65::i;7740:293::-;8153:15;;8240:9;;7709:324;;-1:-1:-1;8047:28:195;;8078:293;;8126:9;;8153:15;;;;;;;8186:65;;8240:9;;8186:37;:65::i;8078:293::-;8047:324;;8386:270;8412:5;:10;;;8524:3;8536:7;8550;8566:14;8588;8468:156;;;;;;;;;;;;:::i;8386:270::-;-1:-1:-1;;8741:7:195;;8690:28;;8721:29;;8741:7;;8721:11;:29::i;:::-;8825:9;;8690:60;;-1:-1:-1;8764:30:195;;8797:39;;8825:9;;8797:11;:39::i;:::-;8911:9;;8764:72;;-1:-1:-1;8850:30:195;;8883:39;;8911:9;;8883:11;:39::i;:::-;8850:72;;8936:16;8955:21;8968:7;8955:12;:21::i;:::-;9026:9;;8936:40;;-1:-1:-1;8990:25:195;;9018:32;9026:9;9018:32;:142;;9147:9;;9127:31;;9147:9;;9127:11;:31::i;:::-;9104:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;9018:142;;;;;;;;;;;;;;;;;;;;;8990:170;;9175:1466;9201:5;:17;;;9448:7;9518;9676:14;9754:7;9833:16;9306:569;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9981:7;10060:16;10154:11;10239:3;10316:2;9901:686;;;;;;;;;;;;:::i;2757:567::-;2828:21;;:43;;;;;;;;2819:74;;2828:21;;;:41;;:43;;;;;:21;;:43;;;;;;;:21;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2873:19;2819:74;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8;:74::i;:::-;2956:7;;2903:33;;2939:32;;2956:7;;2939:32;:16;:32::i;:::-;2903:68;;2981:52;2990:13;:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2981:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;3096:7;;3043:33;;3079:32;;3096:7;;3079:32;:16;:32::i;:::-;3043:68;;3121:52;3130:13;:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3121:52;;;;;;;;;;;;;;;;;:8;:52::i;:::-;3237:7;;3183:34;;3220:33;;3237:7;;3220:33;:16;:33::i;:::-;3183:70;;3263:54;3272:14;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3263:54;;;;;;;;;;;;;;;;;:8;:54::i;:::-;2809:515;;;2757:567::o;3395:471:258:-;3575:15;:13;:15::i;:::-;3546:7;:45;;;;;;;;;;;;;;;3610:12;:10;:12::i;:::-;3601:6;:21;;;;;;;;;;;;;;;3656:36;3673:11;3656:36;:16;:36::i;:::-;3632:21;:60;;;;;;;;;;;;;;3774:7;;3833:6;;3708:151;;;;;;;;;-1:-1:-1;3708:151:258;;;;;;;;;3752:11;;3774:7;;;;3784;;3632:60;;3833:6;;;3708:22;:151::i;:::-;3702:3;:157;;;;;;;;;;;;;;;-1:-1:-1;3395:471:258:o;4665:119::-;4727:9;;4707:30;;4727:9;;4707:19;:30::i;:::-;4767:9;;4747:30;;4767:9;;4747:19;:30::i;3839:104:127:-;3930:4;3906:30;;;;;:::i;:::-;680:42:262;668:55;;;650:74;;638:2;623:18;3906:30:127;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3896:7:127;:40;;;;;;;;;;;;;;;3839:104::o;5984:198::-;6038:8;6048;6068:25;6096;6109:1;6112:8;6096:12;:25::i;:::-;6068:53;;6138:37;6154:6;6161:1;6154:9;;;;;;;;:::i;:::-;;;;;;;6165:6;6172:1;6165:9;;;;;;;;:::i;:::-;;;;;;;6138:15;:37::i;:::-;6131:44;;;;;5984:198;;:::o;6512:374::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6707:98:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6675:9;;6707:98;;;;552:8:90;1379:24;6744:53:127;;6783:9;6789:3;6783;:9;:::i;:::-;:13;;6795:1;6783:13;:::i;:::-;6744:53;;;6771:2;6744:53;6707:98;;;;;;;;;;;;515:4:121;496:24;;6700:105:127;;-1:-1:-1;6841:7:127;;:38;;;;;6815:16;;-1:-1:-1;6841:7:127;;;:18;;:38;;6860:4;;6866:12;;6841:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6512:374;;;;;;;;:::o;3149:4018:103:-;3359:1;3348:19;3212:20;3458:3;3454:14;;;3726:15;;;3716:26;1317:6;3774:35;;3770:78;;;3811:37;:20;3843:4;3811:31;:37::i;:::-;4456:52;4523:3;4510:17;;4452:76;4460:11;4435:94;4570:3;4560:13;;:18;4556:83;;4597:34;4589:42;4636:3;4588:51;4556:83;4667:3;4657:13;;:18;4653:83;;4694:34;4686:42;4733:3;4685:51;4653:83;4764:3;4754:13;;:18;4750:83;;4791:34;4783:42;4830:3;4782:51;4750:83;4861:4;4851:14;;:19;4847:84;;4889:34;4881:42;4928:3;4880:51;4847:84;4959:4;4949:14;;:19;4945:84;;4987:34;4979:42;5026:3;4978:51;4945:84;5057:4;5047:14;;:19;5043:84;;5085:34;5077:42;5124:3;5076:51;5043:84;5155:4;5145:14;;:19;5141:84;;5183:34;5175:42;5222:3;5174:51;5141:84;5253:5;5243:15;;:20;5239:85;;5282:34;5274:42;5321:3;5273:51;5239:85;5352:5;5342:15;;:20;5338:85;;5381:34;5373:42;5420:3;5372:51;5338:85;5451:5;5441:15;;:20;5437:85;;5480:34;5472:42;5519:3;5471:51;5437:85;5550:5;5540:15;;:20;5536:85;;5579:34;5571:42;5618:3;5570:51;5536:85;5649:6;5639:16;;:21;5635:86;;5679:34;5671:42;5718:3;5670:51;5635:86;5749:6;5739:16;;:21;5735:86;;5779:34;5771:42;5818:3;5770:51;5735:86;5849:6;5839:16;;:21;5835:86;;5879:34;5871:42;5918:3;5870:51;5835:86;5949:6;5939:16;;:21;5935:86;;5979:34;5971:42;6018:3;5970:51;5935:86;6049:7;6039:17;;:22;6035:86;;6080:33;6072:41;6118:3;6071:50;6035:86;6149:7;6139:17;;:22;6135:85;;6180:32;6172:40;6217:3;6171:49;6135:85;6248:7;6238:17;;:22;6234:83;;6279:30;6271:38;6314:3;6270:47;6234:83;6345:7;6335:17;;:22;6331:78;;6376:25;6368:33;6406:3;6367:42;6331:78;6548:1;6542:4;6538:12;6535:47;;;6566:6;6562:18;6535:47;7117:18;7106:30;7125:2;7098:39;;3149:4018;-1:-1:-1;;;3149:4018:103:o;2960:901:128:-;3163:17;3212:13;3196:29;;:13;:29;;;3192:98;;;3261:13;;3276;3192:98;3321:13;3305:29;;:12;:29;;;3301:554;;3362:61;3385:13;3400;3415:7;3362:22;:61::i;:::-;3350:73;;3301:554;;;3459:13;3444:28;;:12;:28;;;3440:415;;;3488:18;3509:60;3532:12;3546:13;3561:7;3509:22;:60::i;:::-;3488:81;;3583:18;3604:60;3627:13;3642:12;3656:7;3604:22;:60::i;:::-;3583:81;;3704:10;3691:23;;:10;:23;;;:49;;3730:10;3691:49;;;3717:10;3691:49;3679:61;;3474:277;;3440:415;;;3783:61;3806:13;3821;3836:7;3783:22;:61::i;:::-;3771:73;;3440:415;2960:901;;;;;;;:::o;1117:255:254:-;1241:18;1262:54;1277:6;1285:9;1296;1307:8;1262:14;:54::i;:::-;1326:3;;1355:9;;1326:39;;;;;1241:75;;-1:-1:-1;1326:3:254;;;;;:21;;:39;;1241:75;;1355:9;1326:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:141;1117:255;;;;:::o;3454:110:8:-;3533:24;;;;;16747:42:262;16735:55;;;3533:24:8;;;16717:74:262;16827:55;;16807:18;;;16800:83;3533:11:8;;;;16690:18:262;;3533:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3454:110;;:::o;1378:769:254:-;1636:15;1656:228;1709:12;1735:45;1763:6;:16;;;1735:27;:45::i;:::-;1794;1822:6;:16;;;1794:27;:45::i;:::-;1853:21;:9;:19;:21::i;:::-;1656:39;:228::i;:::-;1635:249;;;1894:18;1915:54;1930:6;1938:9;1949;1960:8;1915:14;:54::i;:::-;2081:3;;1894:75;;-1:-1:-1;2081:3:254;;:21;2110:11;:7;2081:3;2110:11;:::i;:::-;2123:5;2130:9;;2081:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;546:2199:201;677:11;;606:12;;656:5;;630:17;677:16;673:41;;702:12;;;712:1;702:12;;;;;;;;;;;-1:-1:-1;695:19:201;546:2199;-1:-1:-1;;;546:2199:201:o;673:41::-;746:1;732:4;:11;:15;;;;:::i;:::-;:20;724:61;;;;;;;32135:2:262;724:61:201;;;32117:21:262;32174:2;32154:18;;;32147:30;32213;32193:18;;;32186:58;32261:18;;724:61:201;;;;;;;;;834:18;855:12;;;;;;;;;;;;;;;;;834:33;;926:18;962:1;948:4;:11;:15;;;;:::i;:::-;947:21;;967:1;947:21;:::i;:::-;926:42;-1:-1:-1;1048:19:201;1080:15;926:42;1093:2;1080:15;:::i;:::-;1070:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1070:26:201;;1048:48;;1201:4;1195:11;1189:4;1185:22;1179:29;1249:4;1242;1231:9;1227:20;1224:30;1221:189;;1303:1;1291:10;1287:18;1273:32;;1352:6;1343;1332:9;1328:22;1325:34;1322:74;;1392:1;1380:10;1376:18;1362:32;;1322:74;1221:189;1483:10;1475:6;1468:26;1575:1;1568:5;1564:13;1631:4;1681;1675:11;1666:7;1662:25;1774:2;1766:6;1762:15;1849:856;1868:6;1859:7;1856:19;1849:856;;;1958:1;1949:7;1945:15;1934:26;;1996:7;1990:14;2539:4;2530;2523:5;2519:16;2509:8;2505:31;2499:38;2495:49;2459:4;2450;2442:5;2439:1;2435:13;2431:24;2421:8;2417:39;2411:46;2407:57;2404:1;2400:65;2367:203;2309:4;2300;2292:5;2288:2;2284:14;2280:25;2270:8;2266:40;2260:47;2256:58;2252:2;2248:67;2212:4;2203;2195:5;2191:2;2187:14;2183:25;2173:8;2169:40;2163:47;2159:58;2155:2;2151:67;2118:223;2089:503;2055:537;;2636:6;2631:3;2627:16;2616:9;2609:35;;2689:1;2678:9;2674:17;2661:30;;1849:856;;;-1:-1:-1;2732:6:201;;546:2199;-1:-1:-1;;;;;;;;546:2199:201:o;1808:91:8:-;1872:20;;;;;9321:14:262;;9314:22;1872:20:8;;;9296:41:262;1872:14:8;;;;9269:18:262;;1872:20:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;798:576:186;890:13;919:22;;;915:71;;-1:-1:-1;964:11:186;957:18;;915:71;995:20;1018:66;1043:8;1053:30;1018:24;:66::i;:::-;995:89;;1104:6;1098:20;1122:1;1098:25;1094:142;;1200:25;1216:8;1200:15;:25::i;:::-;1193:32;;;;;1094:142;1249:20;;532:2;-1:-1:-1;1245:100:186;;;1312:22;1327:6;1312:14;:22::i;1245:100::-;1361:6;-1:-1:-1;798:576:186;;;;;:::o;16376:2417:178:-;16439:13;552:8:90;16468:16:178;;;1379:24:90;16464:65:178;;-1:-1:-1;;16502:16:178;;;;;;;;;;;;;;;;;;16376:2417::o;16464:65::-;16542:3;:8;;16549:1;16542:8;16538:50;;-1:-1:-1;;16566:11:178;;;;;;;;;;;;;;;;;;16376:2417::o;16538:50::-;16611:3;16597:11;;16870:295;16877:9;;;;16870:295;;16906:14;;;;16902:207;;17011:12;;;;:::i;:::-;;;;16902:207;;;17048:9;17055:2;17048:4;:9;:::i;:::-;:14;;;17044:65;;17082:12;;;;:::i;:::-;;;;17044:65;17122:8;;;;:::i;:::-;;-1:-1:-1;17144:10:178;;-1:-1:-1;17152:2:178;17144:10;;:::i;:::-;;;16870:295;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17256:1:178;17246:11;;17242:1245;;17391:20;17437:1;17414:19;;;;:6;:19;:::i;:::-;:24;;:32;;17445:1;17414:32;;;17441:1;17414:32;17391:55;;;-1:-1:-1;17482:14:178;17495:1;17482:10;:14;:::i;:::-;17469:27;;:10;17478:1;17469:6;:10;:::i;:::-;:27;:63;;17517:14;17530:1;17517:10;:14;:::i;:::-;17503:29;;:10;17512:1;17503:6;:10;:::i;:::-;:29;;;;:::i;:::-;17469:63;;;17499:1;17469:63;17546:35;;;:22;;;:35;;;17460:72;;-1:-1:-1;17658:1:178;;17624:31;;17460:72;;17624:31;:::i;:::-;:35;;;;:::i;:::-;17595:65;;:20;;;:65;17701:22;;;;17730:12;;17701:26;;17726:1;;17701:26;:::i;:::-;:41;;;;;;:::i;:::-;17674:69;;;;:18;;;:69;17811:12;;17785:19;;;;:6;:19;:::i;:::-;:23;;17807:1;17785:23;:::i;:::-;:38;;;;:::i;:::-;17757:67;;:19;;;:67;-1:-1:-1;17242:1245:178;;;17942:10;17946:6;17942:1;:10;:::i;:::-;18045:1;18020:22;;;:26;;;17933:19;;-1:-1:-1;18175:1:178;;18141:31;;17933:19;18141:31;:::i;:::-;:35;;;;:::i;:::-;18112:65;;;;:20;;;:65;18250:19;;;;:6;:19;:::i;:::-;:23;;18272:1;18250:23;:::i;:::-;18222:52;;:19;;;:52;;;18372:23;;18394:1;;18372:23;:::i;:::-;18345:51;;:18;;;:51;18472:4;18449:20;;;:27;17242:1245;18536:19;;;;:6;:19;:::i;:::-;18529:27;;:2;:27;:::i;:::-;18513:44;;:12;;;:44;:::i;:::-;18496:61;;18623:4;18604:16;;;:23;18668:1;18659:10;;:34;;18692:1;18659:34;;;18678:10;18687:1;18678:6;:10;:::i;:::-;18637:56;;:19;;;:56;18757:29;18637:6;18757:21;:29::i;:::-;18750:36;16376:2417;-1:-1:-1;;;;;;;16376:2417:178:o;1563:540:186:-;1630:5;1651:22;;;1647:62;;-1:-1:-1;1696:2:186;;1563:540;-1:-1:-1;1563:540:186:o;1647:62::-;1774:43;;;;;;;;;;;;;;;;;;;;;;1754:64;;1719:12;;;;1754:19;;;;:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:100;;;;1833:7;1828:47;;-1:-1:-1;1863:1:186;;1563:540;-1:-1:-1;;;1563:540:186:o;1828:47::-;1888:4;:11;1903:2;1888:17;1884:195;;1921:16;1951:4;1940:27;;;;;;;;;;;;:::i;:::-;1921:46;-1:-1:-1;1997:15:186;1985:27;;1981:88;;2045:8;1563:540;-1:-1:-1;;;;1563:540:186:o;1981:88::-;1907:172;1884:195;-1:-1:-1;2095:1:186;;1563:540;-1:-1:-1;;;1563:540:186:o;10982:786:178:-;11184:13;11257:11;11222:31;11257:11;1032:7:103;11222:31:178;:::i;:::-;11221:47;;;;:::i;:::-;11213:55;;:4;:55;;;11209:553;;11292:9;11291:10;:26;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11291:26:178;;;;;;;;;;;;;;;;;11284:33;;11209:553;11382:11;11347:31;11382:11;1317:6:103;11347:31:178;:::i;:::-;11346:47;;;;:::i;:::-;11338:55;;:4;:55;;;11334:428;;11417:9;11416:10;:26;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11416:26:178;;;;;;;;;;;;;;;;;11409:33;;11334:428;11473:20;11496:33;11524:4;11496:27;:33::i;:::-;11473:56;;11547:9;11543:104;;;11599:32;;;;11607:8;11599:32;:::i;:::-;11576:56;;11543:104;11667:84;11693:12;11707:20;11729:21;11667:25;:84::i;:::-;11660:91;;;;;4220:122:8;4311:24;;;;;:11;;;;:24;;4323:4;;4329:5;;4311:24;;;:::i;17360:142:195:-;17421:13;17453:42;17481:7;17465:25;;17492:2;17453:11;:42::i;18169:519::-;18229:13;18258:5;18267:1;18258:10;18254:51;;-1:-1:-1;;18284:10:195;;;;;;;;;;;;;;;;;;18169:519::o;18254:51::-;18329:5;18314:12;18368:75;18375:9;;18368:75;;18400:8;;;;:::i;:::-;;-1:-1:-1;18422:10:195;;-1:-1:-1;18430:2:195;18422:10;;:::i;:::-;;;18368:75;;;18452:19;18484:6;18474:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18474:17:195;;18452:39;;18501:150;18508:10;;18501:150;;18534:11;18544:1;18534:11;;:::i;:::-;;-1:-1:-1;18602:10:195;18610:2;18602:5;:10;:::i;:::-;18589:24;;:2;:24;:::i;:::-;18576:39;;18559:6;18566;18559:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;18629:11:195;18638:2;18629:11;;:::i;:::-;;;18501:150;;;18674:6;18169:519;-1:-1:-1;;;;18169:519:195:o;2866:108:8:-;2943:24;;;;;;;;35810:25:262;;;35851:18;;;35844:34;;;2943:11:8;;;;35783:18:262;;2943:24:8;35640:244:262;20454:125:10;20518:12;20552:20;20567:4;20552:14;:20::i;:::-;-1:-1:-1;20542:30:10;20454:125;-1:-1:-1;;20454:125:10:o;1594:89:8:-;1657:19;;;;;9321:14:262;;9314:22;1657:19:8;;;9296:41:262;1657:13:8;;;;9269:18:262;;1657:19:8;9156:187:262;4062:382:258;4255:6;;4199:80;;;;;;;;;4255:6;4199:80;;4147:19;4199:80;;;;;;4147:19;4199:80;;4233:11;;4255:6;;;4264:5;;4199:25;:80::i;:::-;4178:18;:101;;;;;;;;;;;;;;4361:10;;4297:88;;;;;;;;;-1:-1:-1;4297:88:258;;;;;;;;;;-1:-1:-1;4297:88:258;;;;;;;;;4361:10;;;;;4297:88;:34;:88::i;:::-;4289:5;:96;;;;;;;;;;;;;;;4062:382;-1:-1:-1;;;4062:382:258:o;3872:184::-;3912:6;3930:16;3949;;;;;;;;;;;;;;;;;;:8;:16::i;:::-;4001:8;;3993:22;;;;3975:7;4001:8;;;3993:22;;;;;;;;;;;;;3930:35;;-1:-1:-1;3975:7:258;;;;3930:35;;3993:22;-1:-1:-1;;3993:22:258;;;;3975:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4040:8:258;;3872:184;-1:-1:-1;;;;3872:184:258:o;612:601:250:-;903:89;;;36178:42:262;36166:55;;;903:89:250;;;36148:74:262;36258:55;;;36238:18;;;36231:83;;;;36330:18;;;36323:34;;;36393:55;;;36373:18;;;36366:83;36486:55;;;36465:19;;;36458:84;847:24:250;;;;36120:19:262;;903:89:250;;;;;;;;;;;;;;1043:49;;;36755:2:262;1043:49:250;;;36737:21:262;36794:2;36774:18;;;36767:30;36833:34;36813:18;;;36806:62;36904:5;36884:18;;;36877:33;903:89:250;-1:-1:-1;1002:21:250;;1043:10;;;;36927:19:262;;1043:49:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1094:4;1026:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1002:97;;1192:4;1181:8;1175:15;1168:4;1158:8;1154:19;1151:1;1143:54;1132:65;612:601;-1:-1:-1;;;;;;;;;612:601:250:o;4790:509:258:-;5049:7;;4999:78;;;;;:41;5049:7;;;4999:78;;;11344:74:262;5059:17:258;11434:18:262;;;11427:34;4999:41:258;;;;;;11317:18:262;;4999:78:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5199:7:258;;5250:3;;;5199:93;;;;;:7;37506:55:262;;;5199:93:258;;;37488:74:262;5250:3:258;;;37578:18:262;;;37571:83;37670:18;;;37663:83;;;5275:16:258;37762:18:262;;;37755:55;5199:7:258;;;;:15;;37460:19:262;;5199:93:258;37259:557:262;6188:318:127;6262:25;6324:5;6308:22;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6308:22:127;;6299:31;;6345:7;6340:160;6362:5;6358:9;;:1;:9;;;6340:160;;;6430:2;6400:33;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6388:6;6395:1;6388:9;;;;;;;;;;:::i;:::-;;;;;;:45;;;;;;;;;;;6447:6;6454:1;6447:9;;;;;;;;;;:::i;:::-;;;;;;;;;;;:42;;;;;6470:4;6447:42;;;11344:74:262;11434:18;;;11427:34;;;6447:14:127;;;;;;;11317:18:262;;6447:42:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6369:3:127;;;;;-1:-1:-1;6340:160:127;;-1:-1:-1;6340:160:127;216:436:129;313:19;334;399:6;373:33;;381:6;373:33;;;369:277;;;-1:-1:-1;472:6:129;;-1:-1:-1;504:6:129;369:277;;;-1:-1:-1;594:6:129;;-1:-1:-1;626:6:129;369:277;216:436;;;;;:::o;1357:223:85:-;1480:8;1477:1;1470:19;1529:5;1526:1;1515:20;1509:4;1502:34;1559:4;1556:1;1549:15;1067:473:128;1209:17;1262:13;1246:29;;:13;:29;;;1242:98;;;1311:13;;1326;1242:98;1350:20;1373:63;1389:13;1373:63;;1404:13;1373:63;;335:27:87;1373:15:128;:63::i;:::-;1350:86;-1:-1:-1;1453:80:128;1463:69;1479:7;1350:86;1502:29;1518:13;1502;:29;:::i;:::-;1463:69;;:15;:69::i;:::-;1453:9;:80::i;:::-;1446:87;;;1067:473;;;;;;:::o;1979:381::-;2121:17;2174:13;2158:29;;:13;:29;;;2154:98;;;2223:13;;2238;2154:98;2269:84;2279:73;2295:7;335:27:87;2322:29:128;2338:13;2322;:29;:::i;3590:304:254:-;3752:12;3787:100;3802:6;3810:9;1041:17;;3867:9;3878:8;3787:14;:100::i;790:155:98:-;876:1;892:6;;;;;888:50;;900:38;:25;:36;:38::i;:::-;790:155;;;:::o;5935:799:128:-;6115:15;6132;6179:13;6163:29;;:13;:29;;;6159:98;;;6228:13;;6243;6159:98;6288:13;6272:29;;:12;:29;;;6268:460;;6327:63;6350:13;6365;6380:9;6327:22;:63::i;:::-;6317:73;;6268:460;;;6426:13;6411:28;;:12;:28;;;6407:321;;;6465:62;6488:12;6502:13;6517:9;6465:22;:62::i;:::-;6455:72;;6551:62;6574:13;6589:12;6603:9;6551:22;:62::i;:::-;6541:72;;6407:321;;;6654:63;6677:13;6692;6707:9;6654:22;:63::i;:::-;6644:73;;6407:321;5935:799;;;;;;;:::o;3316:631:186:-;3502:32;;;;;;;;;;;;;;;;;;;;;;;;3475:60;;3414:13;;3440:12;;;;3475:26;;;;:60;;3502:32;3475:60;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3439:96;;;;3601:7;3596:48;;3624:9;;;;;;;;;;;;;;;;;;3596:48;3702:4;:11;3717:2;3702:17;3698:224;;3735:15;3764:4;3753:27;;;;;;;;;;;;:::i;:::-;3735:45;;3801:24;3817:7;3801:15;:24::i;:::-;3794:31;;;;;;;3698:224;3860:2;3846:4;:11;:16;3842:80;;;3896:4;3885:26;;;;;;;;;;;;:::i;:::-;3878:33;;;;;;3842:80;-1:-1:-1;;3931:9:186;;;;;;;;;-1:-1:-1;3931:9:186;;;3316:631;-1:-1:-1;;;3316:631:186:o;2890:162::-;2962:13;2994:51;3026:15;3043:1;2994:31;:51::i;4169:352::-;4334:28;;;532:2;4334:28;;;;;;;;;4235:13;;4290:3;;4260:21;;4334:28;;;;;;;;;;-1:-1:-1;4334:28:186;4304:58;;4377:9;4372:104;532:2;4392:21;;4372:104;;;4454:8;4463:1;4454:11;;;;;;;;:::i;:::-;;;;;;;;;4434:14;4449:1;4434:17;;;;;;;;:::i;:::-;;;;:31;;;;;;;;;;-1:-1:-1;4415:3:186;;4372:104;;9283:1173:178;9371:13;9396:19;9428:6;:19;;;9418:30;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9418:30:178;;9396:52;;9462:6;:16;;;9458:78;;;9494:31;:6;9517:1;9501:6;:13;:17;;;;:::i;:::-;9494:25;;;;;;;;:::i;:::-;;;;:31;;;;;;;;;;;9458:78;9549:6;:20;;;9545:95;;;9585:15;:6;9592:1;9585:9;;;;;;;;:::i;:::-;;;;:15;;;;;;;;;;;9614;:6;9621:1;9614:9;;;;;;;;:::i;:::-;;;;:15;;;;;;;;;;;9545:95;9713:22;;;;9691:44;;9686:266;9751:20;;;;:24;;9774:1;9751:24;:::i;:::-;9737:38;;:11;:38;9686:266;;;9937:2;9924:17;;9902:6;9909:11;9902:19;;;;;;;;:::i;:::-;;;;:39;;;;;;;;;;-1:-1:-1;9777:13:178;;9686:266;;;;9984:435;9991:14;;:18;9984:435;;10051:1;10029:6;:19;;;:23;;;:68;;;;;10078:6;:19;;;10056:41;;:6;:18;;;:41;;;10029:68;10025:141;;;10117:34;:6;10124;:18;;:20;;;;;;;;:::i;:::-;;;;;;;;10117:28;;;;;;;;;;:::i;:::-;;;;:34;;;;;;;;;;;10025:141;10227:14;;:19;;10244:2;;10227:19;:::i;:::-;10221:26;;:2;:26;:::i;:::-;10208:41;;10179:6;10186;:18;;;10179:26;;;;;;;;;;:::i;:::-;;;;:70;;;;;;;;;;-1:-1:-1;10340:18:178;;;:20;;;;;;;;10388;;10406:2;;10340:18;;10388:20;;10406:2;;10388:20;:::i;:::-;;;-1:-1:-1;9984:435:178;;13936:2266;14097:13;14126:28;14169:84;14195:12;14209:20;14231:21;14169:25;:84::i;:::-;14126:127;;14263:13;14279:68;14295:20;14317;14339:7;14279:15;:68::i;:::-;14263:84;-1:-1:-1;14400:7:178;14377:30;;14417:357;;;;14566:42;14582:5;14589:8;14599;14566:15;:42::i;:::-;14558:50;;14417:357;;;14722:41;14738:5;14745:7;14754:8;14722:15;:41::i;:::-;14714:49;;14417:357;14826:5;14811:12;14863:75;14870:9;;14863:75;;14895:8;;;;:::i;:::-;;-1:-1:-1;14917:10:178;;-1:-1:-1;14925:2:178;14917:10;;:::i;:::-;;;14863:75;;;15009:10;15018:1;15009:6;:10;:::i;:::-;15000:19;;15059:15;15076;15095:29;15110:5;15117:6;15095:14;:29::i;:::-;15058:66;;;;15138:10;15134:49;;;15164:8;;;;:::i;:::-;;;;15134:49;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15240:11:178;15236:801;;;15372:18;15384:6;15378:2;15372:18;:::i;:::-;15360:31;;15366:1;15360:31;:::i;:::-;15332:60;;;;:19;;;:60;15431:1;15406:22;;;:26;15475:20;;;;15483:2;15475:20;:::i;:::-;:24;;15498:1;15475:24;:::i;:::-;15446:54;;:20;;;:54;15541:19;;;;:23;;15563:1;;15541:23;:::i;:::-;15514:51;;:18;;;:51;15236:801;;;15596:1;15586:6;:11;;;15582:455;;15683:10;15692:1;15683:6;:10;:::i;:::-;15655:39;;:19;;;:39;;;15733:1;15708:22;;;:26;15777:23;;15799:1;;15777:23;:::i;:::-;15748:53;;:20;;;:53;15836:1;15815:18;;;:22;15582:455;;;15932:1;15910:19;;;:23;15968:1;15947:18;;;:22;;;16011:10;;:6;:10;:::i;:::-;:14;;16024:1;16011:14;:::i;:::-;15983:43;;:19;;;:43;15582:455;16046:24;;;16080:34;;;:20;;;:34;16046:14;16124:16;;;:24;16166:29;16046:6;16166:21;:29::i;:::-;16159:36;13936:2266;-1:-1:-1;;;;;;;;;;;;13936:2266:178:o;17618:545:195:-;17693:13;17718:19;17750:10;17754:6;17750:1;:10;:::i;:::-;:14;;17763:1;17750:14;:::i;:::-;17740:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17740:25:195;;17718:47;;17775:15;:6;17782:1;17775:9;;;;;;;;:::i;:::-;;;;:15;;;;;;;;;;;17800;:6;17807:1;17800:9;;;;;;;;:::i;:::-;;;;:15;;;;;;;;;;-1:-1:-1;17830:9:195;17842:10;17846:6;17842:1;:10;:::i;:::-;:14;;17855:1;17842:14;:::i;:::-;17830:26;;17825:245;17862:1;17858;:5;17825:245;;;17912:3;17904:11;;17950:2;17942:10;;:52;;17983:10;:5;17991:2;17983:10;:::i;:::-;17976:18;;17942:52;;;17962:10;:5;17970:2;17962:10;:::i;:::-;17955:18;;17942:52;17930:6;17937:1;17930:9;;;;;;;;:::i;:::-;;;;:64;;;;;;;;;;-1:-1:-1;;18058:1:195;18048:11;;;;;17865:3;;;:::i;:::-;;;17825:245;;;-1:-1:-1;18087:10:195;;18079:46;;;;;;;39368:2:262;18079:46:195;;;39350:21:262;39407:2;39387:18;;;39380:30;39446:25;39426:18;;;39419:53;39489:18;;18079:46:195;39166:347:262;20173:242:10;20243:12;20257:18;20335:4;20318:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;20308:33;;20318:22;20308:33;;;;20359:19;;;;;;8504:25:262;;;20308:33:10;-1:-1:-1;20359:7:10;;;;8477:18:262;;20359:19:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20388:20;;;;;20352:26;;-1:-1:-1;20388:8:10;;;;:20;;20352:26;;20403:4;;20388:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20173:242;;;:::o;2466:537:250:-;2709:64;;;40302:42:262;40290:55;;;2709:64:250;;;40272:74:262;40382:55;;40362:18;;;40355:83;;;;40454:18;;;40447:34;;;2647:30:250;;;;40245:18:262;;2709:64:250;;;;;;;;;;;;;;2824:55;;;23655:2:262;2824:55:250;;;23637:21:262;23694:2;23674:18;;;23667:30;23733:34;23713:18;;;23706:62;23804:11;23784:18;;;23777:39;2709:64:250;-1:-1:-1;2783:21:250;;2824:10;;;;23833:19:262;;2824:55:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2881:4;2807:79;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2783:103;;2982:4;2971:8;2965:15;2958:4;2948:8;2944:19;2941:1;2933:54;2919:68;2466:537;-1:-1:-1;;;;;;;2466:537:250:o;1949:511::-;2097:33;2146:17;2177:14;2193:5;2200:4;2166:39;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;2268:73;;;41167:2:262;2268:73:250;;;41149:21:262;41206:2;41186:18;;;41179:30;41245:34;41225:18;;;41218:62;41316:29;41296:18;;;41289:57;2166:39:250;-1:-1:-1;2215:21:250;;2268:10;;;;41363:19:262;;2268:73:250;40965:423:262;741:4141:88;823:14;1212:5;;;823:14;1413:6;1216:1;1212;1400:20;1473:5;1469:2;1466:13;1458:5;1454:2;1450:14;1446:34;1437:43;;;1633:5;1619:11;:19;1611:28;;;;;;1720:5;1729:1;1720:10;1716:177;;-1:-1:-1;1807:23:88;;;;-1:-1:-1;1865:13:88;;1716:177;2193:17;2293:11;2290:1;2287;2280:25;2701:12;2717:15;;;2716:31;;2869:22;;;;;3776:1;3757;:15;;3756:21;;4019:17;;;4015:21;;4008:28;4081:17;;;4077:21;;4070:28;4144:17;;;4140:21;;4133:28;4207:17;;;4203:21;;4196:28;4270:17;;;4266:21;;4259:28;4334:17;;;4330:21;;;4323:28;3313:12;;;;3309:23;;;3334:1;3305:31;2454:20;;;2443:32;;;3372:12;;;;2501:21;;;;3029:16;;;;3363:21;;;;4827:11;;;;;-1:-1:-1;;741:4141:88;;;;;:::o;467:132:128:-;568:1;548:21;;;;;540:52;;;;;;;41595:2:262;540:52:128;;;41577:21:262;41634:2;41614:18;;;41607:30;41673:20;41653:18;;;41646:48;41711:18;;540:52:128;41393:342:262;3900:713:254;4132:12;4156:19;4178:14;:12;:14::i;:::-;4156:36;;4202:330;614:4:173;4290:6:254;:14;;;4322:6;:16;;;4356:6;:16;;;4390:9;4417:10;4445;4473:9;4500:8;4262:260;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;4202:7;;:330;:11;:330::i;:::-;-1:-1:-1;4591:14:254;;4550:56;;:7;;:40;:56::i;:::-;4543:63;3900:713;-1:-1:-1;;;;;;;;3900:713:254:o;753:163:85:-;863:8;860:1;853:19;895:4;892:1;885:15;4219:444:128;4363:15;4414:13;4398:29;;:13;:29;;;4394:98;;;4463:13;;4478;4394:98;4510:146;;;:130;4539:45;295:2:87;4539:45:128;;;;4586:29;4643:13;4586;:29;:::i;:::-;4510:130;;4617:13;4510:130;;:15;:130::i;:::-;:146;;;;:::i;5021:373::-;5165:15;5216:13;5200:29;;:13;:29;;;5196:98;;;5265:13;;5280;5196:98;5312:75;;;;5339:29;5355:13;5339;:29;:::i;:::-;5312:75;;335:27:87;5312:15:128;:75::i;2109:584:186:-;2219:13;;;2229:2;2219:13;;;;;;;;;2167;;2192:24;;2219:13;;;;;;;;;;;-1:-1:-1;2219:13:186;2192:40;;2242:17;2278:9;2273:195;2297:2;2293:1;:6;2273:195;;;2320:11;2334:1;2336;2334:4;;;;;;;:::i;:::-;;;;;-1:-1:-1;2356:9:186;;;;2352:106;;2410:4;2385:11;2397:9;2385:22;;;;;;;;:::i;:::-;;;;:29;;;;;;;;;;-1:-1:-1;2432:11:186;;;;:::i;:::-;;;;2352:106;-1:-1:-1;2301:3:186;;2273:195;;;;2477:31;2521:9;2511:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2511:20:186;;2477:54;;2546:9;2541:103;2565:9;2561:1;:13;2541:103;;;2619:11;2631:1;2619:14;;;;;;;;:::i;:::-;;;;;;;;;2595:18;2614:1;2595:21;;;;;;;;:::i;:::-;;;;:38;;;;;;;;;;-1:-1:-1;2576:3:186;;2541:103;;;-1:-1:-1;2667:18:186;2109:584;-1:-1:-1;;;;2109:584:186:o;594:823:174:-;667:13;698:7;704:1;698:3;:7;:::i;:::-;:12;:23;;;;;720:1;714:3;:7;698:23;:36;;;;;732:2;725:3;:9;;698:36;692:102;;758:25;;;;;;;;8504::262;;;8477:18;;758:25:174;8358:177:262;692:102:174;804:14;831:3;821:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;821:14:174;-1:-1:-1;804:31:174;-1:-1:-1;863:22:174;;;845:15;895:490;919:7;925:1;919:3;:7;:::i;:::-;915:1;:11;895:490;;;1059:7;1092:6;1097:1;1092:2;:6;:::i;:::-;1087:12;;:1;:12;:::i;:::-;1075:25;;;;-1:-1:-1;1192:6:174;1197:1;1192:6;;;;1181:8;1291:13;1296:7;;;1075:25;1291:13;:::i;:::-;1280:24;;1329:8;1334:2;1329:4;:8::i;:::-;1318:1;1320:5;1324:1;1320;:5;:::i;:::-;1318:8;;;;;;;;:::i;:::-;;;;:19;;;;;;;;;;;1366:8;1371:2;1366:4;:8::i;:::-;1351:1;1353:5;1357:1;1353;:5;:::i;:::-;:9;;1361:1;1353:9;:::i;:::-;1351:12;;;;;;;;:::i;:::-;;;;:23;;;;;;;;;;-1:-1:-1;;928:3:174;;;;;-1:-1:-1;895:490:174;;-1:-1:-1;895:490:174;;-1:-1:-1;1408:1:174;;594:823;-1:-1:-1;;;;594:823:174:o;12654:1041:178:-;12814:28;;12879:85;12883:80;12931:30;;;;;12890:29;;12883:80;:::i;:::-;12879:3;:85::i;:::-;12858:106;;12991:1;12978:10;:14;:34;;;;;13010:2;12996:10;:16;;12978:34;12974:715;;;13055:21;13032:44;;:20;:44;;;13028:576;;;13142:14;13155:1;13142:10;:14;:::i;:::-;13135:22;;:2;:22;:::i;:::-;13119:39;;;;;;:::i;:::-;13096:62;-1:-1:-1;13180:14:178;13193:1;13180:10;:14;:::i;:::-;13198:1;13180:19;13176:148;;13246:59;13262:20;860:40;13296:8;13246:15;:59::i;:::-;13223:82;;13176:148;12974:715;;13028:576;13408:14;13421:1;13408:10;:14;:::i;:::-;13401:22;;:2;:22;:::i;:::-;13385:39;;;;;;:::i;:::-;13362:62;-1:-1:-1;13446:14:178;13459:1;13446:10;:14;:::i;:::-;13464:1;13446:19;13442:148;;13512:59;13528:20;13550:8;860:40;13512:15;:59::i;12974:715::-;-1:-1:-1;;13657:21:178;;;;;12654:1041;-1:-1:-1;;12654:1041:178:o;11774:521::-;11849:7;11858:4;11874:15;11912:1;11903:6;:10;;;11899:77;;;11953:10;11962:1;11953:6;:10;:::i;:::-;11946:18;;:2;:18;:::i;:::-;11937:28;;:5;:28;:::i;:::-;11929:36;;11899:77;11985:12;12013:1;12000:10;12008:2;12000:5;:10;:::i;:::-;:14;;-1:-1:-1;12032:10:178;12040:2;12032:5;:10;:::i;:::-;12024:18;;12056:7;12052:55;;;12087:9;:5;12095:1;12087:9;:::i;:::-;12079:17;;12052:55;12169:5;12178:6;12169:15;12165:88;;12200:11;12209:2;12200:11;;:::i;:::-;;;12238:4;12225:17;;12165:88;-1:-1:-1;12270:5:178;;11774:521;-1:-1:-1;;;11774:521:178:o;437:131:256:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;511:50:256;;526:9;;;;;-1:-1:-1;511:50:256;;;526:9;;;511:50;;545:14;;;;;;;;;;;-1:-1:-1;;511:50:256;;;;;;545:14;;;;;;;;;;;;;;;;;;;;-1:-1:-1;511:50:256;;504:57;437:131;-1:-1:-1;437:131:256:o;574:611::-;-1:-1:-1;;;;;;;;;;;;;;;;;687:20:256;720:4;:11;;;:18;741:1;720:22;;;;:::i;:::-;710:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;710:33:256;;687:56;;753:21;789:4;:11;;;:18;810:1;789:22;;;;:::i;:::-;777:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;753:59;;828:9;823:168;859:1;843:6;:13;:17;;;;:::i;:::-;839:1;:21;823:168;;;924:4;:11;;;936:1;924:14;;;;;;;;:::i;:::-;;;;;;;912:6;919:1;912:9;;;;;;;;:::i;:::-;;;;;;:26;;;;965:4;:12;;;978:1;965:15;;;;;;;;:::i;:::-;;;;;;;;;952:7;960:1;952:10;;;;;;;;:::i;:::-;;;;:28;;;;;;;;;;-1:-1:-1;862:3:256;;823:168;;;;1028:5;1000:6;1023:1;1007:6;:13;:17;;;;:::i;:::-;1000:25;;;;;;;;:::i;:::-;;;;;;:33;;;;1085:6;1072:21;;1043:7;1067:1;1051:6;:13;:17;;;;:::i;:::-;1043:26;;;;;;;;:::i;:::-;;;;:50;;;;;;;;;;-1:-1:-1;1104:22:256;;;1136:11;;;:20;-1:-1:-1;1104:22:256;;574:611;-1:-1:-1;;574:611:256:o;1617:332::-;1820:17;;1809:29;;;680:42:262;668:55;;;1809:29:256;;;650:74:262;1748:12:256;;1776:63;;1628:4:173;;623:18:262;1809:29:256;;;;;;;;;;;;;;1776:4;;:63;:8;:63::i;:::-;;1849;1628:4:173;1893:7:256;:17;;;1882:29;;;;;;;680:42:262;668:55;;;;650:74;;638:2;623:18;;475:255;1849:63:256;;1929:13;:4;:11;:13::i;1693:185:174:-;1738:8;1766:2;1762:1;:6;;;1758:114;;;1798:8;:1;1802:4;1798:8;:::i;:::-;1791:16;;;1693:185;-1:-1:-1;;1693:185:174:o;1758:114::-;1852:8;:1;1856:4;1852:8;:::i;13828:102:178:-;13873:7;13912:1;13907;:6;;:15;;13920:2;13921:1;13920:2;:::i;:::-;13907:15;;;-1:-1:-1;13916:1:178;13828:102::o;2561:132:256:-;2618:12;2660:4;:12;;;2674:4;:11;;;2649:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2642:44;;2561:132;;;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:168:262:-;114:42;107:5;103:54;96:5;93:65;83:93;;172:1;169;162:12;187:283;268:6;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;376:9;363:23;395:45;434:5;395:45;:::i;735:660::-;925:2;937:21;;;1007:13;;910:18;;;1029:22;;;877:4;;1108:15;;;1082:2;1067:18;;;877:4;1151:218;1165:6;1162:1;1159:13;1151:218;;;1230:13;;1245:42;1226:62;1214:75;;1318:2;1344:15;;;;1309:12;;;;1187:1;1180:9;1151:218;;;-1:-1:-1;1386:3:262;;735:660;-1:-1:-1;;;;;735:660:262:o;1400:358::-;1452:3;1490:5;1484:12;1517:6;1512:3;1505:19;1573:6;1566:4;1559:5;1555:16;1548:4;1543:3;1539:14;1533:47;1625:1;1618:4;1609:6;1604:3;1600:16;1596:27;1589:38;1747:4;1677:66;1672:2;1664:6;1660:15;1656:88;1651:3;1647:98;1643:109;1636:116;;;1400:358;;;;:::o;1763:1777::-;1967:4;2015:2;2004:9;2000:18;2045:2;2034:9;2027:21;2068:6;2103;2097:13;2134:6;2126;2119:22;2172:2;2161:9;2157:18;2150:25;;2234:2;2224:6;2221:1;2217:14;2206:9;2202:30;2198:39;2184:53;;2272:2;2264:6;2260:15;2293:1;2303:1208;2317:6;2314:1;2311:13;2303:1208;;;2406:66;2382:22;;;2378:95;2366:108;;2497:13;;2584:9;;2595:42;2580:58;2565:74;;2686:2;2678:11;;;2672:18;2549:2;2710:15;;;2703:27;;;2791:19;;2537:15;;;2823:24;;;2978:21;;;2881:2;2931:1;2927:16;;;2915:29;;2911:38;;;2869:15;;;;-1:-1:-1;3037:365:262;3053:8;3048:3;3045:17;3037:365;;;3155:66;3146:6;3138;3134:19;3130:92;3123:5;3116:107;3250:52;3295:6;3284:8;3278:15;3250:52;:::i;:::-;3345:2;3331:17;;;;3240:62;;-1:-1:-1;3374:14:262;;;;;3081:1;3072:11;3037:365;;;-1:-1:-1;3425:6:262;;-1:-1:-1;;;3466:2:262;3489:12;;;;3454:15;;;;;-1:-1:-1;2339:1:262;2332:9;2303:1208;;;-1:-1:-1;3528:6:262;;1763:1777;-1:-1:-1;;;;;;1763:1777:262:o;4670:492::-;4722:3;4760:5;4754:12;4787:6;4782:3;4775:19;4819:4;4814:3;4810:14;4803:21;;4858:4;4851:5;4847:16;4881:1;4891:246;4905:6;4902:1;4899:13;4891:246;;;4970:13;;4985:66;4966:86;4954:99;;5082:4;5073:14;;;;5110:17;;;;4927:1;4920:9;4891:246;;;-1:-1:-1;5153:3:262;;4670:492;-1:-1:-1;;;;4670:492:262:o;5167:1212::-;5385:4;5433:2;5422:9;5418:18;5463:2;5452:9;5445:21;5486:6;5521;5515:13;5552:6;5544;5537:22;5590:2;5579:9;5575:18;5568:25;;5652:2;5642:6;5639:1;5635:14;5624:9;5620:30;5616:39;5602:53;;5690:2;5682:6;5678:15;5711:1;5721:629;5735:6;5732:1;5729:13;5721:629;;;5824:66;5812:9;5804:6;5800:22;5796:95;5791:3;5784:108;5921:6;5915:13;5967:2;5961:9;5998:2;5990:6;5983:18;6028:58;6082:2;6074:6;6070:15;6056:12;6028:58;:::i;:::-;6014:72;;6135:2;6131;6127:11;6121:18;6099:40;;6188:6;6180;6176:19;6171:2;6163:6;6159:15;6152:44;6219:51;6263:6;6247:14;6219:51;:::i;:::-;6209:61;-1:-1:-1;;;6305:2:262;6328:12;;;;6293:15;;;;;5757:1;5750:9;5721:629;;6384:851;6546:4;6594:2;6583:9;6579:18;6624:2;6613:9;6606:21;6647:6;6682;6676:13;6713:6;6705;6698:22;6751:2;6740:9;6736:18;6729:25;;6813:2;6803:6;6800:1;6796:14;6785:9;6781:30;6777:39;6763:53;;6851:2;6843:6;6839:15;6872:1;6882:324;6896:6;6893:1;6890:13;6882:324;;;6985:66;6973:9;6965:6;6961:22;6957:95;6952:3;6945:108;7076:50;7119:6;7110;7104:13;7076:50;:::i;:::-;7066:60;-1:-1:-1;7161:2:262;7184:12;;;;7149:15;;;;;6918:1;6911:9;6882:324;;7240:1113;7442:4;7490:2;7479:9;7475:18;7520:2;7509:9;7502:21;7543:6;7578;7572:13;7609:6;7601;7594:22;7647:2;7636:9;7632:18;7625:25;;7709:2;7699:6;7696:1;7692:14;7681:9;7677:30;7673:39;7659:53;;7747:2;7739:6;7735:15;7768:1;7778:546;7792:6;7789:1;7786:13;7778:546;;;7881:66;7869:9;7861:6;7857:22;7853:95;7848:3;7841:108;7978:6;7972:13;8028:42;8023:2;8017:9;8013:58;8005:6;7998:74;8119:2;8115;8111:11;8105:18;8085:38;;8160:2;8155;8147:6;8143:15;8136:27;8186:58;8240:2;8232:6;8228:15;8214:12;8186:58;:::i;:::-;8176:68;-1:-1:-1;;8279:2:262;8302:12;;;;8267:15;;;;;7814:1;7807:9;7778:546;;8921:230;9070:2;9059:9;9052:21;9033:4;9090:55;9141:2;9130:9;9126:18;9118:6;9090:55;:::i;9348:437::-;9427:1;9423:12;;;;9470;;;9491:61;;9545:4;9537:6;9533:17;9523:27;;9491:61;9598:2;9590:6;9587:14;9567:18;9564:38;9561:218;;9635:77;9632:1;9625:88;9736:4;9733:1;9726:15;9764:4;9761:1;9754:15;9561:218;;9348:437;;;:::o;9790:184::-;9842:77;9839:1;9832:88;9939:4;9936:1;9929:15;9963:4;9960:1;9953:15;9979:237;10017:7;10094:1;10091;10080:16;10076:1;10073;10062:16;10058:39;10131:11;10128:1;10117:26;10106:37;;10174:11;10165:7;10162:24;10152:58;;10190:18;;:::i;10221:184::-;10291:6;10344:2;10332:9;10323:7;10319:23;10315:32;10312:52;;;10360:1;10357;10350:12;10312:52;-1:-1:-1;10383:16:262;;10221:184;-1:-1:-1;10221:184:262:o;10410:::-;10462:77;10459:1;10452:88;10559:4;10556:1;10549:15;10583:4;10580:1;10573:15;10599:125;10664:9;;;10685:10;;;10682:36;;;10698:18;;:::i;11472:248::-;11539:2;11533:9;11581:4;11569:17;;11616:18;11601:34;;11637:22;;;11598:62;11595:88;;;11663:18;;:::i;:::-;11699:2;11692:22;11472:248;:::o;11725:838::-;11801:5;11833:1;11857:18;11849:6;11846:30;11843:56;;;11879:18;;:::i;:::-;-1:-1:-1;12093:2:262;12087:9;11943:66;11938:2;11926:15;;11922:88;;12151:2;12139:15;12135:88;12123:101;;12275:22;;;12254:18;12239:34;;12236:62;12233:88;;;12301:18;;:::i;:::-;12337:2;12330:22;12385;;;12370:6;-1:-1:-1;12370:6:262;12422:16;;;12419:25;-1:-1:-1;12416:45:262;;;12457:1;12454;12447:12;12416:45;12500:6;12495:3;12488:4;12480:6;12476:17;12470:37;12555:1;12548:4;12539:6;12531;12527:19;12523:30;12516:41;;11725:838;;;;;:::o;12568:237::-;12622:5;12675:3;12668:4;12660:6;12656:17;12652:27;12642:55;;12693:1;12690;12683:12;12642:55;12715:84;12795:3;12786:6;12780:13;12773:4;12765:6;12761:17;12715:84;:::i;12810:337::-;12890:6;12943:2;12931:9;12922:7;12918:23;12914:32;12911:52;;;12959:1;12956;12949:12;12911:52;12992:9;12986:16;13025:18;13017:6;13014:30;13011:50;;;13057:1;13054;13047:12;13011:50;13080:61;13133:7;13124:6;13113:9;13109:22;13080:61;:::i;13152:287::-;13244:6;13297:2;13285:9;13276:7;13272:23;13268:32;13265:52;;;13313:1;13310;13303:12;13265:52;13345:9;13339:16;13364:45;13403:5;13364:45;:::i;13714:267::-;13844:42;13837:50;;;13785;;;13781:107;;13900:52;;13897:78;;;13955:18;;:::i;14408:348::-;14595:42;14587:6;14583:55;14572:9;14565:74;14675:2;14670;14659:9;14655:18;14648:30;14546:4;14695:55;14746:2;14735:9;14731:18;14723:6;14695:55;:::i;14761:128::-;14828:9;;;14849:11;;;14846:37;;;14863:18;;:::i;14894:184::-;14946:77;14943:1;14936:88;15043:4;15040:1;15033:15;15067:4;15064:1;15057:15;15083:458;15162:6;15215:2;15203:9;15194:7;15190:23;15186:32;15183:52;;;15231:1;15228;15221:12;15183:52;15264:9;15258:16;15297:18;15289:6;15286:30;15283:50;;;15329:1;15326;15319:12;15283:50;15352:22;;15405:4;15397:13;;15393:27;-1:-1:-1;15383:55:262;;15434:1;15431;15424:12;15383:55;15457:78;15527:7;15522:2;15516:9;15511:2;15507;15503:11;15457:78;:::i;15546:992::-;15640:6;15693:2;15681:9;15672:7;15668:23;15664:32;15661:52;;;15709:1;15706;15699:12;15661:52;15742:9;15736:16;15775:18;15767:6;15764:30;15761:50;;;15807:1;15804;15797:12;15761:50;15830:22;;15886:4;15868:16;;;15864:27;15861:47;;;15904:1;15901;15894:12;15861:47;15930:17;;:::i;:::-;15978:2;15972:9;16006:18;15996:8;15993:32;15990:52;;;16038:1;16035;16028:12;15990:52;16065:56;16113:7;16102:8;16098:2;16094:17;16065:56;:::i;:::-;16058:5;16051:71;;16161:2;16157;16153:11;16147:18;16190;16180:8;16177:32;16174:52;;;16222:1;16219;16212:12;16174:52;16258:56;16306:7;16295:8;16291:2;16287:17;16258:56;:::i;:::-;16253:2;16246:5;16242:14;16235:80;;16354:2;16350;16346:11;16340:18;16383;16373:8;16370:32;16367:52;;;16415:1;16412;16405:12;16367:52;16451:56;16499:7;16488:8;16484:2;16480:17;16451:56;:::i;:::-;16446:2;16435:14;;16428:80;-1:-1:-1;16439:5:262;15546:992;-1:-1:-1;;;;15546:992:262:o;16543:346::-;16747:42;16735:55;;;16717:74;;16827:55;;16822:2;16807:18;;16800:83;16705:2;16690:18;;16543:346::o;16894:277::-;16961:6;17014:2;17002:9;16993:7;16989:23;16985:32;16982:52;;;17030:1;17027;17020:12;16982:52;17062:9;17056:16;17115:5;17108:13;17101:21;17094:5;17091:32;17081:60;;17137:1;17134;17127:12;17176:212;17218:3;17256:5;17250:12;17300:6;17293:4;17286:5;17282:16;17277:3;17271:36;17362:1;17326:16;;17351:13;;;-1:-1:-1;17326:16:262;;17176:212;-1:-1:-1;17176:212:262:o;17393:1257::-;18251:12;18246:3;18239:25;18221:3;18283:39;18318:2;18313:3;18309:12;18301:6;18283:39;:::i;:::-;18342:5;18338:2;18331:17;18367:37;18401:1;18397:2;18393:10;18385:6;18367:37;:::i;:::-;18357:47;;18424:3;18420:2;18413:15;18447:37;18481:1;18477:2;18473:10;18465:6;18447:37;:::i;:::-;18437:47;;18504:5;18500:2;18493:17;18529:37;18563:1;18559:2;18555:10;18547:6;18529:37;:::i;:::-;18519:47;;18586:4;18582:2;18575:16;18607:37;18641:1;18637:2;18633:10;18625:6;18607:37;:::i;18655:327::-;18917:4;18912:3;18905:17;18887:3;18938:38;18973:1;18968:3;18964:11;18956:6;18938:38;:::i;19541:1583::-;19064:34;19052:47;;19129:27;19124:2;19115:12;;19108:49;20518:3;20546:61;19182:2;19173:12;;20564:6;20546:61;:::i;:::-;20627:3;20623:2;20616:15;20650:95;20676:68;20706:37;20740:1;20736:2;20732:10;20724:6;20706:37;:::i;:::-;19273:34;19261:47;;19338:66;19333:2;19324:12;;19317:88;19435:66;19430:2;19421:12;;19414:88;19527:2;19518:12;;19196:340;20676:68;20668:6;20650:95;:::i;:::-;20640:105;;20765:66;20761:2;20754:78;20851:37;20885:1;20881:2;20877:10;20869:6;20851:37;:::i;:::-;20841:47;;20908:12;20904:2;20897:24;20940:38;20974:2;20970;20966:11;20958:6;20940:38;:::i;:::-;20930:48;;20998:66;20994:2;20987:78;21081:37;21115:1;21111:2;21107:10;21099:6;21081:37;:::i;:::-;21074:44;19541:1583;-1:-1:-1;;;;;;;;;19541:1583:262:o;21616:1564::-;22527:12;22522:3;22515:25;22497:3;22559:39;22594:2;22589:3;22585:12;22577:6;22559:39;:::i;:::-;22618:66;22614:2;22607:78;22704:38;22738:2;22734;22730:11;22722:6;22704:38;:::i;:::-;22694:48;;22762:66;22758:2;22751:78;22848:38;22882:2;22878;22874:11;22866:6;22848:38;:::i;:::-;22838:48;;22906:66;22902:2;22895:78;22992:38;23026:2;23022;23018:11;23010:6;22992:38;:::i;:::-;23050:66;23039:78;;21206:66;23171:1;23163:10;;21194:79;21303:34;21289:12;;;21282:56;21368:34;21354:12;;;21347:56;21433:34;21419:12;;;21412:56;21499:34;21484:13;;;21477:57;21565:10;21550:13;;;21543:33;22982:48;-1:-1:-1;21592:13:262;;;23133:41;21129:482;23185:263;23360:3;23385:57;23411:30;23437:3;23429:6;23411:30;:::i;:::-;23403:6;23385:57;:::i;23863:190::-;23992:3;24017:30;24043:3;24035:6;24017:30;:::i;25917:264::-;26045:42;25986:50;;;26038;;;25982:107;;26101:51;;26098:77;;;26155:18;;:::i;26589:1291::-;19064:34;19052:47;;19129:27;19124:2;19115:12;;19108:49;27417:3;27445:61;19182:2;19173:12;;27471:34;18987:204;27445:61;27526:3;27522:2;27515:15;27549:95;27575:68;27605:37;27639:1;27635:2;27631:10;27623:6;27605:37;:::i;27575:68::-;27567:6;27549:95;:::i;:::-;27539:105;;27664:66;27660:2;27653:78;27750:37;27784:1;27780:2;27776:10;27768:6;27750:37;:::i;:::-;27740:47;;27807:12;27803:2;27796:24;27836:38;27870:2;27866;27862:11;27854:6;27836:38;:::i;27885:1856::-;28945:66;28940:3;28933:79;28915:3;29031:38;29066:1;29061:3;29057:11;29049:6;29031:38;:::i;:::-;29089:12;29085:2;29078:24;29121:38;29155:2;29151;29147:11;29139:6;29121:38;:::i;:::-;29111:48;;29179:66;29175:2;29168:78;29265:38;29299:2;29295;29291:11;29283:6;29265:38;:::i;:::-;29255:48;;29323:66;29319:2;29312:78;29409:38;29443:2;29439;29435:11;29427:6;29409:38;:::i;:::-;29399:48;;29467:66;29463:2;29456:78;29553:38;29587:2;29583;29579:11;29571:6;29553:38;:::i;:::-;29611:66;29600:78;;21206:66;29732:1;29724:10;;21194:79;21303:34;21289:12;;;21282:56;21368:34;21354:12;;;21347:56;21433:34;21419:12;;;21412:56;21499:34;21484:13;;;21477:57;21565:10;21550:13;;;21543:33;29543:48;-1:-1:-1;21592:13:262;;;29694:41;21129:482;29746:184;29798:77;29795:1;29788:88;29895:4;29892:1;29885:15;29919:4;29916:1;29909:15;29935:174;29974:1;30008:8;30005:1;30001:16;30036:3;30026:37;;30043:18;;:::i;:::-;30099:3;30088:8;30085:1;30081:16;30077:26;30072:31;;;29935:174;;;;:::o;30114:238::-;30223:8;30198:16;;;30216;;;30194:39;30253:26;;;;30298:24;;;30288:58;;30326:18;;:::i;30855:370::-;31069:3;31054:19;;31082:44;31058:9;31108:6;30448:42;30440:5;30434:12;30430:61;30425:3;30418:74;30553:42;30545:4;30538:5;30534:16;30528:23;30524:72;30517:4;30512:3;30508:14;30501:96;30658:8;30650:4;30643:5;30639:16;30633:23;30629:38;30622:4;30617:3;30613:14;30606:62;30731:4;30724:5;30720:16;30714:23;30711:1;30700:38;30693:4;30688:3;30684:14;30677:62;30800:42;30792:4;30785:5;30781:16;30775:23;30771:72;30764:4;30759:3;30755:14;30748:96;;;30357:493;31082:44;31175:42;31167:6;31163:55;31157:3;31146:9;31142:19;31135:84;30855:370;;;;;:::o;31230:277::-;31298:6;31351:2;31339:9;31330:7;31326:23;31322:32;31319:52;;;31367:1;31364;31357:12;31319:52;31399:9;31393:16;31452:5;31449:1;31438:20;31431:5;31428:31;31418:59;;31473:1;31470;31463:12;31512:299;31687:2;31676:9;31669:21;31650:4;31707:55;31758:2;31747:9;31743:18;31735:6;31707:55;:::i;:::-;31699:63;;31798:6;31793:2;31782:9;31778:18;31771:34;31512:299;;;;;:::o;31816:112::-;31848:1;31874;31864:35;;31879:18;;:::i;:::-;-1:-1:-1;31913:9:262;;31816:112::o;32290:120::-;32330:1;32356;32346:35;;32361:18;;:::i;:::-;-1:-1:-1;32395:9:262;;32290:120::o;32415:168::-;32488:9;;;32519;;32536:15;;;32530:22;;32516:37;32506:71;;32557:18;;:::i;32588:175::-;32625:3;32669:4;32662:5;32658:16;32698:4;32689:7;32686:17;32683:43;;32706:18;;:::i;:::-;32755:1;32742:15;;32588:175;-1:-1:-1;;32588:175:262:o;32768:166::-;32799:1;32833:8;32830:1;32826:16;32861:3;32851:37;;32868:18;;:::i;:::-;32924:3;32913:8;32910:1;32906:16;32902:26;32897:31;;;32768:166;;;;:::o;32939:195::-;32978:3;33009:66;33002:5;32999:77;32996:103;;33079:18;;:::i;:::-;-1:-1:-1;33126:1:262;33115:13;;32939:195::o;33139:151::-;33229:4;33222:12;;;33208;;;33204:31;;33247:14;;33244:40;;;33264:18;;:::i;33295:375::-;33383:1;33401:5;33415:249;33436:1;33426:8;33423:15;33415:249;;;33486:4;33481:3;33477:14;33471:4;33468:24;33465:50;;;33495:18;;:::i;:::-;33545:1;33535:8;33531:16;33528:49;;;33559:16;;;;33528:49;33642:1;33638:16;;;;;33598:15;;33415:249;;;33295:375;;;;;;:::o;33675:1022::-;33724:5;33754:8;33744:80;;-1:-1:-1;33795:1:262;33809:5;;33744:80;33843:4;33833:76;;-1:-1:-1;33880:1:262;33894:5;;33833:76;33925:4;33943:1;33938:59;;;;34011:1;34006:174;;;;33918:262;;33938:59;33968:1;33959:10;;33982:5;;;34006:174;34043:3;34033:8;34030:17;34027:43;;;34050:18;;:::i;:::-;-1:-1:-1;;34106:1:262;34092:16;;34165:5;;33918:262;;34264:2;34254:8;34251:16;34245:3;34239:4;34236:13;34232:36;34226:2;34216:8;34213:16;34208:2;34202:4;34199:12;34195:35;34192:77;34189:203;;;-1:-1:-1;34301:19:262;;;34377:5;;34189:203;34424:102;34459:66;34449:8;34443:4;34424:102;:::i;:::-;34622:6;34554:66;34550:79;34541:7;34538:92;34535:118;;;34633:18;;:::i;:::-;34671:20;;33675:1022;-1:-1:-1;;;33675:1022:262:o;34702:131::-;34762:5;34791:36;34818:8;34812:4;34791:36;:::i;34838:389::-;34876:1;34917;34914;34903:16;34953:1;34950;34939:16;34974:3;34964:37;;34981:18;;:::i;:::-;35102:66;35097:3;35094:75;35025:66;35020:3;35017:75;35013:157;35010:183;;;35173:18;;:::i;:::-;35207:14;;;34838:389;-1:-1:-1;;;34838:389:262:o;35232:403::-;35429:2;35418:9;35411:21;35392:4;35455:55;35506:2;35495:9;35491:18;35483:6;35455:55;:::i;:::-;35558:9;35550:6;35546:22;35541:2;35530:9;35526:18;35519:50;35586:43;35622:6;35614;35586:43;:::i;37978:586::-;38316:2;38305:9;38298:21;38279:4;38342:49;38387:2;38376:9;38372:18;37898:1;37886:14;;37932:6;37925:4;37916:14;;37909:30;37964:2;37955:12;;37821:152;38342:49;38439:9;38431:6;38427:22;38422:2;38411:9;38407:18;38400:50;38467:37;38497:6;37898:1;37886:14;;37932:6;37925:4;37916:14;;37909:30;37964:2;37955:12;;37821:152;38467:37;38459:45;;;38552:4;38544:6;38540:17;38535:2;38524:9;38520:18;38513:45;37978:586;;;;:::o;38569:148::-;38657:4;38636:12;;;38650;;;38632:31;;38675:13;;38672:39;;;38691:18;;:::i;38722:238::-;38759:3;38803:4;38796:5;38792:16;38827:7;38817:41;;38838:18;;:::i;:::-;38887:66;38874:80;;38722:238;-1:-1:-1;;38722:238:262:o;38965:196::-;39004:3;39032:5;39022:39;;39041:18;;:::i;:::-;-1:-1:-1;39088:66:262;39077:78;;38965:196::o;40492:468::-;40707:42;40699:6;40695:55;40684:9;40677:74;40799:42;40791:6;40787:55;40782:2;40771:9;40767:18;40760:83;40879:2;40874;40863:9;40859:18;40852:30;40658:4;40899:55;40950:2;40939:9;40935:18;40927:6;40899:55;:::i;41740:958::-;42109:44;42143:9;42135:6;30448:42;30440:5;30434:12;30430:61;30425:3;30418:74;30553:42;30545:4;30538:5;30534:16;30528:23;30524:72;30517:4;30512:3;30508:14;30501:96;30658:8;30650:4;30643:5;30639:16;30633:23;30629:38;30622:4;30617:3;30613:14;30606:62;30731:4;30724:5;30720:16;30714:23;30711:1;30700:38;30693:4;30688:3;30684:14;30677:62;30800:42;30792:4;30785:5;30781:16;30775:23;30771:72;30764:4;30759:3;30755:14;30748:96;;;30357:493;42109:44;42204:6;42201:1;42190:21;42184:3;42173:9;42169:19;42162:50;42263:6;42260:1;42249:21;42243:3;42232:9;42228:19;42221:50;42308:6;42302:3;42291:9;42287:19;42280:35;42364:34;42356:6;42352:47;42346:3;42335:9;42331:19;42324:76;42449:34;42441:6;42437:47;42431:3;42420:9;42416:19;42409:76;42534:42;42526:6;42522:55;42516:3;42505:9;42501:19;42494:84;42615:3;42609;42598:9;42594:19;42587:32;42090:4;42636:56;42687:3;42676:9;42672:19;42664:6;42636:56;:::i;:::-;42628:64;41740:958;-1:-1:-1;;;;;;;;;;41740:958:262:o;42703:200::-;42769:9;;;42742:4;42797:9;;42825:10;;42837:12;;;42821:29;42860:12;;;42852:21;;42818:56;42815:82;;;42877:18;;:::i;42908:140::-;42966:5;42995:47;43036:4;43026:8;43022:19;43016:4;42995:47;:::i;43314:191::-;43349:3;43380:66;43373:5;43370:77;43367:103;;43450:18;;:::i;:::-;-1:-1:-1;43490:1:262;43486:13;;43314:191::o;43510:982::-;43753:2;43742:9;43735:21;43716:4;43779:55;43830:2;43819:9;43815:18;43807:6;43779:55;:::i;:::-;43882:9;43874:6;43870:22;43865:2;43854:9;43850:18;43843:50;43913:6;43948;43942:13;43979:6;43971;43964:22;44014:2;44006:6;44002:15;43995:22;;44073:2;44063:6;44060:1;44056:14;44048:6;44044:27;44040:36;44111:2;44103:6;44099:15;44132:1;44142:321;44156:6;44153:1;44150:13;44142:321;;;44242:66;44233:6;44225;44221:19;44217:92;44212:3;44205:105;44333:50;44376:6;44367;44361:13;44333:50;:::i;:::-;44418:2;44441:12;;;;44323:60;;-1:-1:-1;44406:15:262;;;;;44178:1;44171:9;44142:321;;;-1:-1:-1;44480:6:262;;43510:982;-1:-1:-1;;;;;;;;43510:982:262:o","linkReferences":{}},"methodIdentifiers":{"DAI()":"e0bab4c4","IS_SCRIPT()":"f8ccbf47","IS_TEST()":"fa7626d4","LIQUIDITY_PARAMS()":"93ad73ed","MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","REMOVE_LIQUIDITY_PARAMS()":"39cd2013","SWAP_PARAMS()":"b1a73b8a","TBTC()":"94068408","USDC()":"89a30271","USDT()":"c54e44eb","WBTC()":"4dede3de","WETH9()":"4aa4a4fc","_WETH9()":"63e8f728","deployAndApprovePosm(address)":"03ef31f6","deployPermit2()":"c9ec1872","deployPosmHookModifyLiquidities()":"cb695390","deployPosmHookSavesDelta()":"67382c05","excludeArtifacts()":"b5508aa9","excludeContracts()":"e20c9f71","excludeSelectors()":"b0464fdc","excludeSenders()":"1ed7831c","failed()":"ba414fa6","nativeCurrencyLabel()":"b7af3cdc","nativeCurrencyLabelBytes()":"a18246e2","positionDescriptor()":"106d0231","run()":"c0406226","setUp()":"0a9254e4","targetArtifactSelectors()":"66d9a9a0","targetArtifacts()":"85226c81","targetContracts()":"3f7286f4","targetInterfaces()":"2ade3880","targetSelectors()":"916a17c6","targetSenders()":"3e5e3c23","test_bytecodeSize_positionDescriptor()":"a12837ed","test_bytecodeSize_proxy()":"6602ca0e","test_currencyRatioPriority_mainnet_succeeds()":"b5d12c4e","test_currencyRatioPriority_notMainnet_succeeds()":"abbd42f1","test_flipRatio_succeeds()":"dd39f19c","test_nativeCurrencyLabel_succeeds()":"f8ce27ef","test_native_tokenURI_succeeds()":"72961883","test_position_descriptor_initcodeHash()":"8173a5d6","test_setup_succeeds()":"4b4b6ca3","test_tokenURI_revertsWithInvalidTokenId()":"307b9084","test_tokenURI_succeeds()":"ea502e52"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"}],\"name\":\"InvalidAddressLength\",\"type\":\"error\"},{\"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\":\"DAI\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_SCRIPT\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REMOVE_LIQUIDITY_PARAMS\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SWAP_PARAMS\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TBTC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USDT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WBTC\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_WETH9\",\"outputs\":[{\"internalType\":\"contract IWETH9\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"poolManager\",\"type\":\"address\"}],\"name\":\"deployAndApprovePosm\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployPermit2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployPosmHookModifyLiquidities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deployPosmHookSavesDelta\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"excludeSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"excludedSelectors_\",\"type\":\"tuple[]\"}],\"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\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeCurrencyLabel\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeCurrencyLabelBytes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"positionDescriptor\",\"outputs\":[{\"internalType\":\"contract IPositionDescriptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"run\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"artifact\",\"type\":\"string\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzArtifactSelector[]\",\"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\":\"targetInterfaces\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"string[]\",\"name\":\"artifacts\",\"type\":\"string[]\"}],\"internalType\":\"struct StdInvariant.FuzzInterface[]\",\"name\":\"targetedInterfaces_\",\"type\":\"tuple[]\"}],\"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\":\"test_bytecodeSize_positionDescriptor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_bytecodeSize_proxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_currencyRatioPriority_mainnet_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_currencyRatioPriority_notMainnet_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_flipRatio_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_nativeCurrencyLabel_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_native_tokenURI_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_position_descriptor_initcodeHash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_setup_succeeds\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_tokenURI_revertsWithInvalidTokenId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test_tokenURI_succeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deployPosmHookModifyLiquidities()\":{\"details\":\"deploys a special test hook where beforeSwap hookData is used to modify liquidity\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/PositionDescriptor.t.sol\":\"PositionDescriptorTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"lib/permit2/test/utils/DeployPermit2.sol\":{\"keccak256\":\"0xcbb39b108ef3ef287c248dfcce1a2bd4a9abde620bb30b2a425baa4824b91f67\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://571709b0816ed2f2094fd053408ab9a65f51c83db40bd5e45f4d4a0d684b6873\",\"dweb:/ipfs/QmddBPGn7mzyftoDkCZiDbM6win6zdVoi15LbCYtUet9uo\"]},\"lib/v4-core/lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/v4-core/lib/forge-std/src/Script.sol\":{\"keccak256\":\"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c\",\"dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e\"]},\"lib/v4-core/lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe\",\"dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b\"]},\"lib/v4-core/lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557\",\"dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG\"]},\"lib/v4-core/lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f\",\"dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj\"]},\"lib/v4-core/lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/v4-core/lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391\",\"dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5\"]},\"lib/v4-core/lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974\",\"dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3\"]},\"lib/v4-core/lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/v4-core/lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57\",\"dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ\"]},\"lib/v4-core/lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/v4-core/lib/forge-std/src/StdToml.sol\":{\"keccak256\":\"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3\",\"dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8\"]},\"lib/v4-core/lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa\",\"dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr\"]},\"lib/v4-core/lib/forge-std/src/Test.sol\":{\"keccak256\":\"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e\",\"dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK\"]},\"lib/v4-core/lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1\",\"dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD\"]},\"lib/v4-core/lib/forge-std/src/console.sol\":{\"keccak256\":\"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57\",\"dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP\"]},\"lib/v4-core/lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d\",\"dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC165.sol\":{\"keccak256\":\"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc\",\"dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC20.sol\":{\"keccak256\":\"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7\",\"dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IERC721.sol\":{\"keccak256\":\"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f\",\"dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm\"]},\"lib/v4-core/lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/v4-core/lib/forge-std/src/mocks/MockERC20.sol\":{\"keccak256\":\"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f\",\"dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw\"]},\"lib/v4-core/lib/forge-std/src/mocks/MockERC721.sol\":{\"keccak256\":\"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87\",\"dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv\"]},\"lib/v4-core/lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab\",\"dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c\",\"dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x371c3467dccfbb2ac03b0edb4fadaacb9ad382772cee7850a3e73f39a56d102c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3574f1cc3ff2cb985a1385949bd3c76888e8dcf59e6a770ccb15c79b145b39bb\",\"dweb:/ipfs/QmXZDrFibUAMqjoRrpKxV3ma5RR9YfJXZyMrLWJ3bix9gi\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0xbc9babed4d136e6cc1e74354aa66538a234f3808645fbe30463b4a7b7d8ca789\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75fd9323b206da2a87924fca2ca996dbd04ae0963f79f66fb8a0ef94bf283a3d\",\"dweb:/ipfs/QmYSoLcvpq8gRo8doLP4nnB43UAT1D3KvfFJRDSD2y4nYu\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Base64.sol\":{\"keccak256\":\"0x09000342b85b1a06fa1f5b71bdeef7c449cd25799aac14fa9053d8abd18219aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a7cdab282a9165b685fa86da3bd331c8e319e5a5c64e16599134e738934a77d4\",\"dweb:/ipfs/QmSLcE5FmDqVQbFDB6MzUzuFi4UhJVUQ1A2rT4aJGhpERT\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"lib/v4-core/lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol\":{\"keccak256\":\"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e\",\"dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu\"]},\"lib/v4-core/lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/v4-core/lib/solmate/src/tokens/WETH.sol\":{\"keccak256\":\"0x343cf5f6b643864c5728fa9bf057c5708052402b22c5662decce94f5febff514\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://dc3722cf992cc13ff0728660432092d8ae6851f500b24c0aa474c45f2e8c3f2d\",\"dweb:/ipfs/QmVq7veVaBKKdm4AKQiuCXMPGHPuCcPksm7LNuA2ihpN9U\"]},\"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72\",\"dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"lib/v4-core/src/test/ActionsRouter.sol\":{\"keccak256\":\"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef\",\"dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR\"]},\"lib/v4-core/src/test/BaseTestHooks.sol\":{\"keccak256\":\"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6\",\"dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE\"]},\"lib/v4-core/src/test/PoolClaimsTest.sol\":{\"keccak256\":\"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887\",\"dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW\"]},\"lib/v4-core/src/test/PoolDonateTest.sol\":{\"keccak256\":\"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb\",\"dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1\",\"dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol\":{\"keccak256\":\"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58\",\"dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey\"]},\"lib/v4-core/src/test/PoolNestedActionsTest.sol\":{\"keccak256\":\"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765\",\"dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx\"]},\"lib/v4-core/src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753\",\"dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j\"]},\"lib/v4-core/src/test/PoolTakeTest.sol\":{\"keccak256\":\"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193\",\"dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a\",\"dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV\"]},\"lib/v4-core/src/test/SwapRouterNoChecks.sol\":{\"keccak256\":\"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e\",\"dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/Constants.sol\":{\"keccak256\":\"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3\",\"dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58\",\"dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP\"]},\"lib/v4-core/test/utils/Deployers.sol\":{\"keccak256\":\"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6\",\"dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J\"]},\"lib/v4-core/test/utils/LiquidityAmounts.sol\":{\"keccak256\":\"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a\",\"dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY\"]},\"lib/v4-core/test/utils/SortTokens.sol\":{\"keccak256\":\"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0\",\"dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD\"]},\"src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"]},\"src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/interfaces/IMsgSender.sol\":{\"keccak256\":\"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189\",\"dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi\"]},\"src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"]},\"src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"]},\"src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]},\"src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"]},\"src/interfaces/IPositionDescriptor.sol\":{\"keccak256\":\"0x5a4327e608b35ba2d3451c267b609336efbd780912080dbb1a21563db25c9768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c783c7a4834d610586ef6caf79806f4e339ad488046766d03fe3d014d11093e4\",\"dweb:/ipfs/QmcQWiNQz1hAcJRwFfw5NnSz6zcgAE5HytdVL8MAQJUrv4\"]},\"src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"]},\"src/interfaces/IStateView.sol\":{\"keccak256\":\"0xe81357a8fd6c0efc8242f40a43a33addcb5ab4db9f78faada408eff839ac8d9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96c3ee2e93be4fcf7e9e35c66d981fcc5c69da34fc979f261a387543dc945dc0\",\"dweb:/ipfs/QmerNPYnmf5oPiKWvFkoFVcidoMHQSVmXZtrot7pgY4HhH\"]},\"src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"]},\"src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"]},\"src/interfaces/IV4Quoter.sol\":{\"keccak256\":\"0x97f4f76c2cb225fbfef8f77f7b87d2084dd51fa54e57b4353d095856cea20711\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebac51d87fa46b9eb903e73f7c21dc423f586e5ab7cebb29d573fa52fb6a7f5c\",\"dweb:/ipfs/QmbdehsxARB87bDN9pgHsnDmhop48QfWHdcHMxhxM1tXrT\"]},\"src/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xe88abf12501ac275619aec0687240a07d26968aecbbcdfea88ba8bbd5d6e5e14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7097065d4492b4eccb1a73f99af1e5bec45404c6b973b8f5965c4c91403f5f92\",\"dweb:/ipfs/QmZK8oEqmjmTqhBoh3D3fBpyKGkUEFnptY8xwH9xpNjDm2\"]},\"src/libraries/ActionConstants.sol\":{\"keccak256\":\"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2\",\"dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7\"]},\"src/libraries/Actions.sol\":{\"keccak256\":\"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98\",\"dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5\"]},\"src/libraries/AddressStringUtil.sol\":{\"keccak256\":\"0x326a801ad5b8750e1ca3189afec0c1c8e214395d3a36bed8e5c28a2a6e8899fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07d44b3c6207bd95081eba2d8a5c5fe828325364c7eabb134b80c87119411015\",\"dweb:/ipfs/QmbJ1tTwonv6YWnigrdAw1HEN5CvheN8jmZ1pjKo6tYSi1\"]},\"src/libraries/CurrencyRatioSortOrder.sol\":{\"keccak256\":\"0x71e32f826ea869bcb0ea96c1768efe1b27ee1d05442fc9ec6fff00a075503151\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5eab1a55a21c5852cce6b71d362956ca4d70b240cb61251860d134036b90453a\",\"dweb:/ipfs/QmfECaWP1fZL7cBHmLymQydukLb2ps64Yto94w8fc9vgLt\"]},\"src/libraries/Descriptor.sol\":{\"keccak256\":\"0x82e9b952463cd6476f1f7d529d6bbad9009013921e44a8e255e6af506243f05a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91aa4892e6deefe61c92056f282c585976dcdf64c346eda4c592ef174749d453\",\"dweb:/ipfs/Qmb4AtsBhUv35NegvJ2oUQxDLJyaeWWZX8ShqBoi8DQ5C1\"]},\"src/libraries/ERC721PermitHash.sol\":{\"keccak256\":\"0xd8024f516738a1f968169875efd4ba803049c933cf6ea5e36189df9915f4e3f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58b45295f87c31f516a727a2a40ba2f34ac57ebd5520c42ea59946d2ffc0f5df\",\"dweb:/ipfs/QmW8xC2xS18r4yhGbhSJTN1DfCgPT6oKHxwwszutn2sPuz\"]},\"src/libraries/HexStrings.sol\":{\"keccak256\":\"0x6e064daba6de925c267eeedae5bd0e612b3c1479f286edf5f0061f2dab731e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e6a4d5483607de91caaae2e2ceb6ea74321729457433e5592ab73039e496431\",\"dweb:/ipfs/QmU9sPJes2AwBB8FD6T9hJp6vemmz6HL7hSBLc3LiLRiup\"]},\"src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"]},\"src/libraries/SVG.sol\":{\"keccak256\":\"0x099dea984818e41bdf7c8edc762135d52e8e80042053df0bac50e65940b7717c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://25b887dc5deaea84a1fa9689b211bb9befafaf8e4e491383fab2cec64c8fcce7\",\"dweb:/ipfs/QmPjaZtZ95WHeSL7tHbsAxb845QCPue9EpMYJKry4BVNxm\"]},\"src/libraries/SafeCurrencyMetadata.sol\":{\"keccak256\":\"0xd49d5623e174ec407b04ef2091694e7844dbe6fc4d9a84b9a179cd46a10c10f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6afa5a09f00944064166ecc4d5c0b8393dc21b424e26c482b110675c7c099b46\",\"dweb:/ipfs/QmSF1EaEDnPoG5xD2CFj45SVXesZZQLkqTd66iXV4Zd2uk\"]},\"test/PositionDescriptor.t.sol\":{\"keccak256\":\"0xda4ed9f3299f3fdcd8bd7a4884b02ae3d0e12fc3a1322137601ab723496db75c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57212a8f9a56b484ed703579bab75107738300363af5cb0f07b64c35e2a4bc2e\",\"dweb:/ipfs/QmS2V1eecBtPyACwS39drBsb1EcBFAdcHjbFbYEtVXYXZW\"]},\"test/base64.sol\":{\"keccak256\":\"0x16f915435eaab32a73ce7d1d8b5605d266afa14eeb553dc9969e73fe7520e6e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9af65f406eb117b86f11a6758a6f2f85276fd713f813bbc6c5fcc7c5fb04e334\",\"dweb:/ipfs/Qme3NyooqBxpziUeh5RTe6hDTRkTFfjGAnqwAqiQ7oai2w\"]},\"test/shared/Deploy.sol\":{\"keccak256\":\"0xaf00ba0d2fdb6674505e5ae12662a3e5607fe64a9d958440c3d81dba929cfadf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d2636e7ccb2d1f227fa97aaeaa7752c1d008be5547750b9ec47500cf811091ce\",\"dweb:/ipfs/QmXNyCcjJjUwzxLPv1QuSYTmVri6LGAVXdZCU1DSvm8R9J\"]},\"test/shared/HookModifyLiquidities.sol\":{\"keccak256\":\"0xb8ea82e68e21f8d1d88583693e17bcded7791c2570cf99c34269d260c79e957f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9c4080aa6cbe2e6d496ce0cb8f837b2c5da039c95f4fcd67996d5320281dfd32\",\"dweb:/ipfs/QmeagGekQThZtAZsoSdLE4LzttEn4tKk62yhpEgcxLLY1Y\"]},\"test/shared/HookSavesDelta.sol\":{\"keccak256\":\"0x3a2c5629e37b0d999ffb27c8f528b1f5877bc4f7fbcc148a5cfa663d1a509eda\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://84d35648d09735095eb62b90f5eefc59f99f4246903d947f97dac68ca991d985\",\"dweb:/ipfs/QmPmnJ2j1Rn9BYKrFSvuBB4y45CJyEYwqzJdYKxancm89Z\"]},\"test/shared/LiquidityOperations.sol\":{\"keccak256\":\"0x096251cfe2acb56b25893366ae766eede53b69aba83f85f982d1ca72cdc42753\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60d12773ef8f7b0befdb8d0348bd562ef839c6e3681e8f357bfe8d24e5923f46\",\"dweb:/ipfs/QmXaT4qoG23TRDJVpdcXiJUWwwSgV5EddyfnL22oA8PbzN\"]},\"test/shared/Planner.sol\":{\"keccak256\":\"0xc2a26375605104a06d9f0b7a0d5e83edd8730a9eab047f6e86f6ed2569adf174\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8a2dddae573fe2f88e742e66192c2e580db2edc23761b5c16bfbb04556430a17\",\"dweb:/ipfs/QmZPLofzBrot14HMnve7LX17KhNNskh7q5FLP2uMRGqbZk\"]},\"test/shared/PositionConfig.sol\":{\"keccak256\":\"0x08990d795c0862c45fc34458310e0f3aaa7629715ca2bcc4df82f3530c08beaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://803f7bff618b759d05103418d52d6363e8f25312effb06eace7168ff24a010f2\",\"dweb:/ipfs/QmcWWnjBvHGZaj9XaAKDwqRot5xzYc1jrwqvRGghe8jMjd\"]},\"test/shared/PosmTestSetup.sol\":{\"keccak256\":\"0x7dab9519c40ce8bad57f3dc2ed53b72c55bc3843296f15230c351f1af1d12591\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3808853e3e657882826470d56b564332e4a6335c53586f6f340ffcbab6c3357e\",\"dweb:/ipfs/QmcqYxTpVbyKGq7SPeLRa8wyRMbGU6xvZuFms9wnfgyFVC\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"len","type":"uint256"}],"type":"error","name":"InvalidAddressLength"},{"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":"DAI","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_SCRIPT","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"IS_TEST","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"REMOVE_LIQUIDITY_PARAMS","outputs":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SWAP_PARAMS","outputs":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TBTC","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"USDC","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"USDT","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WBTC","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"_WETH9","outputs":[{"internalType":"contract IWETH9","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IPoolManager","name":"poolManager","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"deployAndApprovePosm"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deployPermit2","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deployPosmHookModifyLiquidities"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deployPosmHookSavesDelta"},{"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":"excludeSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzSelector[]","name":"excludedSelectors_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"excludeSenders","outputs":[{"internalType":"address[]","name":"excludedSenders_","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"failed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeCurrencyLabel","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nativeCurrencyLabelBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"positionDescriptor","outputs":[{"internalType":"contract IPositionDescriptor","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"run","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"setUp"},{"inputs":[],"stateMutability":"view","type":"function","name":"targetArtifactSelectors","outputs":[{"internalType":"struct StdInvariant.FuzzArtifactSelector[]","name":"targetedArtifactSelectors_","type":"tuple[]","components":[{"internalType":"string","name":"artifact","type":"string"},{"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":"targetInterfaces","outputs":[{"internalType":"struct StdInvariant.FuzzInterface[]","name":"targetedInterfaces_","type":"tuple[]","components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"string[]","name":"artifacts","type":"string[]"}]}]},{"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":"test_bytecodeSize_positionDescriptor"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_bytecodeSize_proxy"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_currencyRatioPriority_mainnet_succeeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_currencyRatioPriority_notMainnet_succeeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_flipRatio_succeeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_nativeCurrencyLabel_succeeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_native_tokenURI_succeeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_position_descriptor_initcodeHash"},{"inputs":[],"stateMutability":"view","type":"function","name":"test_setup_succeeds"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_tokenURI_revertsWithInvalidTokenId"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"test_tokenURI_succeeds"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"deployPosmHookModifyLiquidities()":{"details":"deploys a special test hook where beforeSwap hookData is used to modify liquidity"}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@uniswap/v4-core/=lib/v4-core/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/v4-core/lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"test/PositionDescriptor.t.sol":"PositionDescriptorTest"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"lib/permit2/test/utils/DeployPermit2.sol":{"keccak256":"0xcbb39b108ef3ef287c248dfcce1a2bd4a9abde620bb30b2a425baa4824b91f67","urls":["bzz-raw://571709b0816ed2f2094fd053408ab9a65f51c83db40bd5e45f4d4a0d684b6873","dweb:/ipfs/QmddBPGn7mzyftoDkCZiDbM6win6zdVoi15LbCYtUet9uo"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Base.sol":{"keccak256":"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c","urls":["bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224","dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Script.sol":{"keccak256":"0x2315be74cc2826f9da401bea3da46a10ad6a6efdf73176d79160b453286d0ed2","urls":["bzz-raw://af0d4dc826911d6cb4d6272ed5cbdb6950e1476141cca328e178b808d848789c","dweb:/ipfs/QmV2ytjUEkV84VtdMs1nZqQTBoVE987cHboQMpiha5yo3e"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdAssertions.sol":{"keccak256":"0x4584f551c3a875c26423c1e50a77179bc2f9c9c1ee6d0f0c6be0f89ca5ee8270","urls":["bzz-raw://ef118876a862b60ba8a6612b8b3f3a6c226e11a0071a2e9695f021586d1bfdbe","dweb:/ipfs/QmXd2vD91PkvoFWasFkgbDi89PctmgsHVxGvGNyhjmRK2b"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdChains.sol":{"keccak256":"0x7dd11ac4db798fa196e00a0cfa288ce984acac881f1f34de03fe3187deed58de","urls":["bzz-raw://2c15fb03d5545e2d8d3948661596410edec5ec278a73988914b14a05d0d54557","dweb:/ipfs/QmWGjkLgp4wSrTrFxF8cmhghaXQp5VyXYQvWE1DUTPL4rG"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdCheats.sol":{"keccak256":"0xc28b654cfbcafb8f7688c8dc69134921bb4841c82ddc2e5f27bcf5d8eb2177cf","urls":["bzz-raw://3f1875b52fb32efefdc467d9566bf93d72dad036547ce6955e4f7a318eea9d6f","dweb:/ipfs/QmbgbSX8JajLzTyWcPqrYAcsQcHNuGTFTKdQ3HNTvyRgdj"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdError.sol":{"keccak256":"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77","urls":["bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6","dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdInvariant.sol":{"keccak256":"0x4dab3021edfa9511bbdd80c48f060ef62eaf457f99eaf841f561fc2557d9a08d","urls":["bzz-raw://07668628673174cf8f27f8f4e1f862bab775013ec247eb34f698c5005f229391","dweb:/ipfs/QmPJsiiYwmCZXMsHmQv5tg8VF3CAhNdat7WnKLTWZZH2v5"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdJson.sol":{"keccak256":"0xbc0132abe1c2accc2867c0f03667afffdf92f3e95a581bb03c9557eaa38ea500","urls":["bzz-raw://eb6fab37dc73c219cfbb7b4f4998bcf7677ca5397a867e850f40232192073974","dweb:/ipfs/QmUHsbVdp9SKmgek7ZfPcLTKrpZFXpqaqt4sVejzxGEQL3"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdMath.sol":{"keccak256":"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2","urls":["bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92","dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdStorage.sol":{"keccak256":"0xb91ab24383a5872b894fc93325eef1add6cbbf981628f18e860068bf88bb7dcc","urls":["bzz-raw://2651e33b9ac8fc5803ed0a43078c1bf4fa90a0b0347aafd95776b02daccdcc57","dweb:/ipfs/QmbdRyPuGJdZgnCuMnp7c1WsBo1Spf7j1KMmws1Z5rd4BQ"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdStyle.sol":{"keccak256":"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d","urls":["bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8","dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdToml.sol":{"keccak256":"0x58a72c765ed3f7ff6b105509689658795b8a3739b8931772a497155878381861","urls":["bzz-raw://b4a3746f4fabaeb980bd77d9e091d3904ee38a6c0e191bfa8ba6874c6f8558a3","dweb:/ipfs/QmUfFDMEn461FgGEXt5HicyGD54sc28sLaQ9JRWDMBKed8"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/StdUtils.sol":{"keccak256":"0x4a5853bb9688c4e1c65626036cddd8ea2af84ef1046b704ddc3782d84a892410","urls":["bzz-raw://09c1024e6aac9657312fcfcf5c3dee62c22edf9f74a1065e6924c4ec710ecafa","dweb:/ipfs/QmRNURoTUkd6DiZnf8yY8o3stJpVQBifopdSpQgP9RhvRr"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Test.sol":{"keccak256":"0x3b4bb409a156dee9ce261458117fe9f81080ca844a8a26c07c857c46d155effe","urls":["bzz-raw://5792c69fe24bdc063a14e08fe68275007fdb1e5e7e343840a77938cb7e95a64e","dweb:/ipfs/QmcAMhaurUwzhytJFYix4vRNeZeV8g27b8LnV3t7dvYtiK"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/Vm.sol":{"keccak256":"0x51d822417db259b59eec2dfb7859285cef983a26b5d4fba20e1addabccc8734e","urls":["bzz-raw://0e3b5abe0173ee6e479e4248eb4ee3a4374f7e08fb2848d93f5c2cf5e95214f1","dweb:/ipfs/QmbUBD4NLFCuR6WHVx5unXH2uWHEhtADLcFrUwyev8iLrD"],"license":"MIT OR Apache-2.0"},"lib/v4-core/lib/forge-std/src/console.sol":{"keccak256":"0x4bbf47eb762cef93729d6ef15e78789957147039b113e5d4df48e3d3fd16d0f5","urls":["bzz-raw://af9e3a7c3d82fb5b10b57ca4d1a82f2acbef80c077f6f6ef0cc0187c7bfd9f57","dweb:/ipfs/QmR9VzmnBDJpgiDP6CHT6truehukF9HpYvuP6kRiJbDwPP"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/console2.sol":{"keccak256":"0x3b8fe79f48f065a4e4d35362171304a33784c3a90febae5f2787805a438de12f","urls":["bzz-raw://61de63af08803549299e68b6e6e88d40f3c5afac450e4ee0a228c66a61ba003d","dweb:/ipfs/QmWVoQ5rrVxnczD4ZZoPbD4PC9Z3uExJtzjD4awTqd14MZ"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC165.sol":{"keccak256":"0x414b2861b1acbf816ccb7346d3f16cf6c1e002e9e5e40d2f1f26fa5ddc2ea600","urls":["bzz-raw://698352fb240868ea8f1d1fe389993035eeab930f10d06934f80ccfb2b6ccbfbc","dweb:/ipfs/QmT6WLHAgXxFhh12kWym895oTzXid1326iZiwT3pyfggoT"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC20.sol":{"keccak256":"0x4cab887298790f908c27de107e4e2907ca5413aee482ef776f8d2f353c5ef947","urls":["bzz-raw://bb715e0c4a2bdbe432bb624501506041f06e878e0b72675aebba30ad2c2b72e7","dweb:/ipfs/QmWhhLSvkxS2NrukJJHqFY8gDVE5r9rD4PfHvR24pwdKv9"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IERC721.sol":{"keccak256":"0xf069262a264fdb69f8f37a10d2df7374649e9ba73f8414c9c8a3b51184625f15","urls":["bzz-raw://924a41ca82a68ffbd503a5faf2f76d13e9938f10501a71094716f12bb64b4b7f","dweb:/ipfs/QmdWnqfKc5ZGhmxNPTde4zrFchnv9Yk9MpCMb2rdhXE5gm"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/mocks/MockERC20.sol":{"keccak256":"0xadbdfc6639edec00ba94bb1133a0fd8de31ccafe45c2ef5df9b3ca61b60b559b","urls":["bzz-raw://bc766f01bccf669abac8cc7b2096cc1352a66471ca3772ae61b1801dedc4ed4f","dweb:/ipfs/QmNigaPj1LYkP7Z5xr4ijkUxr2K66fDGeoifG3WoM9ruyw"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/mocks/MockERC721.sol":{"keccak256":"0xbfbb755bb379f58b97699f7cda0e9a2b9113daaa072e41b280a5ce6a3bff44c9","urls":["bzz-raw://5ae0c31d29db14d6a0e9b62d33d550feb307f48a6f45068901a013321f337f87","dweb:/ipfs/QmX25DVXW6XZDvRm6SNBGCWrZQ6oNhdq5CmgtVocvsUdwv"],"license":"MIT"},"lib/v4-core/lib/forge-std/src/safeconsole.sol":{"keccak256":"0xbef9786cb49d3eade757bad87568c49c8c8f35721f0193c95ffb055d9e466e11","urls":["bzz-raw://3bafd2b0b2d28068d329f95ea8a1fbce3719c257fcb863fc01abcbafd8d531ab","dweb:/ipfs/QmUeaFjKWTVDBsHVfSob4mwt6A5hTnKDz22HaUXeZhypa3"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0xbfb6695731de677140fbf76c772ab08c4233a122fb51ac28ac120fc49bbbc4ec","urls":["bzz-raw://68f8fded7cc318efa15874b7c6a983fe17a4a955d72d240353a9a4ca1e1b824c","dweb:/ipfs/QmdcmBL9Qo4Tk3Dby4wFYabGyot9JNeLPxpSXZUgUm92BV"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x371c3467dccfbb2ac03b0edb4fadaacb9ad382772cee7850a3e73f39a56d102c","urls":["bzz-raw://3574f1cc3ff2cb985a1385949bd3c76888e8dcf59e6a770ccb15c79b145b39bb","dweb:/ipfs/QmXZDrFibUAMqjoRrpKxV3ma5RR9YfJXZyMrLWJ3bix9gi"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0xbc9babed4d136e6cc1e74354aa66538a234f3808645fbe30463b4a7b7d8ca789","urls":["bzz-raw://75fd9323b206da2a87924fca2ca996dbd04ae0963f79f66fb8a0ef94bf283a3d","dweb:/ipfs/QmYSoLcvpq8gRo8doLP4nnB43UAT1D3KvfFJRDSD2y4nYu"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Base64.sol":{"keccak256":"0x09000342b85b1a06fa1f5b71bdeef7c449cd25799aac14fa9053d8abd18219aa","urls":["bzz-raw://a7cdab282a9165b685fa86da3bd331c8e319e5a5c64e16599134e738934a77d4","dweb:/ipfs/QmSLcE5FmDqVQbFDB6MzUzuFi4UhJVUQ1A2rT4aJGhpERT"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"lib/v4-core/lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/test/utils/mocks/MockERC20.sol":{"keccak256":"0x525129ccb4103c9ecb8f235618d2ff4a8ffde4b8654f7c17766ad175d10ef466","urls":["bzz-raw://45692a21807ba815c0cf0bfc7d633a14a6cb9ba863ab53f18fc639375a72125e","dweb:/ipfs/QmSrqxyodjDtSU1Dc6G3ScnNc9CFjMnAeHpK8a8guM3nJu"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/tokens/WETH.sol":{"keccak256":"0x343cf5f6b643864c5728fa9bf057c5708052402b22c5662decce94f5febff514","urls":["bzz-raw://dc3722cf992cc13ff0728660432092d8ae6851f500b24c0aa474c45f2e8c3f2d","dweb:/ipfs/QmVq7veVaBKKdm4AKQiuCXMPGHPuCcPksm7LNuA2ihpN9U"],"license":"AGPL-3.0-only"},"lib/v4-core/lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07","urls":["bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72","dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"lib/v4-core/src/test/ActionsRouter.sol":{"keccak256":"0x14dee9e42a1df016ee93959efbff2989c0f5fc3be2583cc7f220e8c99bc1ca52","urls":["bzz-raw://cede28a88b18e6506407d4f35787fb2891a6023a363b15beb5c3af3d57ceaeef","dweb:/ipfs/QmbwcWHBnD9615BPSpPZ7hTuCCXG9BWHdHQS67KRtfrEqR"],"license":"UNLICENSED"},"lib/v4-core/src/test/BaseTestHooks.sol":{"keccak256":"0x8bb1b533b9df117bc4c85ef9d4c2afa7758771581a752e0a2a69dcae1041e546","urls":["bzz-raw://eebf2728b8bda26bfd0e8c9726950f9cad3f2b8ffa5951117f2c2a9534e37ba6","dweb:/ipfs/QmPCbUDp3e3sF5EPfte4v3VEF9Lhz8db6jLhZQJxXDvBSE"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolClaimsTest.sol":{"keccak256":"0x12833a6562b06737ebb1b08a8a8ef233314f0b9e03129cff3550d9fd4c184986","urls":["bzz-raw://09d31189420ccd828f8e529782c9e1e31b0ce3f07f59efb6db5a8848395e7887","dweb:/ipfs/Qmb4rosxr2DLxUAH6qUDfqVbj1CfnzrDwxfLLjpneMSwRW"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolDonateTest.sol":{"keccak256":"0x5e517fea38336bb86419f7280d5f80b26fe8cab9eac1cf400e27f87562d3d105","urls":["bzz-raw://5528c6a97eefbb94607d1a2aa07b1ec6f9c9b955b5f4a123ee88beabf6a03deb","dweb:/ipfs/QmYfcaX1vkzjb1s389Rj7VsvCttB5wdarP17vyHWiejbqq"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4a3ca2a5ed763efa34d9dfa8b90cafcff6b42a0903c6f20815c1a51e785b3af3","urls":["bzz-raw://e47a2fe202e60b0a58fd01acf1d3d021266903f81965302b60cace8a4c7d37d1","dweb:/ipfs/QmcYmtXwL1F45tFLP2DA5KbU9icmcvj5rJCEkpMHJcwGrK"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolModifyLiquidityTestNoChecks.sol":{"keccak256":"0xf3c98e8674634ccbc96a8a234631c888e5915b1f26531acbe0540e145063f093","urls":["bzz-raw://e26d6ea447b8ff4d07fa4999dca110a7c6a3443793c6c451ff81951a5a2beb58","dweb:/ipfs/QmZf2wixTDBwSzGgPeAQWAY1jZpFXcMLLfBxUnCuKSKXey"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolNestedActionsTest.sol":{"keccak256":"0xa57a52caf5227e13bf2e4592a3dabf30839d78b6c1a14e7e074dd214f101355e","urls":["bzz-raw://4e2aba8b16522cee958cc4b214ab9fc88b8929d7f4d67fec8e514f80eea5a765","dweb:/ipfs/QmSqA2QY1pSvD7NXjWwpNKnh41yT9kVWVBM5KnddaCytVx"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolSwapTest.sol":{"keccak256":"0x3d769a76b948910a1a2321435e8d19156ff767ad3ddbd5abe4fa60d1e9b11ac0","urls":["bzz-raw://4bb4ca24457237b3af7a8023f19d667d20a60066cbf911b728968f34b6055753","dweb:/ipfs/QmXVNWTHDcVbQrf6Y82j9whpWyYmgWvBJqYZ3Vp8to3H6j"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTakeTest.sol":{"keccak256":"0xcdc76eb93c349a5f5c30abff0438d5599427ac6f6892e0abf8d0346c46244368","urls":["bzz-raw://5d005b6672e38d7c673677be08e041e32670a4a64bd3b92dc07e29d1609c5193","dweb:/ipfs/QmZVqyEz1BgYNmyAPooef5c77yjj4A2e9ooWfrJ2SducJ2"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0xc3b1c46487231f8416d053652cfb3c773d728705a6a1a542ea48e8d1cca44962","urls":["bzz-raw://c2229b5915fcf17c58253b81cd4bbff62f7fbc6df8c370188c771fc40febf15a","dweb:/ipfs/QmRu2Qb341KpA9k9prYH8buJek6vZiE7bxnyC9UkjVGBxV"],"license":"UNLICENSED"},"lib/v4-core/src/test/SwapRouterNoChecks.sol":{"keccak256":"0xc335bd807d977008a679c6fc5964542544324ef4c243a33c15c81fa38270e575","urls":["bzz-raw://72d9c5ed82e70c0e669ff8e9e357ae59826e73e3d96cd11c401c605f0f1c4d0e","dweb:/ipfs/Qmdrb1MCzw9GhxXado6nQrUBxVbDqNB7D3f7mRTAVQY5f5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/Constants.sol":{"keccak256":"0x19c8d60baec46e1d43fa26f852718d4955154e844be14971e0597a63c22a9d43","urls":["bzz-raw://9bebdabeab512f3ca999c856641e3fa0d7b86082a01cf826f8647e188e0b35d3","dweb:/ipfs/QmWLFXaTz4Wejd3ZHcyTMDEW8mqUzCfQahQxuVtryxM5Na"],"license":"UNLICENSED"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0x2569dc02a637111de76e8e8c65f27510e7608273c19652fe6d31d76c983c19b6","urls":["bzz-raw://e9fbc9085e011e7208505c8ff7d402e4dba13b5105b25a24eac85b4a5921de58","dweb:/ipfs/QmPyBSC5JvZrePDjdt2AiNt3EEUXgxX1orvTX1JZidz9PP"],"license":"MIT"},"lib/v4-core/test/utils/Deployers.sol":{"keccak256":"0x7565b26ec3a14fb6cb312d99a5642a64f8ccb435a0471963b900f56d54f736a7","urls":["bzz-raw://ca989e1dccd6a1fc823cde3143ecb94b36c1f8351f582b5e56dfe5c14ce67ad6","dweb:/ipfs/QmWP7xRGYBrTwkWcGz2xwEnCE3eUMo3BwpyKjnvY4WUK6J"],"license":"UNLICENSED"},"lib/v4-core/test/utils/LiquidityAmounts.sol":{"keccak256":"0x3ec40b1ddf34a1b33fe3934a2f1e4f66dbcf4378a4c672d0d6ce845ccf8bcae2","urls":["bzz-raw://6fc4a4688f272d4b55c1d0440ee5ebdc951e5299ff23ae79a4b52cc83e978b8a","dweb:/ipfs/QmYJogZFeyaVeSFbYLCMdwEZtL8sWB8Ndx5AuepWdHsHGY"],"license":"UNLICENSED"},"lib/v4-core/test/utils/SortTokens.sol":{"keccak256":"0xdc74b25e20e04e5e4f3cf0bda4c81f70fac35562a74a47df56ef650fc7e3c844","urls":["bzz-raw://324616a6154688bc9bd2d07777592df5a1fbdcc32acaa66bc7b0daa07f14e3f0","dweb:/ipfs/QmPK8dG1LDkm67Qn89h51ExwEfsVJEcs33dL8dSDeZ4ChD"],"license":"UNLICENSED"},"src/interfaces/IEIP712_v4.sol":{"keccak256":"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408","urls":["bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736","dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR"],"license":"MIT"},"src/interfaces/IERC721Permit_v4.sol":{"keccak256":"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017","urls":["bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d","dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk"],"license":"MIT"},"src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"src/interfaces/IMsgSender.sol":{"keccak256":"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3","urls":["bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189","dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi"],"license":"MIT"},"src/interfaces/IMulticall_v4.sol":{"keccak256":"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08","urls":["bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7","dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ"],"license":"MIT"},"src/interfaces/INotifier.sol":{"keccak256":"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e","urls":["bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746","dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV"],"license":"MIT"},"src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"},"src/interfaces/IPoolInitializer_v4.sol":{"keccak256":"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98","urls":["bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92","dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ"],"license":"MIT"},"src/interfaces/IPositionDescriptor.sol":{"keccak256":"0x5a4327e608b35ba2d3451c267b609336efbd780912080dbb1a21563db25c9768","urls":["bzz-raw://c783c7a4834d610586ef6caf79806f4e339ad488046766d03fe3d014d11093e4","dweb:/ipfs/QmcQWiNQz1hAcJRwFfw5NnSz6zcgAE5HytdVL8MAQJUrv4"],"license":"MIT"},"src/interfaces/IPositionManager.sol":{"keccak256":"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e","urls":["bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834","dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc"],"license":"MIT"},"src/interfaces/IStateView.sol":{"keccak256":"0xe81357a8fd6c0efc8242f40a43a33addcb5ab4db9f78faada408eff839ac8d9d","urls":["bzz-raw://96c3ee2e93be4fcf7e9e35c66d981fcc5c69da34fc979f261a387543dc945dc0","dweb:/ipfs/QmerNPYnmf5oPiKWvFkoFVcidoMHQSVmXZtrot7pgY4HhH"],"license":"MIT"},"src/interfaces/ISubscriber.sol":{"keccak256":"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7","urls":["bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051","dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw"],"license":"MIT"},"src/interfaces/IUnorderedNonce.sol":{"keccak256":"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3","urls":["bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d","dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i"],"license":"MIT"},"src/interfaces/IV4Quoter.sol":{"keccak256":"0x97f4f76c2cb225fbfef8f77f7b87d2084dd51fa54e57b4353d095856cea20711","urls":["bzz-raw://ebac51d87fa46b9eb903e73f7c21dc423f586e5ab7cebb29d573fa52fb6a7f5c","dweb:/ipfs/QmbdehsxARB87bDN9pgHsnDmhop48QfWHdcHMxhxM1tXrT"],"license":"MIT"},"src/interfaces/external/IWETH9.sol":{"keccak256":"0xe88abf12501ac275619aec0687240a07d26968aecbbcdfea88ba8bbd5d6e5e14","urls":["bzz-raw://7097065d4492b4eccb1a73f99af1e5bec45404c6b973b8f5965c4c91403f5f92","dweb:/ipfs/QmZK8oEqmjmTqhBoh3D3fBpyKGkUEFnptY8xwH9xpNjDm2"],"license":"MIT"},"src/libraries/ActionConstants.sol":{"keccak256":"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3","urls":["bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2","dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7"],"license":"MIT"},"src/libraries/Actions.sol":{"keccak256":"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830","urls":["bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98","dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5"],"license":"MIT"},"src/libraries/AddressStringUtil.sol":{"keccak256":"0x326a801ad5b8750e1ca3189afec0c1c8e214395d3a36bed8e5c28a2a6e8899fa","urls":["bzz-raw://07d44b3c6207bd95081eba2d8a5c5fe828325364c7eabb134b80c87119411015","dweb:/ipfs/QmbJ1tTwonv6YWnigrdAw1HEN5CvheN8jmZ1pjKo6tYSi1"],"license":"MIT"},"src/libraries/CurrencyRatioSortOrder.sol":{"keccak256":"0x71e32f826ea869bcb0ea96c1768efe1b27ee1d05442fc9ec6fff00a075503151","urls":["bzz-raw://5eab1a55a21c5852cce6b71d362956ca4d70b240cb61251860d134036b90453a","dweb:/ipfs/QmfECaWP1fZL7cBHmLymQydukLb2ps64Yto94w8fc9vgLt"],"license":"MIT"},"src/libraries/Descriptor.sol":{"keccak256":"0x82e9b952463cd6476f1f7d529d6bbad9009013921e44a8e255e6af506243f05a","urls":["bzz-raw://91aa4892e6deefe61c92056f282c585976dcdf64c346eda4c592ef174749d453","dweb:/ipfs/Qmb4AtsBhUv35NegvJ2oUQxDLJyaeWWZX8ShqBoi8DQ5C1"],"license":"MIT"},"src/libraries/ERC721PermitHash.sol":{"keccak256":"0xd8024f516738a1f968169875efd4ba803049c933cf6ea5e36189df9915f4e3f2","urls":["bzz-raw://58b45295f87c31f516a727a2a40ba2f34ac57ebd5520c42ea59946d2ffc0f5df","dweb:/ipfs/QmW8xC2xS18r4yhGbhSJTN1DfCgPT6oKHxwwszutn2sPuz"],"license":"MIT"},"src/libraries/HexStrings.sol":{"keccak256":"0x6e064daba6de925c267eeedae5bd0e612b3c1479f286edf5f0061f2dab731e70","urls":["bzz-raw://9e6a4d5483607de91caaae2e2ceb6ea74321729457433e5592ab73039e496431","dweb:/ipfs/QmU9sPJes2AwBB8FD6T9hJp6vemmz6HL7hSBLc3LiLRiup"],"license":"MIT"},"src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"src/libraries/PositionInfoLibrary.sol":{"keccak256":"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078","urls":["bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6","dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx"],"license":"MIT"},"src/libraries/SVG.sol":{"keccak256":"0x099dea984818e41bdf7c8edc762135d52e8e80042053df0bac50e65940b7717c","urls":["bzz-raw://25b887dc5deaea84a1fa9689b211bb9befafaf8e4e491383fab2cec64c8fcce7","dweb:/ipfs/QmPjaZtZ95WHeSL7tHbsAxb845QCPue9EpMYJKry4BVNxm"],"license":"MIT"},"src/libraries/SafeCurrencyMetadata.sol":{"keccak256":"0xd49d5623e174ec407b04ef2091694e7844dbe6fc4d9a84b9a179cd46a10c10f7","urls":["bzz-raw://6afa5a09f00944064166ecc4d5c0b8393dc21b424e26c482b110675c7c099b46","dweb:/ipfs/QmSF1EaEDnPoG5xD2CFj45SVXesZZQLkqTd66iXV4Zd2uk"],"license":"MIT"},"test/PositionDescriptor.t.sol":{"keccak256":"0xda4ed9f3299f3fdcd8bd7a4884b02ae3d0e12fc3a1322137601ab723496db75c","urls":["bzz-raw://57212a8f9a56b484ed703579bab75107738300363af5cb0f07b64c35e2a4bc2e","dweb:/ipfs/QmS2V1eecBtPyACwS39drBsb1EcBFAdcHjbFbYEtVXYXZW"],"license":"MIT"},"test/base64.sol":{"keccak256":"0x16f915435eaab32a73ce7d1d8b5605d266afa14eeb553dc9969e73fe7520e6e1","urls":["bzz-raw://9af65f406eb117b86f11a6758a6f2f85276fd713f813bbc6c5fcc7c5fb04e334","dweb:/ipfs/Qme3NyooqBxpziUeh5RTe6hDTRkTFfjGAnqwAqiQ7oai2w"],"license":"MIT"},"test/shared/Deploy.sol":{"keccak256":"0xaf00ba0d2fdb6674505e5ae12662a3e5607fe64a9d958440c3d81dba929cfadf","urls":["bzz-raw://d2636e7ccb2d1f227fa97aaeaa7752c1d008be5547750b9ec47500cf811091ce","dweb:/ipfs/QmXNyCcjJjUwzxLPv1QuSYTmVri6LGAVXdZCU1DSvm8R9J"],"license":"MIT"},"test/shared/HookModifyLiquidities.sol":{"keccak256":"0xb8ea82e68e21f8d1d88583693e17bcded7791c2570cf99c34269d260c79e957f","urls":["bzz-raw://9c4080aa6cbe2e6d496ce0cb8f837b2c5da039c95f4fcd67996d5320281dfd32","dweb:/ipfs/QmeagGekQThZtAZsoSdLE4LzttEn4tKk62yhpEgcxLLY1Y"],"license":"UNLICENSED"},"test/shared/HookSavesDelta.sol":{"keccak256":"0x3a2c5629e37b0d999ffb27c8f528b1f5877bc4f7fbcc148a5cfa663d1a509eda","urls":["bzz-raw://84d35648d09735095eb62b90f5eefc59f99f4246903d947f97dac68ca991d985","dweb:/ipfs/QmPmnJ2j1Rn9BYKrFSvuBB4y45CJyEYwqzJdYKxancm89Z"],"license":"UNLICENSED"},"test/shared/LiquidityOperations.sol":{"keccak256":"0x096251cfe2acb56b25893366ae766eede53b69aba83f85f982d1ca72cdc42753","urls":["bzz-raw://60d12773ef8f7b0befdb8d0348bd562ef839c6e3681e8f357bfe8d24e5923f46","dweb:/ipfs/QmXaT4qoG23TRDJVpdcXiJUWwwSgV5EddyfnL22oA8PbzN"],"license":"MIT"},"test/shared/Planner.sol":{"keccak256":"0xc2a26375605104a06d9f0b7a0d5e83edd8730a9eab047f6e86f6ed2569adf174","urls":["bzz-raw://8a2dddae573fe2f88e742e66192c2e580db2edc23761b5c16bfbb04556430a17","dweb:/ipfs/QmZPLofzBrot14HMnve7LX17KhNNskh7q5FLP2uMRGqbZk"],"license":"UNLICENSED"},"test/shared/PositionConfig.sol":{"keccak256":"0x08990d795c0862c45fc34458310e0f3aaa7629715ca2bcc4df82f3530c08beaa","urls":["bzz-raw://803f7bff618b759d05103418d52d6363e8f25312effb06eace7168ff24a010f2","dweb:/ipfs/QmcWWnjBvHGZaj9XaAKDwqRot5xzYc1jrwqvRGghe8jMjd"],"license":"MIT"},"test/shared/PosmTestSetup.sol":{"keccak256":"0x7dab9519c40ce8bad57f3dc2ed53b72c55bc3843296f15230c351f1af1d12591","urls":["bzz-raw://3808853e3e657882826470d56b564332e4a6335c53586f6f340ffcbab6c3357e","dweb:/ipfs/QmcqYxTpVbyKGq7SPeLRa8wyRMbGU6xvZuFms9wnfgyFVC"],"license":"MIT"}},"version":1},"id":195}