@settlemint/solidity-token-erc20-crowdsale
Version:
Smart contract set to build an ERC20 token sale in SettleMint
1 lines • 205 kB
JSON
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"VAULT_CONTROLLER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"crowdSale","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrowdSale"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"priceFeed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract MockAggregatorV3"}],"stateMutability":"view"},{"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":"testBuyTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBuyTokensRevertWithoutWhitelist","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testBuyTokensWhilePaused","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testCrowdsaleParameters","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testExternalBuyTokens","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testExternalBuyTokensRevertWithoutAdmin","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testFallback","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testInitialization","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testMockAggregator","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testPause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testReceive","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testSupportsInterface","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testTokensAvailable","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"testUnpause","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"testWithoutFeed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ExampleToken"}],"stateMutability":"view"},{"type":"function","name":"usdRate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"vestingEndDate","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"vestingVault","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract VestingVault"}],"stateMutability":"view"},{"type":"function","name":"wallet","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address payable"}],"stateMutability":"view"},{"type":"function","name":"whitelisted","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234608d57600160ff19600c541617600c55600160ff19601f541617601f5561012360018060a01b0319602354161760235560646024556301e133804201804211607957602555602680546001600160a01b03199081166001179091556027805490911660021790556179ad90816100928239f35b634e487b7160e01b5f52601160045260245ffd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c9081630a9254e414612f27575080631d0dfb5814612d275780631ed7831c14612ca95780631f64aacc14612bde5780632ade3880146129ea5780633d4001e4146124f35780633d9287fa146124cc5780633db5a524146124ae5780633e5e3c23146124305780633f7286f4146123b25780633fdbf5c2146121a057806351d213a11461201f578063521eb27314611ff857806366d9a9a014611ebb5780636c1d3fa014611be8578063704e2b2d14611bad578063741bef1a14611b865780637770bd1514611b5c57806379b37a8614611b3e57806385226c8114611ab457806385c95e8c1461177a578063896e293b146116655780638a46bf6d146114ae578063916a17c6146114045780639bf3559714611273578063a109f39a14611070578063a5917baf14611049578063a81e0fd314610cfe578063b0464fdc14610c54578063b5508aa914610bca578063b80975741461089f578063ba414fa61461087a578063c1f17f9414610637578063e1175a7e146102c0578063e20c9f7114610232578063f851a4401461020b578063fa7626d4146101e85763fc0c546a146101c0575f80fd5b346101e557806003193601126101e55760206001600160a01b03815416604051908152f35b80fd5b50346101e557806003193601126101e557602060ff601f54166040519015158152f35b50346101e557806003193601126101e55760206001600160a01b0360265416604051908152f35b50346101e557806003193601126101e55760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b8181106102a15761029d8561029181870382613779565b6040519182918261356f565b0390f35b82546001600160a01b031684526020909301926001928301920161027a565b50346101e557806003193601126101e557806001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fc88a5e6d0000000000000000000000000000000000000000000000000000000082526004820152671bc16d674ec800006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57610622575b506001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d5761060d575b506001600160a01b03601f5460081c166001600160a01b0360275416813b1561060957670de0b6b3a7640000916024849260405194859384927fec8ac4d800000000000000000000000000000000000000000000000000000000845260048401525af1801561056d576105f4575b506001600160a01b03601f5460081c166040517fc2507ac1000000000000000000000000000000000000000000000000000000008152670de0b6b3a76400006004820152602081602481855afa80156105e9576105b4575b506020600491604051928380927f6681b9fd0000000000000000000000000000000000000000000000000000000082525afa90811561056d57829161057b575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152670de0b6b3a764000060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561056d5761055c5750f35b8161056691613779565b6101e55780f35b6040513d84823e3d90fd5b50fd5b9150506020813d6020116105ac575b8161059760209383613779565b810103126105a8578190515f6104dd565b5f80fd5b3d915061058a565b91506020823d6020116105e1575b816105cf60209383613779565b810103126105a857829150602061049d565b3d91506105c2565b6040513d85823e3d90fd5b816105fe91613779565b6101e557805f610445565b5050fd5b8161061791613779565b6101e557805f6103d7565b8161062c91613779565b6101e557805f61035b565b50346101e557806003193601126101e557806001600160a01b0360265416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57610865575b506001600160a01b03601f5460081c166001600160a01b0360265416813b156106095782916044839260405194859384927f5f1c37660000000000000000000000000000000000000000000000000000000084526004840152683635c9adc5dea0000060248401525af1801561056d57610850575b50506001600160a01b03601f5460081c16604051907f6681b9fd000000000000000000000000000000000000000000000000000000008252602082600481845afa9182156105e957839261081b575b50906020602492604051938480927f82d5d7ac000000000000000000000000000000000000000000000000000000008252683635c9adc5dea0000060048301525afa9081156105e95783916107e5575b6107e29250613e7e565b80f35b90506020823d602011610813575b8161080060209383613779565b810103126105a8576107e29151906107d8565b3d91506107f3565b91506020823d602011610848575b8161083660209383613779565b810103126105a8579051906020610788565b3d9150610829565b8161085a91613779565b6101e557805f610739565b8161086f91613779565b6101e557805f6106c4565b50346101e557806003193601126101e5576020610895613c30565b6040519015158152f35b50346101e557806003193601126101e557806001600160a01b0360265416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57610bb5575b506001600160a01b03601f5460081c16803b15610578578180916004604051809481937f8456cb590000000000000000000000000000000000000000000000000000000083525af1801561056d57610ba0575b506001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fc88a5e6d0000000000000000000000000000000000000000000000000000000082526004820152670de0b6b3a76400006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57610b8b575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101e557806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57610b76575b506001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57610b61575b506001600160a01b03601f5460081c166001600160a01b0360275416813b1561060957670de0b6b3a7640000916024849260405194859384927fec8ac4d800000000000000000000000000000000000000000000000000000000845260048401525af1801561056d5761055c5750f35b81610b6b91613779565b6101e557805f610af1565b81610b8091613779565b6101e557805f610a75565b81610b9591613779565b6101e557805f610a09565b81610baa91613779565b6101e557805f61097f565b81610bbf91613779565b6101e557805f61092c565b50346101e557806003193601126101e557601954610be7816137f1565b91610bf56040519384613779565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310610c37576040518061029d8782613649565b600160208192610c4685613809565b815201920192019190610c22565b50346101e557806003193601126101e557601c54610c71816137f1565b91610c7f6040519384613779565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310610cc1576040518061029d87826136c6565b60026020600192604051610cd48161375d565b6001600160a01b038654168152610cec85870161395d565b83820152815201920192019190610cac565b50346101e557806003193601126101e5576001600160a01b036023541631816001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561103057604051907fc88a5e6d0000000000000000000000000000000000000000000000000000000082526004820152671bc16d674ec800006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57611034575b506001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561103057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d5761101b575b50808080670de0b6b3a76400006001600160a01b03601f5460081c165af1610e48613c01565b50610e8b604091825190610e5c8483613779565b601c82527f526563656976652066756e6374696f6e2063616c6c206661696c6564000000006020830152613ef4565b602460206001600160a01b03601f5460081c168351928380927fc2507ac1000000000000000000000000000000000000000000000000000000008252670de0b6b3a764000060048301525afa908115611011578491610fdf575b506001600160a01b03602054169160206001600160a01b036021541660248351809681937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa908115610fd657508490610fa2575b610f4c9250613e7e565b6001600160a01b036023541631670de0b6b3a76400008201809211610f7557906107e291613e7e565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b506020823d602011610fce575b81610fbc60209383613779565b810103126105a857610f4c9151610f42565b3d9150610faf565b513d86823e3d90fd5b90506020813d602011611009575b81610ffa60209383613779565b810103126105a857515f610ee5565b3d9150610fed565b82513d86823e3d90fd5b8161102591613779565b61103057815f610e22565b5080fd5b8161103e91613779565b61103057815f610da6565b50346101e557806003193601126101e55760206001600160a01b0360215416604051908152f35b50346101e557806003193601126101e557806001600160a01b03601f5460081c166040517f521eb273000000000000000000000000000000000000000000000000000000008152602081600481855afa80156105e9576110e6918491611254575b506001600160a01b0380602354169116613d85565b604051907ffc0c546a000000000000000000000000000000000000000000000000000000008252602082600481845afa9081156105e9576111416020926004948691611227575b506001600160a01b03808554169116613d85565b604051928380927f6681b9fd0000000000000000000000000000000000000000000000000000000082525afa90811561056d5782916111f2575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201528160248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561056d5761055c5750f35b9150506020813d60201161121f575b8161120e60209383613779565b810103126105a8578190515f61117b565b3d9150611201565b6112479150843d861161124d575b61123f8183613779565b8101906137d2565b5f61112d565b503d611235565b61126d915060203d60201161124d5761123f8183613779565b5f6110d1565b50346101e557806003193601126101e557806001600160a01b0360265416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d576113ef575b506001600160a01b03601f5460081c16803b15610578578180916004604051809481937f8456cb590000000000000000000000000000000000000000000000000000000083525af1801561056d576113da575b5050600460206001600160a01b03601f5460081c16604051928380927f5c975abb0000000000000000000000000000000000000000000000000000000082525afa801561056d576107e29183916113ab575b50613d09565b6113cd915060203d6020116113d3575b6113c58183613779565b8101906137ba565b5f6113a5565b503d6113bb565b816113e491613779565b6101e557805f611353565b816113f991613779565b6101e557805f611300565b50346101e557806003193601126101e557601d54611421816137f1565b9161142f6040519384613779565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310611471576040518061029d87826136c6565b600260206001926040516114848161375d565b6001600160a01b03865416815261149c85870161395d565b8382015281520192019201919061145c565b50346101e557806003193601126101e5576001600160a01b036023541631816001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561103057604051907fc88a5e6d0000000000000000000000000000000000000000000000000000000082526004820152671bc16d674ec800006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57611650575b506001600160a01b0360275416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561103057604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d5761163b575b50808080670de0b6b3a76400006001600160a01b03601f5460081c165af16115f8613c01565b50610e8b60409182519061160c8483613779565b601d82527f46616c6c6261636b2066756e6374696f6e2063616c6c206661696c65640000006020830152613ef4565b8161164591613779565b61103057815f6115d2565b8161165a91613779565b61103057815f611556565b50346101e557806003193601126101e55780600460206001600160a01b03601f5460081c16604051928380927f60659a920000000000000000000000000000000000000000000000000000000082525afa90811561056d578291611745575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907f98296c5400000000000000000000000000000000000000000000000000000000825269d3c21bcecceda1000000600483015260248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561056d5761055c5750f35b9150506020813d602011611772575b8161176160209383613779565b810103126105a8578190515f6116c4565b3d9150611754565b50346101e557806003193601126101e557806001600160a01b0360265416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57611a9f575b506001600160a01b03601f5460081c16803b15610578578180916004604051809481937f8456cb590000000000000000000000000000000000000000000000000000000083525af1801561056d57611a8a575b5050600460206001600160a01b03601f5460081c16604051928380927f5c975abb0000000000000000000000000000000000000000000000000000000082525afa801561056d576118b19183916113ab5750613d09565b806001600160a01b0360265416737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fca669fa70000000000000000000000000000000000000000000000000000000082526004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57611a75575b506001600160a01b03601f5460081c16803b15610578578180916004604051809481937f3f4ba83a0000000000000000000000000000000000000000000000000000000083525af1801561056d57611a60575b50600460206001600160a01b03601f5460081c16604051928380927f5c975abb0000000000000000000000000000000000000000000000000000000082525afa90811561056d578291611a41575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907fa5982885000000000000000000000000000000000000000000000000000000008252151560048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561056d5761055c5750f35b611a5a915060203d6020116113d3576113c58183613779565b5f6119ce565b81611a6a91613779565b6101e557805f611980565b81611a7f91613779565b6101e557805f61192d565b81611a9491613779565b6101e557805f61185a565b81611aa991613779565b6101e557805f611807565b50346101e557806003193601126101e557601a54611ad1816137f1565b91611adf6040519384613779565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310611b21576040518061029d8782613649565b600160208192611b3085613809565b815201920192019190611b0c565b50346101e557806003193601126101e5576020602454604051908152f35b50346101e557806003193601126101e55760206001600160a01b03601f5460081c16604051908152f35b50346101e557806003193601126101e55760206001600160a01b0360225416604051908152f35b50346101e557806003193601126101e55760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b50346101e557806003193601126101e5576001600160a01b0360205416906001600160a01b03602354166024546025546001600160a01b036021541691604051936114cd968786019786891067ffffffffffffffff8a1117611e8e579260c09592879592899a956164ab8839898652602086015260408501526060840152608083015260a082015203019082f08015611e81576001600160a01b03166040517fc2507ac100000000000000000000000000000000000000000000000000000000815260016004820152602081602481855afa9081156105e9578391611e4c575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561060957604051907f98296c5400000000000000000000000000000000000000000000000000000000825260048201526103e860248201528281604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156105e9578391611e37575b50506020602491604051928380927f82d5d7ac000000000000000000000000000000000000000000000000000000008252600a60048301525afa90811561056d578291611e02575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561057857604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152606460248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561056d5761055c5750f35b9150506020813d602011611e2f575b81611e1e60209383613779565b810103126105a8578190515f611d8a565b3d9150611e11565b81611e4191613779565b61057857815f611d42565b9250506020823d602011611e79575b81611e6860209383613779565b810103126105a8578291515f611cc8565b3d9150611e5b565b50604051903d90823e3d90fd5b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b50346101e557806003193601126101e557601b54611ed8816137f1565b611ee56040519182613779565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310611fbd57868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210611f5257505050500390f35b91936020611fad827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083611f9d83516040845260408401906135b1565b92015190848184039101526135f4565b9601920192018594939192611f43565b60026020600192604051611fd08161375d565b611fd986613809565b8152611fe685870161395d565b83820152815201920192019190611f15565b50346101e557806003193601126101e55760206001600160a01b0360235416604051908152f35b50346101e557806003193601126101e557737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101e557806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d5761218b575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101e557806040517fca669fa7000000000000000000000000000000000000000000000000000000008152600480820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57612176575b506001600160a01b03601f5460081c16803b15610578578180916044604051809481937f5f1c3766000000000000000000000000000000000000000000000000000000008352600480840152683635c9adc5dea0000060248401525af1801561056d5761055c5750f35b8161218091613779565b6101e557805f61210c565b8161219591613779565b6101e557805f61209a565b50346101e557806003193601126101e557737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101e557806040517fc88a5e6d00000000000000000000000000000000000000000000000000000000815260036004820152670de0b6b3a76400006024820152818160448183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d5761239d575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101e557806040517ff4844814000000000000000000000000000000000000000000000000000000008152818160048183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57612388575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156101e557806040517fca669fa700000000000000000000000000000000000000000000000000000000815260036004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561056d57612373575b506001600160a01b03601f5460081c16803b156105785781670de0b6b3a7640000916024604051809481937fec8ac4d8000000000000000000000000000000000000000000000000000000008352600360048401525af1801561056d5761055c5750f35b8161237d91613779565b6101e557805f61230f565b8161239291613779565b6101e557805f61229c565b816123a791613779565b6101e557805f612230565b50346101e557806003193601126101e55760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b8181106124115761029d8561029181870382613779565b82546001600160a01b03168452602090930192600192830192016123fa565b50346101e557806003193601126101e55760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b81811061248f5761029d8561029181870382613779565b82546001600160a01b0316845260209093019260019283019201612478565b50346101e557806003193601126101e5576020602554604051908152f35b50346101e557806003193601126101e55760206001600160a01b0360275416604051908152f35b50346101e557806003193601126101e5576001600160a01b0360225416816040517f313ce567000000000000000000000000000000000000000000000000000000008152602081600481865afa90811561056d5782916129ae575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156110305760ff604051917f98296c54000000000000000000000000000000000000000000000000000000008352166004820152600860248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561056d57612999575b5050604051907f7284e4160000000000000000000000000000000000000000000000000000000082528282600481845afa9182156105e957839261291f575b50826040928351906126188583613779565b600f82527f4d6f636b2041676772656761746f7200000000000000000000000000000000006020830152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156128495761269f83916126b1875194859384937ff320d9630000000000000000000000000000000000000000000000000000000085528a600486015260448501906135b1565b906003198483030160248501526135b1565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561291557612900575b505081517f54fd4d50000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156128f35784916128c0575b5060249161272260a092613e07565b8351928380927f9a6fc8f5000000000000000000000000000000000000000000000000000000008252600160048301525afa91821561284057838091819082938395849761284d575b5069ffffffffffffffffffff6127819116613e07565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612849578051917ffe74f05b0000000000000000000000000000000000000000000000000000000083526004830152642e90edd00060248301528282604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156128405750612823575b509261281d6107e29361281869ffffffffffffffffffff94613e07565b613e07565b16613e07565b8161283091959395613779565b61283c5791835f6127fb565b8380fd5b513d84823e3d90fd5b8280fd5b955050945050505060a0813d60a0116128b8575b8161286e60a09383613779565b810103126128495761287f81613946565b9083602082015193808301519061278169ffffffffffffffffffff6128ab608060608801519701613946565b969793959697915061276b565b3d9150612861565b90506020813d6020116128eb575b816128db60209383613779565b810103126105a857516024612713565b3d91506128ce565b50505051903d90823e3d90fd5b8161290a91613779565b61284957825f6126d5565b84513d84823e3d90fd5b909150823d8082843e6129328184613779565b8201916020818403126110305780519067ffffffffffffffff8211612849570182601f820112156110305780516129688161390c565b936129766040519586613779565b81855260208284010111612849578060208093018386015e83010152905f612606565b816129a391613779565b61103057815f6125c7565b90506020813d6020116129e2575b816129c960209383613779565b81010312611030575160ff81168103611030575f61254e565b3d91506129bc565b50346101e557806003193601126101e557601e54612a07816137f1565b612a146040519182613779565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b838310612b555786858760405192839260208401906020855251809152604084019160408260051b8601019392815b838310612a805786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0908692949603018352855190602060408201926001600160a01b0381511683520151916040602083015282518091526060820190602060608260051b850101940192855b828110612b0c57505050505060208060019297019301930190928695949293612a73565b9091929394602080612b48837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0876001960301895289516135b1565b9701950193929101612ae8565b604051612b618161375d565b6001600160a01b038354168152600183018054612b7d816137f1565b91612b8b6040519384613779565b8183528a526020808b20908b9084015b838210612bc1575050505060019282602092836002950152815201920192019190612a44565b600160208192612bd086613809565b815201930191019091612b9b565b50346101e557806003193601126101e5576001600160a01b03601f5460081c16604051907ffc0c546a000000000000000000000000000000000000000000000000000000008252602082600481845afa9081156105e957612c58602092600494869161122757506001600160a01b03808554169116613d85565b604051928380927f521eb2730000000000000000000000000000000000000000000000000000000082525afa801561056d576107e291839161125457506001600160a01b0380602354169116613d85565b50346101e557806003193601126101e55760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110612d085761029d8561029181870382613779565b82546001600160a01b0316845260209093019260019283019201612cf1565b50346101e557806003193601126101e5576001600160a01b03601f5460081c16604051907f01ffc9a70000000000000000000000000000000000000000000000000000000082527f1b6036c8000000000000000000000000000000000000000000000000000000006004830152602082602481845afa9081156105e957612db96020926024948691612f105750613d09565b604051928380927f01ffc9a70000000000000000000000000000000000000000000000000000000082527f5c975abb0000000000000000000000000000000000000000000000000000000060048301525afa801561056d57612e219183916113ab5750613d09565b602460206001600160a01b03815416604051928380927f01ffc9a70000000000000000000000000000000000000000000000000000000082527f01ffc9a70000000000000000000000000000000000000000000000000000000060048301525afa801561056d57612e989183916113ab5750613d09565b602460206001600160a01b0360215416604051928380927f01ffc9a70000000000000000000000000000000000000000000000000000000082527f01ffc9a70000000000000000000000000000000000000000000000000000000060048301525afa801561056d576107e29183916113ab5750613d09565b6113cd9150843d86116113d3576113c58183613779565b9050346105a8575f6003193601126105a8576103ff80820182811067ffffffffffffffff821117613542578291613f7f833903905ff080156134e8576001600160a01b03167fffffffffffffffffffffffff000000000000000000000000000000000000000060225416176022556040516111208082019082821067ffffffffffffffff8311176135425761010091839161437e833960808152600a60808201527f5465737420546f6b656e0000000000000000000000000000000000000000000060a082015260c06020820152600360c08201527f54544b000000000000000000000000000000000000000000000000000000000060e082015269d3c21bcecceda100000060408201523060608201520301905ff080156134e8576001600160a01b0316807fffffffffffffffffffffffff000000000000000000000000000000000000000060205416176020556040519061100d80830183811067ffffffffffffffff82111761354257602092849261549e843981520301905ff080156134e8576001600160a01b0316807fffffffffffffffffffffffff000000000000000000000000000000000000000060215416176021556001600160a01b03602254166001600160a01b03602054166001600160a01b03602354169060245493602554604051956114cd948588019488861067ffffffffffffffff8711176135425760c09789976164ab89398652602086015260408501526060840152608083015260a08201520301905ff080156134e8577fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff00601f549260081b1691161780601f5560206001600160a01b03604481835416935f60405195869485937fa9059cbb00000000000000000000000000000000000000000000000000000000855260081c16600484015269d3c21bcecceda100000060248401525af180156134e857613525575b506001600160a01b03601f5460081c166040517fa217fddf000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156134e8575f916134f3575b506001600160a01b0360265416823b156105a8576040517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b03166024820152905f908290604490829084905af180156134e8576134d5575b50806001600160a01b03601f5460081c166040517f7a3226ec000000000000000000000000000000000000000000000000000000008152602081600481855afa9081156105e95783916134a0575b506001600160a01b0360275416823b1561349b576040517f2f2ff15d00000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b031660248201529082908290604490829084905af1801561056d57613486575b506001600160a01b0360225416803b156105785781809160a4604051809481937f4005e68100000000000000000000000000000000000000000000000000000000835260016004840152642e90edd0006024840152426044840152426064840152600160848401525af1801561056d57613471575b506001600160a01b03602154166001600160a01b03601f5460081c16813b156106095782916044839260405194859384927f2f2ff15d0000000000000000000000000000000000000000000000000000000084527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd9600485015260248401525af1801561056d5761055c5750f35b8161347b91613779565b6101e557805f6133e3565b8161349091613779565b6101e557805f61336e565b505050fd5b9250506020823d6020116134cd575b816134bc60209383613779565b810103126105a8578291515f613305565b3d91506134af565b6134e191505f90613779565b5f5f6132b7565b6040513d5f823e3d90fd5b90506020813d60201161351d575b8161350e60209383613779565b810103126105a857515f61324e565b3d9150613501565b61353d9060203d6020116113d3576113c58183613779565b613201565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60206040818301928281528451809452019201905f5b8181106135925750505090565b82516001600160a01b0316845260209384019390920191600101613585565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106136115750505090565b82517fffffffff0000000000000000000000000000000000000000000000000000000016845260209384019390920191600101613604565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061367b57505050505090565b90919293946020806136b7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516135b1565b9701930193019193929061366c565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106136f857505050505090565b909192939460208061374e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b516001600160a01b038151168452015191818582015201906135f4565b970193019301919392906136e9565b6040810190811067ffffffffffffffff82111761354257604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761354257604052565b908160209103126105a8575180151581036105a85790565b908160209103126105a857516001600160a01b03811681036105a85790565b67ffffffffffffffff81116135425760051b60200190565b90604051915f8154908160011c9260018316928315613902575b6020851084146138d55784875286939081156138955750600114613851575b5061384f92500383613779565b565b90505f9291925260205f20905f915b81831061387957505090602061384f928201015f613842565b6020919350806001915483858901015201910190918492613860565b6020935061384f9592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f613842565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693613823565b67ffffffffffffffff811161354257601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b519069ffffffffffffffffffff821682036105a857565b90604051918281549182825260208201905f5260205f20925f905b806007830110613b745761384f945491818110613b3e575b818110613b08575b818110613ad2575b818110613a9c575b818110613a66575b818110613a30575b8181106139fb575b106139ce575b500383613779565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f6139c6565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b1681520193016139c0565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016139b8565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016139b0565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016139a8565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016139a0565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b168152019301613998565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301613990565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e0820152019401920185929391613978565b3d15613c2b573d90613c128261390c565b91613c206040519384613779565b82523d5f602084013e565b606090565b60085460ff168015613c3f5790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa9081156134e8575f91613cd7575b50151590565b90506020813d602011613d01575b81613cf260209383613779565b810103126105a857515f613cd1565b3d9150613ce5565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105a857604051907f0c9fd581000000000000000000000000000000000000000000000000000000008252151560048201525f81602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156134e857613d7b5750565b5f61384f91613779565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105a8576001600160a01b039081604051937f515361f60000000000000000000000000000000000000000000000000000000085521660048401521660248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156134e857613d7b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105a857604051907f98296c540000000000000000000000000000000000000000000000000000000082526004820152600160248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156134e857613d7b5750565b90737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105a857604051917f98296c54000000000000000000000000000000000000000000000000000000008352600483015260248201525f81604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156134e857613d7b5750565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156105a857613f58915f9160405193849283927fa34edc03000000000000000000000000000000000000000000000000000000008452151560048401526040602484015260448301906135b1565b0381737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa80156134e857613d7b575056fe608080604052346015576103e5908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c908163313ce5671461037d575080634005e681146102d957806354fd4d50146102be5780637284e416146101ed5780637519ab50146101d057806385bb7d69146101b45780638cd221c91461018b5780639a6fc8f514610132578063c22c249914610109578063f21f537d146100ec5763feaf968c14610095575f80fd5b346100e8575f6003193601126100e8576001545f546002546003546004546040805169ffffffffffffffffffff96871681526020810195909552840192909252606083015291909116608082015260a090f35b5f80fd5b346100e8575f6003193601126100e8576020600254604051908152f35b346100e8575f6003193601126100e857602069ffffffffffffffffffff60045416604051908152f35b346100e85760206003193601126100e85761014b610396565b5f546002546003546004546040805169ffffffffffffffffffff96871681526020810195909552840192909252606083015291909116608082015260a090f35b346100e8575f6003193601126100e857602069ffffffffffffffffffff60015416604051908152f35b346100e8575f6003193601126100e85760205f54604051908152f35b346100e8575f6003193601126100e8576020600354604051908152f35b346100e8575f6003193601126100e8576040516040810181811067ffffffffffffffff82111761029157604052600f8152604060208201917f4d6f636b2041676772656761746f72000000000000000000000000000000000083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8351948593602085525180918160208701528686015e5f85828601015201168101030190f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100e8575f6003193601126100e857602060405160018152f35b346100e85760a06003193601126100e8576102f2610396565b6084359069ffffffffffffffffffff82168092036100e85769ffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000060015416176001556024355f556044356002556064356003557fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000060045416176004555f80f35b346100e8575f6003193601126100e85780600860209252f35b6004359069ffffffffffffffffffff821682036100e85756fea2646970667358221220ea1b36adff80c3195909296b8b07d7eb59988f147367eef461d5ad897696e4cf64736f6c634300081b00336080604052346103bb5761112080380380610019816103bf565b9283398101906080818303126103bb5780516001600160401b0381116103bb57826100459183016103e4565b602082015190926001600160401b0382116103bb576100659183016103e4565b604082015160609092015190916001600160a01b038216918290036103bb5783516001600160401b0381116102cc57600354600181811c911680156103b1575b60208210146102ae57601f811161034e575b50602094601f82116001146102eb579481929394955f926102e0575b50508160011b915f199060031b1c1916176003555b82516001600160401b0381116102cc57600454600181811c911680156102c2575b60208210146102ae57601f811161024b575b506020601f82116001146101e857819293945f926101dd575b50508160011b915f199060031b1c1916176004555b61015233610435565b5081156101ca57600254908082018092116101b65760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef915f9360025584845283825260408420818154019055604051908152a3604051610c4190816104bf8239f35b634e487b7160e01b5f52601160045260245ffd5b63ec442f0560e01b5f525f60045260245ffd5b015190505f80610134565b601f1982169060045f52805f20915f5b8181106102335750958360019596971061021b575b505050811b01600455610149565b01515f1960f88460031b161c191690555f808061020d565b9192602060018192868b0151815501940192016101f8565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c810191602084106102a4575b601f0160051c01905b818110610299575061011b565b5f815560010161028c565b9091508190610283565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610109565b634e487b7160e01b5f52604160045260245ffd5b015190505f806100d3565b601f1982169560035f52805f20915f5b8881106103365750836001959697981061031e575b505050811b016003556100e8565b01515f1960f88460031b161c191690555f8080610310565b919260206001819286850151815501940192016102fb565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106103a7575b601f0160051c01905b81811061039c57506100b7565b5f815560010161038f565b9091508190610386565b90607f16906100a5565b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102cc57604052565b81601f820112156103bb578051906001600160401b0382116102cc57610413601f8301601f19166020016103bf565b92828452602083830101116103bb57815f9260208093018386015e8301015290565b6001600160a01b0381165f9081525f5160206111005f395f51905f52602052604090205460ff166104b9576001600160a01b03165f8181525f5160206111005f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f9056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146107d65750806306fdde03146106fc578063095ea7b31461066d57806318160ddd1461065057806323b872dd146104da578063248a9ca3146104a75780632f2ff15d14610469578063313ce5671461044e57806336568abe146103e457806370a08231146103a057806391d148541461034957806395d89b41146101ce578063a217fddf146101b4578063a9059cbb14610183578063d547741f1461013e5763dd62ed3e146100cc575f80fd5b3461013a57604060031936011261013a576100e561089e565b73ffffffffffffffffffffffffffffffffffffffff6101026108c1565b91165f52600160205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060405f2054604051908152f35b5f80fd5b3461013a57604060031936011261013a5761018160043561015d6108c1565b9061017c610177825f526005602052600160405f20015490565b610a06565b610b41565b005b3461013a57604060031936011261013a576101a961019f61089e565b60243590336108e4565b602060405160018152f35b3461013a575f60031936011261013a5760206040515f8152f35b3461013a575f60031936011261013a576040515f600454908160011c6001831692831561033f575b6020821084146103125781855284939081156102d05750600114610274575b5003601f01601f191681019067ffffffffffffffff8211818310176102475761024382918260405282610874565b0390f35b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60045f90815291507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b8183106102b45750508101602001601f19610215565b602091935080600191548385880101520191019091839261029e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660208581019190915291151560051b84019091019150601f199050610215565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b90607f16906101f6565b3461013a57604060031936011261013a576103626108c1565b6004355f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b3461013a57602060031936011261013a5773ffffffffffffffffffffffffffffffffffffffff6103ce61089e565b165f525f602052602060405f2054604051908152f35b3461013a57604060031936011261013a576103fd6108c1565b3373ffffffffffffffffffffffffffffffffffffffff8216036104265761018190600435610b41565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461013a575f60031936011261013a57602060405160128152f35b3461013a57604060031936011261013a576101816004356104886108c1565b906104a2610177825f526005602052600160405f20015490565b610a6d565b3461013a57602060031936011261013a5760206104d26004355f526005602052600160405f20015490565b604051908152f35b3461013a57606060031936011261013a576104f361089e565b6104fb6108c1565b6044359073ffffffffffffffffffffffffffffffffffffffff831692835f52600160205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110610577575b506101a993506108e4565b83811061061c5784156105f05733156105c4576101a9945f52600160205260405f2073ffffffffffffffffffffffffffffffffffff