diff --git a/artifacts/abi/assets/lsp7/GenesisDigitalAsset.json b/artifacts/abi/assets/lsp7/GenesisDigitalAsset.json index 0bcae74..db033a2 100644 --- a/artifacts/abi/assets/lsp7/GenesisDigitalAsset.json +++ b/artifacts/abi/assets/lsp7/GenesisDigitalAsset.json @@ -142,17 +142,33 @@ }, { "inputs": [], - "name": "LSP7CannotSendToSelf", + "name": "LSP7CannotSendWithAddressZero", "type": "error" }, { "inputs": [], - "name": "LSP7CannotSendWithAddressZero", + "name": "LSP7CannotUseAddressZeroAsOperator", "type": "error" }, { - "inputs": [], - "name": "LSP7CannotUseAddressZeroAsOperator", + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7DecreaseAllowanceNotAuthorized", "type": "error" }, { @@ -187,6 +203,27 @@ "name": "LSP7NotifyTokenReceiverIsEOA", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7TokenContractCannotHoldValue", @@ -530,6 +567,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "uint256", "name": "subtractedAmount", @@ -679,6 +721,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "bool", "name": "notify", diff --git a/artifacts/abi/assets/lsp7/MintableDigitalAsset.json b/artifacts/abi/assets/lsp7/MintableDigitalAsset.json index e6f0c28..bbbf497 100644 --- a/artifacts/abi/assets/lsp7/MintableDigitalAsset.json +++ b/artifacts/abi/assets/lsp7/MintableDigitalAsset.json @@ -145,11 +145,6 @@ "name": "LSP7BatchCallFailed", "type": "error" }, - { - "inputs": [], - "name": "LSP7CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP7CannotSendWithAddressZero", @@ -170,6 +165,27 @@ "name": "LSP7CappedSupplyRequired", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7DecreaseAllowanceNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7DecreasedAllowanceBelowZero", @@ -202,6 +218,27 @@ "name": "LSP7NotifyTokenReceiverIsEOA", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7TokenContractCannotHoldValue", @@ -502,6 +539,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "uint256", "name": "subtractedAmount", @@ -653,6 +695,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "bool", "name": "notify", diff --git a/artifacts/abi/assets/lsp8/CollectorIdentifiableDigitalAsset.json b/artifacts/abi/assets/lsp8/CollectorIdentifiableDigitalAsset.json index 5f56bae..b621ba7 100644 --- a/artifacts/abi/assets/lsp8/CollectorIdentifiableDigitalAsset.json +++ b/artifacts/abi/assets/lsp8/CollectorIdentifiableDigitalAsset.json @@ -141,11 +141,6 @@ "name": "LSP8CannotSendToAddressZero", "type": "error" }, - { - "inputs": [], - "name": "LSP8CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP8CannotUseAddressZeroAsOperator", @@ -268,6 +263,27 @@ "name": "LSP8OperatorAlreadyAuthorized", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "LSP8RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [ { @@ -299,6 +315,27 @@ "name": "LSP8TokenOwnerCannotBeOperator", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "LSP8TokenOwnerChanged", + "type": "error" + }, { "inputs": [ { diff --git a/artifacts/abi/assets/lsp8/MintableIdentifiableDigitalAsset.json b/artifacts/abi/assets/lsp8/MintableIdentifiableDigitalAsset.json index 619f820..356a420 100644 --- a/artifacts/abi/assets/lsp8/MintableIdentifiableDigitalAsset.json +++ b/artifacts/abi/assets/lsp8/MintableIdentifiableDigitalAsset.json @@ -103,11 +103,6 @@ "name": "LSP8CannotSendToAddressZero", "type": "error" }, - { - "inputs": [], - "name": "LSP8CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP8CannotUseAddressZeroAsOperator", @@ -230,6 +225,27 @@ "name": "LSP8OperatorAlreadyAuthorized", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "LSP8RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP8TokenContractCannotHoldValue", @@ -266,6 +282,27 @@ "name": "LSP8TokenOwnerCannotBeOperator", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "LSP8TokenOwnerChanged", + "type": "error" + }, { "inputs": [ { diff --git a/artifacts/abi/drops/LSP7DropsDigitalAsset.json b/artifacts/abi/drops/LSP7DropsDigitalAsset.json index 9a8e7e4..43d419a 100644 --- a/artifacts/abi/drops/LSP7DropsDigitalAsset.json +++ b/artifacts/abi/drops/LSP7DropsDigitalAsset.json @@ -225,11 +225,6 @@ "name": "LSP7BatchCallFailed", "type": "error" }, - { - "inputs": [], - "name": "LSP7CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP7CannotSendWithAddressZero", @@ -250,6 +245,27 @@ "name": "LSP7CappedSupplyRequired", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7DecreaseAllowanceNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7DecreasedAllowanceBelowZero", @@ -282,6 +298,27 @@ "name": "LSP7NotifyTokenReceiverIsEOA", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7TokenContractCannotHoldValue", @@ -843,6 +880,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "uint256", "name": "subtractedAmount", @@ -1068,6 +1110,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "bool", "name": "notify", diff --git a/artifacts/abi/drops/LSP7DropsLightAsset.json b/artifacts/abi/drops/LSP7DropsLightAsset.json index 92bc0d3..0c22637 100644 --- a/artifacts/abi/drops/LSP7DropsLightAsset.json +++ b/artifacts/abi/drops/LSP7DropsLightAsset.json @@ -177,11 +177,6 @@ "name": "LSP7BatchCallFailed", "type": "error" }, - { - "inputs": [], - "name": "LSP7CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP7CannotSendWithAddressZero", @@ -202,6 +197,27 @@ "name": "LSP7CappedSupplyRequired", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7DecreaseAllowanceNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7DecreasedAllowanceBelowZero", @@ -234,6 +250,27 @@ "name": "LSP7NotifyTokenReceiverIsEOA", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "LSP7RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP7TokenContractCannotHoldValue", @@ -687,6 +724,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "uint256", "name": "subtractedAmount", @@ -862,6 +904,11 @@ "name": "operator", "type": "address" }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, { "internalType": "bool", "name": "notify", diff --git a/artifacts/abi/drops/LSP8DropsDigitalAsset.json b/artifacts/abi/drops/LSP8DropsDigitalAsset.json index bd3c017..fbe3240 100644 --- a/artifacts/abi/drops/LSP8DropsDigitalAsset.json +++ b/artifacts/abi/drops/LSP8DropsDigitalAsset.json @@ -183,11 +183,6 @@ "name": "LSP8CannotSendToAddressZero", "type": "error" }, - { - "inputs": [], - "name": "LSP8CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP8CannotUseAddressZeroAsOperator", @@ -310,6 +305,27 @@ "name": "LSP8OperatorAlreadyAuthorized", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "LSP8RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP8TokenContractCannotHoldValue", @@ -346,6 +362,27 @@ "name": "LSP8TokenOwnerCannotBeOperator", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "LSP8TokenOwnerChanged", + "type": "error" + }, { "inputs": [], "name": "MintDisallowed", diff --git a/artifacts/abi/drops/LSP8DropsLightAsset.json b/artifacts/abi/drops/LSP8DropsLightAsset.json index 40618fc..23eb94f 100644 --- a/artifacts/abi/drops/LSP8DropsLightAsset.json +++ b/artifacts/abi/drops/LSP8DropsLightAsset.json @@ -135,11 +135,6 @@ "name": "LSP8CannotSendToAddressZero", "type": "error" }, - { - "inputs": [], - "name": "LSP8CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP8CannotUseAddressZeroAsOperator", @@ -262,6 +257,27 @@ "name": "LSP8OperatorAlreadyAuthorized", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "LSP8RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [], "name": "LSP8TokenContractCannotHoldValue", @@ -298,6 +314,27 @@ "name": "LSP8TokenOwnerCannotBeOperator", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "LSP8TokenOwnerChanged", + "type": "error" + }, { "inputs": [ { @@ -378,6 +415,56 @@ "name": "ZeroAmount", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -615,10 +702,53 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, { "stateMutability": "payable", "type": "fallback" }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -743,6 +873,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -848,6 +997,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -924,6 +1097,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "owner", @@ -937,6 +1123,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "renounceOwnership", @@ -972,6 +1177,57 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "service", @@ -998,6 +1254,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1112,6 +1386,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1131,6 +1418,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1150,6 +1456,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1182,6 +1512,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "totalSupply", @@ -1261,6 +1610,29 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/artifacts/abi/page/PageName.json b/artifacts/abi/page/PageName.json index 8fc6c08..635dedd 100644 --- a/artifacts/abi/page/PageName.json +++ b/artifacts/abi/page/PageName.json @@ -120,11 +120,6 @@ "name": "LSP8CannotSendToAddressZero", "type": "error" }, - { - "inputs": [], - "name": "LSP8CannotSendToSelf", - "type": "error" - }, { "inputs": [], "name": "LSP8CannotUseAddressZeroAsOperator", @@ -237,6 +232,27 @@ "name": "LSP8OperatorAlreadyAuthorized", "type": "error" }, + { + "inputs": [ + { + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "LSP8RevokeOperatorNotAuthorized", + "type": "error" + }, { "inputs": [ { @@ -268,6 +284,27 @@ "name": "LSP8TokenOwnerCannotBeOperator", "type": "error" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "LSP8TokenOwnerChanged", + "type": "error" + }, { "inputs": [ { diff --git a/artifacts/bytecode/42/assets/lsp7/DigitalAssetDrop.bin b/artifacts/bytecode/42/assets/lsp7/DigitalAssetDrop.bin index 2b9b974..fc121d9 100644 --- a/artifacts/bytecode/42/assets/lsp7/DigitalAssetDrop.bin +++ b/artifacts/bytecode/42/assets/lsp7/DigitalAssetDrop.bin @@ -1 +1 @@ -0x60a060405234801561001057600080fd5b50604051610c71380380610c7183398101604081905261002f916101ad565b600180556001600160a01b03831661007e5760405162461bcd60e51b815260206004820152600d60248201526c6173736574206973207a65726f60981b60448201526064015b60405180910390fd5b60008290036100be5760405162461bcd60e51b815260206004820152600c60248201526b726f6f74206973207a65726f60a01b6044820152606401610075565b6001600160a01b0381166101045760405162461bcd60e51b815260206004820152600d60248201526c6f776e6572206973207a65726f60981b6044820152606401610075565b6001600160a01b03831660805261011a82600255565b6101238161012b565b5050506101f0565b6000546001600160a01b0382811691161461019557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6001600160a01b038116811461019557600080fd5b6000806000606084860312156101c257600080fd5b83516101cd81610198565b6020850151604086015191945092506101e581610198565b809150509250925092565b608051610a5261021f6000396000818160870152818161024f0152818161034c01526104450152610a526000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639e34070f1161005b5780639e34070f146100e1578063c8edd8ab14610104578063f05c55ac14610117578063f2fde38b1461012a57600080fd5b806338d52e0f14610082578063715018a6146100c65780638da5cb5b146100d0575b600080fd5b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ce61013d565b005b6000546001600160a01b03166100a9565b6100f46100ef366004610874565b610151565b60405190151581526020016100bd565b6100ce6101123660046108a9565b610162565b6100ce61012536600461093d565b6102bb565b6100ce61013836600461093d565b6104ae565b6101456104ff565b61014f6000610554565b565b600061015c826105da565b92915050565b61016a61061b565b6101ca8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051336020820152908101869052879250606001905060405160208183030381529060405261068e565b816001600160a01b0316837f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0268360405161020691815260200190565b60405180910390a3604051633b06cddd60e11b81523060048201526001600160a01b0383811660248301526044820183905260006064830181905260a0608484015260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050506102b460018055565b5050505050565b6102c36104ff565b6102cb61061b565b6001600160a01b03811661031b576040517f1a3b45fd0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024015b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf9190610958565b9050816001600160a01b03167feb44e1b23fad598a86840f12d9ab99216d186e1eeebb5ef8e3b3d152ba7cbc7e826040516103fc91815260200190565b60405180910390a2604051633b06cddd60e11b81523060048201526001600160a01b038381166024830152604482018390526001606483015260a06084830152600060a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b50505050506104ab60018055565b50565b6104b66104ff565b6001600160a01b0381166104f6576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ab81610554565b336105126000546001600160a01b031690565b6001600160a01b03161461014f576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610312565b6000546001600160a01b038281169116146104ab57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6000806105e961010084610987565b905060006105f96101008561099b565b60009283526003602052604090922054600190921b9182169091149392505050565b600260015403610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610312565b6002600155565b6002546106c7576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d0826105da565b1561070b5781816040517f331e2c3f0000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b600082826040516020016107209291906109af565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061076284600254836107ab565b61079c5782826040517f4a0e7b130000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b6107a5836107c1565b50505050565b6000826107b885846107ff565b14949350505050565b60006107cf61010083610987565b905060006107df6101008461099b565b6000928352600360205260409092208054600190931b9092179091555050565b600081815b845181101561083a576108308286838151811061082357610823610a06565b6020026020010151610842565b9150600101610804565b509392505050565b600081831061085e57600082815260208490526040902061086d565b60008381526020839052604090205b9392505050565b60006020828403121561088657600080fd5b5035919050565b80356001600160a01b03811681146108a457600080fd5b919050565b6000806000806000608086880312156108c157600080fd5b853567ffffffffffffffff808211156108d957600080fd5b818801915088601f8301126108ed57600080fd5b8135818111156108fc57600080fd5b8960208260051b850101111561091157600080fd5b60209283019750955050860135925061092c6040870161088d565b949793965091946060013592915050565b60006020828403121561094f57600080fd5b61086d8261088d565b60006020828403121561096a57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261099657610996610971565b500490565b6000826109aa576109aa610971565b500690565b8281526000602060406020840152835180604085015260005b818110156109e4578581018301518582016060015282016109c8565b506000606082860101526060601f19601f830116850101925050509392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212205170871b3f4fb47182fac98a3d78bc337c2fa44ffa21d5e5d358bf0a9c8e9aca64736f6c63430008160033 +0x60a060405234801561001057600080fd5b50604051610c71380380610c7183398101604081905261002f916101ad565b600180556001600160a01b03831661007e5760405162461bcd60e51b815260206004820152600d60248201526c6173736574206973207a65726f60981b60448201526064015b60405180910390fd5b60008290036100be5760405162461bcd60e51b815260206004820152600c60248201526b726f6f74206973207a65726f60a01b6044820152606401610075565b6001600160a01b0381166101045760405162461bcd60e51b815260206004820152600d60248201526c6f776e6572206973207a65726f60981b6044820152606401610075565b6001600160a01b03831660805261011a82600255565b6101238161012b565b5050506101f0565b6000546001600160a01b0382811691161461019557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6001600160a01b038116811461019557600080fd5b6000806000606084860312156101c257600080fd5b83516101cd81610198565b6020850151604086015191945092506101e581610198565b809150509250925092565b608051610a5261021f6000396000818160870152818161024f0152818161034c01526104450152610a526000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639e34070f1161005b5780639e34070f146100e1578063c8edd8ab14610104578063f05c55ac14610117578063f2fde38b1461012a57600080fd5b806338d52e0f14610082578063715018a6146100c65780638da5cb5b146100d0575b600080fd5b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ce61013d565b005b6000546001600160a01b03166100a9565b6100f46100ef366004610874565b610151565b60405190151581526020016100bd565b6100ce6101123660046108a9565b610162565b6100ce61012536600461093d565b6102bb565b6100ce61013836600461093d565b6104ae565b6101456104ff565b61014f6000610554565b565b600061015c826105da565b92915050565b61016a61061b565b6101ca8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051336020820152908101869052879250606001905060405160208183030381529060405261068e565b816001600160a01b0316837f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0268360405161020691815260200190565b60405180910390a3604051633b06cddd60e11b81523060048201526001600160a01b0383811660248301526044820183905260006064830181905260a0608484015260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050506102b460018055565b5050505050565b6102c36104ff565b6102cb61061b565b6001600160a01b03811661031b576040517f1a3b45fd0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024015b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf9190610958565b9050816001600160a01b03167feb44e1b23fad598a86840f12d9ab99216d186e1eeebb5ef8e3b3d152ba7cbc7e826040516103fc91815260200190565b60405180910390a2604051633b06cddd60e11b81523060048201526001600160a01b038381166024830152604482018390526001606483015260a06084830152600060a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b50505050506104ab60018055565b50565b6104b66104ff565b6001600160a01b0381166104f6576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ab81610554565b336105126000546001600160a01b031690565b6001600160a01b03161461014f576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610312565b6000546001600160a01b038281169116146104ab57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6000806105e961010084610987565b905060006105f96101008561099b565b60009283526003602052604090922054600190921b9182169091149392505050565b600260015403610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610312565b6002600155565b6002546106c7576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d0826105da565b1561070b5781816040517f331e2c3f0000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b600082826040516020016107209291906109af565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061076284600254836107ab565b61079c5782826040517f4a0e7b130000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b6107a5836107c1565b50505050565b6000826107b885846107ff565b14949350505050565b60006107cf61010083610987565b905060006107df6101008461099b565b6000928352600360205260409092208054600190931b9092179091555050565b600081815b845181101561083a576108308286838151811061082357610823610a06565b6020026020010151610842565b9150600101610804565b509392505050565b600081831061085e57600082815260208490526040902061086d565b60008381526020839052604090205b9392505050565b60006020828403121561088657600080fd5b5035919050565b80356001600160a01b03811681146108a457600080fd5b919050565b6000806000806000608086880312156108c157600080fd5b853567ffffffffffffffff808211156108d957600080fd5b818801915088601f8301126108ed57600080fd5b8135818111156108fc57600080fd5b8960208260051b850101111561091157600080fd5b60209283019750955050860135925061092c6040870161088d565b949793965091946060013592915050565b60006020828403121561094f57600080fd5b61086d8261088d565b60006020828403121561096a57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261099657610996610971565b500490565b6000826109aa576109aa610971565b500690565b8281526000602060406020840152835180604085015260005b818110156109e4578581018301518582016060015282016109c8565b506000606082860101526060601f19601f830116850101925050509392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220b4f3b1e27611ed7ad5887b686c22d8693c479c81c1c47bd55fc8c73d82ff444264736f6c63430008160033 diff --git a/artifacts/bytecode/42/assets/lsp7/MintableDigitalAsset.bin b/artifacts/bytecode/42/assets/lsp7/MintableDigitalAsset.bin index 441591b..f67f1a3 100644 --- a/artifacts/bytecode/42/assets/lsp7/MintableDigitalAsset.bin +++ b/artifacts/bytecode/42/assets/lsp7/MintableDigitalAsset.bin @@ -1 +1 @@ -0x60a06040523480156200001157600080fd5b5060405162002e8a38038062002e8a833981016040819052620000349162000349565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001b5565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000223565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000223565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000223565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000223565b50506002805460ff19169315159390931790925550505060008990039750620001a596505050505050505760405163acf1d8c560e01b815260040160405180910390fd5b6080525062000594945050505050565b6000546001600160a01b038281169116146200022057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200023d828262000493565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200027091906200055f565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002af57818101518382015260200162000295565b50506000910152565b600082601f830112620002ca57600080fd5b81516001600160401b0380821115620002e757620002e76200027c565b604051601f8301601f19908116603f011681019082821181831017156200031257620003126200027c565b816040528381528660208588010111156200032c57600080fd5b6200033f84602083016020890162000292565b9695505050505050565b60008060008060008060c087890312156200036357600080fd5b86516001600160401b03808211156200037b57600080fd5b620003898a838b01620002b8565b97506020890151915080821115620003a057600080fd5b50620003af89828a01620002b8565b604089015190965090506001600160a01b0381168114620003cf57600080fd5b6060880151608089015191955093508015158114620003ed57600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200041757607f821691505b6020821081036200043857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048e576000816000526020600020601f850160051c81016020861015620004695750805b601f850160051c820191505b818110156200048a5782815560010162000475565b5050505b505050565b81516001600160401b03811115620004af57620004af6200027c565b620004c781620004c0845462000402565b846200043e565b602080601f831160018114620004ff5760008415620004e65750858301515b600019600386901b1c1916600185901b1785556200048a565b600085815260208120601f198616915b8281101562000530578886015182559484019460019091019084016200050f565b50858210156200054f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200058081604085016020870162000292565b601f01601f19169190910160400192915050565b6080516128d3620005b76000396000818161031a01526116e701526128d36000f3fe6080604052600436106101795760003560e01c8063715018a6116100cb5780638da5cb5b1161007f578063d72fc29a11610059578063d72fc29a146104d1578063dedff9c6146104fe578063f2fde38b1461051e576101ed565b80638da5cb5b14610476578063979024211461049e578063b49506fd146104b1576101ed565b8063760d9bba116100b0578063760d9bba146104235780637b204c4e146104435780637f23690c14610463576101ed565b8063715018a6146103ee5780637580d92014610403576101ed565b80634521748e1161012d57806365aeaa951161010757806365aeaa951461036b5780636963d4381461038b57806370a08231146103b8576101ed565b80634521748e146102eb57806352058d8a1461030b57806354f6127f1461033e576101ed565b80632bc1da821161015e5780632bc1da82146102825780632d7667c9146102a4578063313ce567146102c4576101ed565b806301ffc9a71461022e57806318160ddd14610263576101ed565b366101ed57346000036101bb5760405163e5099ee360e01b81526004016101b29060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561021857828260405163e5099ee360e01b81526004016101b2929190611c82565b610222838361053e565b80519350602001915050f35b34801561023a57600080fd5b5061024e610249366004611cb1565b61064d565b60405190151581526020015b60405180910390f35b34801561026f57600080fd5b506003545b60405190815260200161025a565b34801561028e57600080fd5b506102a261029d366004611dbc565b61069a565b005b3480156102b057600080fd5b506102a26102bf366004611ffd565b610743565b3480156102d057600080fd5b506102d961084b565b60405160ff909116815260200161025a565b3480156102f757600080fd5b506102a26103063660046120cf565b610864565b34801561031757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610274565b34801561034a57600080fd5b5061035e610359366004612117565b6108b2565b60405161025a9190612180565b34801561037757600080fd5b50610274610386366004612193565b6108bd565b34801561039757600080fd5b506103ab6103a63660046121c6565b610923565b60405161025a919061223b565b3480156103c457600080fd5b506102746103d336600461229f565b6001600160a01b031660009081526004602052604090205490565b3480156103fa57600080fd5b506102a2610a73565b34801561040f57600080fd5b506102a261041e3660046122ba565b610a87565b34801561042f57600080fd5b506102a261043e366004612322565b610a9b565b34801561044f57600080fd5b506102a261045e366004611dbc565b610b15565b6102a261047136600461238e565b610b6e565b34801561048257600080fd5b506000546040516001600160a01b03909116815260200161025a565b6102a26104ac3660046123d5565b610ba3565b3480156104bd57600080fd5b506102a26104cc366004611dbc565b610c90565b3480156104dd57600080fd5b506104f16104ec36600461229f565b610cb5565b60405161025a919061242f565b34801561050a57600080fd5b506103ab61051936600461247c565b610cd9565b34801561052a57600080fd5b506102a261053936600461229f565b610d84565b606060006105576000356001600160e01b031916610dd8565b5090506001600160a01b0381166105a8576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101b2565b600080826001600160a01b031634878733346040516020016105cd94939291906124b1565b60408051601f19818403018152908290526105e7916124e1565b60006040518083038185875af1925050503d8060008114610624576040519150601f19603f3d011682016040523d82523d6000602084013e610629565b606091505b5091509150811561063e579250610647915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fb3c4928f00000000000000000000000000000000000000000000000000000000148061068b575061068b82610e82565b80610647575061064782610ec0565b60006106a684336108bd565b9050806000036106ed576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101b2565b60006106f98483612513565b9050610709338683600187610efe565b600033828560405160200161072093929190612526565b604051602081830303815290604052905061073b86826110a3565b505050505050565b8451845181141580610756575083518114155b80610762575082518114155b8061076e575081518114155b156107a5576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156108425761083a8782815181106107c5576107c5612557565b60200260200101518783815181106107df576107df612557565b60200260200101518784815181106107f9576107f9612557565b602002602001015187858151811061081357610813612557565b602002602001015187868151811061082d5761082d612557565b6020026020010151610a9b565b6001016107a8565b50505050505050565b60025460009060ff1661085e5750601290565b50600090565b610872338460008585610efe565b81156108ad576000336000836040516020016108909392919061256d565b60405160208183030381529060405290506108ab84826110a3565b505b505050565b6060610647826110ce565b6000826001600160a01b0316826001600160a01b0316036108f757506001600160a01b038116600090815260046020526040902054610647565b506001600160a01b03808216600090815260066020908152604080832093861683529290522054610647565b60608167ffffffffffffffff81111561093e5761093e611cf7565b60405190808252806020026020018201604052801561097157816020015b606081526020019060019003908161095c5790505b50905060005b82811015610a6c576000803086868581811061099557610995612557565b90506020028101906109a79190612598565b6040516109b59291906125e6565b600060405180830381855af49150503d80600081146109f0576040519150601f19603f3d011682016040523d82523d6000602084013e6109f5565b606091505b509150915081610a4457805115610a0f5780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101b2565b80848481518110610a5757610a57612557565b60209081029190910101525050600101610977565b5092915050565b610a7b611170565b610a8560006111c5565b565b610a8f611170565b6108ab8484848461124b565b836001600160a01b0316856001600160a01b031603610ae6576040517fb9afb00000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614610b0157610b01338685611257565b610b0e85858585856112fe565b5050505050565b6000610b2184336108bd565b905082811015610b5d576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610709338683600187610efe565b610b76611170565b3415610b955760405163f36ba73760e01b815260040160405180910390fd5b610b9f82826114b3565b5050565b610bab611170565b3415610bca5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610c05576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610c40576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156108ad57610c88838281518110610c6157610c61612557565b6020026020010151838381518110610c7b57610c7b612557565b60200260200101516114b3565b600101610c43565b610c9e338484600185610efe565b600033838360405160200161089093929190612526565b6001600160a01b0381166000908152600560205260409020606090610647906114bd565b6060815167ffffffffffffffff811115610cf557610cf5611cf7565b604051908082528060200260200182016040528015610d2857816020015b6060815260200190600190039081610d135790505b50905060005b8251811015610d7e57610d59838281518110610d4c57610d4c612557565b60200260200101516110ce565b828281518110610d6b57610d6b612557565b6020908102919091010152600101610d2e565b50919050565b610d8c611170565b6001600160a01b038116610dcc576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd5816111c5565b50565b60008080610e107fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b031986166114ca565b90506000610e1d826110ce565b90508051601414158015610e315750805115155b15610e6a57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101b29190612180565b610e73816125f6565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b00000000000000000000000000000000000000000000000000000000148061064757506106478261153b565b600080610ed36301ffc9a760e01b610dd8565b5090506001600160a01b038116610eed5750600092915050565b610ef78184611589565b9392505050565b6001600160a01b038416610f3e576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603610f89576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038086166000908152600660209081526040808320938816835292905220839055821561102b576001600160a01b0385166000908152600560205260409020610fd99085611627565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d8460405161101e9190612180565b60405180910390a4610b0e565b6001600160a01b038516600090815260056020526040902061104d908561163c565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd4167846040516110949190612180565b60405180910390a45050505050565b610b9f827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611651565b60008181526001602052604090208054606091906110eb90612632565b80601f016020809104026020016040519081016040528092919081815260200182805461111790612632565b80156111645780601f1061113957610100808354040283529160200191611164565b820191906000526020600020905b81548152906001019060200180831161114757829003601f168201915b50505050509050919050565b336111836000546001600160a01b031690565b6001600160a01b031614610a85576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101b2565b6000546001600160a01b03828116911614610dd557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6108ab848484846116e5565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156112d8576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101b2565b6108ab83856112e78585612666565b600060405180602001604052806000815250610efe565b6001600160a01b038516158061131b57506001600160a01b038416155b1561133957604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b038516600090815260046020526040902054808411156113a5576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101b2565b6113b1868686856108ab565b6001600160a01b038616600090815260046020526040812080548692906113d9908490612666565b90915550506001600160a01b03851660009081526004602052604081208054869290611406908490612513565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a687878760405161145e93929190612679565b60405180910390a4611472868686856108ab565b6000338787878660405160200161148d95949392919061269a565b60405160208183030381529060405290506114a8878261175e565b610842868583611789565b610b9f828261187c565b60606000610ef7836119dc565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611533906126d4565b949350505050565b60006001600160e01b031982167f629aa69400000000000000000000000000000000000000000000000000000000148061064757506301ffc9a760e01b6001600160e01b0319831614610647565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611610575060208210155b801561161c5750600081115b979650505050505050565b6000610ef7836001600160a01b038416611a37565b6000610ef7836001600160a01b038416611a86565b61166b6001600160a01b038416631aed5a8560e21b611589565b156108ad57604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061169e90859085906004016126f8565b6000604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ab9190810190612711565b7f00000000000000000000000000000000000000000000000000000000000000008361171060035490565b61171a9190612513565b1115611752576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ab84848484611b79565b610b9f827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611651565b61179a83631aed5a8560e21b611589565b156117ed57604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061169e907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c9085906004016126f8565b816108ad576001600160a01b0383163b1561183f576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016118d5576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161192e576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201611987576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061199f82826127c7565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516119d09190612180565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561116457602002820191906000526020600020905b815481526020019060010190808311611a185750505050509050919050565b6000818152600183016020526040812054611a7e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610647565b506000610647565b60008181526001830160205260408120548015611b6f576000611aaa600183612666565b8554909150600090611abe90600190612666565b9050818114611b23576000866000018281548110611ade57611ade612557565b9060005260206000200154905080876000018481548110611b0157611b01612557565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b3457611b34612887565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610647565b6000915050610647565b6001600160a01b038416611ba057604051630d2d5ec360e41b815260040160405180910390fd5b611bad60008585846108ab565b8260036000828254611bbf9190612513565b90915550506001600160a01b03841660009081526004602052604081208054859290611bec908490612513565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690611c3590889088908890612679565b60405180910390a4611c4a60008585846108ab565b6000336000868685604051602001611c6695949392919061269a565b6040516020818303038152906040529050610b0e858483611789565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611cc357600080fd5b81356001600160e01b031981168114610ef757600080fd5b80356001600160a01b0381168114611cf257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d3657611d36611cf7565b604052919050565b600067ffffffffffffffff821115611d5857611d58611cf7565b50601f01601f191660200190565b600082601f830112611d7757600080fd5b8135611d8a611d8582611d3e565b611d0d565b818152846020838601011115611d9f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611dd157600080fd5b611dda84611cdb565b925060208401359150604084013567ffffffffffffffff811115611dfd57600080fd5b611e0986828701611d66565b9150509250925092565b600067ffffffffffffffff821115611e2d57611e2d611cf7565b5060051b60200190565b600082601f830112611e4857600080fd5b81356020611e58611d8583611e13565b8083825260208201915060208460051b870101935086841115611e7a57600080fd5b602086015b84811015611e9d57611e9081611cdb565b8352918301918301611e7f565b509695505050505050565b600082601f830112611eb957600080fd5b81356020611ec9611d8583611e13565b8083825260208201915060208460051b870101935086841115611eeb57600080fd5b602086015b84811015611e9d5780358352918301918301611ef0565b80358015158114611cf257600080fd5b600082601f830112611f2857600080fd5b81356020611f38611d8583611e13565b8083825260208201915060208460051b870101935086841115611f5a57600080fd5b602086015b84811015611e9d57611f7081611f07565b8352918301918301611f5f565b600082601f830112611f8e57600080fd5b81356020611f9e611d8583611e13565b82815260059290921b84018101918181019086841115611fbd57600080fd5b8286015b84811015611e9d57803567ffffffffffffffff811115611fe15760008081fd5b611fef8986838b0101611d66565b845250918301918301611fc1565b600080600080600060a0868803121561201557600080fd5b853567ffffffffffffffff8082111561202d57600080fd5b61203989838a01611e37565b9650602088013591508082111561204f57600080fd5b61205b89838a01611e37565b9550604088013591508082111561207157600080fd5b61207d89838a01611ea8565b9450606088013591508082111561209357600080fd5b61209f89838a01611f17565b935060808801359150808211156120b557600080fd5b506120c288828901611f7d565b9150509295509295909350565b6000806000606084860312156120e457600080fd5b6120ed84611cdb565b92506120fb60208501611f07565b9150604084013567ffffffffffffffff811115611dfd57600080fd5b60006020828403121561212957600080fd5b5035919050565b60005b8381101561214b578181015183820152602001612133565b50506000910152565b6000815180845261216c816020860160208601612130565b601f01601f19169290920160200192915050565b602081526000610ef76020830184612154565b600080604083850312156121a657600080fd5b6121af83611cdb565b91506121bd60208401611cdb565b90509250929050565b600080602083850312156121d957600080fd5b823567ffffffffffffffff808211156121f157600080fd5b818501915085601f83011261220557600080fd5b81358181111561221457600080fd5b8660208260051b850101111561222957600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561229257603f19888603018452612280858351612154565b94509285019290850190600101612264565b5092979650505050505050565b6000602082840312156122b157600080fd5b610ef782611cdb565b600080600080608085870312156122d057600080fd5b6122d985611cdb565b9350602085013592506122ee60408601611f07565b9150606085013567ffffffffffffffff81111561230a57600080fd5b61231687828801611d66565b91505092959194509250565b600080600080600060a0868803121561233a57600080fd5b61234386611cdb565b945061235160208701611cdb565b93506040860135925061236660608701611f07565b9150608086013567ffffffffffffffff81111561238257600080fd5b6120c288828901611d66565b600080604083850312156123a157600080fd5b82359150602083013567ffffffffffffffff8111156123bf57600080fd5b6123cb85828601611d66565b9150509250929050565b600080604083850312156123e857600080fd5b823567ffffffffffffffff8082111561240057600080fd5b61240c86838701611ea8565b9350602085013591508082111561242257600080fd5b506123cb85828601611f7d565b6020808252825182820181905260009190848201906040850190845b818110156124705783516001600160a01b03168352928401929184019160010161244b565b50909695505050505050565b60006020828403121561248e57600080fd5b813567ffffffffffffffff8111156124a557600080fd5b61153384828501611ea8565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516124f3818460208701612130565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610647576106476124fd565b6001600160a01b038416815282602082015260606040820152600061254e6060830184612154565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff8316602082015260606040820152600061254e6060830184612154565b6000808335601e198436030181126125af57600080fd5b83018035915067ffffffffffffffff8211156125ca57600080fd5b6020019150368190038213156125df57600080fd5b9250929050565b8183823760009101908152919050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561262a5780818460140360031b1b83161693505b505050919050565b600181811c9082168061264657607f821691505b602082108103610d7e57634e487b7160e01b600052602260045260246000fd5b81810381811115610647576106476124fd565b838152821515602082015260606040820152600061254e6060830184612154565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a0608083015261161c60a0830184612154565b80516020808301519190811015610d7e5760001960209190910360031b1b16919050565b8281526040602082015260006115336040830184612154565b60006020828403121561272357600080fd5b815167ffffffffffffffff81111561273a57600080fd5b8201601f8101841361274b57600080fd5b8051612759611d8582611d3e565b81815285602083850101111561276e57600080fd5b61254e826020830160208601612130565b601f8211156108ad576000816000526020600020601f850160051c810160208610156127a85750805b601f850160051c820191505b8181101561073b578281556001016127b4565b815167ffffffffffffffff8111156127e1576127e1611cf7565b6127f5816127ef8454612632565b8461277f565b602080601f83116001811461282a57600084156128125750858301515b600019600386901b1c1916600185901b17855561073b565b600085815260208120601f198616915b828110156128595788860151825594840194600190910190840161283a565b50858210156128775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfea26469706673582212203ca104494e149cd43672777eb85c14972cf6de18f0c81585f9b9ed57ef8d524364736f6c63430008160033 +0x60a06040523480156200001157600080fd5b5060405162002f8038038062002f80833981016040819052620000349162000349565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001b5565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000223565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000223565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000223565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000223565b50506002805460ff19169315159390931790925550505060008990039750620001a596505050505050505760405163acf1d8c560e01b815260040160405180910390fd5b6080525062000594945050505050565b6000546001600160a01b038281169116146200022057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200023d828262000493565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200027091906200055f565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002af57818101518382015260200162000295565b50506000910152565b600082601f830112620002ca57600080fd5b81516001600160401b0380821115620002e757620002e76200027c565b604051601f8301601f19908116603f011681019082821181831017156200031257620003126200027c565b816040528381528660208588010111156200032c57600080fd5b6200033f84602083016020890162000292565b9695505050505050565b60008060008060008060c087890312156200036357600080fd5b86516001600160401b03808211156200037b57600080fd5b620003898a838b01620002b8565b97506020890151915080821115620003a057600080fd5b50620003af89828a01620002b8565b604089015190965090506001600160a01b0381168114620003cf57600080fd5b6060880151608089015191955093508015158114620003ed57600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200041757607f821691505b6020821081036200043857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048e576000816000526020600020601f850160051c81016020861015620004695750805b601f850160051c820191505b818110156200048a5782815560010162000475565b5050505b505050565b81516001600160401b03811115620004af57620004af6200027c565b620004c781620004c0845462000402565b846200043e565b602080601f831160018114620004ff5760008415620004e65750858301515b600019600386901b1c1916600185901b1785556200048a565b600085815260208120601f198616915b8281101562000530578886015182559484019460019091019084016200050f565b50858210156200054f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200058081604085016020870162000292565b601f01601f19169190910160400192915050565b6080516129c9620005b76000396000818161031a01526117b401526129c96000f3fe6080604052600436106101795760003560e01c8063715018a6116100cb5780638da5cb5b1161007f578063d72fc29a11610059578063d72fc29a146104d1578063dedff9c6146104fe578063f2fde38b1461051e576101ed565b80638da5cb5b14610476578063979024211461049e578063b49506fd146104b1576101ed565b8063760d9bba116100b0578063760d9bba1461042357806378381670146104435780637f23690c14610463576101ed565b8063715018a6146103ee5780637580d92014610403576101ed565b8063313ce5671161012d57806365aeaa951161010757806365aeaa951461036b5780636963d4381461038b57806370a08231146103b8576101ed565b8063313ce567146102e457806352058d8a1461030b57806354f6127f1461033e576101ed565b80632bc1da821161015e5780632bc1da82146102825780632d7667c9146102a457806330d0dc37146102c4576101ed565b806301ffc9a71461022e57806318160ddd14610263576101ed565b366101ed57346000036101bb5760405163e5099ee360e01b81526004016101b29060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561021857828260405163e5099ee360e01b81526004016101b2929190611d35565b610222838361053e565b80519350602001915050f35b34801561023a57600080fd5b5061024e610249366004611d64565b61064d565b60405190151581526020015b60405180910390f35b34801561026f57600080fd5b506003545b60405190815260200161025a565b34801561028e57600080fd5b506102a261029d366004611e6f565b61069a565b005b3480156102b057600080fd5b506102a26102bf3660046120b0565b610743565b3480156102d057600080fd5b506102a26102df366004612182565b61084b565b3480156102f057600080fd5b506102f961090c565b60405160ff909116815260200161025a565b34801561031757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610274565b34801561034a57600080fd5b5061035e6103593660046121f1565b610925565b60405161025a919061225a565b34801561037757600080fd5b5061027461038636600461226d565b610930565b34801561039757600080fd5b506103ab6103a63660046122a0565b610996565b60405161025a9190612315565b3480156103c457600080fd5b506102746103d3366004612379565b6001600160a01b031660009081526004602052604090205490565b3480156103fa57600080fd5b506102a2610ae6565b34801561040f57600080fd5b506102a261041e366004612394565b610afa565b34801561042f57600080fd5b506102a261043e3660046123c8565b610b0e565b34801561044f57600080fd5b506102a261045e366004612434565b610b36565b6102a2610471366004612484565b610c33565b34801561048257600080fd5b506000546040516001600160a01b03909116815260200161025a565b6102a26104ac3660046124cb565b610c68565b3480156104bd57600080fd5b506102a26104cc366004611e6f565b610d5a565b3480156104dd57600080fd5b506104f16104ec366004612379565b610d9a565b60405161025a9190612525565b34801561050a57600080fd5b506103ab610519366004612572565b610dbe565b34801561052a57600080fd5b506102a2610539366004612379565b610e69565b606060006105576000356001600160e01b031916610ebd565b5090506001600160a01b0381166105a8576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101b2565b600080826001600160a01b031634878733346040516020016105cd94939291906125a7565b60408051601f19818403018152908290526105e7916125d7565b60006040518083038185875af1925050503d8060008114610624576040519150601f19603f3d011682016040523d82523d6000602084013e610629565b606091505b5091509150811561063e579250610647915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d600800000000000000000000000000000000000000000000000000000000148061068b575061068b82610f67565b80610647575061064782610fa5565b60006106a68433610930565b9050806000036106ed576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101b2565b60006106f98483612609565b9050610709338683600187610fe3565b60003382856040516020016107209392919061261c565b604051602081830303815290604052905061073b8682611188565b505050505050565b8451845181141580610756575083518114155b80610762575082518114155b8061076e575081518114155b156107a5576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156108425761083a8782815181106107c5576107c561264d565b60200260200101518783815181106107df576107df61264d565b60200260200101518784815181106107f9576107f961264d565b60200260200101518785815181106108135761081361264d565b602002602001015187868151811061082d5761082d61264d565b6020026020010151610b0e565b6001016107a8565b50505050505050565b336001600160a01b0384161480159061086d5750336001600160a01b03851614155b156108bd576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6108cb838560008585610fe3565b8115610906576000836000836040516020016108e993929190612663565b60405160208183030381529060405290506109048582611188565b505b50505050565b60025460009060ff1661091f5750601290565b50600090565b6060610647826111b3565b6000826001600160a01b0316826001600160a01b03160361096a57506001600160a01b038116600090815260046020526040902054610647565b506001600160a01b03808216600090815260066020908152604080832093861683529290522054610647565b60608167ffffffffffffffff8111156109b1576109b1611daa565b6040519080825280602002602001820160405280156109e457816020015b60608152602001906001900390816109cf5790505b50905060005b82811015610adf5760008030868685818110610a0857610a0861264d565b9050602002810190610a1a919061268e565b604051610a289291906126dc565b600060405180830381855af49150503d8060008114610a63576040519150601f19603f3d011682016040523d82523d6000602084013e610a68565b606091505b509150915081610ab757805115610a825780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101b2565b80848481518110610aca57610aca61264d565b602090810291909101015250506001016109ea565b5092915050565b610aee611255565b610af860006112aa565b565b610b02611255565b61090684848484611330565b336001600160a01b03861614610b2957610b2933868561133c565b61090485858585856113e3565b336001600160a01b03841614801590610b585750336001600160a01b03851614155b15610ba8576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6000610bb48585610930565b905082811015610bf0576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610c01858783600187610fe3565b6000858285604051602001610c189392919061261c565b60405160208183030381529060405290506108428782611188565b610c3b611255565b3415610c5a5760405163f36ba73760e01b815260040160405180910390fd5b610c648282611580565b5050565b610c70611255565b3415610c8f5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610cca576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610d05576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610d5557610d4d838281518110610d2657610d2661264d565b6020026020010151838381518110610d4057610d4061264d565b6020026020010151611580565b600101610d08565b505050565b610d68338484600185610fe3565b6000338383604051602001610d7f9392919061261c565b60405160208183030381529060405290506109068482611188565b6001600160a01b03811660009081526005602052604090206060906106479061158a565b6060815167ffffffffffffffff811115610dda57610dda611daa565b604051908082528060200260200182016040528015610e0d57816020015b6060815260200190600190039081610df85790505b50905060005b8251811015610e6357610e3e838281518110610e3157610e3161264d565b60200260200101516111b3565b828281518110610e5057610e5061264d565b6020908102919091010152600101610e13565b50919050565b610e71611255565b6001600160a01b038116610eb1576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eba816112aa565b50565b60008080610ef57fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611597565b90506000610f02826111b3565b90508051601414158015610f165750805115155b15610f4f57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101b2919061225a565b610f58816126ec565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610647575061064782611608565b600080610fb86301ffc9a760e01b610ebd565b5090506001600160a01b038116610fd25750600092915050565b610fdc8184611656565b9392505050565b6001600160a01b038416611023576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b03160361106e576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083209388168352929052208390558215611110576001600160a01b03851660009081526005602052604090206110be90856116f4565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d84604051611103919061225a565b60405180910390a4610904565b6001600160a01b03851660009081526005602052604090206111329085611709565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd416784604051611179919061225a565b60405180910390a45050505050565b610c64827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc8361171e565b60008181526001602052604090208054606091906111d090612728565b80601f01602080910402602001604051908101604052809291908181526020018280546111fc90612728565b80156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b50505050509050919050565b336112686000546001600160a01b031690565b6001600160a01b031614610af8576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101b2565b6000546001600160a01b03828116911614610eba57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b610906848484846117b2565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156113bd576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101b2565b61090683856113cc858561275c565b600060405180602001604052806000815250610fe3565b6001600160a01b038516158061140057506001600160a01b038416155b1561141e57604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b0385166000908152600460205260409020548084111561148a576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101b2565b6001600160a01b038616600090815260046020526040812080548692906114b290849061275c565b90915550506001600160a01b038516600090815260046020526040812080548692906114df908490612609565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a68787876040516115379392919061276f565b60405180910390a46000338787878660405160200161155a959493929190612790565b6040516020818303038152906040529050611575878261182b565b610842868583611856565b610c648282611949565b60606000610fdc83611aa9565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611600906127ca565b949350505050565b60006001600160e01b031982167f629aa69400000000000000000000000000000000000000000000000000000000148061064757506301ffc9a760e01b6001600160e01b0319831614610647565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156116dd575060208210155b80156116e95750600081115b979650505050505050565b6000610fdc836001600160a01b038416611b04565b6000610fdc836001600160a01b038416611b53565b6117386001600160a01b038416631aed5a8560e21b611656565b15610d5557604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061176b90859085906004016127ee565b6000604051808303816000875af115801561178a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109069190810190612807565b7f0000000000000000000000000000000000000000000000000000000000000000836117dd60035490565b6117e79190612609565b111561181f576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090684848484611c46565b610c64827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea8361171e565b61186783631aed5a8560e21b611656565b156118ba57604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061176b907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c9085906004016127ee565b81610d55576001600160a01b0383163b1561190c576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016119a2576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016119fb576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201611a54576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260409020611a6c82826128bd565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051611a9d919061225a565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561124957602002820191906000526020600020905b815481526020019060010190808311611ae55750505050509050919050565b6000818152600183016020526040812054611b4b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610647565b506000610647565b60008181526001830160205260408120548015611c3c576000611b7760018361275c565b8554909150600090611b8b9060019061275c565b9050818114611bf0576000866000018281548110611bab57611bab61264d565b9060005260206000200154905080876000018481548110611bce57611bce61264d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c0157611c0161297d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610647565b6000915050610647565b6001600160a01b038416611c6d57604051630d2d5ec360e41b815260040160405180910390fd5b8260036000828254611c7f9190612609565b90915550506001600160a01b03841660009081526004602052604081208054859290611cac908490612609565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690611cf59088908890889061276f565b60405180910390a46000336000868685604051602001611d19959493929190612790565b6040516020818303038152906040529050610904858483611856565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611d7657600080fd5b81356001600160e01b031981168114610fdc57600080fd5b80356001600160a01b0381168114611da557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611de957611de9611daa565b604052919050565b600067ffffffffffffffff821115611e0b57611e0b611daa565b50601f01601f191660200190565b600082601f830112611e2a57600080fd5b8135611e3d611e3882611df1565b611dc0565b818152846020838601011115611e5257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611e8457600080fd5b611e8d84611d8e565b925060208401359150604084013567ffffffffffffffff811115611eb057600080fd5b611ebc86828701611e19565b9150509250925092565b600067ffffffffffffffff821115611ee057611ee0611daa565b5060051b60200190565b600082601f830112611efb57600080fd5b81356020611f0b611e3883611ec6565b8083825260208201915060208460051b870101935086841115611f2d57600080fd5b602086015b84811015611f5057611f4381611d8e565b8352918301918301611f32565b509695505050505050565b600082601f830112611f6c57600080fd5b81356020611f7c611e3883611ec6565b8083825260208201915060208460051b870101935086841115611f9e57600080fd5b602086015b84811015611f505780358352918301918301611fa3565b80358015158114611da557600080fd5b600082601f830112611fdb57600080fd5b81356020611feb611e3883611ec6565b8083825260208201915060208460051b87010193508684111561200d57600080fd5b602086015b84811015611f505761202381611fba565b8352918301918301612012565b600082601f83011261204157600080fd5b81356020612051611e3883611ec6565b82815260059290921b8401810191818101908684111561207057600080fd5b8286015b84811015611f5057803567ffffffffffffffff8111156120945760008081fd5b6120a28986838b0101611e19565b845250918301918301612074565b600080600080600060a086880312156120c857600080fd5b853567ffffffffffffffff808211156120e057600080fd5b6120ec89838a01611eea565b9650602088013591508082111561210257600080fd5b61210e89838a01611eea565b9550604088013591508082111561212457600080fd5b61213089838a01611f5b565b9450606088013591508082111561214657600080fd5b61215289838a01611fca565b9350608088013591508082111561216857600080fd5b5061217588828901612030565b9150509295509295909350565b6000806000806080858703121561219857600080fd5b6121a185611d8e565b93506121af60208601611d8e565b92506121bd60408601611fba565b9150606085013567ffffffffffffffff8111156121d957600080fd5b6121e587828801611e19565b91505092959194509250565b60006020828403121561220357600080fd5b5035919050565b60005b8381101561222557818101518382015260200161220d565b50506000910152565b6000815180845261224681602086016020860161220a565b601f01601f19169290920160200192915050565b602081526000610fdc602083018461222e565b6000806040838503121561228057600080fd5b61228983611d8e565b915061229760208401611d8e565b90509250929050565b600080602083850312156122b357600080fd5b823567ffffffffffffffff808211156122cb57600080fd5b818501915085601f8301126122df57600080fd5b8135818111156122ee57600080fd5b8660208260051b850101111561230357600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561236c57603f1988860301845261235a85835161222e565b9450928501929085019060010161233e565b5092979650505050505050565b60006020828403121561238b57600080fd5b610fdc82611d8e565b600080600080608085870312156123aa57600080fd5b6123b385611d8e565b9350602085013592506121bd60408601611fba565b600080600080600060a086880312156123e057600080fd5b6123e986611d8e565b94506123f760208701611d8e565b93506040860135925061240c60608701611fba565b9150608086013567ffffffffffffffff81111561242857600080fd5b61217588828901611e19565b6000806000806080858703121561244a57600080fd5b61245385611d8e565b935061246160208601611d8e565b925060408501359150606085013567ffffffffffffffff8111156121d957600080fd5b6000806040838503121561249757600080fd5b82359150602083013567ffffffffffffffff8111156124b557600080fd5b6124c185828601611e19565b9150509250929050565b600080604083850312156124de57600080fd5b823567ffffffffffffffff808211156124f657600080fd5b61250286838701611f5b565b9350602085013591508082111561251857600080fd5b506124c185828601612030565b6020808252825182820181905260009190848201906040850190845b818110156125665783516001600160a01b031683529284019291840191600101612541565b50909695505050505050565b60006020828403121561258457600080fd5b813567ffffffffffffffff81111561259b57600080fd5b61160084828501611f5b565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516125e981846020870161220a565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610647576106476125f3565b6001600160a01b0384168152826020820152606060408201526000612644606083018461222e565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612644606083018461222e565b6000808335601e198436030181126126a557600080fd5b83018035915067ffffffffffffffff8211156126c057600080fd5b6020019150368190038213156126d557600080fd5b9250929050565b8183823760009101908152919050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156127205780818460140360031b1b83161693505b505050919050565b600181811c9082168061273c57607f821691505b602082108103610e6357634e487b7160e01b600052602260045260246000fd5b81810381811115610647576106476125f3565b8381528215156020820152606060408201526000612644606083018461222e565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526116e960a083018461222e565b80516020808301519190811015610e635760001960209190910360031b1b16919050565b828152604060208201526000611600604083018461222e565b60006020828403121561281957600080fd5b815167ffffffffffffffff81111561283057600080fd5b8201601f8101841361284157600080fd5b805161284f611e3882611df1565b81815285602083850101111561286457600080fd5b61264482602083016020860161220a565b601f821115610d55576000816000526020600020601f850160051c8101602086101561289e5750805b601f850160051c820191505b8181101561073b578281556001016128aa565b815167ffffffffffffffff8111156128d7576128d7611daa565b6128eb816128e58454612728565b84612875565b602080601f83116001811461292057600084156129085750858301515b600019600386901b1c1916600185901b17855561073b565b600085815260208120601f198616915b8281101561294f57888601518255948401946001909101908401612930565b508582101561296d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220c75fd9dfc2dd81875963da9047e4e9b983731bdf4388f8bc7d98e48beb45387464736f6c63430008160033 diff --git a/artifacts/bytecode/42/assets/lsp8/MintableIdentifiableDigitalAsset.bin b/artifacts/bytecode/42/assets/lsp8/MintableIdentifiableDigitalAsset.bin index df426ac..70ed49f 100644 --- a/artifacts/bytecode/42/assets/lsp8/MintableIdentifiableDigitalAsset.bin +++ b/artifacts/bytecode/42/assets/lsp8/MintableIdentifiableDigitalAsset.bin @@ -1 +1 @@ -0x60a06040523480156200001157600080fd5b506040516200371938038062003719833981016040819052620000349162000451565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001ea565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000258565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000258565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000258565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000258565b50506040805160208101859052620001ae93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620002b1565b5050505050505050505080600003620001da5760405163038d9fc360e41b815260040160405180910390fd5b608052506200068c945050505050565b6000546001600160a01b038281169116146200025557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200027282826200058b565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620002a5919062000657565b60405180910390a25050565b620002bd8282620002c1565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820162000302576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200034357604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200025857604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b75781810151838201526020016200039d565b50506000910152565b600082601f830112620003d257600080fd5b81516001600160401b0380821115620003ef57620003ef62000384565b604051601f8301601f19908116603f011681019082821181831017156200041a576200041a62000384565b816040528381528660208588010111156200043457600080fd5b620004478460208301602089016200039a565b9695505050505050565b60008060008060008060c087890312156200046b57600080fd5b86516001600160401b03808211156200048357600080fd5b620004918a838b01620003c0565b97506020890151915080821115620004a857600080fd5b50620004b789828a01620003c0565b604089015190965090506001600160a01b0381168114620004d757600080fd5b80945050606087015192506080870151915060a087015190509295509295509295565b600181811c908216806200050f57607f821691505b6020821081036200053057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000586576000816000526020600020601f850160051c81016020861015620005615750805b601f850160051c820191505b8181101562000582578281556001016200056d565b5050505b505050565b81516001600160401b03811115620005a757620005a762000384565b620005bf81620005b88454620004fa565b8462000536565b602080601f831160018114620005f75760008415620005de5750858301515b600019600386901b1c1916600185901b17855562000582565b600085815260208120601f198616915b82811015620006285788860151825594840194600190910190840162000607565b5085821015620006475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006788160408501602087016200039a565b601f01601f19169190910160400192915050565b60805161306a620006af600039600081816103be0152611d9a015261306a6000f3fe6080604052600436106101a55760003560e01c80637e87632c116100e1578063a3b261f21161008a578063d6c1407c11610064578063d6c1407c14610575578063db8c966314610595578063dedff9c6146105b5578063f2fde38b146105d557610219565b8063a3b261f214610508578063af255b6114610535578063be9f0e6f1461055557610219565b80638da5cb5b116100bb5780638da5cb5b146104aa57806392a91a3a146104c857806397902421146104f557610219565b80637e87632c146104575780637f23690c1461047757806386a10ddd1461048a57610219565b806349a6078d1161014e57806354f6127f1161012857806354f6127f146103e25780636963d4381461040257806370a0823114610422578063715018a61461044257610219565b806349a6078d14610360578063511b69521461038d57806352058d8a146103af57610219565b80631d26fce61161017f5780631d26fce6146102db578063217b2270146103085780632a3654a41461034057610219565b806301ffc9a71461025a57806316e023b31461028f57806318160ddd146102bc57610219565b3661021957346000036101e75760405163e5099ee360e01b81526004016101de9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561024457828260405163e5099ee360e01b81526004016101de9291906122da565b61024e83836105f5565b80519350602001915050f35b34801561026657600080fd5b5061027a610275366004612309565b610704565b60405190151581526020015b60405180910390f35b34801561029b57600080fd5b506102af6102aa366004612333565b610751565b60405161028691906123a5565b3480156102c857600080fd5b506002545b604051908152602001610286565b3480156102e757600080fd5b506102fb6102f6366004612492565b610764565b60405161028691906124f6565b34801561031457600080fd5b5061032861032336600461255a565b61082a565b6040516001600160a01b039091168152602001610286565b34801561034c57600080fd5b5061027a61035b36600461258f565b610863565b34801561036c57600080fd5b5061038061037b36600461255a565b610878565b60405161028691906125b9565b34801561039957600080fd5b506103ad6103a836600461268f565b61089a565b005b3480156103bb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cd565b3480156103ee57600080fd5b506102af6103fd36600461255a565b6108f7565b34801561040e57600080fd5b506102fb61041d366004612708565b610902565b34801561042e57600080fd5b506102cd61043d36600461277d565b610a4b565b34801561044e57600080fd5b506103ad610a6c565b34801561046357600080fd5b506103ad6104723660046128e4565b610a80565b6103ad6104853660046129a9565b610b88565b34801561049657600080fd5b506103ad6104a53660046129e6565b610bbd565b3480156104b657600080fd5b506000546001600160a01b0316610328565b3480156104d457600080fd5b506102cd6104e336600461255a565b60009081526007602052604090205490565b6103ad610503366004612a3d565b610d50565b34801561051457600080fd5b5061052861052336600461277d565b610e42565b6040516102869190612a97565b34801561054157600080fd5b506103ad610550366004612acf565b610e66565b34801561056157600080fd5b506103ad610570366004612b37565b610e80565b34801561058157600080fd5b506103ad610590366004612bb5565b610f77565b3480156105a157600080fd5b506103ad6105b0366004612acf565b610f8a565b3480156105c157600080fd5b506102fb6105d0366004612bef565b61105e565b3480156105e157600080fd5b506103ad6105f036600461277d565b611109565b6060600061060e6000356001600160e01b03191661115d565b5090506001600160a01b03811661065f576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101de565b600080826001600160a01b031634878733346040516020016106849493929190612c24565b60408051601f198184030181529082905261069e91612c54565b60006040518083038185875af1925050503d80600081146106db576040519150601f19603f3d011682016040523d82523d6000602084013e6106e0565b606091505b509150915081156106f55792506106fe915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610742575061074282611207565b806106fe57506106fe82611245565b606061075d838361127c565b9392505050565b6060825167ffffffffffffffff811115610780576107806123b8565b6040519080825280602002602001820160405280156107b357816020015b606081526020019060019003908161079e5790505b50905060005b8351811015610823576107fe8482815181106107d7576107d7612c70565b60200260200101518483815181106107f1576107f1612c70565b602002602001015161127c565b82828151811061081057610810612c70565b60209081029190910101526001016107b9565b5092915050565b6000818152600360205260408120546001600160a01b0316806106fe57604051635747cd1b60e11b8152600481018490526024016101de565b600061086e82611353565b61075d838361138b565b606061088382611353565b60008281526005602052604090206106fe906113c8565b6108a4338461138b565b6108e3576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481018490523360248201526044016101de565b6108f085858585856113d5565b5050505050565b60606106fe826115c3565b60608167ffffffffffffffff81111561091d5761091d6123b8565b60405190808252806020026020018201604052801561095057816020015b606081526020019060019003908161093b5790505b50905060005b82811015610823576000803086868581811061097457610974612c70565b90506020028101906109869190612c86565b604051610994929190612cd4565b600060405180830381855af49150503d80600081146109cf576040519150601f19603f3d011682016040523d82523d6000602084013e6109d4565b606091505b509150915081610a23578051156109ee5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016101de565b80848481518110610a3657610a36612c70565b60209081029190910101525050600101610956565b6001600160a01b03811660009081526004602052604081206106fe90611665565b610a7461166f565b610a7e60006116c4565b565b8451845181141580610a93575083518114155b80610a9f575082518114155b80610aab575081518114155b15610ae2576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610b7f57610b77878281518110610b0257610b02612c70565b6020026020010151878381518110610b1c57610b1c612c70565b6020026020010151878481518110610b3657610b36612c70565b6020026020010151878581518110610b5057610b50612c70565b6020026020010151878681518110610b6a57610b6a612c70565b602002602001015161089a565b600101610ae5565b50505050505050565b610b9061166f565b3415610baf5760405163f36ba73760e01b815260040160405180910390fd5b610bb9828261173f565b5050565b6000610bc88361082a565b90506001600160a01b0381163314610c0b57604051632d938f5160e11b81526001600160a01b0382166004820152602481018490523360448201526064016101de565b6001600160a01b038416610c3257604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610c64576040516344fed6b160e11b815260040160405180910390fd5b6000838152600560205260408120610c7c90866117a2565b905080610cc7576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044016101de565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610d0b91906123a5565b60405180910390a460003385600186604051602001610d2d9493929190612ce4565b6040516020818303038152906040529050610d4886826117b7565b505050505050565b610d5861166f565b3415610d775760405163f36ba73760e01b815260040160405180910390fd5b8051825114610db2576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610ded576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610e3d57610e35838281518110610e0e57610e0e612c70565b6020026020010151838381518110610e2857610e28612c70565b602002602001015161173f565b600101610df0565b505050565b6001600160a01b03811660009081526004602052604090206060906106fe906113c8565b610e6e61166f565b610e7a848484846117e2565b50505050565b610e8861166f565b81518351141580610e9b57508051825114155b15610ed2576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251600003610f0d576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015610e7a57610f6f848281518110610f2e57610f2e612c70565b6020026020010151848381518110610f4857610f48612c70565b6020026020010151848481518110610f6257610f62612c70565b60200260200101516117ee565b600101610f10565b610f7f61166f565b610e3d8383836117ee565b6000610f958461082a565b90506001600160a01b0381163314610fd857604051632d938f5160e11b81526001600160a01b0382166004820152602481018590523360448201526064016101de565b6001600160a01b038516610fff57604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031603611031576040516344fed6b160e11b815260040160405180910390fd5b61103e858286868661187e565b82156108f05760003385600085604051602001610d2d9493929190612ce4565b6060815167ffffffffffffffff81111561107a5761107a6123b8565b6040519080825280602002602001820160405280156110ad57816020015b60608152602001906001900390816110985790505b50905060005b8251811015611103576110de8382815181106110d1576110d1612c70565b60200260200101516115c3565b8282815181106110f0576110f0612c70565b60209081029190910101526001016110b3565b50919050565b61111161166f565b6001600160a01b038116611151576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115a816116c4565b50565b600080806111957fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611937565b905060006111a2826115c3565b905080516014141580156111b65750805115155b156111ef57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101de91906123a5565b6111f881612d1e565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806106fe57506106fe826119a8565b6000806112586301ffc9a760e01b61115d565b5090506001600160a01b0381166112725750600092915050565b61075d81846119f6565b606060016000848460405160200161129e929190918252602082015260400190565b60405160208183030381529060405280519060200120815260200190815260200160002080546112cd90612d5a565b80601f01602080910402602001604051908101604052809291908181526020018280546112f990612d5a565b80156113465780601f1061131b57610100808354040283529160200191611346565b820191906000526020600020905b81548152906001019060200180831161132957829003601f168201915b5050505050905092915050565b6000818152600360205260409020546001600160a01b031661115a57604051635747cd1b60e11b8152600481018290526024016101de565b60006113968261082a565b6001600160a01b0316836001600160a01b0316148061075d5750600082815260056020526040902061075d9084611a94565b6060600061075d83611ab6565b836001600160a01b0316856001600160a01b031603611420576040517f5d67d6c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061142b8461082a565b9050856001600160a01b0316816001600160a01b03161461147957604051632d938f5160e11b81526001600160a01b03808316600483015260248201869052871660448201526064016101de565b6001600160a01b0385166114a0576040516324ecef4d60e01b815260040160405180910390fd5b6114ac86868685611b11565b6114b58461082a565b90506114c18685611b1d565b6001600160a01b03861660009081526004602052604090206114e39085611b75565b506001600160a01b03851660009081526004602052604090206115069085611b81565b5060008481526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518692918916907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061157a90339089908990612d8e565b60405180910390a46000338787878660405160200161159d959493929190612dc1565b60405160208183030381529060405290506115b88782611b8d565b610b7f868583611bb8565b60008181526001602052604090208054606091906115e090612d5a565b80601f016020809104026020016040519081016040528092919081815260200182805461160c90612d5a565b80156116595780601f1061162e57610100808354040283529160200191611659565b820191906000526020600020905b81548152906001019060200180831161163c57829003601f168201915b50505050509050919050565b60006106fe825490565b336116826000546001600160a01b031690565b6001600160a01b031614610a7e576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101de565b6000546001600160a01b0382811691161461115a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201611798576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb98282611cf2565b600061075d836001600160a01b038416611cfc565b610bb9827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083611d4b565b610e7a84848484611d98565b8060016000858560405160200161180f929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020908161183f9190612e43565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161187191906123a5565b60405180910390a3505050565b60008381526005602052604081206118969087611e0b565b9050806118e1576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602481018590526044016101de565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051611927929190612f03565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806119a090612f1e565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806106fe57506301ffc9a760e01b6001600160e01b03198316146106fe565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611a7d575060208210155b8015611a895750600081115b979650505050505050565b6001600160a01b0381166000908152600183016020526040812054151561075d565b60608160000180548060200260200160405190810160405280929190818152602001828054801561165957602002820191906000526020600020905b815481526020019060010190808311611af25750505050509050919050565b610e7a84848484611e20565b600081815260056020526040812090611b3582611665565b90506000805b82811015610d4857611b4e846000611ee7565b9150611b6d82878760006040518060200160405280600081525061187e565b600101611b3b565b600061075d8383611ef3565b600061075d8383611cfc565b610bb9827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083611d4b565b611bc983631aed5a8560e21b6119f6565b15611c6357604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c1c907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401612f42565b6000604051808303816000875af1158015611c3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e7a9190810190612f5b565b81610e3d576001600160a01b0383163b15611cb5576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b610bb98282611fe6565b6000818152600183016020526040812054611d43575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106fe565b5060006106fe565b611d656001600160a01b038416631aed5a8560e21b6119f6565b15610e3d57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c1c9085908590600401612f42565b7f0000000000000000000000000000000000000000000000000000000000000000600254611dc7906001612fdf565b1115611dff576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e7a84848484612146565b600061075d836001600160a01b038416611ef3565b6001600160a01b038416611e5a576000611e3960025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316611ee25760006001611e7560025490565b611e7f9190612ff2565b60008481526008602052604090205490915081811015611ec1576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b610e7a565b600061075d83836122b0565b60008181526001830160205260408120548015611fdc576000611f17600183612ff2565b8554909150600090611f2b90600190612ff2565b9050818114611f90576000866000018281548110611f4b57611f4b612c70565b9060005260206000200154905080876000018481548110611f6e57611f6e612c70565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611fa157611fa1613005565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106fe565b60009150506106fe565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820161203f576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612098576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016120f1576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206121098282612e43565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161213a91906123a5565b60405180910390a25050565b6001600160a01b03841661216d576040516324ecef4d60e01b815260040160405180910390fd5b61217a6000858584611b11565b6000838152600360205260409020546001600160a01b0316156121cc576040517f34c7b511000000000000000000000000000000000000000000000000000000008152600481018490526024016101de565b6002600081546121db9061301b565b909155506001600160a01b03841660009081526004602052604090206122019084611b81565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061227090339088908890612d8e565b60405180910390a46000336000868685604051602001612294959493929190612dc1565b60405160208183030381529060405290506108f0858483611bb8565b60008260000182815481106122c7576122c7612c70565b9060005260206000200154905092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561231b57600080fd5b81356001600160e01b03198116811461075d57600080fd5b6000806040838503121561234657600080fd5b50508035926020909101359150565b60005b83811015612370578181015183820152602001612358565b50506000910152565b60008151808452612391816020860160208601612355565b601f01601f19169290920160200192915050565b60208152600061075d6020830184612379565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156123f7576123f76123b8565b604052919050565b600067ffffffffffffffff821115612419576124196123b8565b5060051b60200190565b600082601f83011261243457600080fd5b81356020612449612444836123ff565b6123ce565b8083825260208201915060208460051b87010193508684111561246b57600080fd5b602086015b848110156124875780358352918301918301612470565b509695505050505050565b600080604083850312156124a557600080fd5b823567ffffffffffffffff808211156124bd57600080fd5b6124c986838701612423565b935060208501359150808211156124df57600080fd5b506124ec85828601612423565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561254d57603f1988860301845261253b858351612379565b9450928501929085019060010161251f565b5092979650505050505050565b60006020828403121561256c57600080fd5b5035919050565b80356001600160a01b038116811461258a57600080fd5b919050565b600080604083850312156125a257600080fd5b6125ab83612573565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156125fa5783516001600160a01b0316835292840192918401916001016125d5565b50909695505050505050565b8035801515811461258a57600080fd5b600067ffffffffffffffff821115612630576126306123b8565b50601f01601f191660200190565b600082601f83011261264f57600080fd5b813561265d61244482612616565b81815284602083860101111561267257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156126a757600080fd5b6126b086612573565b94506126be60208701612573565b9350604086013592506126d360608701612606565b9150608086013567ffffffffffffffff8111156126ef57600080fd5b6126fb8882890161263e565b9150509295509295909350565b6000806020838503121561271b57600080fd5b823567ffffffffffffffff8082111561273357600080fd5b818501915085601f83011261274757600080fd5b81358181111561275657600080fd5b8660208260051b850101111561276b57600080fd5b60209290920196919550909350505050565b60006020828403121561278f57600080fd5b61075d82612573565b600082601f8301126127a957600080fd5b813560206127b9612444836123ff565b8083825260208201915060208460051b8701019350868411156127db57600080fd5b602086015b84811015612487576127f181612573565b83529183019183016127e0565b600082601f83011261280f57600080fd5b8135602061281f612444836123ff565b8083825260208201915060208460051b87010193508684111561284157600080fd5b602086015b848110156124875761285781612606565b8352918301918301612846565b600082601f83011261287557600080fd5b81356020612885612444836123ff565b82815260059290921b840181019181810190868411156128a457600080fd5b8286015b8481101561248757803567ffffffffffffffff8111156128c85760008081fd5b6128d68986838b010161263e565b8452509183019183016128a8565b600080600080600060a086880312156128fc57600080fd5b853567ffffffffffffffff8082111561291457600080fd5b61292089838a01612798565b9650602088013591508082111561293657600080fd5b61294289838a01612798565b9550604088013591508082111561295857600080fd5b61296489838a01612423565b9450606088013591508082111561297a57600080fd5b61298689838a016127fe565b9350608088013591508082111561299c57600080fd5b506126fb88828901612864565b600080604083850312156129bc57600080fd5b82359150602083013567ffffffffffffffff8111156129da57600080fd5b6124ec8582860161263e565b6000806000606084860312156129fb57600080fd5b612a0484612573565b925060208401359150604084013567ffffffffffffffff811115612a2757600080fd5b612a338682870161263e565b9150509250925092565b60008060408385031215612a5057600080fd5b823567ffffffffffffffff80821115612a6857600080fd5b612a7486838701612423565b93506020850135915080821115612a8a57600080fd5b506124ec85828601612864565b6020808252825182820181905260009190848201906040850190845b818110156125fa57835183529284019291840191600101612ab3565b60008060008060808587031215612ae557600080fd5b612aee85612573565b935060208501359250612b0360408601612606565b9150606085013567ffffffffffffffff811115612b1f57600080fd5b612b2b8782880161263e565b91505092959194509250565b600080600060608486031215612b4c57600080fd5b833567ffffffffffffffff80821115612b6457600080fd5b612b7087838801612423565b94506020860135915080821115612b8657600080fd5b612b9287838801612423565b93506040860135915080821115612ba857600080fd5b50612a3386828701612864565b600080600060608486031215612bca57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612a2757600080fd5b600060208284031215612c0157600080fd5b813567ffffffffffffffff811115612c1857600080fd5b6119a084828501612423565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612c66818460208701612355565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112612c9d57600080fd5b83018035915067ffffffffffffffff821115612cb857600080fd5b602001915036819003821315612ccd57600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b03851681528360208201528215156040820152608060608201526000612d146080830184612379565b9695505050505050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612d525780818460140360031b1b83161693505b505050919050565b600181811c90821680612d6e57607f821691505b60208210810361110357634e487b7160e01b600052602260045260246000fd5b6001600160a01b03841681528215156020820152606060408201526000612db86060830184612379565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611a8960a0830184612379565b601f821115610e3d576000816000526020600020601f850160051c81016020861015612e245750805b601f850160051c820191505b81811015610d4857828155600101612e30565b815167ffffffffffffffff811115612e5d57612e5d6123b8565b612e7181612e6b8454612d5a565b84612dfb565b602080601f831160018114612ea65760008415612e8e5750858301515b600019600386901b1c1916600185901b178555610d48565b600085815260208120601f198616915b82811015612ed557888601518255948401946001909101908401612eb6565b5085821015612ef35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006119a06040830184612379565b805160208083015191908110156111035760001960209190910360031b1b16919050565b8281526040602082015260006119a06040830184612379565b600060208284031215612f6d57600080fd5b815167ffffffffffffffff811115612f8457600080fd5b8201601f81018413612f9557600080fd5b8051612fa361244482612616565b818152856020838501011115612fb857600080fd5b612db8826020830160208601612355565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fe576106fe612fc9565b818103818111156106fe576106fe612fc9565b634e487b7160e01b600052603160045260246000fd5b60006001820161302d5761302d612fc9565b506001019056fea2646970667358221220e614d4dd12f7bbc53bf04e5e55aba14282cc4a76ccfbc70142e0817ca99ce41564736f6c63430008160033 +0x60a06040523480156200001157600080fd5b506040516200373138038062003731833981016040819052620000349162000451565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001ea565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000258565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000258565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000258565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000258565b50506040805160208101859052620001ae93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620002b1565b5050505050505050505080600003620001da5760405163038d9fc360e41b815260040160405180910390fd5b608052506200068c945050505050565b6000546001600160a01b038281169116146200025557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200027282826200058b565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620002a5919062000657565b60405180910390a25050565b620002bd8282620002c1565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820162000302576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200034357604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200025857604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b75781810151838201526020016200039d565b50506000910152565b600082601f830112620003d257600080fd5b81516001600160401b0380821115620003ef57620003ef62000384565b604051601f8301601f19908116603f011681019082821181831017156200041a576200041a62000384565b816040528381528660208588010111156200043457600080fd5b620004478460208301602089016200039a565b9695505050505050565b60008060008060008060c087890312156200046b57600080fd5b86516001600160401b03808211156200048357600080fd5b620004918a838b01620003c0565b97506020890151915080821115620004a857600080fd5b50620004b789828a01620003c0565b604089015190965090506001600160a01b0381168114620004d757600080fd5b80945050606087015192506080870151915060a087015190509295509295509295565b600181811c908216806200050f57607f821691505b6020821081036200053057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000586576000816000526020600020601f850160051c81016020861015620005615750805b601f850160051c820191505b8181101562000582578281556001016200056d565b5050505b505050565b81516001600160401b03811115620005a757620005a762000384565b620005bf81620005b88454620004fa565b8462000536565b602080601f831160018114620005f75760008415620005de5750858301515b600019600386901b1c1916600185901b17855562000582565b600085815260208120601f198616915b82811015620006285788860151825594840194600190910190840162000607565b5085821015620006475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006788160408501602087016200039a565b601f01601f19169190910160400192915050565b608051613082620006af600039600081816103be0152611d9201526130826000f3fe6080604052600436106101a55760003560e01c80637e87632c116100e1578063a3b261f21161008a578063d6c1407c11610064578063d6c1407c14610575578063db8c966314610595578063dedff9c6146105b5578063f2fde38b146105d557610219565b8063a3b261f214610508578063af255b6114610535578063be9f0e6f1461055557610219565b80638da5cb5b116100bb5780638da5cb5b146104aa57806392a91a3a146104c857806397902421146104f557610219565b80637e87632c146104575780637f23690c1461047757806386a10ddd1461048a57610219565b806349a6078d1161014e57806354f6127f1161012857806354f6127f146103e25780636963d4381461040257806370a0823114610422578063715018a61461044257610219565b806349a6078d14610360578063511b69521461038d57806352058d8a146103af57610219565b80631d26fce61161017f5780631d26fce6146102db578063217b2270146103085780632a3654a41461034057610219565b806301ffc9a71461025a57806316e023b31461028f57806318160ddd146102bc57610219565b3661021957346000036101e75760405163e5099ee360e01b81526004016101de9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561024457828260405163e5099ee360e01b81526004016101de9291906122f2565b61024e83836105f5565b80519350602001915050f35b34801561026657600080fd5b5061027a610275366004612321565b610704565b60405190151581526020015b60405180910390f35b34801561029b57600080fd5b506102af6102aa36600461234b565b610751565b60405161028691906123bd565b3480156102c857600080fd5b506002545b604051908152602001610286565b3480156102e757600080fd5b506102fb6102f63660046124aa565b610764565b604051610286919061250e565b34801561031457600080fd5b50610328610323366004612572565b61084c565b6040516001600160a01b039091168152602001610286565b34801561034c57600080fd5b5061027a61035b3660046125a7565b610885565b34801561036c57600080fd5b5061038061037b366004612572565b610891565b60405161028691906125d1565b34801561039957600080fd5b506103ad6103a83660046126a7565b6108b3565b005b3480156103bb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cd565b3480156103ee57600080fd5b506102af6103fd366004612572565b610910565b34801561040e57600080fd5b506102fb61041d366004612720565b61091b565b34801561042e57600080fd5b506102cd61043d366004612795565b610a64565b34801561044e57600080fd5b506103ad610a85565b34801561046357600080fd5b506103ad6104723660046128fc565b610a99565b6103ad6104853660046129c1565b610ba1565b34801561049657600080fd5b506103ad6104a53660046129fe565b610bd6565b3480156104b657600080fd5b506000546001600160a01b0316610328565b3480156104d457600080fd5b506102cd6104e3366004612572565b60009081526007602052604090205490565b6103ad610503366004612a55565b610d69565b34801561051457600080fd5b50610528610523366004612795565b610e5b565b6040516102869190612aaf565b34801561054157600080fd5b506103ad610550366004612ae7565b610e7f565b34801561056157600080fd5b506103ad610570366004612b4f565b610e99565b34801561058157600080fd5b506103ad610590366004612bcd565b610f77565b3480156105a157600080fd5b506103ad6105b0366004612ae7565b610f8a565b3480156105c157600080fd5b506102fb6105d0366004612c07565b611087565b3480156105e157600080fd5b506103ad6105f0366004612795565b611132565b6060600061060e6000356001600160e01b031916611186565b5090506001600160a01b03811661065f576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101de565b600080826001600160a01b031634878733346040516020016106849493929190612c3c565b60408051601f198184030181529082905261069e91612c6c565b60006040518083038185875af1925050503d80600081146106db576040519150601f19603f3d011682016040523d82523d6000602084013e6106e0565b606091505b509150915081156106f55792506106fe915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610742575061074282611230565b806106fe57506106fe8261126e565b606061075d83836112a5565b9392505050565b60608151835114610788576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff8111156107a2576107a26123d0565b6040519080825280602002602001820160405280156107d557816020015b60608152602001906001900390816107c05790505b50905060005b8351811015610845576108208482815181106107f9576107f9612c88565b602002602001015184838151811061081357610813612c88565b60200260200101516112a5565b82828151811061083257610832612c88565b60209081029190910101526001016107db565b5092915050565b6000818152600360205260408120546001600160a01b0316806106fe57604051635747cd1b60e11b8152600481018490526024016101de565b600061075d8383611353565b606061089c82611390565b60008281526005602052604090206106fe906113c8565b6108bd3384611353565b6108fc576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481018490523360248201526044016101de565b61090985858585856113d5565b5050505050565b60606106fe826115e9565b60608167ffffffffffffffff811115610936576109366123d0565b60405190808252806020026020018201604052801561096957816020015b60608152602001906001900390816109545790505b50905060005b82811015610845576000803086868581811061098d5761098d612c88565b905060200281019061099f9190612c9e565b6040516109ad929190612cec565b600060405180830381855af49150503d80600081146109e8576040519150601f19603f3d011682016040523d82523d6000602084013e6109ed565b606091505b509150915081610a3c57805115610a075780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016101de565b80848481518110610a4f57610a4f612c88565b6020908102919091010152505060010161096f565b6001600160a01b03811660009081526004602052604081206106fe9061168b565b610a8d611695565b610a9760006116ea565b565b8451845181141580610aac575083518114155b80610ab8575082518114155b80610ac4575081518114155b15610afb576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610b9857610b90878281518110610b1b57610b1b612c88565b6020026020010151878381518110610b3557610b35612c88565b6020026020010151878481518110610b4f57610b4f612c88565b6020026020010151878581518110610b6957610b69612c88565b6020026020010151878681518110610b8357610b83612c88565b60200260200101516108b3565b600101610afe565b50505050505050565b610ba9611695565b3415610bc85760405163f36ba73760e01b815260040160405180910390fd5b610bd28282611765565b5050565b6000610be18361084c565b90506001600160a01b0381163314610c2457604051632d938f5160e11b81526001600160a01b0382166004820152602481018490523360448201526064016101de565b6001600160a01b038416610c4b57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610c7d576040516344fed6b160e11b815260040160405180910390fd5b6000838152600560205260408120610c9590866117c8565b905080610ce0576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044016101de565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610d2491906123bd565b60405180910390a460003385600186604051602001610d469493929190612cfc565b6040516020818303038152906040529050610d6186826117dd565b505050505050565b610d71611695565b3415610d905760405163f36ba73760e01b815260040160405180910390fd5b8051825114610dcb576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610e06576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610e5657610e4e838281518110610e2757610e27612c88565b6020026020010151838381518110610e4157610e41612c88565b6020026020010151611765565b600101610e09565b505050565b6001600160a01b03811660009081526004602052604090206060906106fe906113c8565b610e87611695565b610e9384848484611808565b50505050565b610ea1611695565b81518351141580610eb457508051825114155b15610ed2576040516317d38eff60e11b815260040160405180910390fd5b8251600003610f0d576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015610e9357610f6f848281518110610f2e57610f2e612c88565b6020026020010151848381518110610f4857610f48612c88565b6020026020010151848481518110610f6257610f62612c88565b6020026020010151611814565b600101610f10565b610f7f611695565b610e56838383611814565b6000610f958461084c565b9050336001600160a01b03821614611001576001600160a01b0385163314611001576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604481018590526064016101de565b6001600160a01b03851661102857604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b03160361105a576040516344fed6b160e11b815260040160405180910390fd5b6110678582868686611876565b82156109095760008185600085604051602001610d469493929190612cfc565b6060815167ffffffffffffffff8111156110a3576110a36123d0565b6040519080825280602002602001820160405280156110d657816020015b60608152602001906001900390816110c15790505b50905060005b825181101561112c576111078382815181106110fa576110fa612c88565b60200260200101516115e9565b82828151811061111957611119612c88565b60209081029190910101526001016110dc565b50919050565b61113a611695565b6001600160a01b03811661117a576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611183816116ea565b50565b600080806111be7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b0319861661192f565b905060006111cb826115e9565b905080516014141580156111df5750805115155b1561121857806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101de91906123bd565b61122181612d36565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806106fe57506106fe826119a0565b6000806112816301ffc9a760e01b611186565b5090506001600160a01b03811661129b5750600092915050565b61075d81846119ee565b600082815260066020908152604080832084845290915290208054606091906112cd90612d72565b80601f01602080910402602001604051908101604052809291908181526020018280546112f990612d72565b80156113465780601f1061131b57610100808354040283529160200191611346565b820191906000526020600020905b81548152906001019060200180831161132957829003601f168201915b5050505050905092915050565b600061135e8261084c565b6001600160a01b0316836001600160a01b0316148061075d5750600082815260056020526040902061075d9084611a8c565b6000818152600360205260409020546001600160a01b031661118357604051635747cd1b60e11b8152600481018290526024016101de565b6060600061075d83611aae565b60006113e08461084c565b9050856001600160a01b0316816001600160a01b03161461142e57604051632d938f5160e11b81526001600160a01b03808316600483015260248201869052871660448201526064016101de565b6001600160a01b038516611455576040516324ecef4d60e01b815260040160405180910390fd5b61146186868685611b09565b600061146c8561084c565b9050806001600160a01b0316826001600160a01b0316146114d3576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038084166024830152821660448201526064016101de565b6114dd8786611b15565b6001600160a01b03871660009081526004602052604090206114ff9086611b6d565b506001600160a01b03861660009081526004602052604090206115229086611b79565b5060008581526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906115969033908a908a90612da6565b60405180910390a4600033888888876040516020016115b9959493929190612dd9565b60405160208183030381529060405290506115d48882611b85565b6115df878683611bb0565b5050505050505050565b600081815260016020526040902080546060919061160690612d72565b80601f016020809104026020016040519081016040528092919081815260200182805461163290612d72565b801561167f5780601f106116545761010080835404028352916020019161167f565b820191906000526020600020905b81548152906001019060200180831161166257829003601f168201915b50505050509050919050565b60006106fe825490565b336116a86000546001600160a01b031690565b6001600160a01b031614610a97576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101de565b6000546001600160a01b0382811691161461118357600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e7382016117be576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd28282611cea565b600061075d836001600160a01b038416611cf4565b610bd2827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083611d43565b610e9384848484611d90565b600083815260066020908152604080832085845290915290206118378282612e5b565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161186991906123bd565b60405180910390a3505050565b600083815260056020526040812061188e9087611e03565b9050806118d9576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602481018590526044016101de565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c868660405161191f929190612f1b565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c8301529182910160405160208183030381529060405290508061199890612f36565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806106fe57506301ffc9a760e01b6001600160e01b03198316146106fe565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611a75575060208210155b8015611a815750600081115b979650505050505050565b6001600160a01b0381166000908152600183016020526040812054151561075d565b60608160000180548060200260200160405190810160405280929190818152602001828054801561167f57602002820191906000526020600020905b815481526020019060010190808311611aea5750505050509050919050565b610e9384848484611e18565b600081815260056020526040812090611b2d8261168b565b90506000805b82811015610d6157611b46846000611edf565b9150611b65828787600060405180602001604052806000815250611876565b600101611b33565b600061075d8383611eeb565b600061075d8383611cf4565b610bd2827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083611d43565b611bc183631aed5a8560e21b6119ee565b15611c5b57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c14907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401612f5a565b6000604051808303816000875af1158015611c33573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e939190810190612f73565b81610e56576001600160a01b0383163b15611cad576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b610bd28282611fde565b6000818152600183016020526040812054611d3b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106fe565b5060006106fe565b611d5d6001600160a01b038416631aed5a8560e21b6119ee565b15610e5657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c149085908590600401612f5a565b7f0000000000000000000000000000000000000000000000000000000000000000600254611dbf906001612ff7565b1115611df7576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e938484848461213e565b600061075d836001600160a01b038416611eeb565b6001600160a01b038416611e52576000611e3160025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316611eda5760006001611e6d60025490565b611e77919061300a565b60008481526008602052604090205490915081811015611eb9576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b610e93565b600061075d83836122c8565b60008181526001830160205260408120548015611fd4576000611f0f60018361300a565b8554909150600090611f239060019061300a565b9050818114611f88576000866000018281548110611f4357611f43612c88565b9060005260206000200154905080876000018481548110611f6657611f66612c88565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611f9957611f9961301d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106fe565b60009150506106fe565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612037576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612090576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016120e9576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206121018282612e5b565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161213291906123bd565b60405180910390a25050565b6001600160a01b038416612165576040516324ecef4d60e01b815260040160405180910390fd5b6000838152600360205260409020546001600160a01b03161561219e576040516334c7b51160e01b8152600481018490526024016101de565b6121ab6000858584611b09565b6000838152600360205260409020546001600160a01b0316156121e4576040516334c7b51160e01b8152600481018490526024016101de565b6002600081546121f390613033565b909155506001600160a01b03841660009081526004602052604090206122199084611b79565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061228890339088908890612da6565b60405180910390a460003360008686856040516020016122ac959493929190612dd9565b6040516020818303038152906040529050610909858483611bb0565b60008260000182815481106122df576122df612c88565b9060005260206000200154905092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561233357600080fd5b81356001600160e01b03198116811461075d57600080fd5b6000806040838503121561235e57600080fd5b50508035926020909101359150565b60005b83811015612388578181015183820152602001612370565b50506000910152565b600081518084526123a981602086016020860161236d565b601f01601f19169290920160200192915050565b60208152600061075d6020830184612391565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561240f5761240f6123d0565b604052919050565b600067ffffffffffffffff821115612431576124316123d0565b5060051b60200190565b600082601f83011261244c57600080fd5b8135602061246161245c83612417565b6123e6565b8083825260208201915060208460051b87010193508684111561248357600080fd5b602086015b8481101561249f5780358352918301918301612488565b509695505050505050565b600080604083850312156124bd57600080fd5b823567ffffffffffffffff808211156124d557600080fd5b6124e18683870161243b565b935060208501359150808211156124f757600080fd5b506125048582860161243b565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561256557603f19888603018452612553858351612391565b94509285019290850190600101612537565b5092979650505050505050565b60006020828403121561258457600080fd5b5035919050565b80356001600160a01b03811681146125a257600080fd5b919050565b600080604083850312156125ba57600080fd5b6125c38361258b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156126125783516001600160a01b0316835292840192918401916001016125ed565b50909695505050505050565b803580151581146125a257600080fd5b600067ffffffffffffffff821115612648576126486123d0565b50601f01601f191660200190565b600082601f83011261266757600080fd5b813561267561245c8261262e565b81815284602083860101111561268a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156126bf57600080fd5b6126c88661258b565b94506126d66020870161258b565b9350604086013592506126eb6060870161261e565b9150608086013567ffffffffffffffff81111561270757600080fd5b61271388828901612656565b9150509295509295909350565b6000806020838503121561273357600080fd5b823567ffffffffffffffff8082111561274b57600080fd5b818501915085601f83011261275f57600080fd5b81358181111561276e57600080fd5b8660208260051b850101111561278357600080fd5b60209290920196919550909350505050565b6000602082840312156127a757600080fd5b61075d8261258b565b600082601f8301126127c157600080fd5b813560206127d161245c83612417565b8083825260208201915060208460051b8701019350868411156127f357600080fd5b602086015b8481101561249f576128098161258b565b83529183019183016127f8565b600082601f83011261282757600080fd5b8135602061283761245c83612417565b8083825260208201915060208460051b87010193508684111561285957600080fd5b602086015b8481101561249f5761286f8161261e565b835291830191830161285e565b600082601f83011261288d57600080fd5b8135602061289d61245c83612417565b82815260059290921b840181019181810190868411156128bc57600080fd5b8286015b8481101561249f57803567ffffffffffffffff8111156128e05760008081fd5b6128ee8986838b0101612656565b8452509183019183016128c0565b600080600080600060a0868803121561291457600080fd5b853567ffffffffffffffff8082111561292c57600080fd5b61293889838a016127b0565b9650602088013591508082111561294e57600080fd5b61295a89838a016127b0565b9550604088013591508082111561297057600080fd5b61297c89838a0161243b565b9450606088013591508082111561299257600080fd5b61299e89838a01612816565b935060808801359150808211156129b457600080fd5b506127138882890161287c565b600080604083850312156129d457600080fd5b82359150602083013567ffffffffffffffff8111156129f257600080fd5b61250485828601612656565b600080600060608486031215612a1357600080fd5b612a1c8461258b565b925060208401359150604084013567ffffffffffffffff811115612a3f57600080fd5b612a4b86828701612656565b9150509250925092565b60008060408385031215612a6857600080fd5b823567ffffffffffffffff80821115612a8057600080fd5b612a8c8683870161243b565b93506020850135915080821115612aa257600080fd5b506125048582860161287c565b6020808252825182820181905260009190848201906040850190845b8181101561261257835183529284019291840191600101612acb565b60008060008060808587031215612afd57600080fd5b612b068561258b565b935060208501359250612b1b6040860161261e565b9150606085013567ffffffffffffffff811115612b3757600080fd5b612b4387828801612656565b91505092959194509250565b600080600060608486031215612b6457600080fd5b833567ffffffffffffffff80821115612b7c57600080fd5b612b888783880161243b565b94506020860135915080821115612b9e57600080fd5b612baa8783880161243b565b93506040860135915080821115612bc057600080fd5b50612a4b8682870161287c565b600080600060608486031215612be257600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612a3f57600080fd5b600060208284031215612c1957600080fd5b813567ffffffffffffffff811115612c3057600080fd5b6119988482850161243b565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612c7e81846020870161236d565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112612cb557600080fd5b83018035915067ffffffffffffffff821115612cd057600080fd5b602001915036819003821315612ce557600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b03851681528360208201528215156040820152608060608201526000612d2c6080830184612391565b9695505050505050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612d6a5780818460140360031b1b83161693505b505050919050565b600181811c90821680612d8657607f821691505b60208210810361112c57634e487b7160e01b600052602260045260246000fd5b6001600160a01b03841681528215156020820152606060408201526000612dd06060830184612391565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611a8160a0830184612391565b601f821115610e56576000816000526020600020601f850160051c81016020861015612e3c5750805b601f850160051c820191505b81811015610d6157828155600101612e48565b815167ffffffffffffffff811115612e7557612e756123d0565b612e8981612e838454612d72565b84612e13565b602080601f831160018114612ebe5760008415612ea65750858301515b600019600386901b1c1916600185901b178555610d61565b600085815260208120601f198616915b82811015612eed57888601518255948401946001909101908401612ece565b5085821015612f0b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006119986040830184612391565b8051602080830151919081101561112c5760001960209190910360031b1b16919050565b8281526040602082015260006119986040830184612391565b600060208284031215612f8557600080fd5b815167ffffffffffffffff811115612f9c57600080fd5b8201601f81018413612fad57600080fd5b8051612fbb61245c8261262e565b818152856020838501011115612fd057600080fd5b612dd082602083016020860161236d565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fe576106fe612fe1565b818103818111156106fe576106fe612fe1565b634e487b7160e01b600052603160045260246000fd5b60006001820161304557613045612fe1565b506001019056fea2646970667358221220e34d1df69339376282bd47aae943bfe2eca0bb1e7abcb6c313b4f34ffe55262664736f6c63430008160033 diff --git a/artifacts/bytecode/42/drops/LSP7DropsDigitalAsset.bin b/artifacts/bytecode/42/drops/LSP7DropsDigitalAsset.bin index a0be937..d52bd68 100644 --- a/artifacts/bytecode/42/drops/LSP7DropsDigitalAsset.bin +++ b/artifacts/bytecode/42/drops/LSP7DropsDigitalAsset.bin @@ -1 +1 @@ -0x6101006040523480156200001257600080fd5b50604051620040e2380380620040e2833981016040819052620000359162000470565b838382848a8a8a60018084848483816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a09150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af4158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022491906200053a565b6200024e576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026c57506001600160a01b038216155b156200028b5760405163d92e233d60e01b815260040160405180910390fd5b600d805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a05250620006f795505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6000828152600160205260409020620003478282620005f6565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006c2565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600060e0888a0312156200048c57600080fd5b87516001600160401b0380821115620004a457600080fd5b620004b28b838c01620003c2565b985060208a0151915080821115620004c957600080fd5b50620004d88a828b01620003c2565b965050620004e96040890162000453565b9450620004f96060890162000453565b9350620005096080890162000453565b925060a0880151915060c088015163ffffffff811681146200052a57600080fd5b8091505092959891949750929550565b6000602082840312156200054d57600080fd5b815180151581146200055e57600080fd5b9392505050565b600181811c908216806200057a57607f821691505b6020821081036200059b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005f1576000816000526020600020601f850160051c81016020861015620005cc5750805b601f850160051c820191505b81811015620005ed57828155600101620005d8565b5050505b505050565b81516001600160401b0381111562000612576200061262000386565b6200062a8162000623845462000565565b84620005a1565b602080601f831160018114620006625760008415620006495750858301515b600019600386901b1c1916600185901b178555620005ed565b600085815260208120601f198616915b82811015620006935788860151825594840194600190910190840162000672565b5085821015620006b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006e38160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e0516139956200074d600039600081816103b40152611dd301526000818161070d01526120070152600081816104670152611f1f0152600081816104e20152612a2201526139956000f3fe6080604052600436106102535760003560e01c8063715018a611610138578063aad3ec96116100b0578063dedff9c61161007f578063f2fde38b11610064578063f2fde38b1461078f578063f575191e146107af578063fc618071146107c5576102c7565b8063dedff9c61461075c578063edb8d1e21461077c576102c7565b8063aad3ec96146106bb578063b49506fd146106db578063d598d4c9146106fb578063d72fc29a1461072f576102c7565b80637f23690c116101075780638da5cb5b116100ec5780638da5cb5b14610654578063942cd44b1461067257806397902421146106a8576102c7565b80637f23690c146106215780638bbd437814610634576102c7565b8063715018a6146105b6578063760d9bba146105cb57806378e97925146105eb5780637b204c4e14610601576102c7565b80633c3e8ae3116101cb57806354f6127f1161019a5780636817c76c1161017f5780636817c76c146105535780636963d4381461056957806370a0823114610596576102c7565b806354f6127f1461050657806365aeaa9514610533576102c7565b80633c3e8ae3146104555780634521748e1461049e57806351b42b00146104be57806352058d8a146104d3576102c7565b80632b47da52116102225780632bc1da82116102075780632bc1da82146103ee5780632d7667c91461040e578063313ce5671461042e576102c7565b80632b47da521461038d5780632b7ac3f3146103a2576102c7565b806301ffc9a7146103085780630f15f4c01461033d57806318160ddd14610354578063186601ca14610373576102c7565b366102c757346000036102955760405163e5099ee360e01b815260040161028c9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156102f257828260405163e5099ee360e01b815260040161028c929190612bd1565b6102fc83836107d8565b80519350602001915050f35b34801561031457600080fd5b50610328610323366004612c00565b6108e7565b60405190151581526020015b60405180910390f35b34801561034957600080fd5b50610352610934565b005b34801561036057600080fd5b506003545b604051908152602001610334565b34801561037f57600080fd5b50600d546103289060ff1681565b34801561039957600080fd5b50610365610946565b3480156103ae57600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b3480156103fa57600080fd5b50610352610409366004612d0b565b610956565b34801561041a57600080fd5b50610352610429366004612f4c565b6109ff565b34801561043a57600080fd5b50610443610b07565b60405160ff9091168152602001610334565b34801561046157600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610334565b3480156104aa57600080fd5b506103526104b936600461301e565b610b20565b3480156104ca57600080fd5b50610352610b6e565b3480156104df57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610365565b34801561051257600080fd5b50610526610521366004613066565b610bb6565b60405161033491906130cf565b34801561053f57600080fd5b5061036561054e3660046130e2565b610bc1565b34801561055f57600080fd5b50610365600b5481565b34801561057557600080fd5b50610589610584366004613161565b610c27565b60405161033491906131a3565b3480156105a257600080fd5b506103656105b1366004613207565b610d77565b3480156105c257600080fd5b50610352610d95565b3480156105d757600080fd5b506103526105e6366004613222565b610da7565b3480156105f757600080fd5b50610365600a5481565b34801561060d57600080fd5b5061035261061c366004612d0b565b610e21565b61035261062f36600461328e565b610e7a565b34801561064057600080fd5b5061035261064f3660046132d5565b610eaf565b34801561066057600080fd5b506000546001600160a01b03166103d6565b34801561067e57600080fd5b5061036561068d366004613207565b6001600160a01b03166000908152600e602052604090205490565b6103526106b6366004613307565b610f94565b3480156106c757600080fd5b506103526106d6366004613361565b611081565b3480156106e757600080fd5b506103526106f6366004612d0b565b61125d565b34801561070757600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561073b57600080fd5b5061074f61074a366004613207565b611282565b604051610334919061338b565b34801561076857600080fd5b506105896107773660046133d8565b6112a6565b61035261078a36600461341e565b611351565b34801561079b57600080fd5b506103526107aa366004613207565b611403565b3480156107bb57600080fd5b50610365600c5481565b6103526107d33660046134a8565b611457565b606060006107f16000356001600160e01b0319166114e1565b5090506001600160a01b038116610842576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161028c565b600080826001600160a01b0316348787333460405160200161086794939291906134f6565b60408051601f198184030181529082905261088191613526565b60006040518083038185875af1925050503d80600081146108be576040519150601f19603f3d011682016040523d82523d6000602084013e6108c3565b606091505b509150915081156108d85792506108e1915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fb3c4928f00000000000000000000000000000000000000000000000000000000148061092557506109258261158b565b806108e157506108e1826115c9565b61093c611607565b61094461165c565b565b600061095160085490565b905090565b60006109628433610bc1565b9050806000036109a9576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161028c565b60006109b58483613558565b90506109c533868360018761169e565b60003382856040516020016109dc9392919061356b565b60405160208183030381529060405290506109f78682611843565b505050505050565b8451845181141580610a12575083518114155b80610a1e575082518114155b80610a2a575081518114155b15610a61576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610afe57610af6878281518110610a8157610a8161359c565b6020026020010151878381518110610a9b57610a9b61359c565b6020026020010151878481518110610ab557610ab561359c565b6020026020010151878581518110610acf57610acf61359c565b6020026020010151878681518110610ae957610ae961359c565b6020026020010151610da7565b600101610a64565b50505050505050565b60025460009060ff16610b1a5750601290565b50600090565b610b2e33846000858561169e565b8115610b6957600033600083604051602001610b4c939291906135b2565b6040516020818303038152906040529050610b678482611843565b505b505050565b610b76611607565b600d5460ff161561094457600d805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b60606108e18261186e565b6000826001600160a01b0316826001600160a01b031603610bfb57506001600160a01b0381166000908152600460205260409020546108e1565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546108e1565b60608167ffffffffffffffff811115610c4257610c42612c46565b604051908082528060200260200182016040528015610c7557816020015b6060815260200190600190039081610c605790505b50905060005b82811015610d705760008030868685818110610c9957610c9961359c565b9050602002810190610cab91906135dd565b604051610cb9929190613624565b600060405180830381855af49150503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b509150915081610d4857805115610d135780518082602001fd5b6040517fb774c2840000000000000000000000000000000000000000000000000000000081526004810184905260240161028c565b80848481518110610d5b57610d5b61359c565b60209081029190910101525050600101610c7b565b5092915050565b6001600160a01b0381166000908152600460205260408120546108e1565b610d9d611607565b6109446000611910565b836001600160a01b0316856001600160a01b031603610df2576040517fb9afb00000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614610e0d57610e0d338685611996565b610e1a8585858585611a3d565b5050505050565b6000610e2d8433610bc1565b905082811015610e69576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281036109c533868360018761169e565b610e82611607565b3415610ea15760405163f36ba73760e01b815260040160405180910390fd5b610eab8282611bf2565b5050565b610eb7611607565b42841015610ef4576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161028c565b81600003610f2e576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a849055600b839055600c829055610f4681600855565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b610f9c611607565b3415610fbb5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610ff6576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003611031576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610b69576110798382815181106110525761105261359c565b602002602001015183838151811061106c5761106c61359c565b6020026020010151611bf2565b600101611034565b611089611bfc565b6001600160a01b0382166110c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611103576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600e602052604090205481811015611150576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161028c565b336000908152600e60205260408120805484929061116f908490613634565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d80600081146111bf576040519150601f19603f3d011682016040523d82523d6000602084013e6111c4565b606091505b5050905080611211576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161028c565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610eab6001600755565b61126b33848460018561169e565b6000338383604051602001610b4c9392919061356b565b6001600160a01b03811660009081526005602052604090206060906108e190611c55565b6060815167ffffffffffffffff8111156112c2576112c2612c46565b6040519080825280602002602001820160405280156112f557816020015b60608152602001906001900390816112e05790505b50905060005b825181101561134b576113268382815181106113195761131961359c565b602002602001015161186e565b8282815181106113385761133861359c565b60209081029190910101526001016112fb565b50919050565b600d5460ff1615806113645750600a5442105b1561138257604051632e8acb0d60e01b815260040160405180910390fd5b61138a611bfc565b6113e288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b9350019050604051602081830303815290604052611c62565b6113ef8585858585611d79565b6113f96001600755565b5050505050505050565b61140b611607565b6001600160a01b03811661144b576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145481611910565b50565b600d5460ff16158061146a5750600a5442105b1561148857604051632e8acb0d60e01b815260040160405180910390fd5b611490611bfc565b600854156114ca576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d78585858585611d79565b610e1a6001600755565b600080806115197fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612061565b905060006115268261186e565b9050805160141415801561153a5750805115155b1561157357806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161028c91906130cf565b61157c81613647565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806108e157506108e1826120d2565b6000806115dc6301ffc9a760e01b6114e1565b5090506001600160a01b0381166115f65750600092915050565b6116008184612120565b9392505050565b3361161a6000546001600160a01b031690565b6001600160a01b031614610944576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161028c565b600d5460ff1661094457600d805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b6001600160a01b0384166116de576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611729576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522083905582156117cb576001600160a01b038516600090815260056020526040902061177990856121be565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516117be91906130cf565b60405180910390a4610e1a565b6001600160a01b03851660009081526005602052604090206117ed90856121d3565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161183491906130cf565b60405180910390a45050505050565b610eab827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc836121e8565b600081815260016020526040902080546060919061188b90613683565b80601f01602080910402602001604051908101604052809291908181526020018280546118b790613683565b80156119045780601f106118d957610100808354040283529160200191611904565b820191906000526020600020905b8154815290600101906020018083116118e757829003601f168201915b50505050509050919050565b6000546001600160a01b0382811691161461145457600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b0380831660009081526006602090815260408083209387168352929052205480821115611a17576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015260248201839052851660448201526064810183905260840161028c565b610b678385611a268585613634565b60006040518060200160405280600081525061169e565b6001600160a01b0385161580611a5a57506001600160a01b038416155b15611a7857604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611ae4576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03871660248201526044810185905260640161028c565b611af086868685610b67565b6001600160a01b03861660009081526004602052604081208054869290611b18908490613634565b90915550506001600160a01b03851660009081526004602052604081208054869290611b45908490613558565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611b9d939291906136b7565b60405180910390a4611bb186868685610b67565b60003387878786604051602001611bcc9594939291906136d8565b6040516020818303038152906040529050611be7878261227c565b610afe8685836122a7565b610eab828261239a565b600260075403611c4e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028c565b6002600755565b60606000611600836124fa565b600854611c9b576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ca482612555565b15611cdf5781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161028c929190613712565b60008282604051602001611cf4929190613712565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050611d368460085483612596565b611d705782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161028c929190613712565b610b67836125ac565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e07828686866125ea565b6001600160a01b031614611e47576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085611e5388610d77565b611e5d9190613558565b9050600c54811115611e9e576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161028c565b6000600b5487611eae919061372b565b9050803414611eeb576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161028c565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af4158015611f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa79190613742565b9050611fb38183613634565b600e6000611fc96000546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611ff89190613558565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600e602052604081208054839290612045908490613558565b909155506120569050898984612612565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806120ca9061375b565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806108e157506301ffc9a760e01b6001600160e01b03198316146108e1565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156121a7575060208210155b80156121b35750600081115b979650505050505050565b6000611600836001600160a01b038416612672565b6000611600836001600160a01b0384166126c1565b6122026001600160a01b038416631aed5a8560e21b612120565b15610b6957604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906122359085908590600401613712565b6000604051808303816000875af1158015612254573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b67919081019061377f565b610eab827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea836121e8565b6122b883631aed5a8560e21b612120565b1561230b57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612235907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401613712565b81610b69576001600160a01b0383163b1561235d576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016123f3576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161244c576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016124a5576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206124bd8282613835565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516124ee91906130cf565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561190457602002820191906000526020600020905b8154815260200190600101908083116125365750505050509050919050565b6000806125646101008461390b565b905060006125746101008561391f565b60009283526009602052604090922054600190921b9182169091149392505050565b6000826125a385846127b4565b14949350505050565b60006125ba6101008361390b565b905060006125ca6101008461391f565b6000928352600960205260409092208054600190931b9092179091555050565b60008060006125fb878787876127f7565b91509150612608816128bb565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a2610b698383600060405180602001604052806000815250612a20565b60008181526001830160205260408120546126b9575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108e1565b5060006108e1565b600081815260018301602052604081205480156127aa5760006126e5600183613634565b85549091506000906126f990600190613634565b905081811461275e5760008660000182815481106127195761271961359c565b906000526020600020015490508087600001848154811061273c5761273c61359c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061276f5761276f613933565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108e1565b60009150506108e1565b600081815b84518110156127ef576127e5828683815181106127d8576127d861359c565b6020026020010151612a99565b91506001016127b9565b509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561282e57506000905060036128b2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612882573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ab576000600192509250506128b2565b9150600090505b94509492505050565b60008160048111156128cf576128cf613949565b036128d75750565b60018160048111156128eb576128eb613949565b036129385760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161028c565b600281600481111561294c5761294c613949565b036129995760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161028c565b60038160048111156129ad576129ad613949565b036114545760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161028c565b7f000000000000000000000000000000000000000000000000000000000000000083612a4b60035490565b612a559190613558565b1115612a8d576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b6784848484612ac8565b6000818310612ab5576000828152602084905260409020611600565b6000838152602083905260409020611600565b6001600160a01b038416612aef57604051630d2d5ec360e41b815260040160405180910390fd5b612afc6000858584610b67565b8260036000828254612b0e9190613558565b90915550506001600160a01b03841660009081526004602052604081208054859290612b3b908490613558565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690612b84908890889088906136b7565b60405180910390a4612b996000858584610b67565b6000336000868685604051602001612bb59594939291906136d8565b6040516020818303038152906040529050610e1a8584836122a7565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215612c1257600080fd5b81356001600160e01b03198116811461160057600080fd5b80356001600160a01b0381168114612c4157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612c8557612c85612c46565b604052919050565b600067ffffffffffffffff821115612ca757612ca7612c46565b50601f01601f191660200190565b600082601f830112612cc657600080fd5b8135612cd9612cd482612c8d565b612c5c565b818152846020838601011115612cee57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612d2057600080fd5b612d2984612c2a565b925060208401359150604084013567ffffffffffffffff811115612d4c57600080fd5b612d5886828701612cb5565b9150509250925092565b600067ffffffffffffffff821115612d7c57612d7c612c46565b5060051b60200190565b600082601f830112612d9757600080fd5b81356020612da7612cd483612d62565b8083825260208201915060208460051b870101935086841115612dc957600080fd5b602086015b84811015612dec57612ddf81612c2a565b8352918301918301612dce565b509695505050505050565b600082601f830112612e0857600080fd5b81356020612e18612cd483612d62565b8083825260208201915060208460051b870101935086841115612e3a57600080fd5b602086015b84811015612dec5780358352918301918301612e3f565b80358015158114612c4157600080fd5b600082601f830112612e7757600080fd5b81356020612e87612cd483612d62565b8083825260208201915060208460051b870101935086841115612ea957600080fd5b602086015b84811015612dec57612ebf81612e56565b8352918301918301612eae565b600082601f830112612edd57600080fd5b81356020612eed612cd483612d62565b82815260059290921b84018101918181019086841115612f0c57600080fd5b8286015b84811015612dec57803567ffffffffffffffff811115612f305760008081fd5b612f3e8986838b0101612cb5565b845250918301918301612f10565b600080600080600060a08688031215612f6457600080fd5b853567ffffffffffffffff80821115612f7c57600080fd5b612f8889838a01612d86565b96506020880135915080821115612f9e57600080fd5b612faa89838a01612d86565b95506040880135915080821115612fc057600080fd5b612fcc89838a01612df7565b94506060880135915080821115612fe257600080fd5b612fee89838a01612e66565b9350608088013591508082111561300457600080fd5b5061301188828901612ecc565b9150509295509295909350565b60008060006060848603121561303357600080fd5b61303c84612c2a565b925061304a60208501612e56565b9150604084013567ffffffffffffffff811115612d4c57600080fd5b60006020828403121561307857600080fd5b5035919050565b60005b8381101561309a578181015183820152602001613082565b50506000910152565b600081518084526130bb81602086016020860161307f565b601f01601f19169290920160200192915050565b60208152600061160060208301846130a3565b600080604083850312156130f557600080fd5b6130fe83612c2a565b915061310c60208401612c2a565b90509250929050565b60008083601f84011261312757600080fd5b50813567ffffffffffffffff81111561313f57600080fd5b6020830191508360208260051b850101111561315a57600080fd5b9250929050565b6000806020838503121561317457600080fd5b823567ffffffffffffffff81111561318b57600080fd5b61319785828601613115565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156131fa57603f198886030184526131e88583516130a3565b945092850192908501906001016131cc565b5092979650505050505050565b60006020828403121561321957600080fd5b61160082612c2a565b600080600080600060a0868803121561323a57600080fd5b61324386612c2a565b945061325160208701612c2a565b93506040860135925061326660608701612e56565b9150608086013567ffffffffffffffff81111561328257600080fd5b61301188828901612cb5565b600080604083850312156132a157600080fd5b82359150602083013567ffffffffffffffff8111156132bf57600080fd5b6132cb85828601612cb5565b9150509250929050565b600080600080608085870312156132eb57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561331a57600080fd5b823567ffffffffffffffff8082111561333257600080fd5b61333e86838701612df7565b9350602085013591508082111561335457600080fd5b506132cb85828601612ecc565b6000806040838503121561337457600080fd5b61337d83612c2a565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156133cc5783516001600160a01b0316835292840192918401916001016133a7565b50909695505050505050565b6000602082840312156133ea57600080fd5b813567ffffffffffffffff81111561340157600080fd5b6120ca84828501612df7565b803560ff81168114612c4157600080fd5b60008060008060008060008060e0898b03121561343a57600080fd5b883567ffffffffffffffff81111561345157600080fd5b61345d8b828c01613115565b9099509750506020890135955061347660408a01612c2a565b94506060890135935061348b60808a0161340d565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a086880312156134c057600080fd5b6134c986612c2a565b9450602086013593506134de6040870161340d565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b6000825161353881846020870161307f565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108e1576108e1613542565b6001600160a01b038416815282602082015260606040820152600061359360608301846130a3565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff8316602082015260606040820152600061359360608301846130a3565b6000808335601e198436030181126135f457600080fd5b83018035915067ffffffffffffffff82111561360f57600080fd5b60200191503681900382131561315a57600080fd5b8183823760009101908152919050565b818103818111156108e1576108e1613542565b805160208201516bffffffffffffffffffffffff19808216929190601483101561367b5780818460140360031b1b83161693505b505050919050565b600181811c9082168061369757607f821691505b60208210810361134b57634e487b7160e01b600052602260045260246000fd5b838152821515602082015260606040820152600061359360608301846130a3565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526121b360a08301846130a3565b8281526040602082015260006120ca60408301846130a3565b80820281158282048414176108e1576108e1613542565b60006020828403121561375457600080fd5b5051919050565b8051602080830151919081101561134b5760001960209190910360031b1b16919050565b60006020828403121561379157600080fd5b815167ffffffffffffffff8111156137a857600080fd5b8201601f810184136137b957600080fd5b80516137c7612cd482612c8d565b8181528560208385010111156137dc57600080fd5b61359382602083016020860161307f565b601f821115610b69576000816000526020600020601f850160051c810160208610156138165750805b601f850160051c820191505b818110156109f757828155600101613822565b815167ffffffffffffffff81111561384f5761384f612c46565b6138638161385d8454613683565b846137ed565b602080601f83116001811461389857600084156138805750858301515b600019600386901b1c1916600185901b1785556109f7565b600085815260208120601f198616915b828110156138c7578886015182559484019460019091019084016138a8565b50858210156138e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b60008261391a5761391a6138f5565b500490565b60008261392e5761392e6138f5565b500690565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea26469706673582212209019b3d92e621fa98778996f5462ab3ac919e6e93f6f50c32351a68241c2965264736f6c63430008160033 +0x6101006040523480156200001257600080fd5b506040516200420c3803806200420c833981016040819052620000359162000470565b838382848a8a8a60018084848483816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a09150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af4158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022491906200053a565b6200024e576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026c57506001600160a01b038216155b156200028b5760405163d92e233d60e01b815260040160405180910390fd5b600d805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a05250620006f795505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6000828152600160205260409020620003478282620005f6565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006c2565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600060e0888a0312156200048c57600080fd5b87516001600160401b0380821115620004a457600080fd5b620004b28b838c01620003c2565b985060208a0151915080821115620004c957600080fd5b50620004d88a828b01620003c2565b965050620004e96040890162000453565b9450620004f96060890162000453565b9350620005096080890162000453565b925060a0880151915060c088015163ffffffff811681146200052a57600080fd5b8091505092959891949750929550565b6000602082840312156200054d57600080fd5b815180151581146200055e57600080fd5b9392505050565b600181811c908216806200057a57607f821691505b6020821081036200059b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005f1576000816000526020600020601f850160051c81016020861015620005cc5750805b601f850160051c820191505b81811015620005ed57828155600101620005d8565b5050505b505050565b81516001600160401b0381111562000612576200061262000386565b6200062a8162000623845462000565565b84620005a1565b602080601f831160018114620006625760008415620006495750858301515b600019600386901b1c1916600185901b178555620005ed565b600085815260208120601f198616915b82811015620006935788860151825594840194600190910190840162000672565b5085821015620006b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006e38160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e051613abf6200074d600039600081816103b40152611ea001526000818161070d01526120d40152600081816104870152611fec0152600081816104e20152612aef0152613abf6000f3fe6080604052600436106102535760003560e01c8063715018a611610138578063aad3ec96116100b0578063dedff9c61161007f578063f2fde38b11610064578063f2fde38b1461078f578063f575191e146107af578063fc618071146107c5576102c7565b8063dedff9c61461075c578063edb8d1e21461077c576102c7565b8063aad3ec96146106bb578063b49506fd146106db578063d598d4c9146106fb578063d72fc29a1461072f576102c7565b80637f23690c116101075780638da5cb5b116100ec5780638da5cb5b14610654578063942cd44b1461067257806397902421146106a8576102c7565b80637f23690c146106215780638bbd437814610634576102c7565b8063715018a6146105b6578063760d9bba146105cb57806378381670146105eb57806378e979251461060b576102c7565b8063313ce567116101cb57806354f6127f1161019a5780636817c76c1161017f5780636817c76c146105535780636963d4381461056957806370a0823114610596576102c7565b806354f6127f1461050657806365aeaa9514610533576102c7565b8063313ce5671461044e5780633c3e8ae31461047557806351b42b00146104be57806352058d8a146104d3576102c7565b80632b47da52116102225780632bc1da82116102075780632bc1da82146103ee5780632d7667c91461040e57806330d0dc371461042e576102c7565b80632b47da521461038d5780632b7ac3f3146103a2576102c7565b806301ffc9a7146103085780630f15f4c01461033d57806318160ddd14610354578063186601ca14610373576102c7565b366102c757346000036102955760405163e5099ee360e01b815260040161028c9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156102f257828260405163e5099ee360e01b815260040161028c929190612c84565b6102fc83836107d8565b80519350602001915050f35b34801561031457600080fd5b50610328610323366004612cb3565b6108e7565b60405190151581526020015b60405180910390f35b34801561034957600080fd5b50610352610934565b005b34801561036057600080fd5b506003545b604051908152602001610334565b34801561037f57600080fd5b50600d546103289060ff1681565b34801561039957600080fd5b50610365610946565b3480156103ae57600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b3480156103fa57600080fd5b50610352610409366004612dbe565b610956565b34801561041a57600080fd5b50610352610429366004612fff565b6109ff565b34801561043a57600080fd5b506103526104493660046130d1565b610b07565b34801561045a57600080fd5b50610463610bc8565b60405160ff9091168152602001610334565b34801561048157600080fd5b506104a97f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610334565b3480156104ca57600080fd5b50610352610be1565b3480156104df57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610365565b34801561051257600080fd5b50610526610521366004613140565b610c29565b60405161033491906131a9565b34801561053f57600080fd5b5061036561054e3660046131bc565b610c34565b34801561055f57600080fd5b50610365600b5481565b34801561057557600080fd5b5061058961058436600461323b565b610c9a565b604051610334919061327d565b3480156105a257600080fd5b506103656105b13660046132e1565b610dea565b3480156105c257600080fd5b50610352610e08565b3480156105d757600080fd5b506103526105e63660046132fc565b610e1a565b3480156105f757600080fd5b50610352610606366004613368565b610e42565b34801561061757600080fd5b50610365600a5481565b61035261062f3660046133b8565b610f3f565b34801561064057600080fd5b5061035261064f3660046133ff565b610f74565b34801561066057600080fd5b506000546001600160a01b03166103d6565b34801561067e57600080fd5b5061036561068d3660046132e1565b6001600160a01b03166000908152600e602052604090205490565b6103526106b6366004613431565b611059565b3480156106c757600080fd5b506103526106d636600461348b565b61114b565b3480156106e757600080fd5b506103526106f6366004612dbe565b611327565b34801561070757600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561073b57600080fd5b5061074f61074a3660046132e1565b611367565b60405161033491906134b5565b34801561076857600080fd5b50610589610777366004613502565b61138b565b61035261078a366004613548565b611436565b34801561079b57600080fd5b506103526107aa3660046132e1565b6114e8565b3480156107bb57600080fd5b50610365600c5481565b6103526107d33660046135d2565b61153c565b606060006107f16000356001600160e01b0319166115c6565b5090506001600160a01b038116610842576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161028c565b600080826001600160a01b031634878733346040516020016108679493929190613620565b60408051601f198184030181529082905261088191613650565b60006040518083038185875af1925050503d80600081146108be576040519150601f19603f3d011682016040523d82523d6000602084013e6108c3565b606091505b509150915081156108d85792506108e1915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d6008000000000000000000000000000000000000000000000000000000001480610925575061092582611670565b806108e157506108e1826116ae565b61093c6116ec565b610944611741565b565b600061095160085490565b905090565b60006109628433610c34565b9050806000036109a9576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161028c565b60006109b58483613682565b90506109c5338683600187611783565b60003382856040516020016109dc93929190613695565b60405160208183030381529060405290506109f78682611928565b505050505050565b8451845181141580610a12575083518114155b80610a1e575082518114155b80610a2a575081518114155b15610a61576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610afe57610af6878281518110610a8157610a816136c6565b6020026020010151878381518110610a9b57610a9b6136c6565b6020026020010151878481518110610ab557610ab56136c6565b6020026020010151878581518110610acf57610acf6136c6565b6020026020010151878681518110610ae957610ae96136c6565b6020026020010151610e1a565b600101610a64565b50505050505050565b336001600160a01b03841614801590610b295750336001600160a01b03851614155b15610b79576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0380851660248301528516604482015260640161028c565b610b87838560008585611783565b8115610bc257600083600083604051602001610ba5939291906136dc565b6040516020818303038152906040529050610bc08582611928565b505b50505050565b60025460009060ff16610bdb5750601290565b50600090565b610be96116ec565b600d5460ff161561094457600d805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b60606108e182611953565b6000826001600160a01b0316826001600160a01b031603610c6e57506001600160a01b0381166000908152600460205260409020546108e1565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546108e1565b60608167ffffffffffffffff811115610cb557610cb5612cf9565b604051908082528060200260200182016040528015610ce857816020015b6060815260200190600190039081610cd35790505b50905060005b82811015610de35760008030868685818110610d0c57610d0c6136c6565b9050602002810190610d1e9190613707565b604051610d2c92919061374e565b600060405180830381855af49150503d8060008114610d67576040519150601f19603f3d011682016040523d82523d6000602084013e610d6c565b606091505b509150915081610dbb57805115610d865780518082602001fd5b6040517fb774c2840000000000000000000000000000000000000000000000000000000081526004810184905260240161028c565b80848481518110610dce57610dce6136c6565b60209081029190910101525050600101610cee565b5092915050565b6001600160a01b0381166000908152600460205260408120546108e1565b610e106116ec565b61094460006119f5565b336001600160a01b03861614610e3557610e35338685611a7b565b610bc08585858585611b22565b336001600160a01b03841614801590610e645750336001600160a01b03851614155b15610eb4576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0380851660248301528516604482015260640161028c565b6000610ec08585610c34565b905082811015610efc576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610f0d858783600187611783565b6000858285604051602001610f2493929190613695565b6040516020818303038152906040529050610afe8782611928565b610f476116ec565b3415610f665760405163f36ba73760e01b815260040160405180910390fd5b610f708282611cbf565b5050565b610f7c6116ec565b42841015610fb9576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161028c565b81600003610ff3576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a849055600b839055600c82905561100b81600855565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b6110616116ec565b34156110805760405163f36ba73760e01b815260040160405180910390fd5b80518251146110bb576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036110f6576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156111465761113e838281518110611117576111176136c6565b6020026020010151838381518110611131576111316136c6565b6020026020010151611cbf565b6001016110f9565b505050565b611153611cc9565b6001600160a01b038216611193576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036111cd576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600e60205260409020548181101561121a576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161028c565b336000908152600e60205260408120805484929061123990849061375e565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d8060008114611289576040519150601f19603f3d011682016040523d82523d6000602084013e61128e565b606091505b50509050806112db576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161028c565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610f706001600755565b611335338484600185611783565b600033838360405160200161134c93929190613695565b6040516020818303038152906040529050610bc28482611928565b6001600160a01b03811660009081526005602052604090206060906108e190611d22565b6060815167ffffffffffffffff8111156113a7576113a7612cf9565b6040519080825280602002602001820160405280156113da57816020015b60608152602001906001900390816113c55790505b50905060005b82518110156114305761140b8382815181106113fe576113fe6136c6565b6020026020010151611953565b82828151811061141d5761141d6136c6565b60209081029190910101526001016113e0565b50919050565b600d5460ff1615806114495750600a5442105b1561146757604051632e8acb0d60e01b815260040160405180910390fd5b61146f611cc9565b6114c788888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b9350019050604051602081830303815290604052611d2f565b6114d48585858585611e46565b6114de6001600755565b5050505050505050565b6114f06116ec565b6001600160a01b038116611530576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611539816119f5565b50565b600d5460ff16158061154f5750600a5442105b1561156d57604051632e8acb0d60e01b815260040160405180910390fd5b611575611cc9565b600854156115af576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc8585858585611e46565b610bc06001600755565b600080806115fe7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b0319861661212e565b9050600061160b82611953565b9050805160141415801561161f5750805115155b1561165857806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161028c91906131a9565b61166181613771565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806108e157506108e18261219f565b6000806116c16301ffc9a760e01b6115c6565b5090506001600160a01b0381166116db5750600092915050565b6116e581846121ed565b9392505050565b336116ff6000546001600160a01b031690565b6001600160a01b031614610944576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161028c565b600d5460ff1661094457600d805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b6001600160a01b0384166117c3576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b03160361180e576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522083905582156118b0576001600160a01b038516600090815260056020526040902061185e908561228b565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516118a391906131a9565b60405180910390a4610bc0565b6001600160a01b03851660009081526005602052604090206118d290856122a0565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161191991906131a9565b60405180910390a45050505050565b610f70827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc836122b5565b6000818152600160205260409020805460609190611970906137ad565b80601f016020809104026020016040519081016040528092919081815260200182805461199c906137ad565b80156119e95780601f106119be576101008083540402835291602001916119e9565b820191906000526020600020905b8154815290600101906020018083116119cc57829003601f168201915b50505050509050919050565b6000546001600160a01b0382811691161461153957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b0380831660009081526006602090815260408083209387168352929052205480821115611afc576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015260248201839052851660448201526064810183905260840161028c565b610bc28385611b0b858561375e565b600060405180602001604052806000815250611783565b6001600160a01b0385161580611b3f57506001600160a01b038416155b15611b5d57604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611bc9576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03871660248201526044810185905260640161028c565b6001600160a01b03861660009081526004602052604081208054869290611bf190849061375e565b90915550506001600160a01b03851660009081526004602052604081208054869290611c1e908490613682565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611c76939291906137e1565b60405180910390a460003387878786604051602001611c99959493929190613802565b6040516020818303038152906040529050611cb48782612349565b610afe868583612374565b610f708282612467565b600260075403611d1b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028c565b6002600755565b606060006116e5836125c7565b600854611d68576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d7182612622565b15611dac5781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161028c92919061383c565b60008282604051602001611dc192919061383c565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050611e038460085483612663565b611e3d5782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161028c92919061383c565b610bc283612679565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ed4828686866126b7565b6001600160a01b031614611f14576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085611f2088610dea565b611f2a9190613682565b9050600c54811115611f6b576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161028c565b6000600b5487611f7b9190613855565b9050803414611fb8576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161028c565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af4158015612050573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612074919061386c565b9050612080818361375e565b600e60006120966000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546120c59190613682565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600e602052604081208054839290612112908490613682565b9091555061212390508989846126df565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c8301529182910160405160208183030381529060405290508061219790613885565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806108e157506301ffc9a760e01b6001600160e01b03198316146108e1565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015612274575060208210155b80156122805750600081115b979650505050505050565b60006116e5836001600160a01b03841661273f565b60006116e5836001600160a01b03841661278e565b6122cf6001600160a01b038416631aed5a8560e21b6121ed565b1561114657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612302908590859060040161383c565b6000604051808303816000875af1158015612321573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bc291908101906138a9565b610f70827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea836122b5565b61238583631aed5a8560e21b6121ed565b156123d857604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612302907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c90859060040161383c565b81611146576001600160a01b0383163b1561242a576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016124c0576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612519576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201612572576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061258a828261395f565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516125bb91906131a9565b60405180910390a25050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156119e957602002820191906000526020600020905b8154815260200190600101908083116126035750505050509050919050565b60008061263161010084613a35565b9050600061264161010085613a49565b60009283526009602052604090922054600190921b9182169091149392505050565b6000826126708584612881565b14949350505050565b600061268761010083613a35565b9050600061269761010084613a49565b6000928352600960205260409092208054600190931b9092179091555050565b60008060006126c8878787876128c4565b915091506126d581612988565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a26111468383600060405180602001604052806000815250612aed565b6000818152600183016020526040812054612786575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108e1565b5060006108e1565b600081815260018301602052604081205480156128775760006127b260018361375e565b85549091506000906127c69060019061375e565b905081811461282b5760008660000182815481106127e6576127e66136c6565b9060005260206000200154905080876000018481548110612809576128096136c6565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061283c5761283c613a5d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108e1565b60009150506108e1565b600081815b84518110156128bc576128b2828683815181106128a5576128a56136c6565b6020026020010151612b66565b9150600101612886565b509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128fb575060009050600361297f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561294f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166129785760006001925092505061297f565b9150600090505b94509492505050565b600081600481111561299c5761299c613a73565b036129a45750565b60018160048111156129b8576129b8613a73565b03612a055760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161028c565b6002816004811115612a1957612a19613a73565b03612a665760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161028c565b6003816004811115612a7a57612a7a613a73565b036115395760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161028c565b7f000000000000000000000000000000000000000000000000000000000000000083612b1860035490565b612b229190613682565b1115612b5a576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc284848484612b95565b6000818310612b825760008281526020849052604090206116e5565b60008381526020839052604090206116e5565b6001600160a01b038416612bbc57604051630d2d5ec360e41b815260040160405180910390fd5b8260036000828254612bce9190613682565b90915550506001600160a01b03841660009081526004602052604081208054859290612bfb908490613682565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690612c44908890889088906137e1565b60405180910390a46000336000868685604051602001612c68959493929190613802565b6040516020818303038152906040529050610bc0858483612374565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215612cc557600080fd5b81356001600160e01b0319811681146116e557600080fd5b80356001600160a01b0381168114612cf457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d3857612d38612cf9565b604052919050565b600067ffffffffffffffff821115612d5a57612d5a612cf9565b50601f01601f191660200190565b600082601f830112612d7957600080fd5b8135612d8c612d8782612d40565b612d0f565b818152846020838601011115612da157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612dd357600080fd5b612ddc84612cdd565b925060208401359150604084013567ffffffffffffffff811115612dff57600080fd5b612e0b86828701612d68565b9150509250925092565b600067ffffffffffffffff821115612e2f57612e2f612cf9565b5060051b60200190565b600082601f830112612e4a57600080fd5b81356020612e5a612d8783612e15565b8083825260208201915060208460051b870101935086841115612e7c57600080fd5b602086015b84811015612e9f57612e9281612cdd565b8352918301918301612e81565b509695505050505050565b600082601f830112612ebb57600080fd5b81356020612ecb612d8783612e15565b8083825260208201915060208460051b870101935086841115612eed57600080fd5b602086015b84811015612e9f5780358352918301918301612ef2565b80358015158114612cf457600080fd5b600082601f830112612f2a57600080fd5b81356020612f3a612d8783612e15565b8083825260208201915060208460051b870101935086841115612f5c57600080fd5b602086015b84811015612e9f57612f7281612f09565b8352918301918301612f61565b600082601f830112612f9057600080fd5b81356020612fa0612d8783612e15565b82815260059290921b84018101918181019086841115612fbf57600080fd5b8286015b84811015612e9f57803567ffffffffffffffff811115612fe35760008081fd5b612ff18986838b0101612d68565b845250918301918301612fc3565b600080600080600060a0868803121561301757600080fd5b853567ffffffffffffffff8082111561302f57600080fd5b61303b89838a01612e39565b9650602088013591508082111561305157600080fd5b61305d89838a01612e39565b9550604088013591508082111561307357600080fd5b61307f89838a01612eaa565b9450606088013591508082111561309557600080fd5b6130a189838a01612f19565b935060808801359150808211156130b757600080fd5b506130c488828901612f7f565b9150509295509295909350565b600080600080608085870312156130e757600080fd5b6130f085612cdd565b93506130fe60208601612cdd565b925061310c60408601612f09565b9150606085013567ffffffffffffffff81111561312857600080fd5b61313487828801612d68565b91505092959194509250565b60006020828403121561315257600080fd5b5035919050565b60005b8381101561317457818101518382015260200161315c565b50506000910152565b60008151808452613195816020860160208601613159565b601f01601f19169290920160200192915050565b6020815260006116e5602083018461317d565b600080604083850312156131cf57600080fd5b6131d883612cdd565b91506131e660208401612cdd565b90509250929050565b60008083601f84011261320157600080fd5b50813567ffffffffffffffff81111561321957600080fd5b6020830191508360208260051b850101111561323457600080fd5b9250929050565b6000806020838503121561324e57600080fd5b823567ffffffffffffffff81111561326557600080fd5b613271858286016131ef565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156132d457603f198886030184526132c285835161317d565b945092850192908501906001016132a6565b5092979650505050505050565b6000602082840312156132f357600080fd5b6116e582612cdd565b600080600080600060a0868803121561331457600080fd5b61331d86612cdd565b945061332b60208701612cdd565b93506040860135925061334060608701612f09565b9150608086013567ffffffffffffffff81111561335c57600080fd5b6130c488828901612d68565b6000806000806080858703121561337e57600080fd5b61338785612cdd565b935061339560208601612cdd565b925060408501359150606085013567ffffffffffffffff81111561312857600080fd5b600080604083850312156133cb57600080fd5b82359150602083013567ffffffffffffffff8111156133e957600080fd5b6133f585828601612d68565b9150509250929050565b6000806000806080858703121561341557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561344457600080fd5b823567ffffffffffffffff8082111561345c57600080fd5b61346886838701612eaa565b9350602085013591508082111561347e57600080fd5b506133f585828601612f7f565b6000806040838503121561349e57600080fd5b6134a783612cdd565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156134f65783516001600160a01b0316835292840192918401916001016134d1565b50909695505050505050565b60006020828403121561351457600080fd5b813567ffffffffffffffff81111561352b57600080fd5b61219784828501612eaa565b803560ff81168114612cf457600080fd5b60008060008060008060008060e0898b03121561356457600080fd5b883567ffffffffffffffff81111561357b57600080fd5b6135878b828c016131ef565b909950975050602089013595506135a060408a01612cdd565b9450606089013593506135b560808a01613537565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a086880312156135ea57600080fd5b6135f386612cdd565b94506020860135935061360860408701613537565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251613662818460208701613159565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108e1576108e161366c565b6001600160a01b03841681528260208201526060604082015260006136bd606083018461317d565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff831660208201526060604082015260006136bd606083018461317d565b6000808335601e1984360301811261371e57600080fd5b83018035915067ffffffffffffffff82111561373957600080fd5b60200191503681900382131561323457600080fd5b8183823760009101908152919050565b818103818111156108e1576108e161366c565b805160208201516bffffffffffffffffffffffff1980821692919060148310156137a55780818460140360031b1b83161693505b505050919050565b600181811c908216806137c157607f821691505b60208210810361143057634e487b7160e01b600052602260045260246000fd5b83815282151560208201526060604082015260006136bd606083018461317d565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a0608083015261228060a083018461317d565b828152604060208201526000612197604083018461317d565b80820281158282048414176108e1576108e161366c565b60006020828403121561387e57600080fd5b5051919050565b805160208083015191908110156114305760001960209190910360031b1b16919050565b6000602082840312156138bb57600080fd5b815167ffffffffffffffff8111156138d257600080fd5b8201601f810184136138e357600080fd5b80516138f1612d8782612d40565b81815285602083850101111561390657600080fd5b6136bd826020830160208601613159565b601f821115611146576000816000526020600020601f850160051c810160208610156139405750805b601f850160051c820191505b818110156109f75782815560010161394c565b815167ffffffffffffffff81111561397957613979612cf9565b61398d8161398784546137ad565b84613917565b602080601f8311600181146139c257600084156139aa5750858301515b600019600386901b1c1916600185901b1785556109f7565b600085815260208120601f198616915b828110156139f1578886015182559484019460019091019084016139d2565b5085821015613a0f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b600082613a4457613a44613a1f565b500490565b600082613a5857613a58613a1f565b500690565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220973d16551ca78d11a5f5f799e1dfb97517e838b5fa7ea54ec59a92c171c8d57264736f6c63430008160033 diff --git a/artifacts/bytecode/42/drops/LSP7DropsLightAsset.bin b/artifacts/bytecode/42/drops/LSP7DropsLightAsset.bin index 7291420..a61867b 100644 --- a/artifacts/bytecode/42/drops/LSP7DropsLightAsset.bin +++ b/artifacts/bytecode/42/drops/LSP7DropsLightAsset.bin @@ -1 +1 @@ -0x6101206040523480156200001257600080fd5b50604051620039cb380380620039cb833981016040819052620000359162000470565b84848483858c8c8c60018084848483816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a19150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af4158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022591906200054d565b6200024f576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026d57506001600160a01b038216155b156200028c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c052506200070a9650505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b600082815260016020526040902062000347828262000609565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006d5565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600080610100898b0312156200048e57600080fd5b88516001600160401b0380821115620004a657600080fd5b620004b48c838d01620003c2565b995060208b0151915080821115620004cb57600080fd5b50620004da8b828c01620003c2565b975050620004eb60408a0162000453565b9550620004fb60608a0162000453565b94506200050b60808a0162000453565b93506200051b60a08a0162000453565b925060c0890151915060e089015163ffffffff811681146200053c57600080fd5b809150509295985092959890939650565b6000602082840312156200056057600080fd5b815180151581146200057157600080fd5b9392505050565b600181811c908216806200058d57607f821691505b602082108103620005ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000604576000816000526020600020601f850160051c81016020861015620005df5750805b601f850160051c820191505b818110156200060057828155600101620005eb565b5050505b505050565b81516001600160401b0381111562000625576200062562000386565b6200063d8162000636845462000578565b84620005b4565b602080601f8311600181146200067557600084156200065c5750858301515b600019600386901b1c1916600185901b17855562000600565b600085815260208120601f198616915b82811015620006a65788860151825594840194600190910190840162000685565b5085821015620006c55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006f68160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e0516101005161325962000772600039600081816102e101526111e201526000818161060f01526113750152600081816103ca015261128a015260008181610396015261132801526000818161043001526122e601526132596000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063aad3ec9611610095578063dedff9c611610064578063dedff9c61461065e578063f2fde38b1461067e578063f31a4faf1461069e578063fc618071146106d45761023a565b8063aad3ec96146105bd578063b49506fd146105dd578063d598d4c9146105fd578063d72fc29a146106315761023a565b80637f23690c116100d15780637f23690c146105435780638da5cb5b14610556578063942cd44b1461057457806397902421146105aa5761023a565b8063715018a6146104ee578063760d9bba146105035780637b204c4e146105235761023a565b80633c3e8ae31161016457806354f6127f1161013e57806354f6127f1461045457806365aeaa95146104815780636963d438146104a157806370a08231146104ce5761023a565b80633c3e8ae3146103b85780634521748e1461040157806352058d8a146104215761023a565b80632bc1da82116101a05780632bc1da821461031b5780632d7667c91461033d578063313ce5671461035d57806338af3eed146103845761023a565b806301ffc9a71461027b57806318160ddd146102b05780632b7ac3f3146102cf5761023a565b3661023a57346000036102085760405163e5099ee360e01b81526004016101ff9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561026557828260405163e5099ee360e01b81526004016101ff9291906125a8565b61026f83836106e7565b80519350602001915050f35b34801561028757600080fd5b5061029b6102963660046125d7565b6107f6565b60405190151581526020015b60405180910390f35b3480156102bc57600080fd5b506003545b6040519081526020016102a7565b3480156102db57600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a7565b34801561032757600080fd5b5061033b6103363660046126e2565b610843565b005b34801561034957600080fd5b5061033b610358366004612923565b6108ec565b34801561036957600080fd5b506103726109f4565b60405160ff90911681526020016102a7565b34801561039057600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c457600080fd5b506103ec7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102a7565b34801561040d57600080fd5b5061033b61041c3660046129f5565b610a0d565b34801561042d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102c1565b34801561046057600080fd5b5061047461046f366004612a3d565b610a5b565b6040516102a79190612aa6565b34801561048d57600080fd5b506102c161049c366004612ab9565b610a66565b3480156104ad57600080fd5b506104c16104bc366004612aec565b610acc565b6040516102a79190612b61565b3480156104da57600080fd5b506102c16104e9366004612bc5565b610c1c565b3480156104fa57600080fd5b5061033b610c3a565b34801561050f57600080fd5b5061033b61051e366004612be0565b610c4e565b34801561052f57600080fd5b5061033b61053e3660046126e2565b610cc8565b61033b610551366004612c4c565b610d21565b34801561056257600080fd5b506000546001600160a01b0316610303565b34801561058057600080fd5b506102c161058f366004612bc5565b6001600160a01b031660009081526008602052604090205490565b61033b6105b8366004612c93565b610d56565b3480156105c957600080fd5b5061033b6105d8366004612ced565b610e43565b3480156105e957600080fd5b5061033b6105f83660046126e2565b61101f565b34801561060957600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b34801561063d57600080fd5b5061065161064c366004612bc5565b611044565b6040516102a79190612d17565b34801561066a57600080fd5b506104c1610679366004612d64565b611068565b34801561068a57600080fd5b5061033b610699366004612bc5565b611113565b3480156106aa57600080fd5b506102c16106b9366004612bc5565b6001600160a01b031660009081526009602052604090205490565b61033b6106e2366004612d99565b611167565b606060006107006000356001600160e01b0319166113d1565b5090506001600160a01b038116610751576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101ff565b600080826001600160a01b031634878733346040516020016107769493929190612def565b60408051601f198184030181529082905261079091612e1f565b60006040518083038185875af1925050503d80600081146107cd576040519150601f19603f3d011682016040523d82523d6000602084013e6107d2565b606091505b509150915081156107e75792506107f0915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fb3c4928f00000000000000000000000000000000000000000000000000000000148061083457506108348261147b565b806107f057506107f0826114b9565b600061084f8433610a66565b905080600003610896576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101ff565b60006108a28483612e51565b90506108b23386836001876114f7565b60003382856040516020016108c993929190612e64565b60405160208183030381529060405290506108e4868261169c565b505050505050565b84518451811415806108ff575083518114155b8061090b575082518114155b80610917575081518114155b1561094e576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109eb576109e387828151811061096e5761096e612e95565b602002602001015187838151811061098857610988612e95565b60200260200101518784815181106109a2576109a2612e95565b60200260200101518785815181106109bc576109bc612e95565b60200260200101518786815181106109d6576109d6612e95565b6020026020010151610c4e565b600101610951565b50505050505050565b60025460009060ff16610a075750601290565b50600090565b610a1b3384600085856114f7565b8115610a5657600033600083604051602001610a3993929190612eab565b6040516020818303038152906040529050610a54848261169c565b505b505050565b60606107f0826116c7565b6000826001600160a01b0316826001600160a01b031603610aa057506001600160a01b0381166000908152600460205260409020546107f0565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546107f0565b60608167ffffffffffffffff811115610ae757610ae761261d565b604051908082528060200260200182016040528015610b1a57816020015b6060815260200190600190039081610b055790505b50905060005b82811015610c155760008030868685818110610b3e57610b3e612e95565b9050602002810190610b509190612ed6565b604051610b5e929190612f24565b600060405180830381855af49150503d8060008114610b99576040519150601f19603f3d011682016040523d82523d6000602084013e610b9e565b606091505b509150915081610bed57805115610bb85780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101ff565b80848481518110610c0057610c00612e95565b60209081029190910101525050600101610b20565b5092915050565b6001600160a01b0381166000908152600460205260408120546107f0565b610c42611769565b610c4c60006117be565b565b836001600160a01b0316856001600160a01b031603610c99576040517fb9afb00000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614610cb457610cb4338685611844565b610cc185858585856118eb565b5050505050565b6000610cd48433610a66565b905082811015610d10576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281036108b23386836001876114f7565b610d29611769565b3415610d485760405163f36ba73760e01b815260040160405180910390fd5b610d528282611aa0565b5050565b610d5e611769565b3415610d7d5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610db8576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610df3576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610a5657610e3b838281518110610e1457610e14612e95565b6020026020010151838381518110610e2e57610e2e612e95565b6020026020010151611aa0565b600101610df6565b610e4b611aaa565b6001600160a01b038216610e8b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610ec5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526008602052604090205481811015610f12576040517fffb97f81000000000000000000000000000000000000000000000000000000008152600481018390526024016101ff565b3360009081526008602052604081208054849290610f31908490612f34565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d8060008114610f81576040519150601f19603f3d011682016040523d82523d6000602084013e610f86565b606091505b5050905080610fd3576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018490526044016101ff565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610d526001600755565b61102d3384846001856114f7565b6000338383604051602001610a3993929190612e64565b6001600160a01b03811660009081526005602052604090206060906107f090611b03565b6060815167ffffffffffffffff8111156110845761108461261d565b6040519080825280602002602001820160405280156110b757816020015b60608152602001906001900390816110a25790505b50905060005b825181101561110d576110e88382815181106110db576110db612e95565b60200260200101516116c7565b8282815181106110fa576110fa612e95565b60209081029190910101526001016110bd565b50919050565b61111b611769565b6001600160a01b03811661115b576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611164816117be565b50565b61116f611aaa565b34600030468861117e81611b10565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661121682878787611b3f565b6001600160a01b031614611256576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af41580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113129190612f47565b905061131e8184612f34565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526008602052604081208054909190611366908490612e51565b90915550506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260086020526040812080548392906113b3908490612e51565b909155506113c49050888885611b67565b505050610cc16001600755565b600080806114097fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611bc7565b90506000611416826116c7565b9050805160141415801561142a5750805115155b1561146357806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101ff9190612aa6565b61146c81612f60565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806107f057506107f082611c38565b6000806114cc6301ffc9a760e01b6113d1565b5090506001600160a01b0381166114e65750600092915050565b6114f08184611c86565b9392505050565b6001600160a01b038416611537576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611582576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083209388168352929052208390558215611624576001600160a01b03851660009081526005602052604090206115d29085611d24565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516116179190612aa6565b60405180910390a4610cc1565b6001600160a01b03851660009081526005602052604090206116469085611d39565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161168d9190612aa6565b60405180910390a45050505050565b610d52827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611d4e565b60008181526001602052604090208054606091906116e490612f9c565b80601f016020809104026020016040519081016040528092919081815260200182805461171090612f9c565b801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b50505050509050919050565b3361177c6000546001600160a01b031690565b6001600160a01b031614610c4c576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101ff565b6000546001600160a01b0382811691161461116457600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156118c5576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101ff565b610a5483856118d48585612f34565b6000604051806020016040528060008152506114f7565b6001600160a01b038516158061190857506001600160a01b038416155b1561192657604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611992576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101ff565b61199e86868685610a54565b6001600160a01b038616600090815260046020526040812080548692906119c6908490612f34565b90915550506001600160a01b038516600090815260046020526040812080548692906119f3908490612e51565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611a4b93929190612fd0565b60405180910390a4611a5f86868685610a54565b60003387878786604051602001611a7a959493929190612ff1565b6040516020818303038152906040529050611a958782611de2565b6109eb868583611e0d565b610d528282611f00565b600260075403611afc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ff565b6002600755565b606060006114f083612060565b6001600160a01b038116600090815260096020526040812080549082611b358361302b565b9091555092915050565b6000806000611b50878787876120bb565b91509150611b5d8161217f565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a2610a5683836001604051806020016040528060008152506122e4565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611c3090613044565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806107f057506301ffc9a760e01b6001600160e01b03198316146107f0565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611d0d575060208210155b8015611d195750600081115b979650505050505050565b60006114f0836001600160a01b03841661235d565b60006114f0836001600160a01b0384166123ac565b611d686001600160a01b038416631aed5a8560e21b611c86565b15610a5657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611d9b9085908590600401613068565b6000604051808303816000875af1158015611dba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a549190810190613081565b610d52827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611d4e565b611e1e83631aed5a8560e21b611c86565b15611e7157604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611d9b907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401613068565b81610a56576001600160a01b0383163b15611ec3576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201611f59576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201611fb2576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d820161200b576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206120238282613137565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516120549190612aa6565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561175d57602002820191906000526020600020905b81548152602001906001019080831161209c5750505050509050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120f25750600090506003612176565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612146573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661216f57600060019250925050612176565b9150600090505b94509492505050565b6000816004811115612193576121936131f7565b0361219b5750565b60018160048111156121af576121af6131f7565b036121fc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101ff565b6002816004811115612210576122106131f7565b0361225d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101ff565b6003816004811115612271576122716131f7565b036111645760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016101ff565b7f00000000000000000000000000000000000000000000000000000000000000008361230f60035490565b6123199190612e51565b1115612351576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a548484848461249f565b60008181526001830160205260408120546123a4575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f0565b5060006107f0565b600081815260018301602052604081205480156124955760006123d0600183612f34565b85549091506000906123e490600190612f34565b905081811461244957600086600001828154811061240457612404612e95565b906000526020600020015490508087600001848154811061242757612427612e95565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245a5761245a61320d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f0565b60009150506107f0565b6001600160a01b0384166124c657604051630d2d5ec360e41b815260040160405180910390fd5b6124d36000858584610a54565b82600360008282546124e59190612e51565b90915550506001600160a01b03841660009081526004602052604081208054859290612512908490612e51565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a69061255b90889088908890612fd0565b60405180910390a46125706000858584610a54565b600033600086868560405160200161258c959493929190612ff1565b6040516020818303038152906040529050610cc1858483611e0d565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156125e957600080fd5b81356001600160e01b0319811681146114f057600080fd5b80356001600160a01b038116811461261857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561265c5761265c61261d565b604052919050565b600067ffffffffffffffff82111561267e5761267e61261d565b50601f01601f191660200190565b600082601f83011261269d57600080fd5b81356126b06126ab82612664565b612633565b8181528460208386010111156126c557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156126f757600080fd5b61270084612601565b925060208401359150604084013567ffffffffffffffff81111561272357600080fd5b61272f8682870161268c565b9150509250925092565b600067ffffffffffffffff8211156127535761275361261d565b5060051b60200190565b600082601f83011261276e57600080fd5b8135602061277e6126ab83612739565b8083825260208201915060208460051b8701019350868411156127a057600080fd5b602086015b848110156127c3576127b681612601565b83529183019183016127a5565b509695505050505050565b600082601f8301126127df57600080fd5b813560206127ef6126ab83612739565b8083825260208201915060208460051b87010193508684111561281157600080fd5b602086015b848110156127c35780358352918301918301612816565b8035801515811461261857600080fd5b600082601f83011261284e57600080fd5b8135602061285e6126ab83612739565b8083825260208201915060208460051b87010193508684111561288057600080fd5b602086015b848110156127c3576128968161282d565b8352918301918301612885565b600082601f8301126128b457600080fd5b813560206128c46126ab83612739565b82815260059290921b840181019181810190868411156128e357600080fd5b8286015b848110156127c357803567ffffffffffffffff8111156129075760008081fd5b6129158986838b010161268c565b8452509183019183016128e7565b600080600080600060a0868803121561293b57600080fd5b853567ffffffffffffffff8082111561295357600080fd5b61295f89838a0161275d565b9650602088013591508082111561297557600080fd5b61298189838a0161275d565b9550604088013591508082111561299757600080fd5b6129a389838a016127ce565b945060608801359150808211156129b957600080fd5b6129c589838a0161283d565b935060808801359150808211156129db57600080fd5b506129e8888289016128a3565b9150509295509295909350565b600080600060608486031215612a0a57600080fd5b612a1384612601565b9250612a216020850161282d565b9150604084013567ffffffffffffffff81111561272357600080fd5b600060208284031215612a4f57600080fd5b5035919050565b60005b83811015612a71578181015183820152602001612a59565b50506000910152565b60008151808452612a92816020860160208601612a56565b601f01601f19169290920160200192915050565b6020815260006114f06020830184612a7a565b60008060408385031215612acc57600080fd5b612ad583612601565b9150612ae360208401612601565b90509250929050565b60008060208385031215612aff57600080fd5b823567ffffffffffffffff80821115612b1757600080fd5b818501915085601f830112612b2b57600080fd5b813581811115612b3a57600080fd5b8660208260051b8501011115612b4f57600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612bb857603f19888603018452612ba6858351612a7a565b94509285019290850190600101612b8a565b5092979650505050505050565b600060208284031215612bd757600080fd5b6114f082612601565b600080600080600060a08688031215612bf857600080fd5b612c0186612601565b9450612c0f60208701612601565b935060408601359250612c246060870161282d565b9150608086013567ffffffffffffffff811115612c4057600080fd5b6129e88882890161268c565b60008060408385031215612c5f57600080fd5b82359150602083013567ffffffffffffffff811115612c7d57600080fd5b612c898582860161268c565b9150509250929050565b60008060408385031215612ca657600080fd5b823567ffffffffffffffff80821115612cbe57600080fd5b612cca868387016127ce565b93506020850135915080821115612ce057600080fd5b50612c89858286016128a3565b60008060408385031215612d0057600080fd5b612d0983612601565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015612d585783516001600160a01b031683529284019291840191600101612d33565b50909695505050505050565b600060208284031215612d7657600080fd5b813567ffffffffffffffff811115612d8d57600080fd5b611c30848285016127ce565b600080600080600060a08688031215612db157600080fd5b612dba86612601565b945060208601359350604086013560ff81168114612dd757600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612e31818460208701612a56565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107f0576107f0612e3b565b6001600160a01b0384168152826020820152606060408201526000612e8c6060830184612a7a565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612e8c6060830184612a7a565b6000808335601e19843603018112612eed57600080fd5b83018035915067ffffffffffffffff821115612f0857600080fd5b602001915036819003821315612f1d57600080fd5b9250929050565b8183823760009101908152919050565b818103818111156107f0576107f0612e3b565b600060208284031215612f5957600080fd5b5051919050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612f945780818460140360031b1b83161693505b505050919050565b600181811c90821680612fb057607f821691505b60208210810361110d57634e487b7160e01b600052602260045260246000fd5b8381528215156020820152606060408201526000612e8c6060830184612a7a565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611d1960a0830184612a7a565b60006001820161303d5761303d612e3b565b5060010190565b8051602080830151919081101561110d5760001960209190910360031b1b16919050565b828152604060208201526000611c306040830184612a7a565b60006020828403121561309357600080fd5b815167ffffffffffffffff8111156130aa57600080fd5b8201601f810184136130bb57600080fd5b80516130c96126ab82612664565b8181528560208385010111156130de57600080fd5b612e8c826020830160208601612a56565b601f821115610a56576000816000526020600020601f850160051c810160208610156131185750805b601f850160051c820191505b818110156108e457828155600101613124565b815167ffffffffffffffff8111156131515761315161261d565b6131658161315f8454612f9c565b846130ef565b602080601f83116001811461319a57600084156131825750858301515b600019600386901b1c1916600185901b1785556108e4565b600085815260208120601f198616915b828110156131c9578886015182559484019460019091019084016131aa565b50858210156131e75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220b12b71f2be7d5fe590c7e54aa45f049cd1721f4148215afc6bebd0aece2f357364736f6c63430008160033 +0x6101206040523480156200001257600080fd5b5060405162003af538038062003af5833981016040819052620000359162000470565b84848483858c8c8c60018084848483816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a19150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af4158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022591906200054d565b6200024f576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026d57506001600160a01b038216155b156200028c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c052506200070a9650505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b600082815260016020526040902062000347828262000609565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006d5565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600080610100898b0312156200048e57600080fd5b88516001600160401b0380821115620004a657600080fd5b620004b48c838d01620003c2565b995060208b0151915080821115620004cb57600080fd5b50620004da8b828c01620003c2565b975050620004eb60408a0162000453565b9550620004fb60608a0162000453565b94506200050b60808a0162000453565b93506200051b60a08a0162000453565b925060c0890151915060e089015163ffffffff811681146200053c57600080fd5b809150509295985092959890939650565b6000602082840312156200056057600080fd5b815180151581146200057157600080fd5b9392505050565b600181811c908216806200058d57607f821691505b602082108103620005ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000604576000816000526020600020601f850160051c81016020861015620005df5750805b601f850160051c820191505b818110156200060057828155600101620005eb565b5050505b505050565b81516001600160401b0381111562000625576200062562000386565b6200063d8162000636845462000578565b84620005b4565b602080601f8311600181146200067557600084156200065c5750858301515b600019600386901b1c1916600185901b17855562000600565b600085815260208120601f198616915b82811015620006a65788860151825594840194600190910190840162000685565b5085821015620006c55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006f68160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e0516101005161338362000772600039600081816102e101526112c701526000818161060f015261145a0152600081816103ea015261136f0152600081816103b6015261140d01526000818161043001526123b301526133836000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063aad3ec9611610095578063dedff9c611610064578063dedff9c61461065e578063f2fde38b1461067e578063f31a4faf1461069e578063fc618071146106d45761023a565b8063aad3ec96146105bd578063b49506fd146105dd578063d598d4c9146105fd578063d72fc29a146106315761023a565b80637f23690c116100d15780637f23690c146105435780638da5cb5b14610556578063942cd44b1461057457806397902421146105aa5761023a565b8063715018a6146104ee578063760d9bba1461050357806378381670146105235761023a565b806338af3eed1161016457806354f6127f1161013e57806354f6127f1461045457806365aeaa95146104815780636963d438146104a157806370a08231146104ce5761023a565b806338af3eed146103a45780633c3e8ae3146103d857806352058d8a146104215761023a565b80632bc1da82116101a05780632bc1da821461031b5780632d7667c91461033d57806330d0dc371461035d578063313ce5671461037d5761023a565b806301ffc9a71461027b57806318160ddd146102b05780632b7ac3f3146102cf5761023a565b3661023a57346000036102085760405163e5099ee360e01b81526004016101ff9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561026557828260405163e5099ee360e01b81526004016101ff92919061265b565b61026f83836106e7565b80519350602001915050f35b34801561028757600080fd5b5061029b61029636600461268a565b6107f6565b60405190151581526020015b60405180910390f35b3480156102bc57600080fd5b506003545b6040519081526020016102a7565b3480156102db57600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a7565b34801561032757600080fd5b5061033b610336366004612795565b610843565b005b34801561034957600080fd5b5061033b6103583660046129d6565b6108ec565b34801561036957600080fd5b5061033b610378366004612aa8565b6109f4565b34801561038957600080fd5b50610392610ab5565b60405160ff90911681526020016102a7565b3480156103b057600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e457600080fd5b5061040c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102a7565b34801561042d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102c1565b34801561046057600080fd5b5061047461046f366004612b17565b610ace565b6040516102a79190612b80565b34801561048d57600080fd5b506102c161049c366004612b93565b610ad9565b3480156104ad57600080fd5b506104c16104bc366004612bc6565b610b3f565b6040516102a79190612c3b565b3480156104da57600080fd5b506102c16104e9366004612c9f565b610c8f565b3480156104fa57600080fd5b5061033b610cad565b34801561050f57600080fd5b5061033b61051e366004612cba565b610cc1565b34801561052f57600080fd5b5061033b61053e366004612d26565b610ce9565b61033b610551366004612d76565b610de6565b34801561056257600080fd5b506000546001600160a01b0316610303565b34801561058057600080fd5b506102c161058f366004612c9f565b6001600160a01b031660009081526008602052604090205490565b61033b6105b8366004612dbd565b610e1b565b3480156105c957600080fd5b5061033b6105d8366004612e17565b610f0d565b3480156105e957600080fd5b5061033b6105f8366004612795565b6110e9565b34801561060957600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b34801561063d57600080fd5b5061065161064c366004612c9f565b611129565b6040516102a79190612e41565b34801561066a57600080fd5b506104c1610679366004612e8e565b61114d565b34801561068a57600080fd5b5061033b610699366004612c9f565b6111f8565b3480156106aa57600080fd5b506102c16106b9366004612c9f565b6001600160a01b031660009081526009602052604090205490565b61033b6106e2366004612ec3565b61124c565b606060006107006000356001600160e01b0319166114b6565b5090506001600160a01b038116610751576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101ff565b600080826001600160a01b031634878733346040516020016107769493929190612f19565b60408051601f198184030181529082905261079091612f49565b60006040518083038185875af1925050503d80600081146107cd576040519150601f19603f3d011682016040523d82523d6000602084013e6107d2565b606091505b509150915081156107e75792506107f0915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d6008000000000000000000000000000000000000000000000000000000001480610834575061083482611560565b806107f057506107f08261159e565b600061084f8433610ad9565b905080600003610896576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101ff565b60006108a28483612f7b565b90506108b23386836001876115dc565b60003382856040516020016108c993929190612f8e565b60405160208183030381529060405290506108e48682611781565b505050505050565b84518451811415806108ff575083518114155b8061090b575082518114155b80610917575081518114155b1561094e576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109eb576109e387828151811061096e5761096e612fbf565b602002602001015187838151811061098857610988612fbf565b60200260200101518784815181106109a2576109a2612fbf565b60200260200101518785815181106109bc576109bc612fbf565b60200260200101518786815181106109d6576109d6612fbf565b6020026020010151610cc1565b600101610951565b50505050505050565b336001600160a01b03841614801590610a165750336001600160a01b03851614155b15610a66576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101ff565b610a748385600085856115dc565b8115610aaf57600083600083604051602001610a9293929190612fd5565b6040516020818303038152906040529050610aad8582611781565b505b50505050565b60025460009060ff16610ac85750601290565b50600090565b60606107f0826117ac565b6000826001600160a01b0316826001600160a01b031603610b1357506001600160a01b0381166000908152600460205260409020546107f0565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546107f0565b60608167ffffffffffffffff811115610b5a57610b5a6126d0565b604051908082528060200260200182016040528015610b8d57816020015b6060815260200190600190039081610b785790505b50905060005b82811015610c885760008030868685818110610bb157610bb1612fbf565b9050602002810190610bc39190613000565b604051610bd192919061304e565b600060405180830381855af49150503d8060008114610c0c576040519150601f19603f3d011682016040523d82523d6000602084013e610c11565b606091505b509150915081610c6057805115610c2b5780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101ff565b80848481518110610c7357610c73612fbf565b60209081029190910101525050600101610b93565b5092915050565b6001600160a01b0381166000908152600460205260408120546107f0565b610cb561184e565b610cbf60006118a3565b565b336001600160a01b03861614610cdc57610cdc338685611929565b610aad85858585856119d0565b336001600160a01b03841614801590610d0b5750336001600160a01b03851614155b15610d5b576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101ff565b6000610d678585610ad9565b905082811015610da3576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610db48587836001876115dc565b6000858285604051602001610dcb93929190612f8e565b60405160208183030381529060405290506109eb8782611781565b610dee61184e565b3415610e0d5760405163f36ba73760e01b815260040160405180910390fd5b610e178282611b6d565b5050565b610e2361184e565b3415610e425760405163f36ba73760e01b815260040160405180910390fd5b8051825114610e7d576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610eb8576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610f0857610f00838281518110610ed957610ed9612fbf565b6020026020010151838381518110610ef357610ef3612fbf565b6020026020010151611b6d565b600101610ebb565b505050565b610f15611b77565b6001600160a01b038216610f55576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610f8f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526008602052604090205481811015610fdc576040517fffb97f81000000000000000000000000000000000000000000000000000000008152600481018390526024016101ff565b3360009081526008602052604081208054849290610ffb90849061305e565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461104b576040519150601f19603f3d011682016040523d82523d6000602084013e611050565b606091505b505090508061109d576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018490526044016101ff565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610e176001600755565b6110f73384846001856115dc565b600033838360405160200161110e93929190612f8e565b6040516020818303038152906040529050610aaf8482611781565b6001600160a01b03811660009081526005602052604090206060906107f090611bd0565b6060815167ffffffffffffffff811115611169576111696126d0565b60405190808252806020026020018201604052801561119c57816020015b60608152602001906001900390816111875790505b50905060005b82518110156111f2576111cd8382815181106111c0576111c0612fbf565b60200260200101516117ac565b8282815181106111df576111df612fbf565b60209081029190910101526001016111a2565b50919050565b61120061184e565b6001600160a01b038116611240576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611249816118a3565b50565b611254611b77565b34600030468861126381611bdd565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112fb82878787611c0c565b6001600160a01b03161461133b576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af41580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f79190613071565b9050611403818461305e565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600860205260408120805490919061144b908490612f7b565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526008602052604081208054839290611498908490612f7b565b909155506114a99050888885611c34565b505050610aad6001600755565b600080806114ee7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611c94565b905060006114fb826117ac565b9050805160141415801561150f5750805115155b1561154857806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101ff9190612b80565b6115518161308a565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806107f057506107f082611d05565b6000806115b16301ffc9a760e01b6114b6565b5090506001600160a01b0381166115cb5750600092915050565b6115d58184611d53565b9392505050565b6001600160a01b03841661161c576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611667576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083209388168352929052208390558215611709576001600160a01b03851660009081526005602052604090206116b79085611df1565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516116fc9190612b80565b60405180910390a4610aad565b6001600160a01b038516600090815260056020526040902061172b9085611e06565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd4167846040516117729190612b80565b60405180910390a45050505050565b610e17827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611e1b565b60008181526001602052604090208054606091906117c9906130c6565b80601f01602080910402602001604051908101604052809291908181526020018280546117f5906130c6565b80156118425780601f1061181757610100808354040283529160200191611842565b820191906000526020600020905b81548152906001019060200180831161182557829003601f168201915b50505050509050919050565b336118616000546001600160a01b031690565b6001600160a01b031614610cbf576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101ff565b6000546001600160a01b0382811691161461124957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156119aa576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101ff565b610aaf83856119b9858561305e565b6000604051806020016040528060008152506115dc565b6001600160a01b03851615806119ed57506001600160a01b038416155b15611a0b57604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611a77576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101ff565b6001600160a01b03861660009081526004602052604081208054869290611a9f90849061305e565b90915550506001600160a01b03851660009081526004602052604081208054869290611acc908490612f7b565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611b24939291906130fa565b60405180910390a460003387878786604051602001611b4795949392919061311b565b6040516020818303038152906040529050611b628782611eaf565b6109eb868583611eda565b610e178282611fcd565b600260075403611bc95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ff565b6002600755565b606060006115d58361212d565b6001600160a01b038116600090815260096020526040812080549082611c0283613155565b9091555092915050565b6000806000611c1d87878787612188565b91509150611c2a8161224c565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a2610f0883836001604051806020016040528060008152506123b1565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611cfd9061316e565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806107f057506301ffc9a760e01b6001600160e01b03198316146107f0565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611dda575060208210155b8015611de65750600081115b979650505050505050565b60006115d5836001600160a01b03841661242a565b60006115d5836001600160a01b038416612479565b611e356001600160a01b038416631aed5a8560e21b611d53565b15610f0857604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611e689085908590600401613192565b6000604051808303816000875af1158015611e87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aaf91908101906131ab565b610e17827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611e1b565b611eeb83631aed5a8560e21b611d53565b15611f3e57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611e68907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401613192565b81610f08576001600160a01b0383163b15611f90576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612026576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161207f576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016120d8576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206120f08282613261565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516121219190612b80565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561184257602002820191906000526020600020905b8154815260200190600101908083116121695750505050509050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156121bf5750600090506003612243565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612213573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661223c57600060019250925050612243565b9150600090505b94509492505050565b600081600481111561226057612260613321565b036122685750565b600181600481111561227c5761227c613321565b036122c95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101ff565b60028160048111156122dd576122dd613321565b0361232a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101ff565b600381600481111561233e5761233e613321565b036112495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016101ff565b7f0000000000000000000000000000000000000000000000000000000000000000836123dc60035490565b6123e69190612f7b565b111561241e576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aaf8484848461256c565b6000818152600183016020526040812054612471575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f0565b5060006107f0565b6000818152600183016020526040812054801561256257600061249d60018361305e565b85549091506000906124b19060019061305e565b90508181146125165760008660000182815481106124d1576124d1612fbf565b90600052602060002001549050808760000184815481106124f4576124f4612fbf565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061252757612527613337565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f0565b60009150506107f0565b6001600160a01b03841661259357604051630d2d5ec360e41b815260040160405180910390fd5b82600360008282546125a59190612f7b565b90915550506001600160a01b038416600090815260046020526040812080548592906125d2908490612f7b565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a69061261b908890889088906130fa565b60405180910390a4600033600086868560405160200161263f95949392919061311b565b6040516020818303038152906040529050610aad858483611eda565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561269c57600080fd5b81356001600160e01b0319811681146115d557600080fd5b80356001600160a01b03811681146126cb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561270f5761270f6126d0565b604052919050565b600067ffffffffffffffff821115612731576127316126d0565b50601f01601f191660200190565b600082601f83011261275057600080fd5b813561276361275e82612717565b6126e6565b81815284602083860101111561277857600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156127aa57600080fd5b6127b3846126b4565b925060208401359150604084013567ffffffffffffffff8111156127d657600080fd5b6127e28682870161273f565b9150509250925092565b600067ffffffffffffffff821115612806576128066126d0565b5060051b60200190565b600082601f83011261282157600080fd5b8135602061283161275e836127ec565b8083825260208201915060208460051b87010193508684111561285357600080fd5b602086015b8481101561287657612869816126b4565b8352918301918301612858565b509695505050505050565b600082601f83011261289257600080fd5b813560206128a261275e836127ec565b8083825260208201915060208460051b8701019350868411156128c457600080fd5b602086015b8481101561287657803583529183019183016128c9565b803580151581146126cb57600080fd5b600082601f83011261290157600080fd5b8135602061291161275e836127ec565b8083825260208201915060208460051b87010193508684111561293357600080fd5b602086015b8481101561287657612949816128e0565b8352918301918301612938565b600082601f83011261296757600080fd5b8135602061297761275e836127ec565b82815260059290921b8401810191818101908684111561299657600080fd5b8286015b8481101561287657803567ffffffffffffffff8111156129ba5760008081fd5b6129c88986838b010161273f565b84525091830191830161299a565b600080600080600060a086880312156129ee57600080fd5b853567ffffffffffffffff80821115612a0657600080fd5b612a1289838a01612810565b96506020880135915080821115612a2857600080fd5b612a3489838a01612810565b95506040880135915080821115612a4a57600080fd5b612a5689838a01612881565b94506060880135915080821115612a6c57600080fd5b612a7889838a016128f0565b93506080880135915080821115612a8e57600080fd5b50612a9b88828901612956565b9150509295509295909350565b60008060008060808587031215612abe57600080fd5b612ac7856126b4565b9350612ad5602086016126b4565b9250612ae3604086016128e0565b9150606085013567ffffffffffffffff811115612aff57600080fd5b612b0b8782880161273f565b91505092959194509250565b600060208284031215612b2957600080fd5b5035919050565b60005b83811015612b4b578181015183820152602001612b33565b50506000910152565b60008151808452612b6c816020860160208601612b30565b601f01601f19169290920160200192915050565b6020815260006115d56020830184612b54565b60008060408385031215612ba657600080fd5b612baf836126b4565b9150612bbd602084016126b4565b90509250929050565b60008060208385031215612bd957600080fd5b823567ffffffffffffffff80821115612bf157600080fd5b818501915085601f830112612c0557600080fd5b813581811115612c1457600080fd5b8660208260051b8501011115612c2957600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612c9257603f19888603018452612c80858351612b54565b94509285019290850190600101612c64565b5092979650505050505050565b600060208284031215612cb157600080fd5b6115d5826126b4565b600080600080600060a08688031215612cd257600080fd5b612cdb866126b4565b9450612ce9602087016126b4565b935060408601359250612cfe606087016128e0565b9150608086013567ffffffffffffffff811115612d1a57600080fd5b612a9b8882890161273f565b60008060008060808587031215612d3c57600080fd5b612d45856126b4565b9350612d53602086016126b4565b925060408501359150606085013567ffffffffffffffff811115612aff57600080fd5b60008060408385031215612d8957600080fd5b82359150602083013567ffffffffffffffff811115612da757600080fd5b612db38582860161273f565b9150509250929050565b60008060408385031215612dd057600080fd5b823567ffffffffffffffff80821115612de857600080fd5b612df486838701612881565b93506020850135915080821115612e0a57600080fd5b50612db385828601612956565b60008060408385031215612e2a57600080fd5b612e33836126b4565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015612e825783516001600160a01b031683529284019291840191600101612e5d565b50909695505050505050565b600060208284031215612ea057600080fd5b813567ffffffffffffffff811115612eb757600080fd5b611cfd84828501612881565b600080600080600060a08688031215612edb57600080fd5b612ee4866126b4565b945060208601359350604086013560ff81168114612f0157600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612f5b818460208701612b30565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107f0576107f0612f65565b6001600160a01b0384168152826020820152606060408201526000612fb66060830184612b54565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612fb66060830184612b54565b6000808335601e1984360301811261301757600080fd5b83018035915067ffffffffffffffff82111561303257600080fd5b60200191503681900382131561304757600080fd5b9250929050565b8183823760009101908152919050565b818103818111156107f0576107f0612f65565b60006020828403121561308357600080fd5b5051919050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156130be5780818460140360031b1b83161693505b505050919050565b600181811c908216806130da57607f821691505b6020821081036111f257634e487b7160e01b600052602260045260246000fd5b8381528215156020820152606060408201526000612fb66060830184612b54565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611de660a0830184612b54565b60006001820161316757613167612f65565b5060010190565b805160208083015191908110156111f25760001960209190910360031b1b16919050565b828152604060208201526000611cfd6040830184612b54565b6000602082840312156131bd57600080fd5b815167ffffffffffffffff8111156131d457600080fd5b8201601f810184136131e557600080fd5b80516131f361275e82612717565b81815285602083850101111561320857600080fd5b612fb6826020830160208601612b30565b601f821115610f08576000816000526020600020601f850160051c810160208610156132425750805b601f850160051c820191505b818110156108e45782815560010161324e565b815167ffffffffffffffff81111561327b5761327b6126d0565b61328f8161328984546130c6565b84613219565b602080601f8311600181146132c457600084156132ac5750858301515b600019600386901b1c1916600185901b1785556108e4565b600085815260208120601f198616915b828110156132f3578886015182559484019460019091019084016132d4565b50858210156133115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220af9b8a18549ac2497019a414de6a6ad9b9926a663c422d6a933c13a6be493c3264736f6c63430008160033 diff --git a/artifacts/bytecode/42/drops/LSP8DropsDigitalAsset.bin b/artifacts/bytecode/42/drops/LSP8DropsDigitalAsset.bin index 4c3049d..21c4266 100644 --- a/artifacts/bytecode/42/drops/LSP8DropsDigitalAsset.bin +++ b/artifacts/bytecode/42/drops/LSP8DropsDigitalAsset.bin @@ -1 +1 @@ -0x6101006040523480156200001257600080fd5b5060405162004e7b38038062004e7b833981016040819052620000359162000579565b838382848a8a8a6001600084848484816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002f5565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000363565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000363565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000363565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000363565b50506040805160208101859052620001af93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003bc565b505050505080600003620001d65760405163038d9fc360e41b815260040160405180910390fd5b6080526001600955604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af415801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000643565b62000284576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002a257506001600160a01b038216155b15620002c15760405163d92e233d60e01b815260040160405180910390fd5b600f805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a052506200080095505050505050565b6000546001600160a01b038281169116146200036057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200037d8282620006ff565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003b09190620007cb565b60405180910390a25050565b620003c88282620003cc565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016200040d576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200044e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036357604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b50506000910152565b600082601f830112620004dd57600080fd5b81516001600160401b0380821115620004fa57620004fa6200048f565b604051601f8301601f19908116603f011681019082821181831017156200052557620005256200048f565b816040528381528660208588010111156200053f57600080fd5b62000552846020830160208901620004a5565b9695505050505050565b80516001600160a01b03811681146200057457600080fd5b919050565b600080600080600080600060e0888a0312156200059557600080fd5b87516001600160401b0380821115620005ad57600080fd5b620005bb8b838c01620004cb565b985060208a0151915080821115620005d257600080fd5b50620005e18a828b01620004cb565b965050620005f2604089016200055c565b945062000602606089016200055c565b935062000612608089016200055c565b925060a0880151915060c088015163ffffffff811681146200063357600080fd5b8091505092959891949750929550565b6000602082840312156200065657600080fd5b815180151581146200066757600080fd5b9392505050565b600181811c908216806200068357607f821691505b602082108103620006a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006fa576000816000526020600020601f850160051c81016020861015620006d55750805b601f850160051c820191505b81811015620006f657828155600101620006e1565b5050505b505050565b81516001600160401b038111156200071b576200071b6200048f565b62000733816200072c84546200066e565b84620006aa565b602080601f8311600181146200076b5760008415620007525750858301515b600019600386901b1c1916600185901b178555620006f6565b600085815260208120601f198616915b828110156200079c578886015182559484019460019091019084016200077b565b5085821015620007bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620007ec816040850160208701620004a5565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161462562000856600039600081816104e801526123d501526000818161082f015261260901526000818161053c01526125210152600081816105e401526133a301526146256000f3fe6080604052600436106102d55760003560e01c806378e9792511610179578063aad3ec96116100d6578063dd5ffa1e1161008a578063f2fde38b11610064578063f2fde38b146108d9578063f575191e146108f9578063fc6180711461090f57610349565b8063dd5ffa1e14610891578063dedff9c6146108a6578063edb8d1e2146108c657610349565b8063d598d4c9116100bb578063d598d4c91461081d578063d6c1407c14610851578063db8c96631461087157610349565b8063aad3ec96146107dd578063be9f0e6f146107fd57610349565b80638da5cb5b1161012d578063942cd44b11610112578063942cd44b14610767578063979024211461079d578063a3b261f2146107b057610349565b80638da5cb5b1461071c57806392a91a3a1461073a57610349565b80637f23690c1161015e5780637f23690c146106c957806386a10ddd146106dc5780638bbd4378146106fc57610349565b806378e97925146106935780637e87632c146106a957610349565b806337e3f8dc1161023257806352058d8a116101e65780636963d438116101c05780636963d4381461063e57806370a082311461065e578063715018a61461067e57610349565b806352058d8a146105d557806354f6127f146106085780636817c76c1461062857610349565b806349a6078d1161021757806349a6078d14610573578063511b6952146105a057806351b42b00146105c057610349565b806337e3f8dc1461050a5780633c3e8ae31461052a57610349565b80631d26fce6116102895780632a3654a41161026e5780632a3654a4146104a15780632b47da52146104c15780632b7ac3f3146104d657610349565b80631d26fce61461043c578063217b22701461046957610349565b806316e023b3116102ba57806316e023b3146103d657806318160ddd14610403578063186601ca1461042257610349565b806301ffc9a71461038a5780630f15f4c0146103bf57610349565b3661034957346000036103175760405163e5099ee360e01b815260040161030e9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561037457828260405163e5099ee360e01b815260040161030e929190613579565b61037e8383610922565b80519350602001915050f35b34801561039657600080fd5b506103aa6103a53660046135a8565b610a31565b60405190151581526020015b60405180910390f35b3480156103cb57600080fd5b506103d4610a7e565b005b3480156103e257600080fd5b506103f66103f13660046135d2565b610a90565b6040516103b69190613644565b34801561040f57600080fd5b506002545b6040519081526020016103b6565b34801561042e57600080fd5b50600f546103aa9060ff1681565b34801561044857600080fd5b5061045c610457366004613731565b610aa3565b6040516103b69190613795565b34801561047557600080fd5b506104896104843660046137f9565b610b69565b6040516001600160a01b0390911681526020016103b6565b3480156104ad57600080fd5b506103aa6104bc36600461382e565b610ba2565b3480156104cd57600080fd5b50610414610bb7565b3480156104e257600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b506103d4610525366004613858565b610bc7565b34801561053657600080fd5b5061055e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103b6565b34801561057f57600080fd5b5061059361058e3660046137f9565b610c1a565b6040516103b691906138ca565b3480156105ac57600080fd5b506103d46105bb3660046139a0565b610c3c565b3480156105cc57600080fd5b506103d4610c99565b3480156105e157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610414565b34801561061457600080fd5b506103f66106233660046137f9565b610ce1565b34801561063457600080fd5b50610414600d5481565b34801561064a57600080fd5b5061045c610659366004613a65565b610cec565b34801561066a57600080fd5b50610414610679366004613aa7565b610e35565b34801561068a57600080fd5b506103d4610e40565b34801561069f57600080fd5b50610414600c5481565b3480156106b557600080fd5b506103d46106c4366004613c0e565b610e52565b6103d46106d7366004613cd3565b610f5a565b3480156106e857600080fd5b506103d46106f7366004613d10565b610f8f565b34801561070857600080fd5b506103d4610717366004613d67565b611122565b34801561072857600080fd5b506000546001600160a01b0316610489565b34801561074657600080fd5b506104146107553660046137f9565b60009081526007602052604090205490565b34801561077357600080fd5b50610414610782366004613aa7565b6001600160a01b031660009081526010602052604090205490565b6103d46107ab366004613d99565b611207565b3480156107bc57600080fd5b506107d06107cb366004613aa7565b6112f9565b6040516103b69190613e2f565b3480156107e957600080fd5b506103d46107f836600461382e565b61131d565b34801561080957600080fd5b506103d4610818366004613e42565b6114f9565b34801561082957600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561085d57600080fd5b506103d461086c366004613ec0565b6115f6565b34801561087d57600080fd5b506103d461088c366004613efa565b611609565b34801561089d57600080fd5b506103f66116dd565b3480156108b257600080fd5b5061045c6108c1366004613f62565b61176b565b6103d46108d4366004613fa8565b611816565b3480156108e557600080fd5b506103d46108f4366004613aa7565b6118c8565b34801561090557600080fd5b50610414600e5481565b6103d461091d366004614032565b61191c565b6060600061093b6000356001600160e01b0319166119a6565b5090506001600160a01b03811661098c576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161030e565b600080826001600160a01b031634878733346040516020016109b19493929190614080565b60408051601f19818403018152908290526109cb916140b0565b60006040518083038185875af1925050503d8060008114610a08576040519150601f19603f3d011682016040523d82523d6000602084013e610a0d565b606091505b50915091508115610a22579250610a2b915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610a6f5750610a6f82611a50565b80610a2b5750610a2b82611a8e565b610a86611ac5565b610a8e611b1a565b565b6060610a9c8383611b5c565b9392505050565b6060825167ffffffffffffffff811115610abf57610abf613657565b604051908082528060200260200182016040528015610af257816020015b6060815260200190600190039081610add5790505b50905060005b8351811015610b6257610b3d848281518110610b1657610b166140cc565b6020026020010151848381518110610b3057610b306140cc565b6020026020010151611b5c565b828281518110610b4f57610b4f6140cc565b6020908102919091010152600101610af8565b5092915050565b6000818152600360205260408120546001600160a01b031680610a2b57604051635747cd1b60e11b81526004810184905260240161030e565b6000610bad82611c71565b610a9c8383611ca9565b6000610bc2600a5490565b905090565b610bcf611ac5565b6011610bdc82848361415e565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610c0e929190613579565b60405180910390a15050565b6060610c2582611c71565b6000828152600560205260409020610a2b90611ce6565b610c463384611ca9565b610c85576040517f1294d2a90000000000000000000000000000000000000000000000000000000081526004810184905233602482015260440161030e565b610c928585858585611cf3565b5050505050565b610ca1611ac5565b600f5460ff1615610a8e57600f805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b6060610a2b82611ee1565b60608167ffffffffffffffff811115610d0757610d07613657565b604051908082528060200260200182016040528015610d3a57816020015b6060815260200190600190039081610d255790505b50905060005b82811015610b625760008030868685818110610d5e57610d5e6140cc565b9050602002810190610d70919061421e565b604051610d7e929190614265565b600060405180830381855af49150503d8060008114610db9576040519150601f19603f3d011682016040523d82523d6000602084013e610dbe565b606091505b509150915081610e0d57805115610dd85780518082602001fd5b6040517f234eb8190000000000000000000000000000000000000000000000000000000081526004810184905260240161030e565b80848481518110610e2057610e206140cc565b60209081029190910101525050600101610d40565b6000610a2b82611f83565b610e48611ac5565b610a8e6000611fa4565b8451845181141580610e65575083518114155b80610e71575082518114155b80610e7d575081518114155b15610eb4576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610f5157610f49878281518110610ed457610ed46140cc565b6020026020010151878381518110610eee57610eee6140cc565b6020026020010151878481518110610f0857610f086140cc565b6020026020010151878581518110610f2257610f226140cc565b6020026020010151878681518110610f3c57610f3c6140cc565b6020026020010151610c3c565b600101610eb7565b50505050505050565b610f62611ac5565b3415610f815760405163f36ba73760e01b815260040160405180910390fd5b610f8b828261201f565b5050565b6000610f9a83610b69565b90506001600160a01b0381163314610fdd57604051632d938f5160e11b81526001600160a01b03821660048201526024810184905233604482015260640161030e565b6001600160a01b03841661100457604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603611036576040516344fed6b160e11b815260040160405180910390fd5b600083815260056020526040812061104e9086612082565b905080611099576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260440161030e565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc236671215866040516110dd9190613644565b60405180910390a4600033856001866040516020016110ff9493929190614275565b604051602081830303815290604052905061111a8682612097565b505050505050565b61112a611ac5565b42841015611167576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161030e565b816000036111a1576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c849055600d839055600e8290556111b981600a55565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b61120f611ac5565b341561122e5760405163f36ba73760e01b815260040160405180910390fd5b8051825114611269576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036112a4576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156112f4576112ec8382815181106112c5576112c56140cc565b60200260200101518383815181106112df576112df6140cc565b602002602001015161201f565b6001016112a7565b505050565b6001600160a01b0381166000908152600460205260409020606090610a2b90611ce6565b6113256120c2565b6001600160a01b038216611365576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000361139f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260106020526040902054818110156113ec576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161030e565b336000908152601060205260408120805484929061140b9084906142c5565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461145b576040519150601f19603f3d011682016040523d82523d6000602084013e611460565b606091505b50509050806114ad576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161030e565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610f8b6001600955565b611501611ac5565b8151835114158061151457508051825114155b1561154b576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251600003611586576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156115f0576115e88482815181106115a7576115a76140cc565b60200260200101518483815181106115c1576115c16140cc565b60200260200101518484815181106115db576115db6140cc565b602002602001015161211b565b600101611589565b50505050565b6115fe611ac5565b6112f483838361211b565b600061161484610b69565b90506001600160a01b038116331461165757604051632d938f5160e11b81526001600160a01b03821660048201526024810185905233604482015260640161030e565b6001600160a01b03851661167e57604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b0316036116b0576040516344fed6b160e11b815260040160405180910390fd5b6116bd85828686866121ab565b8215610c9257600033856000856040516020016110ff9493929190614275565b601180546116ea906140e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611716906140e2565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b505050505081565b6060815167ffffffffffffffff81111561178757611787613657565b6040519080825280602002602001820160405280156117ba57816020015b60608152602001906001900390816117a55790505b50905060005b8251811015611810576117eb8382815181106117de576117de6140cc565b6020026020010151611ee1565b8282815181106117fd576117fd6140cc565b60209081029190910101526001016117c0565b50919050565b600f5460ff1615806118295750600c5442105b1561184757604051632e8acb0d60e01b815260040160405180910390fd5b61184f6120c2565b6118a788888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b9350019050604051602081830303815290604052612264565b6118b4858585858561237b565b6118be6001600955565b5050505050505050565b6118d0611ac5565b6001600160a01b038116611910576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191981611fa4565b50565b600f5460ff16158061192f5750600c5442105b1561194d57604051632e8acb0d60e01b815260040160405180910390fd5b6119556120c2565b600a541561198f576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61199c858585858561237b565b610c926001600955565b600080806119de7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612663565b905060006119eb82611ee1565b905080516014141580156119ff5750805115155b15611a3857806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161030e9190613644565b611a41816142d8565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610a2b5750610a2b826126d4565b600080611aa16301ffc9a760e01b6119a6565b5090506001600160a01b038116611abb5750600092915050565b610a9c8184612722565b33611ad86000546001600160a01b031690565b6001600160a01b031614610a8e576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161030e565b600f5460ff16610a8e57600f805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b60606000611b6a84846127c0565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e83148015611b9a57508051155b15610a9c576000611bca7f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611ee1565b90508051600003611c695760118054611be2906140e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0e906140e2565b8015611c5b5780601f10611c3057610100808354040283529160200191611c5b565b820191906000526020600020905b815481529060010190602001808311611c3e57829003601f168201915b505050505092505050610a2b565b509392505050565b6000818152600360205260409020546001600160a01b031661191957604051635747cd1b60e11b81526004810182905260240161030e565b6000611cb482610b69565b6001600160a01b0316836001600160a01b03161480610a9c57506000828152600560205260409020610a9c9084612897565b60606000610a9c836128b9565b836001600160a01b0316856001600160a01b031603611d3e576040517f5d67d6c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d4984610b69565b9050856001600160a01b0316816001600160a01b031614611d9757604051632d938f5160e11b81526001600160a01b038083166004830152602482018690528716604482015260640161030e565b6001600160a01b038516611dbe576040516324ecef4d60e01b815260040160405180910390fd5b611dca86868685612914565b611dd384610b69565b9050611ddf8685612920565b6001600160a01b0386166000908152600460205260409020611e019085612978565b506001600160a01b0385166000908152600460205260409020611e249085612984565b5060008481526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518692918916907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611e9890339089908990614314565b60405180910390a460003387878786604051602001611ebb959493929190614347565b6040516020818303038152906040529050611ed68782612990565b610f518685836129bb565b6000818152600160205260409020805460609190611efe906140e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2a906140e2565b8015611f775780601f10611f4c57610100808354040283529160200191611f77565b820191906000526020600020905b815481529060010190602001808311611f5a57829003601f168201915b50505050509050919050565b6001600160a01b0381166000908152600460205260408120610a2b90612af5565b6000546001600160a01b0382811691161461191957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201612078576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f8b8282612aff565b6000610a9c836001600160a01b038416612b09565b610f8b827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612b58565b6002600954036121145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030e565b6002600955565b8060016000858560405160200161213c929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020908161216c9190614381565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161219e9190613644565b60405180910390a3505050565b60008381526005602052604081206121c39087612ba5565b90508061220e576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b03871660048201526024810185905260440161030e565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612254929190614441565b60405180910390a4505050505050565b600a5461229d576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122a682612bba565b156122e15781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161030e92919061445c565b600082826040516020016122f692919061445c565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061233884600a5483612bfb565b6123725782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161030e92919061445c565b6115f083612c11565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661240982868686612c4f565b6001600160a01b031614612449576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008561245588610e35565b61245f9190614475565b9050600e548111156124a0576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161030e565b6000600d54876124b09190614488565b90508034146124ed576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161030e565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af4158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a9919061449f565b90506125b581836142c5565b601060006125cb6000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125fa9190614475565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526010602052604081208054839290612647908490614475565b909155506126589050898984612c77565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806126cc906144b8565b949350505050565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610a2b57506301ffc9a760e01b6001600160e01b0319831614610a2b565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156127a9575060208210155b80156127b55750600081115b979650505050505050565b60606001600084846040516020016127e2929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020016000208054612811906140e2565b80601f016020809104026020016040519081016040528092919081815260200182805461283d906140e2565b801561288a5780601f1061285f5761010080835404028352916020019161288a565b820191906000526020600020905b81548152906001019060200180831161286d57829003601f168201915b5050505050905092915050565b6001600160a01b03811660009081526001830160205260408120541515610a9c565b606081600001805480602002602001604051908101604052809291908181526020018280548015611f7757602002820191906000526020600020905b8154815260200190600101908083116128f55750505050509050919050565b6115f084848484612db2565b60008181526005602052604081209061293882612af5565b90506000805b8281101561111a57612951846000612e79565b91506129708287876000604051806020016040528060008152506121ab565b60010161293e565b6000610a9c8383612e85565b6000610a9c8383612b09565b610f8b827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612b58565b6129cc83631aed5a8560e21b612722565b15612a6657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a1f907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161445c565b6000604051808303816000875af1158015612a3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115f091908101906144dc565b816112f4576001600160a01b0383163b15612ab8576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6000610a2b825490565b610f8b8282612f78565b6000818152600183016020526040812054612b5057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a2b565b506000610a2b565b612b726001600160a01b038416631aed5a8560e21b612722565b156112f457604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a1f908590859060040161445c565b6000610a9c836001600160a01b038416612e85565b600080612bc961010084614560565b90506000612bd961010085614574565b6000928352600b602052604090922054600190921b9182169091149392505050565b600082612c0885846130d8565b14949350505050565b6000612c1f61010083614560565b90506000612c2f61010084614574565b6000928352600b60205260409092208054600190931b9092179091555050565b6000806000612c6087878787613113565b91509150612c6d816131d7565b5095945050505050565b60008267ffffffffffffffff811115612c9257612c92613657565b604051908082528060200260200182016040528015612cbb578160200160208202803683370190505b50905060006012546001612ccf9190614475565b90508360126000828254612ce39190614475565b90915550600090505b84811015612d2657612cfe8183614475565b60001b838281518110612d1357612d136140cc565b6020908102919091010152600101612cec565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612d62929190614588565b60405180910390a260005b8481101561111a57612daa86848381518110612d8b57612d8b6140cc565b602002602001015160006040518060200160405280600081525061333c565b600101612d6d565b6001600160a01b038416612dec576000612dcb60025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316612e745760006001612e0760025490565b612e1191906142c5565b60008481526008602052604090205490915081811015612e53576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b6115f0565b6000610a9c8383613348565b60008181526001830160205260408120548015612f6e576000612ea96001836142c5565b8554909150600090612ebd906001906142c5565b9050818114612f22576000866000018281548110612edd57612edd6140cc565b9060005260206000200154905080876000018481548110612f0057612f006140cc565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f3357612f336145aa565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a2b565b6000915050610a2b565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612fd1576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161302a576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613083576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061309b8282614381565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516130cc9190613644565b60405180910390a25050565b600081815b8451811015611c6957613109828683815181106130fc576130fc6140cc565b6020026020010151613372565b91506001016130dd565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561314a57506000905060036131ce565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561319e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131c7576000600192509250506131ce565b9150600090505b94509492505050565b60008160048111156131eb576131eb6145c0565b036131f35750565b6001816004811115613207576132076145c0565b036132545760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161030e565b6002816004811115613268576132686145c0565b036132b55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161030e565b60038160048111156132c9576132c96145c0565b036119195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161030e565b6115f0848484846133a1565b600082600001828154811061335f5761335f6140cc565b9060005260206000200154905092915050565b600081831061338e576000828152602084905260409020610a9c565b6000838152602083905260409020610a9c565b7f00000000000000000000000000000000000000000000000000000000000000006002546133d0906001614475565b1115613408576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f0848484846001600160a01b038416613436576040516324ecef4d60e01b815260040160405180910390fd5b6134436000858584612914565b6000838152600360205260409020546001600160a01b031615613495576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004810184905260240161030e565b6002600081546134a4906145d6565b909155506001600160a01b03841660009081526004602052604090206134ca9084612984565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061353990339088908890614314565b60405180910390a4600033600086868560405160200161355d959493929190614347565b6040516020818303038152906040529050610c928584836129bb565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156135ba57600080fd5b81356001600160e01b031981168114610a9c57600080fd5b600080604083850312156135e557600080fd5b50508035926020909101359150565b60005b8381101561360f5781810151838201526020016135f7565b50506000910152565b600081518084526136308160208601602086016135f4565b601f01601f19169290920160200192915050565b602081526000610a9c6020830184613618565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561369657613696613657565b604052919050565b600067ffffffffffffffff8211156136b8576136b8613657565b5060051b60200190565b600082601f8301126136d357600080fd5b813560206136e86136e38361369e565b61366d565b8083825260208201915060208460051b87010193508684111561370a57600080fd5b602086015b84811015613726578035835291830191830161370f565b509695505050505050565b6000806040838503121561374457600080fd5b823567ffffffffffffffff8082111561375c57600080fd5b613768868387016136c2565b9350602085013591508082111561377e57600080fd5b5061378b858286016136c2565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156137ec57603f198886030184526137da858351613618565b945092850192908501906001016137be565b5092979650505050505050565b60006020828403121561380b57600080fd5b5035919050565b80356001600160a01b038116811461382957600080fd5b919050565b6000806040838503121561384157600080fd5b61384a83613812565b946020939093013593505050565b6000806020838503121561386b57600080fd5b823567ffffffffffffffff8082111561388357600080fd5b818501915085601f83011261389757600080fd5b8135818111156138a657600080fd5b8660208285010111156138b857600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561390b5783516001600160a01b0316835292840192918401916001016138e6565b50909695505050505050565b8035801515811461382957600080fd5b600067ffffffffffffffff82111561394157613941613657565b50601f01601f191660200190565b600082601f83011261396057600080fd5b813561396e6136e382613927565b81815284602083860101111561398357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156139b857600080fd5b6139c186613812565b94506139cf60208701613812565b9350604086013592506139e460608701613917565b9150608086013567ffffffffffffffff811115613a0057600080fd5b613a0c8882890161394f565b9150509295509295909350565b60008083601f840112613a2b57600080fd5b50813567ffffffffffffffff811115613a4357600080fd5b6020830191508360208260051b8501011115613a5e57600080fd5b9250929050565b60008060208385031215613a7857600080fd5b823567ffffffffffffffff811115613a8f57600080fd5b613a9b85828601613a19565b90969095509350505050565b600060208284031215613ab957600080fd5b610a9c82613812565b600082601f830112613ad357600080fd5b81356020613ae36136e38361369e565b8083825260208201915060208460051b870101935086841115613b0557600080fd5b602086015b8481101561372657613b1b81613812565b8352918301918301613b0a565b600082601f830112613b3957600080fd5b81356020613b496136e38361369e565b8083825260208201915060208460051b870101935086841115613b6b57600080fd5b602086015b8481101561372657613b8181613917565b8352918301918301613b70565b600082601f830112613b9f57600080fd5b81356020613baf6136e38361369e565b82815260059290921b84018101918181019086841115613bce57600080fd5b8286015b8481101561372657803567ffffffffffffffff811115613bf25760008081fd5b613c008986838b010161394f565b845250918301918301613bd2565b600080600080600060a08688031215613c2657600080fd5b853567ffffffffffffffff80821115613c3e57600080fd5b613c4a89838a01613ac2565b96506020880135915080821115613c6057600080fd5b613c6c89838a01613ac2565b95506040880135915080821115613c8257600080fd5b613c8e89838a016136c2565b94506060880135915080821115613ca457600080fd5b613cb089838a01613b28565b93506080880135915080821115613cc657600080fd5b50613a0c88828901613b8e565b60008060408385031215613ce657600080fd5b82359150602083013567ffffffffffffffff811115613d0457600080fd5b61378b8582860161394f565b600080600060608486031215613d2557600080fd5b613d2e84613812565b925060208401359150604084013567ffffffffffffffff811115613d5157600080fd5b613d5d8682870161394f565b9150509250925092565b60008060008060808587031215613d7d57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215613dac57600080fd5b823567ffffffffffffffff80821115613dc457600080fd5b613dd0868387016136c2565b93506020850135915080821115613de657600080fd5b5061378b85828601613b8e565b60008151808452602080850194506020840160005b83811015613e2457815187529582019590820190600101613e08565b509495945050505050565b602081526000610a9c6020830184613df3565b600080600060608486031215613e5757600080fd5b833567ffffffffffffffff80821115613e6f57600080fd5b613e7b878388016136c2565b94506020860135915080821115613e9157600080fd5b613e9d878388016136c2565b93506040860135915080821115613eb357600080fd5b50613d5d86828701613b8e565b600080600060608486031215613ed557600080fd5b8335925060208401359150604084013567ffffffffffffffff811115613d5157600080fd5b60008060008060808587031215613f1057600080fd5b613f1985613812565b935060208501359250613f2e60408601613917565b9150606085013567ffffffffffffffff811115613f4a57600080fd5b613f568782880161394f565b91505092959194509250565b600060208284031215613f7457600080fd5b813567ffffffffffffffff811115613f8b57600080fd5b6126cc848285016136c2565b803560ff8116811461382957600080fd5b60008060008060008060008060e0898b031215613fc457600080fd5b883567ffffffffffffffff811115613fdb57600080fd5b613fe78b828c01613a19565b9099509750506020890135955061400060408a01613812565b94506060890135935061401560808a01613f97565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a0868803121561404a57600080fd5b61405386613812565b94506020860135935061406860408701613f97565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516140c28184602087016135f4565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806140f657607f821691505b60208210810361181057634e487b7160e01b600052602260045260246000fd5b601f8211156112f4576000816000526020600020601f850160051c8101602086101561413f5750805b601f850160051c820191505b8181101561111a5782815560010161414b565b67ffffffffffffffff83111561417657614176613657565b61418a8361418483546140e2565b83614116565b6000601f8411600181146141be57600085156141a65750838201355b600019600387901b1c1916600186901b178355610c92565b600083815260209020601f19861690835b828110156141ef57868501358255602094850194600190920191016141cf565b508682101561420c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e1984360301811261423557600080fd5b83018035915067ffffffffffffffff82111561425057600080fd5b602001915036819003821315613a5e57600080fd5b8183823760009101908152919050565b6001600160a01b038516815283602082015282151560408201526080606082015260006142a56080830184613618565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a2b57610a2b6142af565b805160208201516bffffffffffffffffffffffff19808216929190601483101561430c5780818460140360031b1b83161693505b505050919050565b6001600160a01b0384168152821515602082015260606040820152600061433e6060830184613618565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526127b560a0830184613618565b815167ffffffffffffffff81111561439b5761439b613657565b6143af816143a984546140e2565b84614116565b602080601f8311600181146143e457600084156143cc5750858301515b600019600386901b1c1916600185901b17855561111a565b600085815260208120601f198616915b82811015614413578886015182559484019460019091019084016143f4565b50858210156144315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006126cc6040830184613618565b8281526040602082015260006126cc6040830184613618565b80820180821115610a2b57610a2b6142af565b8082028115828204841417610a2b57610a2b6142af565b6000602082840312156144b157600080fd5b5051919050565b805160208083015191908110156118105760001960209190910360031b1b16919050565b6000602082840312156144ee57600080fd5b815167ffffffffffffffff81111561450557600080fd5b8201601f8101841361451657600080fd5b80516145246136e382613927565b81815285602083850101111561453957600080fd5b61433e8260208301602086016135f4565b634e487b7160e01b600052601260045260246000fd5b60008261456f5761456f61454a565b500490565b6000826145835761458361454a565b500690565b60408152600061459b6040830185613df3565b90508260208301529392505050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016145e8576145e86142af565b506001019056fea264697066735822122095f57614212420331c8c7f50ae7a400aa38f1909971b071e89b0e210873f115364736f6c63430008160033 +0x6101006040523480156200001257600080fd5b5060405162004e8938038062004e89833981016040819052620000359162000579565b838382848a8a8a6001600084848484816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002f5565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000363565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000363565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000363565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000363565b50506040805160208101859052620001af93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003bc565b505050505080600003620001d65760405163038d9fc360e41b815260040160405180910390fd5b6080526001600955604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af415801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000643565b62000284576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002a257506001600160a01b038216155b15620002c15760405163d92e233d60e01b815260040160405180910390fd5b600f805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a052506200080095505050505050565b6000546001600160a01b038281169116146200036057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200037d8282620006ff565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003b09190620007cb565b60405180910390a25050565b620003c88282620003cc565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016200040d576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200044e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036357604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b50506000910152565b600082601f830112620004dd57600080fd5b81516001600160401b0380821115620004fa57620004fa6200048f565b604051601f8301601f19908116603f011681019082821181831017156200052557620005256200048f565b816040528381528660208588010111156200053f57600080fd5b62000552846020830160208901620004a5565b9695505050505050565b80516001600160a01b03811681146200057457600080fd5b919050565b600080600080600080600060e0888a0312156200059557600080fd5b87516001600160401b0380821115620005ad57600080fd5b620005bb8b838c01620004cb565b985060208a0151915080821115620005d257600080fd5b50620005e18a828b01620004cb565b965050620005f2604089016200055c565b945062000602606089016200055c565b935062000612608089016200055c565b925060a0880151915060c088015163ffffffff811681146200063357600080fd5b8091505092959891949750929550565b6000602082840312156200065657600080fd5b815180151581146200066757600080fd5b9392505050565b600181811c908216806200068357607f821691505b602082108103620006a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006fa576000816000526020600020601f850160051c81016020861015620006d55750805b601f850160051c820191505b81811015620006f657828155600101620006e1565b5050505b505050565b81516001600160401b038111156200071b576200071b6200048f565b62000733816200072c84546200066e565b84620006aa565b602080601f8311600181146200076b5760008415620007525750858301515b600019600386901b1c1916600185901b178555620006f6565b600085815260208120601f198616915b828110156200079c578886015182559484019460019091019084016200077b565b5085821015620007bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620007ec816040850160208701620004a5565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161463362000856600039600081816104e801526123ec01526000818161082f015261262001526000818161053c01526125380152600081816105e4015261339101526146336000f3fe6080604052600436106102d55760003560e01c806378e9792511610179578063aad3ec96116100d6578063dd5ffa1e1161008a578063f2fde38b11610064578063f2fde38b146108d9578063f575191e146108f9578063fc6180711461090f57610349565b8063dd5ffa1e14610891578063dedff9c6146108a6578063edb8d1e2146108c657610349565b8063d598d4c9116100bb578063d598d4c91461081d578063d6c1407c14610851578063db8c96631461087157610349565b8063aad3ec96146107dd578063be9f0e6f146107fd57610349565b80638da5cb5b1161012d578063942cd44b11610112578063942cd44b14610767578063979024211461079d578063a3b261f2146107b057610349565b80638da5cb5b1461071c57806392a91a3a1461073a57610349565b80637f23690c1161015e5780637f23690c146106c957806386a10ddd146106dc5780638bbd4378146106fc57610349565b806378e97925146106935780637e87632c146106a957610349565b806337e3f8dc1161023257806352058d8a116101e65780636963d438116101c05780636963d4381461063e57806370a082311461065e578063715018a61461067e57610349565b806352058d8a146105d557806354f6127f146106085780636817c76c1461062857610349565b806349a6078d1161021757806349a6078d14610573578063511b6952146105a057806351b42b00146105c057610349565b806337e3f8dc1461050a5780633c3e8ae31461052a57610349565b80631d26fce6116102895780632a3654a41161026e5780632a3654a4146104a15780632b47da52146104c15780632b7ac3f3146104d657610349565b80631d26fce61461043c578063217b22701461046957610349565b806316e023b3116102ba57806316e023b3146103d657806318160ddd14610403578063186601ca1461042257610349565b806301ffc9a71461038a5780630f15f4c0146103bf57610349565b3661034957346000036103175760405163e5099ee360e01b815260040161030e9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561037457828260405163e5099ee360e01b815260040161030e929190613587565b61037e8383610922565b80519350602001915050f35b34801561039657600080fd5b506103aa6103a53660046135b6565b610a31565b60405190151581526020015b60405180910390f35b3480156103cb57600080fd5b506103d4610a7e565b005b3480156103e257600080fd5b506103f66103f13660046135e0565b610a90565b6040516103b69190613652565b34801561040f57600080fd5b506002545b6040519081526020016103b6565b34801561042e57600080fd5b50600f546103aa9060ff1681565b34801561044857600080fd5b5061045c61045736600461373f565b610aa3565b6040516103b691906137a3565b34801561047557600080fd5b50610489610484366004613807565b610b8b565b6040516001600160a01b0390911681526020016103b6565b3480156104ad57600080fd5b506103aa6104bc36600461383c565b610bc4565b3480156104cd57600080fd5b50610414610bd0565b3480156104e257600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b506103d4610525366004613866565b610be0565b34801561053657600080fd5b5061055e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103b6565b34801561057f57600080fd5b5061059361058e366004613807565b610c33565b6040516103b691906138d8565b3480156105ac57600080fd5b506103d46105bb3660046139ae565b610c55565b3480156105cc57600080fd5b506103d4610cb2565b3480156105e157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610414565b34801561061457600080fd5b506103f6610623366004613807565b610cfa565b34801561063457600080fd5b50610414600d5481565b34801561064a57600080fd5b5061045c610659366004613a73565b610d05565b34801561066a57600080fd5b50610414610679366004613ab5565b610e4e565b34801561068a57600080fd5b506103d4610e59565b34801561069f57600080fd5b50610414600c5481565b3480156106b557600080fd5b506103d46106c4366004613c1c565b610e6b565b6103d46106d7366004613ce1565b610f73565b3480156106e857600080fd5b506103d46106f7366004613d1e565b610fa8565b34801561070857600080fd5b506103d4610717366004613d75565b61113b565b34801561072857600080fd5b506000546001600160a01b0316610489565b34801561074657600080fd5b50610414610755366004613807565b60009081526007602052604090205490565b34801561077357600080fd5b50610414610782366004613ab5565b6001600160a01b031660009081526010602052604090205490565b6103d46107ab366004613da7565b611220565b3480156107bc57600080fd5b506107d06107cb366004613ab5565b611312565b6040516103b69190613e3d565b3480156107e957600080fd5b506103d46107f836600461383c565b611336565b34801561080957600080fd5b506103d4610818366004613e50565b611512565b34801561082957600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561085d57600080fd5b506103d461086c366004613ece565b6115f6565b34801561087d57600080fd5b506103d461088c366004613f08565b611609565b34801561089d57600080fd5b506103f6611706565b3480156108b257600080fd5b5061045c6108c1366004613f70565b611794565b6103d46108d4366004613fb6565b61183f565b3480156108e557600080fd5b506103d46108f4366004613ab5565b6118f1565b34801561090557600080fd5b50610414600e5481565b6103d461091d366004614040565b611945565b6060600061093b6000356001600160e01b0319166119cf565b5090506001600160a01b03811661098c576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161030e565b600080826001600160a01b031634878733346040516020016109b1949392919061408e565b60408051601f19818403018152908290526109cb916140be565b60006040518083038185875af1925050503d8060008114610a08576040519150601f19603f3d011682016040523d82523d6000602084013e610a0d565b606091505b50915091508115610a22579250610a2b915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610a6f5750610a6f82611a79565b80610a2b5750610a2b82611ab7565b610a86611aee565b610a8e611b43565b565b6060610a9c8383611b85565b9392505050565b60608151835114610ac7576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff811115610ae157610ae1613665565b604051908082528060200260200182016040528015610b1457816020015b6060815260200190600190039081610aff5790505b50905060005b8351811015610b8457610b5f848281518110610b3857610b386140da565b6020026020010151848381518110610b5257610b526140da565b6020026020010151611b85565b828281518110610b7157610b716140da565b6020908102919091010152600101610b1a565b5092915050565b6000818152600360205260408120546001600160a01b031680610a2b57604051635747cd1b60e11b81526004810184905260240161030e565b6000610a9c8383611c9a565b6000610bdb600a5490565b905090565b610be8611aee565b6011610bf582848361416c565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610c27929190613587565b60405180910390a15050565b6060610c3e82611cd7565b6000828152600560205260409020610a2b90611d0f565b610c5f3384611c9a565b610c9e576040517f1294d2a90000000000000000000000000000000000000000000000000000000081526004810184905233602482015260440161030e565b610cab8585858585611d1c565b5050505050565b610cba611aee565b600f5460ff1615610a8e57600f805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b6060610a2b82611f26565b60608167ffffffffffffffff811115610d2057610d20613665565b604051908082528060200260200182016040528015610d5357816020015b6060815260200190600190039081610d3e5790505b50905060005b82811015610b845760008030868685818110610d7757610d776140da565b9050602002810190610d89919061422c565b604051610d97929190614273565b600060405180830381855af49150503d8060008114610dd2576040519150601f19603f3d011682016040523d82523d6000602084013e610dd7565b606091505b509150915081610e2657805115610df15780518082602001fd5b6040517f234eb8190000000000000000000000000000000000000000000000000000000081526004810184905260240161030e565b80848481518110610e3957610e396140da565b60209081029190910101525050600101610d59565b6000610a2b82611fc8565b610e61611aee565b610a8e6000611fe9565b8451845181141580610e7e575083518114155b80610e8a575082518114155b80610e96575081518114155b15610ecd576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610f6a57610f62878281518110610eed57610eed6140da565b6020026020010151878381518110610f0757610f076140da565b6020026020010151878481518110610f2157610f216140da565b6020026020010151878581518110610f3b57610f3b6140da565b6020026020010151878681518110610f5557610f556140da565b6020026020010151610c55565b600101610ed0565b50505050505050565b610f7b611aee565b3415610f9a5760405163f36ba73760e01b815260040160405180910390fd5b610fa48282612064565b5050565b6000610fb383610b8b565b90506001600160a01b0381163314610ff657604051632d938f5160e11b81526001600160a01b03821660048201526024810184905233604482015260640161030e565b6001600160a01b03841661101d57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b03160361104f576040516344fed6b160e11b815260040160405180910390fd5b600083815260056020526040812061106790866120c7565b9050806110b2576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260440161030e565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc236671215866040516110f69190613652565b60405180910390a4600033856001866040516020016111189493929190614283565b604051602081830303815290604052905061113386826120dc565b505050505050565b611143611aee565b42841015611180576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161030e565b816000036111ba576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c849055600d839055600e8290556111d281600a55565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b611228611aee565b34156112475760405163f36ba73760e01b815260040160405180910390fd5b8051825114611282576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036112bd576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561130d576113058382815181106112de576112de6140da565b60200260200101518383815181106112f8576112f86140da565b6020026020010151612064565b6001016112c0565b505050565b6001600160a01b0381166000908152600460205260409020606090610a2b90611d0f565b61133e612107565b6001600160a01b03821661137e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036113b8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526010602052604090205481811015611405576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161030e565b33600090815260106020526040812080548492906114249084906142d3565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d8060008114611474576040519150601f19603f3d011682016040523d82523d6000602084013e611479565b606091505b50509050806114c6576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161030e565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610fa46001600955565b61151a611aee565b8151835114158061152d57508051825114155b1561154b576040516317d38eff60e11b815260040160405180910390fd5b8251600003611586576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156115f0576115e88482815181106115a7576115a76140da565b60200260200101518483815181106115c1576115c16140da565b60200260200101518484815181106115db576115db6140da565b6020026020010151612160565b600101611589565b50505050565b6115fe611aee565b61130d838383612160565b600061161484610b8b565b9050336001600160a01b03821614611680576001600160a01b0385163314611680576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03821660248201526044810185905260640161030e565b6001600160a01b0385166116a757604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b0316036116d9576040516344fed6b160e11b815260040160405180910390fd5b6116e685828686866121c2565b8215610cab57600081856000856040516020016111189493929190614283565b60118054611713906140f0565b80601f016020809104026020016040519081016040528092919081815260200182805461173f906140f0565b801561178c5780601f106117615761010080835404028352916020019161178c565b820191906000526020600020905b81548152906001019060200180831161176f57829003601f168201915b505050505081565b6060815167ffffffffffffffff8111156117b0576117b0613665565b6040519080825280602002602001820160405280156117e357816020015b60608152602001906001900390816117ce5790505b50905060005b825181101561183957611814838281518110611807576118076140da565b6020026020010151611f26565b828281518110611826576118266140da565b60209081029190910101526001016117e9565b50919050565b600f5460ff1615806118525750600c5442105b1561187057604051632e8acb0d60e01b815260040160405180910390fd5b611878612107565b6118d088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b935001905060405160208183030381529060405261227b565b6118dd8585858585612392565b6118e76001600955565b5050505050505050565b6118f9611aee565b6001600160a01b038116611939576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61194281611fe9565b50565b600f5460ff1615806119585750600c5442105b1561197657604051632e8acb0d60e01b815260040160405180910390fd5b61197e612107565b600a54156119b8576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119c58585858585612392565b610cab6001600955565b60008080611a077fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b0319861661267a565b90506000611a1482611f26565b90508051601414158015611a285750805115155b15611a6157806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161030e9190613652565b611a6a816142e6565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610a2b5750610a2b826126eb565b600080611aca6301ffc9a760e01b6119cf565b5090506001600160a01b038116611ae45750600092915050565b610a9c8184612739565b33611b016000546001600160a01b031690565b6001600160a01b031614610a8e576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161030e565b600f5460ff16610a8e57600f805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b60606000611b9384846127d7565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e83148015611bc357508051155b15610a9c576000611bf37f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611f26565b90508051600003611c925760118054611c0b906140f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611c37906140f0565b8015611c845780601f10611c5957610100808354040283529160200191611c84565b820191906000526020600020905b815481529060010190602001808311611c6757829003601f168201915b505050505092505050610a2b565b509392505050565b6000611ca582610b8b565b6001600160a01b0316836001600160a01b03161480610a9c57506000828152600560205260409020610a9c9084612885565b6000818152600360205260409020546001600160a01b031661194257604051635747cd1b60e11b81526004810182905260240161030e565b60606000610a9c836128a7565b6000611d2784610b8b565b9050856001600160a01b0316816001600160a01b031614611d7557604051632d938f5160e11b81526001600160a01b038083166004830152602482018690528716604482015260640161030e565b6001600160a01b038516611d9c576040516324ecef4d60e01b815260040160405180910390fd5b611da886868685612902565b6000611db385610b8b565b9050806001600160a01b0316826001600160a01b031614611e1a576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0380841660248301528216604482015260640161030e565b611e24878661290e565b6001600160a01b0387166000908152600460205260409020611e469086612966565b506001600160a01b0386166000908152600460205260409020611e699086612972565b5060008581526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611edd9033908a908a90614322565b60405180910390a460003388888887604051602001611f00959493929190614355565b6040516020818303038152906040529050611f1b888261297e565b6118e78786836129a9565b6000818152600160205260409020805460609190611f43906140f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611f6f906140f0565b8015611fbc5780601f10611f9157610100808354040283529160200191611fbc565b820191906000526020600020905b815481529060010190602001808311611f9f57829003601f168201915b50505050509050919050565b6001600160a01b0381166000908152600460205260408120610a2b90612ae3565b6000546001600160a01b0382811691161461194257600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e7382016120bd576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa48282612aed565b6000610a9c836001600160a01b038416612af7565b610fa4827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612b46565b6002600954036121595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030e565b6002600955565b60008381526006602090815260408083208584529091529020612183828261438f565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb836040516121b59190613652565b60405180910390a3505050565b60008381526005602052604081206121da9087612b93565b905080612225576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b03871660048201526024810185905260440161030e565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c868660405161226b92919061444f565b60405180910390a4505050505050565b600a546122b4576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122bd82612ba8565b156122f85781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161030e92919061446a565b6000828260405160200161230d92919061446a565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061234f84600a5483612be9565b6123895782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161030e92919061446a565b6115f083612bff565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661242082868686612c3d565b6001600160a01b031614612460576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008561246c88610e4e565b6124769190614483565b9050600e548111156124b7576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161030e565b6000600d54876124c79190614496565b9050803414612504576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161030e565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af415801561259c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c091906144ad565b90506125cc81836142d3565b601060006125e26000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126119190614483565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152601060205260408120805483929061265e908490614483565b9091555061266f9050898984612c65565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806126e3906144c6565b949350505050565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610a2b57506301ffc9a760e01b6001600160e01b0319831614610a2b565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156127c0575060208210155b80156127cc5750600081115b979650505050505050565b600082815260066020908152604080832084845290915290208054606091906127ff906140f0565b80601f016020809104026020016040519081016040528092919081815260200182805461282b906140f0565b80156128785780601f1061284d57610100808354040283529160200191612878565b820191906000526020600020905b81548152906001019060200180831161285b57829003601f168201915b5050505050905092915050565b6001600160a01b03811660009081526001830160205260408120541515610a9c565b606081600001805480602002602001604051908101604052809291908181526020018280548015611fbc57602002820191906000526020600020905b8154815260200190600101908083116128e35750505050509050919050565b6115f084848484612da0565b60008181526005602052604081209061292682612ae3565b90506000805b828110156111335761293f846000612e67565b915061295e8287876000604051806020016040528060008152506121c2565b60010161292c565b6000610a9c8383612e73565b6000610a9c8383612af7565b610fa4827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612b46565b6129ba83631aed5a8560e21b612739565b15612a5457604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a0d907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161446a565b6000604051808303816000875af1158015612a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115f091908101906144ea565b8161130d576001600160a01b0383163b15612aa6576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6000610a2b825490565b610fa48282612f66565b6000818152600183016020526040812054612b3e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a2b565b506000610a2b565b612b606001600160a01b038416631aed5a8560e21b612739565b1561130d57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a0d908590859060040161446a565b6000610a9c836001600160a01b038416612e73565b600080612bb76101008461456e565b90506000612bc761010085614582565b6000928352600b602052604090922054600190921b9182169091149392505050565b600082612bf685846130c6565b14949350505050565b6000612c0d6101008361456e565b90506000612c1d61010084614582565b6000928352600b60205260409092208054600190931b9092179091555050565b6000806000612c4e87878787613101565b91509150612c5b816131c5565b5095945050505050565b60008267ffffffffffffffff811115612c8057612c80613665565b604051908082528060200260200182016040528015612ca9578160200160208202803683370190505b50905060006012546001612cbd9190614483565b90508360126000828254612cd19190614483565b90915550600090505b84811015612d1457612cec8183614483565b60001b838281518110612d0157612d016140da565b6020908102919091010152600101612cda565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612d50929190614596565b60405180910390a260005b8481101561113357612d9886848381518110612d7957612d796140da565b602002602001015160006040518060200160405280600081525061332a565b600101612d5b565b6001600160a01b038416612dda576000612db960025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316612e625760006001612df560025490565b612dff91906142d3565b60008481526008602052604090205490915081811015612e41576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b6115f0565b6000610a9c8383613336565b60008181526001830160205260408120548015612f5c576000612e976001836142d3565b8554909150600090612eab906001906142d3565b9050818114612f10576000866000018281548110612ecb57612ecb6140da565b9060005260206000200154905080876000018481548110612eee57612eee6140da565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f2157612f216145b8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a2b565b6000915050610a2b565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612fbf576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201613018576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613071576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260409020613089828261438f565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516130ba9190613652565b60405180910390a25050565b600081815b8451811015611c92576130f7828683815181106130ea576130ea6140da565b6020026020010151613360565b91506001016130cb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561313857506000905060036131bc565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561318c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131b5576000600192509250506131bc565b9150600090505b94509492505050565b60008160048111156131d9576131d96145ce565b036131e15750565b60018160048111156131f5576131f56145ce565b036132425760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161030e565b6002816004811115613256576132566145ce565b036132a35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161030e565b60038160048111156132b7576132b76145ce565b036119425760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161030e565b6115f08484848461338f565b600082600001828154811061334d5761334d6140da565b9060005260206000200154905092915050565b600081831061337c576000828152602084905260409020610a9c565b6000838152602083905260409020610a9c565b7f00000000000000000000000000000000000000000000000000000000000000006002546133be906001614483565b11156133f6576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f0848484846001600160a01b038416613424576040516324ecef4d60e01b815260040160405180910390fd5b6000838152600360205260409020546001600160a01b03161561345d576040516334c7b51160e01b81526004810184905260240161030e565b61346a6000858584612902565b6000838152600360205260409020546001600160a01b0316156134a3576040516334c7b51160e01b81526004810184905260240161030e565b6002600081546134b2906145e4565b909155506001600160a01b03841660009081526004602052604090206134d89084612972565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061354790339088908890614322565b60405180910390a4600033600086868560405160200161356b959493929190614355565b6040516020818303038152906040529050610cab8584836129a9565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156135c857600080fd5b81356001600160e01b031981168114610a9c57600080fd5b600080604083850312156135f357600080fd5b50508035926020909101359150565b60005b8381101561361d578181015183820152602001613605565b50506000910152565b6000815180845261363e816020860160208601613602565b601f01601f19169290920160200192915050565b602081526000610a9c6020830184613626565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136a4576136a4613665565b604052919050565b600067ffffffffffffffff8211156136c6576136c6613665565b5060051b60200190565b600082601f8301126136e157600080fd5b813560206136f66136f1836136ac565b61367b565b8083825260208201915060208460051b87010193508684111561371857600080fd5b602086015b84811015613734578035835291830191830161371d565b509695505050505050565b6000806040838503121561375257600080fd5b823567ffffffffffffffff8082111561376a57600080fd5b613776868387016136d0565b9350602085013591508082111561378c57600080fd5b50613799858286016136d0565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156137fa57603f198886030184526137e8858351613626565b945092850192908501906001016137cc565b5092979650505050505050565b60006020828403121561381957600080fd5b5035919050565b80356001600160a01b038116811461383757600080fd5b919050565b6000806040838503121561384f57600080fd5b61385883613820565b946020939093013593505050565b6000806020838503121561387957600080fd5b823567ffffffffffffffff8082111561389157600080fd5b818501915085601f8301126138a557600080fd5b8135818111156138b457600080fd5b8660208285010111156138c657600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156139195783516001600160a01b0316835292840192918401916001016138f4565b50909695505050505050565b8035801515811461383757600080fd5b600067ffffffffffffffff82111561394f5761394f613665565b50601f01601f191660200190565b600082601f83011261396e57600080fd5b813561397c6136f182613935565b81815284602083860101111561399157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156139c657600080fd5b6139cf86613820565b94506139dd60208701613820565b9350604086013592506139f260608701613925565b9150608086013567ffffffffffffffff811115613a0e57600080fd5b613a1a8882890161395d565b9150509295509295909350565b60008083601f840112613a3957600080fd5b50813567ffffffffffffffff811115613a5157600080fd5b6020830191508360208260051b8501011115613a6c57600080fd5b9250929050565b60008060208385031215613a8657600080fd5b823567ffffffffffffffff811115613a9d57600080fd5b613aa985828601613a27565b90969095509350505050565b600060208284031215613ac757600080fd5b610a9c82613820565b600082601f830112613ae157600080fd5b81356020613af16136f1836136ac565b8083825260208201915060208460051b870101935086841115613b1357600080fd5b602086015b8481101561373457613b2981613820565b8352918301918301613b18565b600082601f830112613b4757600080fd5b81356020613b576136f1836136ac565b8083825260208201915060208460051b870101935086841115613b7957600080fd5b602086015b8481101561373457613b8f81613925565b8352918301918301613b7e565b600082601f830112613bad57600080fd5b81356020613bbd6136f1836136ac565b82815260059290921b84018101918181019086841115613bdc57600080fd5b8286015b8481101561373457803567ffffffffffffffff811115613c005760008081fd5b613c0e8986838b010161395d565b845250918301918301613be0565b600080600080600060a08688031215613c3457600080fd5b853567ffffffffffffffff80821115613c4c57600080fd5b613c5889838a01613ad0565b96506020880135915080821115613c6e57600080fd5b613c7a89838a01613ad0565b95506040880135915080821115613c9057600080fd5b613c9c89838a016136d0565b94506060880135915080821115613cb257600080fd5b613cbe89838a01613b36565b93506080880135915080821115613cd457600080fd5b50613a1a88828901613b9c565b60008060408385031215613cf457600080fd5b82359150602083013567ffffffffffffffff811115613d1257600080fd5b6137998582860161395d565b600080600060608486031215613d3357600080fd5b613d3c84613820565b925060208401359150604084013567ffffffffffffffff811115613d5f57600080fd5b613d6b8682870161395d565b9150509250925092565b60008060008060808587031215613d8b57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215613dba57600080fd5b823567ffffffffffffffff80821115613dd257600080fd5b613dde868387016136d0565b93506020850135915080821115613df457600080fd5b5061379985828601613b9c565b60008151808452602080850194506020840160005b83811015613e3257815187529582019590820190600101613e16565b509495945050505050565b602081526000610a9c6020830184613e01565b600080600060608486031215613e6557600080fd5b833567ffffffffffffffff80821115613e7d57600080fd5b613e89878388016136d0565b94506020860135915080821115613e9f57600080fd5b613eab878388016136d0565b93506040860135915080821115613ec157600080fd5b50613d6b86828701613b9c565b600080600060608486031215613ee357600080fd5b8335925060208401359150604084013567ffffffffffffffff811115613d5f57600080fd5b60008060008060808587031215613f1e57600080fd5b613f2785613820565b935060208501359250613f3c60408601613925565b9150606085013567ffffffffffffffff811115613f5857600080fd5b613f648782880161395d565b91505092959194509250565b600060208284031215613f8257600080fd5b813567ffffffffffffffff811115613f9957600080fd5b6126e3848285016136d0565b803560ff8116811461383757600080fd5b60008060008060008060008060e0898b031215613fd257600080fd5b883567ffffffffffffffff811115613fe957600080fd5b613ff58b828c01613a27565b9099509750506020890135955061400e60408a01613820565b94506060890135935061402360808a01613fa5565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a0868803121561405857600080fd5b61406186613820565b94506020860135935061407660408701613fa5565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516140d0818460208701613602565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061410457607f821691505b60208210810361183957634e487b7160e01b600052602260045260246000fd5b601f82111561130d576000816000526020600020601f850160051c8101602086101561414d5750805b601f850160051c820191505b8181101561113357828155600101614159565b67ffffffffffffffff83111561418457614184613665565b6141988361419283546140f0565b83614124565b6000601f8411600181146141cc57600085156141b45750838201355b600019600387901b1c1916600186901b178355610cab565b600083815260209020601f19861690835b828110156141fd57868501358255602094850194600190920191016141dd565b508682101561421a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e1984360301811261424357600080fd5b83018035915067ffffffffffffffff82111561425e57600080fd5b602001915036819003821315613a6c57600080fd5b8183823760009101908152919050565b6001600160a01b038516815283602082015282151560408201526080606082015260006142b36080830184613626565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a2b57610a2b6142bd565b805160208201516bffffffffffffffffffffffff19808216929190601483101561431a5780818460140360031b1b83161693505b505050919050565b6001600160a01b0384168152821515602082015260606040820152600061434c6060830184613626565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526127cc60a0830184613626565b815167ffffffffffffffff8111156143a9576143a9613665565b6143bd816143b784546140f0565b84614124565b602080601f8311600181146143f257600084156143da5750858301515b600019600386901b1c1916600185901b178555611133565b600085815260208120601f198616915b8281101561442157888601518255948401946001909101908401614402565b508582101561443f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006126e36040830184613626565b8281526040602082015260006126e36040830184613626565b80820180821115610a2b57610a2b6142bd565b8082028115828204841417610a2b57610a2b6142bd565b6000602082840312156144bf57600080fd5b5051919050565b805160208083015191908110156118395760001960209190910360031b1b16919050565b6000602082840312156144fc57600080fd5b815167ffffffffffffffff81111561451357600080fd5b8201601f8101841361452457600080fd5b80516145326136f182613935565b81815285602083850101111561454757600080fd5b61434c826020830160208601613602565b634e487b7160e01b600052601260045260246000fd5b60008261457d5761457d614558565b500490565b60008261459157614591614558565b500690565b6040815260006145a96040830185613e01565b90508260208301529392505050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016145f6576145f66142bd565b506001019056fea2646970667358221220745156f2e1b7047a2cc8c66f41ace891ad42b4c2798b90ac2c6c9f91481af87464736f6c63430008160033 diff --git a/artifacts/bytecode/42/drops/LSP8DropsLightAsset.bin b/artifacts/bytecode/42/drops/LSP8DropsLightAsset.bin index 517a40d..89cf1a1 100644 --- a/artifacts/bytecode/42/drops/LSP8DropsLightAsset.bin +++ b/artifacts/bytecode/42/drops/LSP8DropsLightAsset.bin @@ -1 +1 @@ -0x6101206040523480156200001257600080fd5b506040516200473638038062004736833981016040819052620000359162000579565b84848483858c8c8c6001600084848484816001600160a01b0381166200006e576040516306b620db60e21b815260040160405180910390fd5b6200007981620002f5565b506040805180820190915260048152632936598960e21b6020820152620000c2907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000363565b620000ee7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000363565b6200011a7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000363565b604080516020810183905262000163917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000363565b50506040805160208101859052620001b093507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003bc565b505050505080600003620001d75760405163038d9fc360e41b815260040160405180910390fd5b6080526001600955604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af415801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000656565b62000285576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002a357506001600160a01b038216155b15620002c25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c05250620008139650505050505050565b6000546001600160a01b038281169116146200036057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200037d828262000712565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003b09190620007de565b60405180910390a25050565b620003c88282620003cc565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016200040d576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200044e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036357604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b50506000910152565b600082601f830112620004dd57600080fd5b81516001600160401b0380821115620004fa57620004fa6200048f565b604051601f8301601f19908116603f011681019082821181831017156200052557620005256200048f565b816040528381528660208588010111156200053f57600080fd5b62000552846020830160208901620004a5565b9695505050505050565b80516001600160a01b03811681146200057457600080fd5b919050565b600080600080600080600080610100898b0312156200059757600080fd5b88516001600160401b0380821115620005af57600080fd5b620005bd8c838d01620004cb565b995060208b0151915080821115620005d457600080fd5b50620005e38b828c01620004cb565b975050620005f460408a016200055c565b95506200060460608a016200055c565b94506200061460808a016200055c565b93506200062460a08a016200055c565b925060c0890151915060e089015163ffffffff811681146200064557600080fd5b809150509295985092959890939650565b6000602082840312156200066957600080fd5b815180151581146200067a57600080fd5b9392505050565b600181811c908216806200069657607f821691505b602082108103620006b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200070d576000816000526020600020601f850160051c81016020861015620006e85750805b601f850160051c820191505b818110156200070957828155600101620006f4565b5050505b505050565b81516001600160401b038111156200072e576200072e6200048f565b62000746816200073f845462000681565b84620006bd565b602080601f8311600181146200077e5760008415620007655750858301515b600019600386901b1c1916600185901b17855562000709565b600085815260208120601f198616915b82811015620007af578886015182559484019460019091019084016200078e565b5085821015620007ce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620007ff816040850160208701620004a5565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161010051613ebb6200087b600039600081816104050152611697015260008181610721015261182a01526000818161048f015261173f01526000818161045b01526117dd0152600081816105220152612d480152613ebb6000f3fe6080604052600436106102385760003560e01c80637e87632c11610138578063be9f0e6f116100b0578063dd5ffa1e1161007f578063f2fde38b11610064578063f2fde38b146107b8578063f31a4faf146107d8578063fc6180711461080e576102ac565b8063dd5ffa1e14610783578063dedff9c614610798576102ac565b8063be9f0e6f146106ef578063d598d4c91461070f578063d6c1407c14610743578063db8c966314610763576102ac565b806392a91a3a1161010757806397902421116100ec578063979024211461068f578063a3b261f2146106a2578063aad3ec96146106cf576102ac565b806392a91a3a1461062c578063942cd44b14610659576102ac565b80637e87632c146105bb5780637f23690c146105db57806386a10ddd146105ee5780638da5cb5b1461060e576102ac565b806338af3eed116101cb57806352058d8a1161019a5780636963d4381161017f5780636963d4381461056657806370a0823114610586578063715018a6146105a6576102ac565b806352058d8a1461051357806354f6127f14610546576102ac565b806338af3eed146104495780633c3e8ae31461047d57806349a6078d146104c6578063511b6952146104f3576102ac565b8063217b227011610207578063217b22701461039b5780632a3654a4146103d35780632b7ac3f3146103f357806337e3f8dc14610427576102ac565b806301ffc9a7146102ed57806316e023b31461032257806318160ddd1461034f5780631d26fce61461036e576102ac565b366102ac573460000361027a5760405163e5099ee360e01b81526004016102719060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156102d757828260405163e5099ee360e01b8152600401610271929190612f4d565b6102e18383610821565b80519350602001915050f35b3480156102f957600080fd5b5061030d610308366004612f7c565b610930565b60405190151581526020015b60405180910390f35b34801561032e57600080fd5b5061034261033d366004612fa6565b61097d565b6040516103199190613018565b34801561035b57600080fd5b506002545b604051908152602001610319565b34801561037a57600080fd5b5061038e610389366004613105565b610990565b6040516103199190613169565b3480156103a757600080fd5b506103bb6103b63660046131cd565b610a56565b6040516001600160a01b039091168152602001610319565b3480156103df57600080fd5b5061030d6103ee366004613202565b610a8f565b3480156103ff57600080fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043357600080fd5b5061044761044236600461322c565b610aa4565b005b34801561045557600080fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048957600080fd5b506104b17f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610319565b3480156104d257600080fd5b506104e66104e13660046131cd565b610af7565b604051610319919061329e565b3480156104ff57600080fd5b5061044761050e366004613374565b610b19565b34801561051f57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610360565b34801561055257600080fd5b506103426105613660046131cd565b610b76565b34801561057257600080fd5b5061038e6105813660046133ed565b610b81565b34801561059257600080fd5b506103606105a1366004613450565b610cca565b3480156105b257600080fd5b50610447610cd5565b3480156105c757600080fd5b506104476105d63660046135b7565b610ce9565b6104476105e936600461367c565b610df1565b3480156105fa57600080fd5b506104476106093660046136b9565b610e26565b34801561061a57600080fd5b506000546001600160a01b03166103bb565b34801561063857600080fd5b506103606106473660046131cd565b60009081526007602052604090205490565b34801561066557600080fd5b50610360610674366004613450565b6001600160a01b03166000908152600a602052604090205490565b61044761069d366004613710565b610fb9565b3480156106ae57600080fd5b506106c26106bd366004613450565b6110ab565b60405161031991906137a6565b3480156106db57600080fd5b506104476106ea366004613202565b6110cf565b3480156106fb57600080fd5b5061044761070a3660046137b9565b6112ab565b34801561071b57600080fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561074f57600080fd5b5061044761075e366004613837565b6113a8565b34801561076f57600080fd5b5061044761077e366004613871565b6113bb565b34801561078f57600080fd5b5061034261148f565b3480156107a457600080fd5b5061038e6107b33660046138d9565b61151d565b3480156107c457600080fd5b506104476107d3366004613450565b6115c8565b3480156107e457600080fd5b506103606107f3366004613450565b6001600160a01b03166000908152600b602052604090205490565b61044761081c36600461390e565b61161c565b6060600061083a6000356001600160e01b031916611886565b5090506001600160a01b03811661088b576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610271565b600080826001600160a01b031634878733346040516020016108b09493929190613964565b60408051601f19818403018152908290526108ca91613994565b60006040518083038185875af1925050503d8060008114610907576040519150601f19603f3d011682016040523d82523d6000602084013e61090c565b606091505b5091509150811561092157925061092a915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a27170600000000000000000000000000000000000000000000000000000000148061096e575061096e82611930565b8061092a575061092a8261196e565b606061098983836119a5565b9392505050565b6060825167ffffffffffffffff8111156109ac576109ac61302b565b6040519080825280602002602001820160405280156109df57816020015b60608152602001906001900390816109ca5790505b50905060005b8351811015610a4f57610a2a848281518110610a0357610a036139b0565b6020026020010151848381518110610a1d57610a1d6139b0565b60200260200101516119a5565b828281518110610a3c57610a3c6139b0565b60209081029190910101526001016109e5565b5092915050565b6000818152600360205260408120546001600160a01b03168061092a57604051635747cd1b60e11b815260048101849052602401610271565b6000610a9a82611aba565b6109898383611af2565b610aac611b2f565b600c610ab9828483613a42565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610aeb929190612f4d565b60405180910390a15050565b6060610b0282611aba565b600082815260056020526040902061092a90611b84565b610b233384611af2565b610b62576040517f1294d2a900000000000000000000000000000000000000000000000000000000815260048101849052336024820152604401610271565b610b6f8585858585611b91565b5050505050565b606061092a82611d7f565b60608167ffffffffffffffff811115610b9c57610b9c61302b565b604051908082528060200260200182016040528015610bcf57816020015b6060815260200190600190039081610bba5790505b50905060005b82811015610a4f5760008030868685818110610bf357610bf36139b0565b9050602002810190610c059190613b02565b604051610c13929190613b50565b600060405180830381855af49150503d8060008114610c4e576040519150601f19603f3d011682016040523d82523d6000602084013e610c53565b606091505b509150915081610ca257805115610c6d5780518082602001fd5b6040517f234eb81900000000000000000000000000000000000000000000000000000000815260048101849052602401610271565b80848481518110610cb557610cb56139b0565b60209081029190910101525050600101610bd5565b600061092a82611e21565b610cdd611b2f565b610ce76000611e42565b565b8451845181141580610cfc575083518114155b80610d08575082518114155b80610d14575081518114155b15610d4b576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610de857610de0878281518110610d6b57610d6b6139b0565b6020026020010151878381518110610d8557610d856139b0565b6020026020010151878481518110610d9f57610d9f6139b0565b6020026020010151878581518110610db957610db96139b0565b6020026020010151878681518110610dd357610dd36139b0565b6020026020010151610b19565b600101610d4e565b50505050505050565b610df9611b2f565b3415610e185760405163f36ba73760e01b815260040160405180910390fd5b610e228282611ebd565b5050565b6000610e3183610a56565b90506001600160a01b0381163314610e7457604051632d938f5160e11b81526001600160a01b038216600482015260248101849052336044820152606401610271565b6001600160a01b038416610e9b57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610ecd576040516344fed6b160e11b815260040160405180910390fd5b6000838152600560205260408120610ee59086611f20565b905080610f30576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101859052604401610271565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610f749190613018565b60405180910390a460003385600186604051602001610f969493929190613b60565b6040516020818303038152906040529050610fb18682611f35565b505050505050565b610fc1611b2f565b3415610fe05760405163f36ba73760e01b815260040160405180910390fd5b805182511461101b576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003611056576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156110a65761109e838281518110611077576110776139b0565b6020026020010151838381518110611091576110916139b0565b6020026020010151611ebd565b600101611059565b505050565b6001600160a01b038116600090815260046020526040902060609061092a90611b84565b6110d7611f60565b6001600160a01b038216611117576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611151576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020548181101561119e576040517fffb97f8100000000000000000000000000000000000000000000000000000000815260048101839052602401610271565b336000908152600a6020526040812080548492906111bd908490613bb0565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461120d576040519150601f19603f3d011682016040523d82523d6000602084013e611212565b606091505b505090508061125f576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101849052604401610271565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610e226001600955565b6112b3611b2f565b815183511415806112c657508051825114155b156112fd576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251600003611338576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156113a25761139a848281518110611359576113596139b0565b6020026020010151848381518110611373576113736139b0565b602002602001015184848151811061138d5761138d6139b0565b6020026020010151611fb9565b60010161133b565b50505050565b6113b0611b2f565b6110a6838383611fb9565b60006113c684610a56565b90506001600160a01b038116331461140957604051632d938f5160e11b81526001600160a01b038216600482015260248101859052336044820152606401610271565b6001600160a01b03851661143057604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031603611462576040516344fed6b160e11b815260040160405180910390fd5b61146f8582868686612049565b8215610b6f5760003385600085604051602001610f969493929190613b60565b600c805461149c906139c6565b80601f01602080910402602001604051908101604052809291908181526020018280546114c8906139c6565b80156115155780601f106114ea57610100808354040283529160200191611515565b820191906000526020600020905b8154815290600101906020018083116114f857829003601f168201915b505050505081565b6060815167ffffffffffffffff8111156115395761153961302b565b60405190808252806020026020018201604052801561156c57816020015b60608152602001906001900390816115575790505b50905060005b82518110156115c25761159d838281518110611590576115906139b0565b6020026020010151611d7f565b8282815181106115af576115af6139b0565b6020908102919091010152600101611572565b50919050565b6115d0611b2f565b6001600160a01b038116611610576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61161981611e42565b50565b611624611f60565b34600030468861163381612102565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116cb82878787612131565b6001600160a01b03161461170b576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af41580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190613bc3565b90506117d38184613bb0565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a60205260408120805490919061181b908490613bdc565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a602052604081208054839290611868908490613bdc565b909155506118799050888885612159565b505050610b6f6001600955565b600080806118be7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612294565b905060006118cb82611d7f565b905080516014141580156118df5750805115155b1561191857806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016102719190613018565b61192181613bef565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b00000000000000000000000000000000000000000000000000000000148061092a575061092a82612305565b6000806119816301ffc9a760e01b611886565b5090506001600160a01b03811661199b5750600092915050565b6109898184612353565b606060006119b384846123f1565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e831480156119e357508051155b15610989576000611a137f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611d7f565b90508051600003611ab257600c8054611a2b906139c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a57906139c6565b8015611aa45780601f10611a7957610100808354040283529160200191611aa4565b820191906000526020600020905b815481529060010190602001808311611a8757829003601f168201915b50505050509250505061092a565b509392505050565b6000818152600360205260409020546001600160a01b031661161957604051635747cd1b60e11b815260048101829052602401610271565b6000611afd82610a56565b6001600160a01b0316836001600160a01b031614806109895750600082815260056020526040902061098990846124c8565b33611b426000546001600160a01b031690565b6001600160a01b031614610ce7576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610271565b60606000610989836124ea565b836001600160a01b0316856001600160a01b031603611bdc576040517f5d67d6c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611be784610a56565b9050856001600160a01b0316816001600160a01b031614611c3557604051632d938f5160e11b81526001600160a01b0380831660048301526024820186905287166044820152606401610271565b6001600160a01b038516611c5c576040516324ecef4d60e01b815260040160405180910390fd5b611c6886868685612545565b611c7184610a56565b9050611c7d8685612551565b6001600160a01b0386166000908152600460205260409020611c9f90856125a9565b506001600160a01b0385166000908152600460205260409020611cc290856125b5565b5060008481526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518692918916907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611d3690339089908990613c2b565b60405180910390a460003387878786604051602001611d59959493929190613c5e565b6040516020818303038152906040529050611d7487826125c1565b610de88685836125ec565b6000818152600160205260409020805460609190611d9c906139c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc8906139c6565b8015611e155780601f10611dea57610100808354040283529160200191611e15565b820191906000526020600020905b815481529060010190602001808311611df857829003601f168201915b50505050509050919050565b6001600160a01b038116600090815260046020526040812061092a90612726565b6000546001600160a01b0382811691161461161957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201611f16576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e228282612730565b6000610989836001600160a01b03841661273a565b610e22827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612789565b600260095403611fb25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610271565b6002600955565b80600160008585604051602001611fda929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020908161200a9190613c98565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161203c9190613018565b60405180910390a3505050565b600083815260056020526040812061206190876127d6565b9050806120ac576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101859052604401610271565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c86866040516120f2929190613d58565b60405180910390a4505050505050565b6001600160a01b0381166000908152600b602052604081208054908261212783613d73565b9091555092915050565b6000806000612142878787876127eb565b9150915061214f816128af565b5095945050505050565b60008267ffffffffffffffff8111156121745761217461302b565b60405190808252806020026020018201604052801561219d578160200160208202803683370190505b5090506000600d5460016121b19190613bdc565b905083600d60008282546121c59190613bdc565b90915550600090505b84811015612208576121e08183613bdc565b60001b8382815181106121f5576121f56139b0565b60209081029190910101526001016121ce565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612244929190613d8c565b60405180910390a260005b84811015610fb15761228c8684838151811061226d5761226d6139b0565b6020026020010151600160405180602001604052806000815250612a14565b60010161224f565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806122fd90613dae565b949350505050565b60006001600160e01b031982167f629aa69400000000000000000000000000000000000000000000000000000000148061092a57506301ffc9a760e01b6001600160e01b031983161461092a565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156123da575060208210155b80156123e65750600081115b979650505050505050565b6060600160008484604051602001612413929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020016000208054612442906139c6565b80601f016020809104026020016040519081016040528092919081815260200182805461246e906139c6565b80156124bb5780601f10612490576101008083540402835291602001916124bb565b820191906000526020600020905b81548152906001019060200180831161249e57829003601f168201915b5050505050905092915050565b6001600160a01b03811660009081526001830160205260408120541515610989565b606081600001805480602002602001604051908101604052809291908181526020018280548015611e1557602002820191906000526020600020905b8154815260200190600101908083116125265750505050509050919050565b6113a284848484612a20565b60008181526005602052604081209061256982612726565b90506000805b82811015610fb157612582846000612ae7565b91506125a1828787600060405180602001604052806000815250612049565b60010161256f565b60006109898383612af3565b6000610989838361273a565b610e22827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612789565b6125fd83631aed5a8560e21b612353565b1561269757604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612650907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401613dd2565b6000604051808303816000875af115801561266f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113a29190810190613deb565b816110a6576001600160a01b0383163b156126e9576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610271565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610271565b600061092a825490565b610e228282612be6565b60008181526001830160205260408120546127815750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561092a565b50600061092a565b6127a36001600160a01b038416631aed5a8560e21b612353565b156110a657604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906126509085908590600401613dd2565b6000610989836001600160a01b038416612af3565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561282257506000905060036128a6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612876573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661289f576000600192509250506128a6565b9150600090505b94509492505050565b60008160048111156128c3576128c3613e59565b036128cb5750565b60018160048111156128df576128df613e59565b0361292c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610271565b600281600481111561294057612940613e59565b0361298d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610271565b60038160048111156129a1576129a1613e59565b036116195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610271565b6113a284848484612d46565b6001600160a01b038416612a5a576000612a3960025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316612ae25760006001612a7560025490565b612a7f9190613bb0565b60008481526008602052604090205490915081811015612ac1576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b6113a2565b60006109898383612db9565b60008181526001830160205260408120548015612bdc576000612b17600183613bb0565b8554909150600090612b2b90600190613bb0565b9050818114612b90576000866000018281548110612b4b57612b4b6139b0565b9060005260206000200154905080876000018481548110612b6e57612b6e6139b0565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ba157612ba1613e6f565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061092a565b600091505061092a565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612c3f576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612c98576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201612cf1576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260409020612d098282613c98565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051612d3a9190613018565b60405180910390a25050565b7f0000000000000000000000000000000000000000000000000000000000000000600254612d75906001613bdc565b1115612dad576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113a284848484612de3565b6000826000018281548110612dd057612dd06139b0565b9060005260206000200154905092915050565b6001600160a01b038416612e0a576040516324ecef4d60e01b815260040160405180910390fd5b612e176000858584612545565b6000838152600360205260409020546001600160a01b031615612e69576040517f34c7b51100000000000000000000000000000000000000000000000000000000815260048101849052602401610271565b600260008154612e7890613d73565b909155506001600160a01b0384166000908152600460205260409020612e9e90846125b5565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90612f0d90339088908890613c2b565b60405180910390a46000336000868685604051602001612f31959493929190613c5e565b6040516020818303038152906040529050610b6f8584836125ec565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215612f8e57600080fd5b81356001600160e01b03198116811461098957600080fd5b60008060408385031215612fb957600080fd5b50508035926020909101359150565b60005b83811015612fe3578181015183820152602001612fcb565b50506000910152565b60008151808452613004816020860160208601612fc8565b601f01601f19169290920160200192915050565b6020815260006109896020830184612fec565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561306a5761306a61302b565b604052919050565b600067ffffffffffffffff82111561308c5761308c61302b565b5060051b60200190565b600082601f8301126130a757600080fd5b813560206130bc6130b783613072565b613041565b8083825260208201915060208460051b8701019350868411156130de57600080fd5b602086015b848110156130fa57803583529183019183016130e3565b509695505050505050565b6000806040838503121561311857600080fd5b823567ffffffffffffffff8082111561313057600080fd5b61313c86838701613096565b9350602085013591508082111561315257600080fd5b5061315f85828601613096565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156131c057603f198886030184526131ae858351612fec565b94509285019290850190600101613192565b5092979650505050505050565b6000602082840312156131df57600080fd5b5035919050565b80356001600160a01b03811681146131fd57600080fd5b919050565b6000806040838503121561321557600080fd5b61321e836131e6565b946020939093013593505050565b6000806020838503121561323f57600080fd5b823567ffffffffffffffff8082111561325757600080fd5b818501915085601f83011261326b57600080fd5b81358181111561327a57600080fd5b86602082850101111561328c57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156132df5783516001600160a01b0316835292840192918401916001016132ba565b50909695505050505050565b803580151581146131fd57600080fd5b600067ffffffffffffffff8211156133155761331561302b565b50601f01601f191660200190565b600082601f83011261333457600080fd5b81356133426130b7826132fb565b81815284602083860101111561335757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561338c57600080fd5b613395866131e6565b94506133a3602087016131e6565b9350604086013592506133b8606087016132eb565b9150608086013567ffffffffffffffff8111156133d457600080fd5b6133e088828901613323565b9150509295509295909350565b6000806020838503121561340057600080fd5b823567ffffffffffffffff8082111561341857600080fd5b818501915085601f83011261342c57600080fd5b81358181111561343b57600080fd5b8660208260051b850101111561328c57600080fd5b60006020828403121561346257600080fd5b610989826131e6565b600082601f83011261347c57600080fd5b8135602061348c6130b783613072565b8083825260208201915060208460051b8701019350868411156134ae57600080fd5b602086015b848110156130fa576134c4816131e6565b83529183019183016134b3565b600082601f8301126134e257600080fd5b813560206134f26130b783613072565b8083825260208201915060208460051b87010193508684111561351457600080fd5b602086015b848110156130fa5761352a816132eb565b8352918301918301613519565b600082601f83011261354857600080fd5b813560206135586130b783613072565b82815260059290921b8401810191818101908684111561357757600080fd5b8286015b848110156130fa57803567ffffffffffffffff81111561359b5760008081fd5b6135a98986838b0101613323565b84525091830191830161357b565b600080600080600060a086880312156135cf57600080fd5b853567ffffffffffffffff808211156135e757600080fd5b6135f389838a0161346b565b9650602088013591508082111561360957600080fd5b61361589838a0161346b565b9550604088013591508082111561362b57600080fd5b61363789838a01613096565b9450606088013591508082111561364d57600080fd5b61365989838a016134d1565b9350608088013591508082111561366f57600080fd5b506133e088828901613537565b6000806040838503121561368f57600080fd5b82359150602083013567ffffffffffffffff8111156136ad57600080fd5b61315f85828601613323565b6000806000606084860312156136ce57600080fd5b6136d7846131e6565b925060208401359150604084013567ffffffffffffffff8111156136fa57600080fd5b61370686828701613323565b9150509250925092565b6000806040838503121561372357600080fd5b823567ffffffffffffffff8082111561373b57600080fd5b61374786838701613096565b9350602085013591508082111561375d57600080fd5b5061315f85828601613537565b60008151808452602080850194506020840160005b8381101561379b5781518752958201959082019060010161377f565b509495945050505050565b602081526000610989602083018461376a565b6000806000606084860312156137ce57600080fd5b833567ffffffffffffffff808211156137e657600080fd5b6137f287838801613096565b9450602086013591508082111561380857600080fd5b61381487838801613096565b9350604086013591508082111561382a57600080fd5b5061370686828701613537565b60008060006060848603121561384c57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156136fa57600080fd5b6000806000806080858703121561388757600080fd5b613890856131e6565b9350602085013592506138a5604086016132eb565b9150606085013567ffffffffffffffff8111156138c157600080fd5b6138cd87828801613323565b91505092959194509250565b6000602082840312156138eb57600080fd5b813567ffffffffffffffff81111561390257600080fd5b6122fd84828501613096565b600080600080600060a0868803121561392657600080fd5b61392f866131e6565b945060208601359350604086013560ff8116811461394c57600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516139a6818460208701612fc8565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806139da57607f821691505b6020821081036115c257634e487b7160e01b600052602260045260246000fd5b601f8211156110a6576000816000526020600020601f850160051c81016020861015613a235750805b601f850160051c820191505b81811015610fb157828155600101613a2f565b67ffffffffffffffff831115613a5a57613a5a61302b565b613a6e83613a6883546139c6565b836139fa565b6000601f841160018114613aa25760008515613a8a5750838201355b600019600387901b1c1916600186901b178355610b6f565b600083815260209020601f19861690835b82811015613ad35786850135825560209485019460019092019101613ab3565b5086821015613af05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e19843603018112613b1957600080fd5b83018035915067ffffffffffffffff821115613b3457600080fd5b602001915036819003821315613b4957600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b03851681528360208201528215156040820152608060608201526000613b906080830184612fec565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561092a5761092a613b9a565b600060208284031215613bd557600080fd5b5051919050565b8082018082111561092a5761092a613b9a565b805160208201516bffffffffffffffffffffffff198082169291906014831015613c235780818460140360031b1b83161693505b505050919050565b6001600160a01b03841681528215156020820152606060408201526000613c556060830184612fec565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526123e660a0830184612fec565b815167ffffffffffffffff811115613cb257613cb261302b565b613cc681613cc084546139c6565b846139fa565b602080601f831160018114613cfb5760008415613ce35750858301515b600019600386901b1c1916600185901b178555610fb1565b600085815260208120601f198616915b82811015613d2a57888601518255948401946001909101908401613d0b565b5085821015613d485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006122fd6040830184612fec565b600060018201613d8557613d85613b9a565b5060010190565b604081526000613d9f604083018561376a565b90508260208301529392505050565b805160208083015191908110156115c25760001960209190910360031b1b16919050565b8281526040602082015260006122fd6040830184612fec565b600060208284031215613dfd57600080fd5b815167ffffffffffffffff811115613e1457600080fd5b8201601f81018413613e2557600080fd5b8051613e336130b7826132fb565b818152856020838501011115613e4857600080fd5b613c55826020830160208601612fc8565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212209d722b7e792eda30bbe3990fc1878cba18386bf0a839658e36c0816e30862e6f64736f6c63430008160033 +0x6101206040523480156200001257600080fd5b506040516200599638038062005996833981016040819052620000359162000583565b84848483858c8c8c60016000848484848484848484816001600160a01b03811662000073576040516306b620db60e21b815260040160405180910390fd5b6200007e81620002ff565b506040805180820190915260048152632936598960e21b6020820152620000c7907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200036d565b620000f37fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200036d565b6200011f7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200036d565b604080516020810183905262000168917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200036d565b50506040805160208101859052620001b593507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003c6565b5050505050505050505080600003620001e15760405163038d9fc360e41b815260040160405180910390fd5b6080526001600a55604051633c7bdc1960e01b815263ffffffff8216600482015273157668416776c78eab825d0d3969d75dc7dd7c0d90633c7bdc1990602401602060405180830381865af41580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000265919062000660565b6200028f576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002ad57506001600160a01b038216155b15620002cc5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c052506200081d9650505050505050565b6000546001600160a01b038281169116146200036a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200038782826200071c565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003ba9190620007e8565b60405180910390a25050565b620003d28282620003d6565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820162000417576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200045857604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036d57604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004cc578181015183820152602001620004b2565b50506000910152565b600082601f830112620004e757600080fd5b81516001600160401b038082111562000504576200050462000499565b604051601f8301601f19908116603f011681019082821181831017156200052f576200052f62000499565b816040528381528660208588010111156200054957600080fd5b6200055c846020830160208901620004af565b9695505050505050565b80516001600160a01b03811681146200057e57600080fd5b919050565b600080600080600080600080610100898b031215620005a157600080fd5b88516001600160401b0380821115620005b957600080fd5b620005c78c838d01620004d5565b995060208b0151915080821115620005de57600080fd5b50620005ed8b828c01620004d5565b975050620005fe60408a0162000566565b95506200060e60608a0162000566565b94506200061e60808a0162000566565b93506200062e60a08a0162000566565b925060c0890151915060e089015163ffffffff811681146200064f57600080fd5b809150509295985092959890939650565b6000602082840312156200067357600080fd5b815180151581146200068457600080fd5b9392505050565b600181811c90821680620006a057607f821691505b602082108103620006c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000717576000816000526020600020601f850160051c81016020861015620006f25750805b601f850160051c820191505b818110156200071357828155600101620006fe565b5050505b505050565b81516001600160401b0381111562000738576200073862000499565b62000750816200074984546200068b565b84620006c7565b602080601f8311600181146200078857600084156200076f5750858301515b600019600386901b1c1916600185901b17855562000713565b600085815260208120601f198616915b82811015620007b95788860151825594840194600190910190840162000798565b5085821015620007d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000809816040850160208701620004af565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161010051615111620008856000396000818161055f0152611af401526000818161096e0152611c870152600081816106070152611b9c0152600081816105d30152611c3a0152600081816106da0152613a8a01526151116000f3fe6080604052600436106103175760003560e01c8063715018a61161019a578063b88d4fde116100e1578063dd5ffa1e1161008a578063f2fde38b11610064578063f2fde38b14610a4e578063f31a4faf14610a6e578063fc61807114610aa45761038b565b8063dd5ffa1e146109d0578063dedff9c6146109e5578063e985e9c514610a055761038b565b8063d598d4c9116100bb578063d598d4c91461095c578063d6c1407c14610990578063db8c9663146109b05761038b565b8063b88d4fde146108fc578063be9f0e6f1461091c578063c87b56dd1461093c5761038b565b8063942cd44b11610143578063a22cb4651161011d578063a22cb4651461088f578063a3b261f2146108af578063aad3ec96146108dc5761038b565b8063942cd44b1461083157806395d89b4114610867578063979024211461087c5761038b565b806386a10ddd1161017457806386a10ddd146107c65780638da5cb5b146107e657806392a91a3a146108045761038b565b8063715018a61461077e5780637e87632c146107935780637f23690c146107b35761038b565b806337e3f8dc1161025e578063511b6952116102075780636352211e116101e15780636352211e1461071e5780636963d4381461073e57806370a082311461075e5761038b565b8063511b6952146106ab57806352058d8a146106cb57806354f6127f146106fe5761038b565b806342842e0e1161023857806342842e0e1461063e57806349a6078d1461065e5780634f6ccce71461068b5761038b565b806337e3f8dc146105a157806338af3eed146105c15780633c3e8ae3146105f55761038b565b80631d26fce6116102c05780632a3654a41161029a5780632a3654a41461052d5780632b7ac3f31461054d5780632f745c59146105815761038b565b80631d26fce6146104c0578063217b2270146104ed57806323b872dd1461050d5761038b565b8063095ea7b3116102f1578063095ea7b31461045b57806316e023b31461047d57806318160ddd1461049d5761038b565b806301ffc9a7146103cc57806306fdde0314610401578063081812fc146104235761038b565b3661038b57346000036103595760405163e5099ee360e01b81526004016103509060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156103b657828260405163e5099ee360e01b8152600401610350929190614030565b6103c08383610ab7565b80519350602001915050f35b3480156103d857600080fd5b506103ec6103e7366004614075565b610bc6565b60405190151581526020015b60405180910390f35b34801561040d57600080fd5b50610416610bd1565b6040516103f891906140e2565b34801561042f57600080fd5b5061044361043e3660046140f5565b610bfe565b6040516001600160a01b0390911681526020016103f8565b34801561046757600080fd5b5061047b61047636600461412a565b610c64565b005b34801561048957600080fd5b50610416610498366004614154565b610c85565b3480156104a957600080fd5b506104b2610c98565b6040519081526020016103f8565b3480156104cc57600080fd5b506104e06104db366004614250565b610ca8565b6040516103f891906142b4565b3480156104f957600080fd5b506104436105083660046140f5565b610d90565b34801561051957600080fd5b5061047b610528366004614318565b610dc9565b34801561053957600080fd5b506103ec61054836600461412a565b610dee565b34801561055957600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561058d57600080fd5b506104b261059c36600461412a565b610dfa565b3480156105ad57600080fd5b5061047b6105bc366004614354565b610e2e565b3480156105cd57600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561060157600080fd5b506106297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103f8565b34801561064a57600080fd5b5061047b610659366004614318565b610e81565b34801561066a57600080fd5b5061067e6106793660046140f5565b610e9c565b6040516103f891906143c6565b34801561069757600080fd5b506104b26106a63660046140f5565b610ebe565b3480156106b757600080fd5b5061047b6106c636600461449c565b610ed2565b3480156106d757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104b2565b34801561070a57600080fd5b506104166107193660046140f5565b610f16565b34801561072a57600080fd5b506104436107393660046140f5565b610f21565b34801561074a57600080fd5b506104e0610759366004614515565b610f2c565b34801561076a57600080fd5b506104b2610779366004614578565b611075565b34801561078a57600080fd5b5061047b611080565b34801561079f57600080fd5b5061047b6107ae3660046146df565b611094565b61047b6107c13660046147a4565b61119c565b3480156107d257600080fd5b5061047b6107e13660046147e1565b6111cd565b3480156107f257600080fd5b506000546001600160a01b0316610443565b34801561081057600080fd5b506104b261081f3660046140f5565b60009081526008602052604090205490565b34801561083d57600080fd5b506104b261084c366004614578565b6001600160a01b03166000908152600b602052604090205490565b34801561087357600080fd5b506104166111d8565b61047b61088a366004614838565b611205565b34801561089b57600080fd5b5061047b6108aa366004614892565b6112f2565b3480156108bb57600080fd5b506108cf6108ca366004614578565b6112fd565b6040516103f89190614901565b3480156108e857600080fd5b5061047b6108f736600461412a565b611321565b34801561090857600080fd5b5061047b610917366004614914565b6114fd565b34801561092857600080fd5b5061047b61093736600461497c565b61150f565b34801561094857600080fd5b506104166109573660046140f5565b6115ed565b34801561096857600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561099c57600080fd5b5061047b6109ab3660046149fa565b6117b9565b3480156109bc57600080fd5b5061047b6109cb366004614a34565b6117cc565b3480156109dc57600080fd5b506104166118ec565b3480156109f157600080fd5b506104e0610a00366004614a84565b61197a565b348015610a1157600080fd5b506103ec610a20366004614ab9565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b348015610a5a57600080fd5b5061047b610a69366004614578565b611a25565b348015610a7a57600080fd5b506104b2610a89366004614578565b6001600160a01b03166000908152600c602052604090205490565b61047b610ab2366004614ae3565b611a79565b60606000610ad06000356001600160e01b031916611ce3565b5090506001600160a01b038116610b21576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610350565b600080826001600160a01b03163487873334604051602001610b469493929190614b39565b60408051601f1981840301815290829052610b6091614b69565b60006040518083038185875af1925050503d8060008114610b9d576040519150601f19603f3d011682016040523d82523d6000602084013e610ba2565b606091505b50915091508115610bb7579250610bc0915050565b80518060208301fd5b92915050565b6000610bc082611d8d565b60606000610bc07fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1611dcb565b600081610c0a81611e6d565b6000610c1582610e9c565b80519091506000819003610c2e57506000949350505050565b81610c3a600183614b9b565b81518110610c4a57610c4a614bae565b60200260200101519350505050919050565b505050919050565b610c81828260001b604051806020016040528060008152506111cd565b5050565b6060610c918383611ea5565b9392505050565b6000610ca360025490565b905090565b60608151835114610ccc576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff811115610ce657610ce6614176565b604051908082528060200260200182016040528015610d1957816020015b6060815260200190600190039081610d045790505b50905060005b8351811015610d8957610d64848281518110610d3d57610d3d614bae565b6020026020010151848381518110610d5757610d57614bae565b6020026020010151611ea5565b828281518110610d7657610d76614bae565b6020908102919091010152600101610d1f565b5092915050565b6000818152600360205260408120546001600160a01b031680610bc057604051635747cd1b60e11b815260048101849052602401610350565b610de983838360001b600160405180602001604052806000815250611fba565b505050565b6000610c918383611fc7565b600080610e06846112fd565b9050808381518110610e1a57610e1a614bae565b602002602001015160001c91505092915050565b610e36612004565b600d610e43828483614c40565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610e75929190614030565b60405180910390a15050565b610de983838360405180602001604052806000815250612059565b6060610ea782611e6d565b6000828152600560205260409020610bc0906120e7565b600081815260086020526040812054610bc0565b610edc3384611fc7565b610f0257604051631294d2a960e01b815260048101849052336024820152604401610350565b610f0f8585858585611fba565b5050505050565b6060610bc082611dcb565b6000610bc082610d90565b60608167ffffffffffffffff811115610f4757610f47614176565b604051908082528060200260200182016040528015610f7a57816020015b6060815260200190600190039081610f655790505b50905060005b82811015610d895760008030868685818110610f9e57610f9e614bae565b9050602002810190610fb09190614d00565b604051610fbe929190614d4e565b600060405180830381855af49150503d8060008114610ff9576040519150601f19603f3d011682016040523d82523d6000602084013e610ffe565b606091505b50915091508161104d578051156110185780518082602001fd5b6040517f234eb81900000000000000000000000000000000000000000000000000000000815260048101849052602401610350565b8084848151811061106057611060614bae565b60209081029190910101525050600101610f80565b6000610bc0826120f4565b611088612004565b61109260006120ff565b565b84518451811415806110a7575083518114155b806110b3575082518114155b806110bf575081518114155b156110f6576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156111935761118b87828151811061111657611116614bae565b602002602001015187838151811061113057611130614bae565b602002602001015187848151811061114a5761114a614bae565b602002602001015187858151811061116457611164614bae565b602002602001015187868151811061117e5761117e614bae565b6020026020010151610ed2565b6001016110f9565b50505050505050565b6111a4612004565b34156111c35760405163f36ba73760e01b815260040160405180910390fd5b610c81828261217a565b610de98383836121dd565b60606000610bc07f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756611dcb565b61120d612004565b341561122c5760405163f36ba73760e01b815260040160405180910390fd5b8051825114611267576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036112a2576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610de9576112ea8382815181106112c3576112c3614bae565b60200260200101518383815181106112dd576112dd614bae565b602002602001015161217a565b6001016112a5565b610c813383836123c8565b6001600160a01b0381166000908152600460205260409020606090610bc0906120e7565b6113296124bd565b6001600160a01b038216611369576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036113a3576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b6020526040902054818110156113f0576040517fffb97f8100000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b336000908152600b60205260408120805484929061140f908490614b9b565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461145f576040519150601f19603f3d011682016040523d82523d6000602084013e611464565b606091505b50509050806114b1576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101849052604401610350565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610c816001600a55565b61150984848484612059565b50505050565b611517612004565b8151835114158061152a57508051825114155b15611548576040516317d38eff60e11b815260040160405180910390fd5b8251600003611583576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015611509576115e58482815181106115a4576115a4614bae565b60200260200101518483815181106115be576115be614bae565b60200260200101518484815181106115d8576115d8614bae565b6020026020010151612516565b600101611586565b6060600061161b837f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e611ea5565b9050805160001461166857600061163382600661256b565b61163e906008614d5e565b61ffff169050600061165f828385516116579190614b9b565b8591906125d1565b95945050505050565b5060006116947f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611dcb565b905080516000036116b5575050604080516020810190915260008152919050565b60006116c282600661256b565b6116cd906008614d5e565b61ffff16905060006116e6828385516116579190614b9b565b9050600061171d816117177ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d611dcb565b906126f8565b90508060000361174357611739826117348861275e565b6127fe565b9695505050505050565b8060010361177657611739828760405160200161176291815260200190565b6040516020818303038152906040526127fe565b8060020361178d576117398261173488601461287b565b806003148061179c5750806004145b156117b0576117398261173488602061287b565b50949350505050565b6117c1612004565b610de9838383612516565b60006117d784610d90565b9050336001600160a01b03821614611843576001600160a01b0385163314611843576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260448101859052606401610350565b6001600160a01b03851661186a57604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b03160361189c576040516344fed6b160e11b815260040160405180910390fd5b6118a98582868686612a5c565b8215610f0f57600081856000856040516020016118c99493929190614d79565b60405160208183030381529060405290506118e48682612b15565b505050505050565b600d80546118f990614bc4565b80601f016020809104026020016040519081016040528092919081815260200182805461192590614bc4565b80156119725780601f1061194757610100808354040283529160200191611972565b820191906000526020600020905b81548152906001019060200180831161195557829003601f168201915b505050505081565b6060815167ffffffffffffffff81111561199657611996614176565b6040519080825280602002602001820160405280156119c957816020015b60608152602001906001900390816119b45790505b50905060005b8251811015611a1f576119fa8382815181106119ed576119ed614bae565b6020026020010151611dcb565b828281518110611a0c57611a0c614bae565b60209081029190910101526001016119cf565b50919050565b611a2d612004565b6001600160a01b038116611a6d576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a76816120ff565b50565b611a816124bd565b346000304688611a9081612b40565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b2882878787612b6f565b6001600160a01b031614611b68576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260009073157668416776c78eab825d0d3969d75dc7dd7c0d90631817cb8e90604401602060405180830381865af4158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c249190614da9565b9050611c308184614b9b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600b602052604081208054909190611c78908490614dc2565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600b602052604081208054839290611cc5908490614dc2565b90915550611cd69050888885612b99565b505050610f0f6001600a55565b60008080611d1b7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612cd4565b90506000611d2882611dcb565b90508051601414158015611d3c5750805115155b15611d7557806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161035091906140e2565b611d7e81614dd5565b60601c95600195509350505050565b60006001600160e01b031982167f780e9d63000000000000000000000000000000000000000000000000000000001480610bc05750610bc082612d3d565b6000818152600160205260409020805460609190611de890614bc4565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1490614bc4565b8015611e615780601f10611e3657610100808354040283529160200191611e61565b820191906000526020600020905b815481529060010190602001808311611e4457829003601f168201915b50505050509050919050565b6000818152600360205260409020546001600160a01b0316611a7657604051635747cd1b60e11b815260048101829052602401610350565b60606000611eb38484612daf565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e83148015611ee357508051155b15610c91576000611f137f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611dcb565b90508051600003611fb257600d8054611f2b90614bc4565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5790614bc4565b8015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b505050505092505050610bc0565b509392505050565b610f0f8585858585612e5d565b6000611fd282610d90565b6001600160a01b0316836001600160a01b03161480610c9157506000828152600560205260409020610c919084612f07565b336120176000546001600160a01b031690565b6001600160a01b031614611092576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610350565b612067848484600185611fba565b61207384848484612f29565b611509576040805162461bcd60e51b81526020600482015260248101919091527f4c535038436f6d70617469626c654552433732313a207472616e73666572207460448201527f6f206e6f6e20455243373231526563656976657220696d706c656d656e7465726064820152608401610350565b60606000610c9183613081565b6000610bc0826130dc565b6000546001600160a01b03828116911614611a7657600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e7382016121d3576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8182826130e7565b60006121e883610d90565b90506001600160a01b038116331480159061222757506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b1561225d57604051632d938f5160e11b81526001600160a01b038216600482015260248101849052336044820152606401610350565b6001600160a01b03841661228457604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b0316036122b6576040516344fed6b160e11b815260040160405180910390fd5b60008381526005602052604081206122ce90866130f1565b905080612319576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101859052604401610350565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712158660405161235d91906140e2565b60405180910390a4836001600160a01b03861661237982610d90565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4600033856001866040516020016118c99493929190614d79565b816001600160a01b0316836001600160a01b03160361244f5760405162461bcd60e51b815260206004820152602760248201527f4c535038436f6d70617469626c654552433732313a20617070726f766520746f60448201527f2063616c6c6572000000000000000000000000000000000000000000000000006064820152608401610350565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6002600a540361250f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610350565b6002600a55565b600083815260066020908152604080832085845290915290206125398282614e0d565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb836040516124b091906140e2565b6000612578826002614dc2565b835110156125c85760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610350565b50016002015190565b6060816125df81601f614dc2565b101561262d5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610350565b6126378284614dc2565b845110156126875760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610350565b6060821580156126a657604051915060008252602082016040526117b0565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156126df5780518352602092830192016126c7565b5050858452601f01601f19166040525050949350505050565b6000612705826020614dc2565b835110156127555760405162461bcd60e51b815260206004820152601560248201527f746f55696e743235365f6f75744f66426f756e647300000000000000000000006044820152606401610350565b50016020015190565b6060600061276b83613106565b600101905060008167ffffffffffffffff81111561278b5761278b614176565b6040519080825280601f01601f1916602001820160405280156127b5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846127bf57509392505050565b6060806040519050835180825260208201818101602087015b8183101561282f578051835260209283019201612817565b50855184518101855292509050808201602086015b8183101561285c578051835260209283019201612844565b508651929092011591909101601f01601f191660405250905092915050565b6060600061288a836002614ecd565b612895906002614dc2565b67ffffffffffffffff8111156128ad576128ad614176565b6040519080825280601f01601f1916602001820160405280156128d7576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061290e5761290e614bae565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061295957612959614bae565b60200101906001600160f81b031916908160001a905350600061297d846002614ecd565b612988906001614dc2565b90505b6001811115612a0d577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106129c9576129c9614bae565b1a60f81b8282815181106129df576129df614bae565b60200101906001600160f81b031916908160001a90535060049490941c93612a0681614ee4565b905061298b565b508315610c915760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610350565b6000838152600560205260408120612a7490876131e8565b905080612abf576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101859052604401610350565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612b05929190614efb565b60405180910390a4505050505050565b610c81827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f00970836131fd565b6001600160a01b0381166000908152600c6020526040812080549082612b6583614f16565b9091555092915050565b6000806000612b8087878787613291565b91509150612b8d81613355565b5090505b949350505050565b60008267ffffffffffffffff811115612bb457612bb4614176565b604051908082528060200260200182016040528015612bdd578160200160208202803683370190505b5090506000600e546001612bf19190614dc2565b905083600e6000828254612c059190614dc2565b90915550600090505b84811015612c4857612c208183614dc2565b60001b838281518110612c3557612c35614bae565b6020908102919091010152600101612c0e565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612c84929190614f2f565b60405180910390a260005b848110156118e457612ccc86848381518110612cad57612cad614bae565b60200260200101516001604051806020016040528060008152506134ba565b600101612c8f565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080612b9190614f51565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480612da057506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610bc05750610bc0826134c6565b60008281526006602090815260408083208484529091529020805460609190612dd790614bc4565b80601f0160208091040260200160405190810160405280929190818152602001828054612e0390614bc4565b8015612e505780601f10612e2557610100808354040283529160200191612e50565b820191906000526020600020905b815481529060010190602001808311612e3357829003601f168201915b5050505050905092915050565b6001600160a01b038516600090815260076020908152604080832033845290915290205460ff16158015612e985750612e963384611fc7565b155b15612ebf57604051631294d2a960e01b815260048101849052336024820152604401610350565b60405183906001600160a01b0380871691908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90600090a4610f0f8585858585613513565b6001600160a01b03811660009081526001830160205260408120541515610c91565b6000836001600160a01b03163b600003612f4557506001612b91565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f77903390899088908890600401614f75565b6020604051808303816000875af1925050508015612fb2575060408051601f3d908101601f19168201909252612faf91810190614fa7565b60015b613067573d808015612fe0576040519150601f19603f3d011682016040523d82523d6000602084013e612fe5565b606091505b50805160000361305f576040805162461bcd60e51b81526020600482015260248101919091527f4c535038436f6d70617469626c654552433732313a207472616e73666572207460448201527f6f206e6f6e20455243373231526563656976657220696d706c656d656e7465726064820152608401610350565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612b91565b606081600001805480602002602001604051908101604052809291908181526020018280548015611e6157602002820191906000526020600020905b8154815260200190600101908083116130bd5750505050509050919050565b6000610bc082613727565b610c818282613748565b6000610c91836001600160a01b0384166138a8565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061314f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061317b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061319957662386f26fc10000830492506010015b6305f5e10083106131b1576305f5e100830492506008015b61271083106131c557612710830492506004015b606483106131d7576064830492506002015b600a8310610bc05760010192915050565b6000610c91836001600160a01b0384166138f7565b6132176001600160a01b038416631aed5a8560e21b6139ea565b15610de957604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061324a9085908590600401614fc4565b6000604051808303816000875af1158015613269573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115099190810190614fdd565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156132c8575060009050600361334c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561331c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166133455760006001925092505061334c565b9150600090505b94509492505050565b60008160048111156133695761336961504b565b036133715750565b60018160048111156133855761338561504b565b036133d25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610350565b60028160048111156133e6576133e661504b565b036134335760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610350565b60038160048111156134475761344761504b565b03611a765760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610350565b61150984848484613a88565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480613504575061350482613b00565b80610bc05750610bc082613b3e565b600061351e84610d90565b9050856001600160a01b0316816001600160a01b03161461356c57604051632d938f5160e11b81526001600160a01b0380831660048301526024820186905287166044820152606401610350565b6001600160a01b038516613593576040516324ecef4d60e01b815260040160405180910390fd5b61359f86868685613b75565b60006135aa85610d90565b9050806001600160a01b0316826001600160a01b031614613611576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03808416602483015282166044820152606401610350565b61361b8786613b81565b6001600160a01b038716600090815260046020526040902061363d9086613bd9565b506001600160a01b03861660009081526004602052604090206136609086613be5565b5060008581526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906136d49033908a908a90615061565b60405180910390a4600033888888876040516020016136f795949392919061508b565b60405160208183030381529060405290506137128882613bf1565b61371d878683613c1c565b5050505050505050565b6001600160a01b0381166000908152600460205260408120610bc090613d0f565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016137a1576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016137fa576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613853576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061386b8282614e0d565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161389c91906140e2565b60405180910390a25050565b60008181526001830160205260408120546138ef57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610bc0565b506000610bc0565b600081815260018301602052604081205480156139e057600061391b600183614b9b565b855490915060009061392f90600190614b9b565b905081811461399457600086600001828154811061394f5761394f614bae565b906000526020600020015490508087600001848154811061397257613972614bae565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806139a5576139a56150c5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610bc0565b6000915050610bc0565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015613a71575060208210155b8015613a7d5750600081115b979650505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000613ab1610c98565b613abc906001614dc2565b1115613af4576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61150984848484613d19565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610bc05750610bc082613d5d565b600080613b516301ffc9a760e01b611ce3565b5090506001600160a01b038116613b6b5750600092915050565b610c9181846139ea565b61150984848484613dab565b600081815260056020526040812090613b9982613d0f565b90506000805b828110156118e457613bb2846000613e70565b9150613bd1828787600060405180602001604052806000815250612a5c565b600101613b9f565b6000610c9183836138f7565b6000610c9183836138a8565b610c81827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab00836131fd565b613c2d83631aed5a8560e21b6139ea565b15613c8057604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061324a907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401614fc4565b81610de9576001600160a01b0383163b15613cd2576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610350565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610350565b6000610bc0825490565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461150984848484613e7c565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610bc057506301ffc9a760e01b6001600160e01b0319831614610bc0565b6001600160a01b038416613de4576000613dc3610c98565b60008181526008602090815260408083208790558683526009909152902055505b6001600160a01b038316613e6b5760006001613dfe610c98565b613e089190614b9b565b60008481526009602052604090205490915081811015613e4a576000828152600860209081526040808320548484528184208190558352600990915290208190555b50600090815260086020908152604080832083905584835260099091528120555b611509565b6000610c918383614006565b6001600160a01b038416613ea3576040516324ecef4d60e01b815260040160405180910390fd5b6000838152600360205260409020546001600160a01b031615613edc576040516334c7b51160e01b815260048101849052602401610350565b613ee96000858584613b75565b6000838152600360205260409020546001600160a01b031615613f22576040516334c7b51160e01b815260048101849052602401610350565b600260008154613f3190614f16565b909155506001600160a01b0384166000908152600460205260409020613f579084613be5565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90613fc690339088908890615061565b60405180910390a46000336000868685604051602001613fea95949392919061508b565b6040516020818303038152906040529050610f0f858483613c1c565b600082600001828154811061401d5761401d614bae565b9060005260206000200154905092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160e01b031981168114611a7657600080fd5b60006020828403121561408757600080fd5b8135610c918161405f565b60005b838110156140ad578181015183820152602001614095565b50506000910152565b600081518084526140ce816020860160208601614092565b601f01601f19169290920160200192915050565b602081526000610c9160208301846140b6565b60006020828403121561410757600080fd5b5035919050565b80356001600160a01b038116811461412557600080fd5b919050565b6000806040838503121561413d57600080fd5b6141468361410e565b946020939093013593505050565b6000806040838503121561416757600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156141b5576141b5614176565b604052919050565b600067ffffffffffffffff8211156141d7576141d7614176565b5060051b60200190565b600082601f8301126141f257600080fd5b81356020614207614202836141bd565b61418c565b8083825260208201915060208460051b87010193508684111561422957600080fd5b602086015b84811015614245578035835291830191830161422e565b509695505050505050565b6000806040838503121561426357600080fd5b823567ffffffffffffffff8082111561427b57600080fd5b614287868387016141e1565b9350602085013591508082111561429d57600080fd5b506142aa858286016141e1565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561430b57603f198886030184526142f98583516140b6565b945092850192908501906001016142dd565b5092979650505050505050565b60008060006060848603121561432d57600080fd5b6143368461410e565b92506143446020850161410e565b9150604084013590509250925092565b6000806020838503121561436757600080fd5b823567ffffffffffffffff8082111561437f57600080fd5b818501915085601f83011261439357600080fd5b8135818111156143a257600080fd5b8660208285010111156143b457600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156144075783516001600160a01b0316835292840192918401916001016143e2565b50909695505050505050565b8035801515811461412557600080fd5b600067ffffffffffffffff82111561443d5761443d614176565b50601f01601f191660200190565b600082601f83011261445c57600080fd5b813561446a61420282614423565b81815284602083860101111561447f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156144b457600080fd5b6144bd8661410e565b94506144cb6020870161410e565b9350604086013592506144e060608701614413565b9150608086013567ffffffffffffffff8111156144fc57600080fd5b6145088882890161444b565b9150509295509295909350565b6000806020838503121561452857600080fd5b823567ffffffffffffffff8082111561454057600080fd5b818501915085601f83011261455457600080fd5b81358181111561456357600080fd5b8660208260051b85010111156143b457600080fd5b60006020828403121561458a57600080fd5b610c918261410e565b600082601f8301126145a457600080fd5b813560206145b4614202836141bd565b8083825260208201915060208460051b8701019350868411156145d657600080fd5b602086015b84811015614245576145ec8161410e565b83529183019183016145db565b600082601f83011261460a57600080fd5b8135602061461a614202836141bd565b8083825260208201915060208460051b87010193508684111561463c57600080fd5b602086015b848110156142455761465281614413565b8352918301918301614641565b600082601f83011261467057600080fd5b81356020614680614202836141bd565b82815260059290921b8401810191818101908684111561469f57600080fd5b8286015b8481101561424557803567ffffffffffffffff8111156146c35760008081fd5b6146d18986838b010161444b565b8452509183019183016146a3565b600080600080600060a086880312156146f757600080fd5b853567ffffffffffffffff8082111561470f57600080fd5b61471b89838a01614593565b9650602088013591508082111561473157600080fd5b61473d89838a01614593565b9550604088013591508082111561475357600080fd5b61475f89838a016141e1565b9450606088013591508082111561477557600080fd5b61478189838a016145f9565b9350608088013591508082111561479757600080fd5b506145088882890161465f565b600080604083850312156147b757600080fd5b82359150602083013567ffffffffffffffff8111156147d557600080fd5b6142aa8582860161444b565b6000806000606084860312156147f657600080fd5b6147ff8461410e565b925060208401359150604084013567ffffffffffffffff81111561482257600080fd5b61482e8682870161444b565b9150509250925092565b6000806040838503121561484b57600080fd5b823567ffffffffffffffff8082111561486357600080fd5b61486f868387016141e1565b9350602085013591508082111561488557600080fd5b506142aa8582860161465f565b600080604083850312156148a557600080fd5b6148ae8361410e565b91506148bc60208401614413565b90509250929050565b60008151808452602080850194506020840160005b838110156148f6578151875295820195908201906001016148da565b509495945050505050565b602081526000610c9160208301846148c5565b6000806000806080858703121561492a57600080fd5b6149338561410e565b93506149416020860161410e565b925060408501359150606085013567ffffffffffffffff81111561496457600080fd5b6149708782880161444b565b91505092959194509250565b60008060006060848603121561499157600080fd5b833567ffffffffffffffff808211156149a957600080fd5b6149b5878388016141e1565b945060208601359150808211156149cb57600080fd5b6149d7878388016141e1565b935060408601359150808211156149ed57600080fd5b5061482e8682870161465f565b600080600060608486031215614a0f57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561482257600080fd5b60008060008060808587031215614a4a57600080fd5b614a538561410e565b935060208501359250614a6860408601614413565b9150606085013567ffffffffffffffff81111561496457600080fd5b600060208284031215614a9657600080fd5b813567ffffffffffffffff811115614aad57600080fd5b612b91848285016141e1565b60008060408385031215614acc57600080fd5b614ad58361410e565b91506148bc6020840161410e565b600080600080600060a08688031215614afb57600080fd5b614b048661410e565b945060208601359350604086013560ff81168114614b2157600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251614b7b818460208701614092565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bc057610bc0614b85565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614bd857607f821691505b602082108103611a1f57634e487b7160e01b600052602260045260246000fd5b601f821115610de9576000816000526020600020601f850160051c81016020861015614c215750805b601f850160051c820191505b818110156118e457828155600101614c2d565b67ffffffffffffffff831115614c5857614c58614176565b614c6c83614c668354614bc4565b83614bf8565b6000601f841160018114614ca05760008515614c885750838201355b600019600387901b1c1916600186901b178355610f0f565b600083815260209020601f19861690835b82811015614cd15786850135825560209485019460019092019101614cb1565b5086821015614cee5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e19843603018112614d1757600080fd5b83018035915067ffffffffffffffff821115614d3257600080fd5b602001915036819003821315614d4757600080fd5b9250929050565b8183823760009101908152919050565b61ffff818116838216019080821115610d8957610d89614b85565b6001600160a01b0385168152836020820152821515604082015260806060820152600061173960808301846140b6565b600060208284031215614dbb57600080fd5b5051919050565b80820180821115610bc057610bc0614b85565b805160208201516bffffffffffffffffffffffff198082169291906014831015610c5c5760149290920360031b82901b161692915050565b815167ffffffffffffffff811115614e2757614e27614176565b614e3b81614e358454614bc4565b84614bf8565b602080601f831160018114614e705760008415614e585750858301515b600019600386901b1c1916600185901b1785556118e4565b600085815260208120601f198616915b82811015614e9f57888601518255948401946001909101908401614e80565b5085821015614ebd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417610bc057610bc0614b85565b600081614ef357614ef3614b85565b506000190190565b8215158152604060208201526000612b9160408301846140b6565b600060018201614f2857614f28614b85565b5060010190565b604081526000614f4260408301856148c5565b90508260208301529392505050565b80516020808301519190811015611a1f5760001960209190910360031b1b16919050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261173960808301846140b6565b600060208284031215614fb957600080fd5b8151610c918161405f565b828152604060208201526000612b9160408301846140b6565b600060208284031215614fef57600080fd5b815167ffffffffffffffff81111561500657600080fd5b8201601f8101841361501757600080fd5b805161502561420282614423565b81815285602083850101111561503a57600080fd5b61165f826020830160208601614092565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0384168152821515602082015260606040820152600061165f60608301846140b6565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152613a7d60a08301846140b6565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f6a22af3712f5770418d78cd0266a1acb8b599b9397096f3ec4dfa5cb83a3a4064736f6c63430008160033 diff --git a/artifacts/bytecode/4201/assets/lsp7/DigitalAssetDrop.bin b/artifacts/bytecode/4201/assets/lsp7/DigitalAssetDrop.bin index f160fdc..1414fa4 100644 --- a/artifacts/bytecode/4201/assets/lsp7/DigitalAssetDrop.bin +++ b/artifacts/bytecode/4201/assets/lsp7/DigitalAssetDrop.bin @@ -1 +1 @@ -0x60a060405234801561001057600080fd5b50604051610c71380380610c7183398101604081905261002f916101ad565b600180556001600160a01b03831661007e5760405162461bcd60e51b815260206004820152600d60248201526c6173736574206973207a65726f60981b60448201526064015b60405180910390fd5b60008290036100be5760405162461bcd60e51b815260206004820152600c60248201526b726f6f74206973207a65726f60a01b6044820152606401610075565b6001600160a01b0381166101045760405162461bcd60e51b815260206004820152600d60248201526c6f776e6572206973207a65726f60981b6044820152606401610075565b6001600160a01b03831660805261011a82600255565b6101238161012b565b5050506101f0565b6000546001600160a01b0382811691161461019557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6001600160a01b038116811461019557600080fd5b6000806000606084860312156101c257600080fd5b83516101cd81610198565b6020850151604086015191945092506101e581610198565b809150509250925092565b608051610a5261021f6000396000818160870152818161024f0152818161034c01526104450152610a526000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639e34070f1161005b5780639e34070f146100e1578063c8edd8ab14610104578063f05c55ac14610117578063f2fde38b1461012a57600080fd5b806338d52e0f14610082578063715018a6146100c65780638da5cb5b146100d0575b600080fd5b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ce61013d565b005b6000546001600160a01b03166100a9565b6100f46100ef366004610874565b610151565b60405190151581526020016100bd565b6100ce6101123660046108a9565b610162565b6100ce61012536600461093d565b6102bb565b6100ce61013836600461093d565b6104ae565b6101456104ff565b61014f6000610554565b565b600061015c826105da565b92915050565b61016a61061b565b6101ca8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051336020820152908101869052879250606001905060405160208183030381529060405261068e565b816001600160a01b0316837f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0268360405161020691815260200190565b60405180910390a3604051633b06cddd60e11b81523060048201526001600160a01b0383811660248301526044820183905260006064830181905260a0608484015260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050506102b460018055565b5050505050565b6102c36104ff565b6102cb61061b565b6001600160a01b03811661031b576040517f1a3b45fd0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024015b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf9190610958565b9050816001600160a01b03167feb44e1b23fad598a86840f12d9ab99216d186e1eeebb5ef8e3b3d152ba7cbc7e826040516103fc91815260200190565b60405180910390a2604051633b06cddd60e11b81523060048201526001600160a01b038381166024830152604482018390526001606483015260a06084830152600060a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b50505050506104ab60018055565b50565b6104b66104ff565b6001600160a01b0381166104f6576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ab81610554565b336105126000546001600160a01b031690565b6001600160a01b03161461014f576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610312565b6000546001600160a01b038281169116146104ab57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6000806105e961010084610987565b905060006105f96101008561099b565b60009283526003602052604090922054600190921b9182169091149392505050565b600260015403610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610312565b6002600155565b6002546106c7576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d0826105da565b1561070b5781816040517f331e2c3f0000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b600082826040516020016107209291906109af565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061076284600254836107ab565b61079c5782826040517f4a0e7b130000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b6107a5836107c1565b50505050565b6000826107b885846107ff565b14949350505050565b60006107cf61010083610987565b905060006107df6101008461099b565b6000928352600360205260409092208054600190931b9092179091555050565b600081815b845181101561083a576108308286838151811061082357610823610a06565b6020026020010151610842565b9150600101610804565b509392505050565b600081831061085e57600082815260208490526040902061086d565b60008381526020839052604090205b9392505050565b60006020828403121561088657600080fd5b5035919050565b80356001600160a01b03811681146108a457600080fd5b919050565b6000806000806000608086880312156108c157600080fd5b853567ffffffffffffffff808211156108d957600080fd5b818801915088601f8301126108ed57600080fd5b8135818111156108fc57600080fd5b8960208260051b850101111561091157600080fd5b60209283019750955050860135925061092c6040870161088d565b949793965091946060013592915050565b60006020828403121561094f57600080fd5b61086d8261088d565b60006020828403121561096a57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261099657610996610971565b500490565b6000826109aa576109aa610971565b500690565b8281526000602060406020840152835180604085015260005b818110156109e4578581018301518582016060015282016109c8565b506000606082860101526060601f19601f830116850101925050509392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220addc563acb413066819abc35a5f7e59347d1988c18b5185ef0f0c372a562e56e64736f6c63430008160033 +0x60a060405234801561001057600080fd5b50604051610c71380380610c7183398101604081905261002f916101ad565b600180556001600160a01b03831661007e5760405162461bcd60e51b815260206004820152600d60248201526c6173736574206973207a65726f60981b60448201526064015b60405180910390fd5b60008290036100be5760405162461bcd60e51b815260206004820152600c60248201526b726f6f74206973207a65726f60a01b6044820152606401610075565b6001600160a01b0381166101045760405162461bcd60e51b815260206004820152600d60248201526c6f776e6572206973207a65726f60981b6044820152606401610075565b6001600160a01b03831660805261011a82600255565b6101238161012b565b5050506101f0565b6000546001600160a01b0382811691161461019557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6001600160a01b038116811461019557600080fd5b6000806000606084860312156101c257600080fd5b83516101cd81610198565b6020850151604086015191945092506101e581610198565b809150509250925092565b608051610a5261021f6000396000818160870152818161024f0152818161034c01526104450152610a526000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80639e34070f1161005b5780639e34070f146100e1578063c8edd8ab14610104578063f05c55ac14610117578063f2fde38b1461012a57600080fd5b806338d52e0f14610082578063715018a6146100c65780638da5cb5b146100d0575b600080fd5b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ce61013d565b005b6000546001600160a01b03166100a9565b6100f46100ef366004610874565b610151565b60405190151581526020016100bd565b6100ce6101123660046108a9565b610162565b6100ce61012536600461093d565b6102bb565b6100ce61013836600461093d565b6104ae565b6101456104ff565b61014f6000610554565b565b600061015c826105da565b92915050565b61016a61061b565b6101ca8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051336020820152908101869052879250606001905060405160208183030381529060405261068e565b816001600160a01b0316837f4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed0268360405161020691815260200190565b60405180910390a3604051633b06cddd60e11b81523060048201526001600160a01b0383811660248301526044820183905260006064830181905260a0608484015260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050506102b460018055565b5050505050565b6102c36104ff565b6102cb61061b565b6001600160a01b03811661031b576040517f1a3b45fd0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024015b60405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf9190610958565b9050816001600160a01b03167feb44e1b23fad598a86840f12d9ab99216d186e1eeebb5ef8e3b3d152ba7cbc7e826040516103fc91815260200190565b60405180910390a2604051633b06cddd60e11b81523060048201526001600160a01b038381166024830152604482018390526001606483015260a06084830152600060a48301527f0000000000000000000000000000000000000000000000000000000000000000169063760d9bba9060c401600060405180830381600087803b15801561048957600080fd5b505af115801561049d573d6000803e3d6000fd5b50505050506104ab60018055565b50565b6104b66104ff565b6001600160a01b0381166104f6576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ab81610554565b336105126000546001600160a01b031690565b6001600160a01b03161461014f576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610312565b6000546001600160a01b038281169116146104ab57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6000806105e961010084610987565b905060006105f96101008561099b565b60009283526003602052604090922054600190921b9182169091149392505050565b600260015403610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610312565b6002600155565b6002546106c7576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106d0826105da565b1561070b5781816040517f331e2c3f0000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b600082826040516020016107209291906109af565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061076284600254836107ab565b61079c5782826040517f4a0e7b130000000000000000000000000000000000000000000000000000000081526004016103129291906109af565b6107a5836107c1565b50505050565b6000826107b885846107ff565b14949350505050565b60006107cf61010083610987565b905060006107df6101008461099b565b6000928352600360205260409092208054600190931b9092179091555050565b600081815b845181101561083a576108308286838151811061082357610823610a06565b6020026020010151610842565b9150600101610804565b509392505050565b600081831061085e57600082815260208490526040902061086d565b60008381526020839052604090205b9392505050565b60006020828403121561088657600080fd5b5035919050565b80356001600160a01b03811681146108a457600080fd5b919050565b6000806000806000608086880312156108c157600080fd5b853567ffffffffffffffff808211156108d957600080fd5b818801915088601f8301126108ed57600080fd5b8135818111156108fc57600080fd5b8960208260051b850101111561091157600080fd5b60209283019750955050860135925061092c6040870161088d565b949793965091946060013592915050565b60006020828403121561094f57600080fd5b61086d8261088d565b60006020828403121561096a57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261099657610996610971565b500490565b6000826109aa576109aa610971565b500690565b8281526000602060406020840152835180604085015260005b818110156109e4578581018301518582016060015282016109c8565b506000606082860101526060601f19601f830116850101925050509392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220b2855f3193586b92fba8f6d80164ca07c6b5f060abd415cd9d2cde89eb79f39364736f6c63430008160033 diff --git a/artifacts/bytecode/4201/assets/lsp7/MintableDigitalAsset.bin b/artifacts/bytecode/4201/assets/lsp7/MintableDigitalAsset.bin index 94c9bad..432aaa9 100644 --- a/artifacts/bytecode/4201/assets/lsp7/MintableDigitalAsset.bin +++ b/artifacts/bytecode/4201/assets/lsp7/MintableDigitalAsset.bin @@ -1 +1 @@ -0x60a06040523480156200001157600080fd5b5060405162002e8a38038062002e8a833981016040819052620000349162000349565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001b5565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000223565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000223565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000223565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000223565b50506002805460ff19169315159390931790925550505060008990039750620001a596505050505050505760405163acf1d8c560e01b815260040160405180910390fd5b6080525062000594945050505050565b6000546001600160a01b038281169116146200022057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200023d828262000493565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200027091906200055f565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002af57818101518382015260200162000295565b50506000910152565b600082601f830112620002ca57600080fd5b81516001600160401b0380821115620002e757620002e76200027c565b604051601f8301601f19908116603f011681019082821181831017156200031257620003126200027c565b816040528381528660208588010111156200032c57600080fd5b6200033f84602083016020890162000292565b9695505050505050565b60008060008060008060c087890312156200036357600080fd5b86516001600160401b03808211156200037b57600080fd5b620003898a838b01620002b8565b97506020890151915080821115620003a057600080fd5b50620003af89828a01620002b8565b604089015190965090506001600160a01b0381168114620003cf57600080fd5b6060880151608089015191955093508015158114620003ed57600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200041757607f821691505b6020821081036200043857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048e576000816000526020600020601f850160051c81016020861015620004695750805b601f850160051c820191505b818110156200048a5782815560010162000475565b5050505b505050565b81516001600160401b03811115620004af57620004af6200027c565b620004c781620004c0845462000402565b846200043e565b602080601f831160018114620004ff5760008415620004e65750858301515b600019600386901b1c1916600185901b1785556200048a565b600085815260208120601f198616915b8281101562000530578886015182559484019460019091019084016200050f565b50858210156200054f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200058081604085016020870162000292565b601f01601f19169190910160400192915050565b6080516128d3620005b76000396000818161031a01526116e701526128d36000f3fe6080604052600436106101795760003560e01c8063715018a6116100cb5780638da5cb5b1161007f578063d72fc29a11610059578063d72fc29a146104d1578063dedff9c6146104fe578063f2fde38b1461051e576101ed565b80638da5cb5b14610476578063979024211461049e578063b49506fd146104b1576101ed565b8063760d9bba116100b0578063760d9bba146104235780637b204c4e146104435780637f23690c14610463576101ed565b8063715018a6146103ee5780637580d92014610403576101ed565b80634521748e1161012d57806365aeaa951161010757806365aeaa951461036b5780636963d4381461038b57806370a08231146103b8576101ed565b80634521748e146102eb57806352058d8a1461030b57806354f6127f1461033e576101ed565b80632bc1da821161015e5780632bc1da82146102825780632d7667c9146102a4578063313ce567146102c4576101ed565b806301ffc9a71461022e57806318160ddd14610263576101ed565b366101ed57346000036101bb5760405163e5099ee360e01b81526004016101b29060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561021857828260405163e5099ee360e01b81526004016101b2929190611c82565b610222838361053e565b80519350602001915050f35b34801561023a57600080fd5b5061024e610249366004611cb1565b61064d565b60405190151581526020015b60405180910390f35b34801561026f57600080fd5b506003545b60405190815260200161025a565b34801561028e57600080fd5b506102a261029d366004611dbc565b61069a565b005b3480156102b057600080fd5b506102a26102bf366004611ffd565b610743565b3480156102d057600080fd5b506102d961084b565b60405160ff909116815260200161025a565b3480156102f757600080fd5b506102a26103063660046120cf565b610864565b34801561031757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610274565b34801561034a57600080fd5b5061035e610359366004612117565b6108b2565b60405161025a9190612180565b34801561037757600080fd5b50610274610386366004612193565b6108bd565b34801561039757600080fd5b506103ab6103a63660046121c6565b610923565b60405161025a919061223b565b3480156103c457600080fd5b506102746103d336600461229f565b6001600160a01b031660009081526004602052604090205490565b3480156103fa57600080fd5b506102a2610a73565b34801561040f57600080fd5b506102a261041e3660046122ba565b610a87565b34801561042f57600080fd5b506102a261043e366004612322565b610a9b565b34801561044f57600080fd5b506102a261045e366004611dbc565b610b15565b6102a261047136600461238e565b610b6e565b34801561048257600080fd5b506000546040516001600160a01b03909116815260200161025a565b6102a26104ac3660046123d5565b610ba3565b3480156104bd57600080fd5b506102a26104cc366004611dbc565b610c90565b3480156104dd57600080fd5b506104f16104ec36600461229f565b610cb5565b60405161025a919061242f565b34801561050a57600080fd5b506103ab61051936600461247c565b610cd9565b34801561052a57600080fd5b506102a261053936600461229f565b610d84565b606060006105576000356001600160e01b031916610dd8565b5090506001600160a01b0381166105a8576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101b2565b600080826001600160a01b031634878733346040516020016105cd94939291906124b1565b60408051601f19818403018152908290526105e7916124e1565b60006040518083038185875af1925050503d8060008114610624576040519150601f19603f3d011682016040523d82523d6000602084013e610629565b606091505b5091509150811561063e579250610647915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fb3c4928f00000000000000000000000000000000000000000000000000000000148061068b575061068b82610e82565b80610647575061064782610ec0565b60006106a684336108bd565b9050806000036106ed576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101b2565b60006106f98483612513565b9050610709338683600187610efe565b600033828560405160200161072093929190612526565b604051602081830303815290604052905061073b86826110a3565b505050505050565b8451845181141580610756575083518114155b80610762575082518114155b8061076e575081518114155b156107a5576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156108425761083a8782815181106107c5576107c5612557565b60200260200101518783815181106107df576107df612557565b60200260200101518784815181106107f9576107f9612557565b602002602001015187858151811061081357610813612557565b602002602001015187868151811061082d5761082d612557565b6020026020010151610a9b565b6001016107a8565b50505050505050565b60025460009060ff1661085e5750601290565b50600090565b610872338460008585610efe565b81156108ad576000336000836040516020016108909392919061256d565b60405160208183030381529060405290506108ab84826110a3565b505b505050565b6060610647826110ce565b6000826001600160a01b0316826001600160a01b0316036108f757506001600160a01b038116600090815260046020526040902054610647565b506001600160a01b03808216600090815260066020908152604080832093861683529290522054610647565b60608167ffffffffffffffff81111561093e5761093e611cf7565b60405190808252806020026020018201604052801561097157816020015b606081526020019060019003908161095c5790505b50905060005b82811015610a6c576000803086868581811061099557610995612557565b90506020028101906109a79190612598565b6040516109b59291906125e6565b600060405180830381855af49150503d80600081146109f0576040519150601f19603f3d011682016040523d82523d6000602084013e6109f5565b606091505b509150915081610a4457805115610a0f5780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101b2565b80848481518110610a5757610a57612557565b60209081029190910101525050600101610977565b5092915050565b610a7b611170565b610a8560006111c5565b565b610a8f611170565b6108ab8484848461124b565b836001600160a01b0316856001600160a01b031603610ae6576040517fb9afb00000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614610b0157610b01338685611257565b610b0e85858585856112fe565b5050505050565b6000610b2184336108bd565b905082811015610b5d576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610709338683600187610efe565b610b76611170565b3415610b955760405163f36ba73760e01b815260040160405180910390fd5b610b9f82826114b3565b5050565b610bab611170565b3415610bca5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610c05576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610c40576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156108ad57610c88838281518110610c6157610c61612557565b6020026020010151838381518110610c7b57610c7b612557565b60200260200101516114b3565b600101610c43565b610c9e338484600185610efe565b600033838360405160200161089093929190612526565b6001600160a01b0381166000908152600560205260409020606090610647906114bd565b6060815167ffffffffffffffff811115610cf557610cf5611cf7565b604051908082528060200260200182016040528015610d2857816020015b6060815260200190600190039081610d135790505b50905060005b8251811015610d7e57610d59838281518110610d4c57610d4c612557565b60200260200101516110ce565b828281518110610d6b57610d6b612557565b6020908102919091010152600101610d2e565b50919050565b610d8c611170565b6001600160a01b038116610dcc576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dd5816111c5565b50565b60008080610e107fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b031986166114ca565b90506000610e1d826110ce565b90508051601414158015610e315750805115155b15610e6a57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101b29190612180565b610e73816125f6565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b00000000000000000000000000000000000000000000000000000000148061064757506106478261153b565b600080610ed36301ffc9a760e01b610dd8565b5090506001600160a01b038116610eed5750600092915050565b610ef78184611589565b9392505050565b6001600160a01b038416610f3e576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603610f89576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038086166000908152600660209081526040808320938816835292905220839055821561102b576001600160a01b0385166000908152600560205260409020610fd99085611627565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d8460405161101e9190612180565b60405180910390a4610b0e565b6001600160a01b038516600090815260056020526040902061104d908561163c565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd4167846040516110949190612180565b60405180910390a45050505050565b610b9f827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611651565b60008181526001602052604090208054606091906110eb90612632565b80601f016020809104026020016040519081016040528092919081815260200182805461111790612632565b80156111645780601f1061113957610100808354040283529160200191611164565b820191906000526020600020905b81548152906001019060200180831161114757829003601f168201915b50505050509050919050565b336111836000546001600160a01b031690565b6001600160a01b031614610a85576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101b2565b6000546001600160a01b03828116911614610dd557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6108ab848484846116e5565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156112d8576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101b2565b6108ab83856112e78585612666565b600060405180602001604052806000815250610efe565b6001600160a01b038516158061131b57506001600160a01b038416155b1561133957604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b038516600090815260046020526040902054808411156113a5576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101b2565b6113b1868686856108ab565b6001600160a01b038616600090815260046020526040812080548692906113d9908490612666565b90915550506001600160a01b03851660009081526004602052604081208054869290611406908490612513565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a687878760405161145e93929190612679565b60405180910390a4611472868686856108ab565b6000338787878660405160200161148d95949392919061269a565b60405160208183030381529060405290506114a8878261175e565b610842868583611789565b610b9f828261187c565b60606000610ef7836119dc565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611533906126d4565b949350505050565b60006001600160e01b031982167f629aa69400000000000000000000000000000000000000000000000000000000148061064757506301ffc9a760e01b6001600160e01b0319831614610647565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611610575060208210155b801561161c5750600081115b979650505050505050565b6000610ef7836001600160a01b038416611a37565b6000610ef7836001600160a01b038416611a86565b61166b6001600160a01b038416631aed5a8560e21b611589565b156108ad57604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061169e90859085906004016126f8565b6000604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108ab9190810190612711565b7f00000000000000000000000000000000000000000000000000000000000000008361171060035490565b61171a9190612513565b1115611752576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ab84848484611b79565b610b9f827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611651565b61179a83631aed5a8560e21b611589565b156117ed57604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061169e907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c9085906004016126f8565b816108ad576001600160a01b0383163b1561183f576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016118d5576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161192e576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201611987576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061199f82826127c7565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516119d09190612180565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561116457602002820191906000526020600020905b815481526020019060010190808311611a185750505050509050919050565b6000818152600183016020526040812054611a7e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610647565b506000610647565b60008181526001830160205260408120548015611b6f576000611aaa600183612666565b8554909150600090611abe90600190612666565b9050818114611b23576000866000018281548110611ade57611ade612557565b9060005260206000200154905080876000018481548110611b0157611b01612557565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b3457611b34612887565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610647565b6000915050610647565b6001600160a01b038416611ba057604051630d2d5ec360e41b815260040160405180910390fd5b611bad60008585846108ab565b8260036000828254611bbf9190612513565b90915550506001600160a01b03841660009081526004602052604081208054859290611bec908490612513565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690611c3590889088908890612679565b60405180910390a4611c4a60008585846108ab565b6000336000868685604051602001611c6695949392919061269a565b6040516020818303038152906040529050610b0e858483611789565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611cc357600080fd5b81356001600160e01b031981168114610ef757600080fd5b80356001600160a01b0381168114611cf257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d3657611d36611cf7565b604052919050565b600067ffffffffffffffff821115611d5857611d58611cf7565b50601f01601f191660200190565b600082601f830112611d7757600080fd5b8135611d8a611d8582611d3e565b611d0d565b818152846020838601011115611d9f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611dd157600080fd5b611dda84611cdb565b925060208401359150604084013567ffffffffffffffff811115611dfd57600080fd5b611e0986828701611d66565b9150509250925092565b600067ffffffffffffffff821115611e2d57611e2d611cf7565b5060051b60200190565b600082601f830112611e4857600080fd5b81356020611e58611d8583611e13565b8083825260208201915060208460051b870101935086841115611e7a57600080fd5b602086015b84811015611e9d57611e9081611cdb565b8352918301918301611e7f565b509695505050505050565b600082601f830112611eb957600080fd5b81356020611ec9611d8583611e13565b8083825260208201915060208460051b870101935086841115611eeb57600080fd5b602086015b84811015611e9d5780358352918301918301611ef0565b80358015158114611cf257600080fd5b600082601f830112611f2857600080fd5b81356020611f38611d8583611e13565b8083825260208201915060208460051b870101935086841115611f5a57600080fd5b602086015b84811015611e9d57611f7081611f07565b8352918301918301611f5f565b600082601f830112611f8e57600080fd5b81356020611f9e611d8583611e13565b82815260059290921b84018101918181019086841115611fbd57600080fd5b8286015b84811015611e9d57803567ffffffffffffffff811115611fe15760008081fd5b611fef8986838b0101611d66565b845250918301918301611fc1565b600080600080600060a0868803121561201557600080fd5b853567ffffffffffffffff8082111561202d57600080fd5b61203989838a01611e37565b9650602088013591508082111561204f57600080fd5b61205b89838a01611e37565b9550604088013591508082111561207157600080fd5b61207d89838a01611ea8565b9450606088013591508082111561209357600080fd5b61209f89838a01611f17565b935060808801359150808211156120b557600080fd5b506120c288828901611f7d565b9150509295509295909350565b6000806000606084860312156120e457600080fd5b6120ed84611cdb565b92506120fb60208501611f07565b9150604084013567ffffffffffffffff811115611dfd57600080fd5b60006020828403121561212957600080fd5b5035919050565b60005b8381101561214b578181015183820152602001612133565b50506000910152565b6000815180845261216c816020860160208601612130565b601f01601f19169290920160200192915050565b602081526000610ef76020830184612154565b600080604083850312156121a657600080fd5b6121af83611cdb565b91506121bd60208401611cdb565b90509250929050565b600080602083850312156121d957600080fd5b823567ffffffffffffffff808211156121f157600080fd5b818501915085601f83011261220557600080fd5b81358181111561221457600080fd5b8660208260051b850101111561222957600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561229257603f19888603018452612280858351612154565b94509285019290850190600101612264565b5092979650505050505050565b6000602082840312156122b157600080fd5b610ef782611cdb565b600080600080608085870312156122d057600080fd5b6122d985611cdb565b9350602085013592506122ee60408601611f07565b9150606085013567ffffffffffffffff81111561230a57600080fd5b61231687828801611d66565b91505092959194509250565b600080600080600060a0868803121561233a57600080fd5b61234386611cdb565b945061235160208701611cdb565b93506040860135925061236660608701611f07565b9150608086013567ffffffffffffffff81111561238257600080fd5b6120c288828901611d66565b600080604083850312156123a157600080fd5b82359150602083013567ffffffffffffffff8111156123bf57600080fd5b6123cb85828601611d66565b9150509250929050565b600080604083850312156123e857600080fd5b823567ffffffffffffffff8082111561240057600080fd5b61240c86838701611ea8565b9350602085013591508082111561242257600080fd5b506123cb85828601611f7d565b6020808252825182820181905260009190848201906040850190845b818110156124705783516001600160a01b03168352928401929184019160010161244b565b50909695505050505050565b60006020828403121561248e57600080fd5b813567ffffffffffffffff8111156124a557600080fd5b61153384828501611ea8565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516124f3818460208701612130565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610647576106476124fd565b6001600160a01b038416815282602082015260606040820152600061254e6060830184612154565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff8316602082015260606040820152600061254e6060830184612154565b6000808335601e198436030181126125af57600080fd5b83018035915067ffffffffffffffff8211156125ca57600080fd5b6020019150368190038213156125df57600080fd5b9250929050565b8183823760009101908152919050565b805160208201516bffffffffffffffffffffffff19808216929190601483101561262a5780818460140360031b1b83161693505b505050919050565b600181811c9082168061264657607f821691505b602082108103610d7e57634e487b7160e01b600052602260045260246000fd5b81810381811115610647576106476124fd565b838152821515602082015260606040820152600061254e6060830184612154565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a0608083015261161c60a0830184612154565b80516020808301519190811015610d7e5760001960209190910360031b1b16919050565b8281526040602082015260006115336040830184612154565b60006020828403121561272357600080fd5b815167ffffffffffffffff81111561273a57600080fd5b8201601f8101841361274b57600080fd5b8051612759611d8582611d3e565b81815285602083850101111561276e57600080fd5b61254e826020830160208601612130565b601f8211156108ad576000816000526020600020601f850160051c810160208610156127a85750805b601f850160051c820191505b8181101561073b578281556001016127b4565b815167ffffffffffffffff8111156127e1576127e1611cf7565b6127f5816127ef8454612632565b8461277f565b602080601f83116001811461282a57600084156128125750858301515b600019600386901b1c1916600185901b17855561073b565b600085815260208120601f198616915b828110156128595788860151825594840194600190910190840161283a565b50858210156128775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfea26469706673582212209530fd46f3a94304b92ae7024d08440b4900216f5808600a99da3871a0ecd69464736f6c63430008160033 +0x60a06040523480156200001157600080fd5b5060405162002f8038038062002f80833981016040819052620000349162000349565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001b5565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000223565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000223565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000223565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000223565b50506002805460ff19169315159390931790925550505060008990039750620001a596505050505050505760405163acf1d8c560e01b815260040160405180910390fd5b6080525062000594945050505050565b6000546001600160a01b038281169116146200022057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200023d828262000493565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200027091906200055f565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002af57818101518382015260200162000295565b50506000910152565b600082601f830112620002ca57600080fd5b81516001600160401b0380821115620002e757620002e76200027c565b604051601f8301601f19908116603f011681019082821181831017156200031257620003126200027c565b816040528381528660208588010111156200032c57600080fd5b6200033f84602083016020890162000292565b9695505050505050565b60008060008060008060c087890312156200036357600080fd5b86516001600160401b03808211156200037b57600080fd5b620003898a838b01620002b8565b97506020890151915080821115620003a057600080fd5b50620003af89828a01620002b8565b604089015190965090506001600160a01b0381168114620003cf57600080fd5b6060880151608089015191955093508015158114620003ed57600080fd5b8092505060a087015190509295509295509295565b600181811c908216806200041757607f821691505b6020821081036200043857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048e576000816000526020600020601f850160051c81016020861015620004695750805b601f850160051c820191505b818110156200048a5782815560010162000475565b5050505b505050565b81516001600160401b03811115620004af57620004af6200027c565b620004c781620004c0845462000402565b846200043e565b602080601f831160018114620004ff5760008415620004e65750858301515b600019600386901b1c1916600185901b1785556200048a565b600085815260208120601f198616915b8281101562000530578886015182559484019460019091019084016200050f565b50858210156200054f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200058081604085016020870162000292565b601f01601f19169190910160400192915050565b6080516129c9620005b76000396000818161031a01526117b401526129c96000f3fe6080604052600436106101795760003560e01c8063715018a6116100cb5780638da5cb5b1161007f578063d72fc29a11610059578063d72fc29a146104d1578063dedff9c6146104fe578063f2fde38b1461051e576101ed565b80638da5cb5b14610476578063979024211461049e578063b49506fd146104b1576101ed565b8063760d9bba116100b0578063760d9bba1461042357806378381670146104435780637f23690c14610463576101ed565b8063715018a6146103ee5780637580d92014610403576101ed565b8063313ce5671161012d57806365aeaa951161010757806365aeaa951461036b5780636963d4381461038b57806370a08231146103b8576101ed565b8063313ce567146102e457806352058d8a1461030b57806354f6127f1461033e576101ed565b80632bc1da821161015e5780632bc1da82146102825780632d7667c9146102a457806330d0dc37146102c4576101ed565b806301ffc9a71461022e57806318160ddd14610263576101ed565b366101ed57346000036101bb5760405163e5099ee360e01b81526004016101b29060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561021857828260405163e5099ee360e01b81526004016101b2929190611d35565b610222838361053e565b80519350602001915050f35b34801561023a57600080fd5b5061024e610249366004611d64565b61064d565b60405190151581526020015b60405180910390f35b34801561026f57600080fd5b506003545b60405190815260200161025a565b34801561028e57600080fd5b506102a261029d366004611e6f565b61069a565b005b3480156102b057600080fd5b506102a26102bf3660046120b0565b610743565b3480156102d057600080fd5b506102a26102df366004612182565b61084b565b3480156102f057600080fd5b506102f961090c565b60405160ff909116815260200161025a565b34801561031757600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610274565b34801561034a57600080fd5b5061035e6103593660046121f1565b610925565b60405161025a919061225a565b34801561037757600080fd5b5061027461038636600461226d565b610930565b34801561039757600080fd5b506103ab6103a63660046122a0565b610996565b60405161025a9190612315565b3480156103c457600080fd5b506102746103d3366004612379565b6001600160a01b031660009081526004602052604090205490565b3480156103fa57600080fd5b506102a2610ae6565b34801561040f57600080fd5b506102a261041e366004612394565b610afa565b34801561042f57600080fd5b506102a261043e3660046123c8565b610b0e565b34801561044f57600080fd5b506102a261045e366004612434565b610b36565b6102a2610471366004612484565b610c33565b34801561048257600080fd5b506000546040516001600160a01b03909116815260200161025a565b6102a26104ac3660046124cb565b610c68565b3480156104bd57600080fd5b506102a26104cc366004611e6f565b610d5a565b3480156104dd57600080fd5b506104f16104ec366004612379565b610d9a565b60405161025a9190612525565b34801561050a57600080fd5b506103ab610519366004612572565b610dbe565b34801561052a57600080fd5b506102a2610539366004612379565b610e69565b606060006105576000356001600160e01b031916610ebd565b5090506001600160a01b0381166105a8576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101b2565b600080826001600160a01b031634878733346040516020016105cd94939291906125a7565b60408051601f19818403018152908290526105e7916125d7565b60006040518083038185875af1925050503d8060008114610624576040519150601f19603f3d011682016040523d82523d6000602084013e610629565b606091505b5091509150811561063e579250610647915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d600800000000000000000000000000000000000000000000000000000000148061068b575061068b82610f67565b80610647575061064782610fa5565b60006106a68433610930565b9050806000036106ed576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101b2565b60006106f98483612609565b9050610709338683600187610fe3565b60003382856040516020016107209392919061261c565b604051602081830303815290604052905061073b8682611188565b505050505050565b8451845181141580610756575083518114155b80610762575082518114155b8061076e575081518114155b156107a5576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156108425761083a8782815181106107c5576107c561264d565b60200260200101518783815181106107df576107df61264d565b60200260200101518784815181106107f9576107f961264d565b60200260200101518785815181106108135761081361264d565b602002602001015187868151811061082d5761082d61264d565b6020026020010151610b0e565b6001016107a8565b50505050505050565b336001600160a01b0384161480159061086d5750336001600160a01b03851614155b156108bd576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6108cb838560008585610fe3565b8115610906576000836000836040516020016108e993929190612663565b60405160208183030381529060405290506109048582611188565b505b50505050565b60025460009060ff1661091f5750601290565b50600090565b6060610647826111b3565b6000826001600160a01b0316826001600160a01b03160361096a57506001600160a01b038116600090815260046020526040902054610647565b506001600160a01b03808216600090815260066020908152604080832093861683529290522054610647565b60608167ffffffffffffffff8111156109b1576109b1611daa565b6040519080825280602002602001820160405280156109e457816020015b60608152602001906001900390816109cf5790505b50905060005b82811015610adf5760008030868685818110610a0857610a0861264d565b9050602002810190610a1a919061268e565b604051610a289291906126dc565b600060405180830381855af49150503d8060008114610a63576040519150601f19603f3d011682016040523d82523d6000602084013e610a68565b606091505b509150915081610ab757805115610a825780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101b2565b80848481518110610aca57610aca61264d565b602090810291909101015250506001016109ea565b5092915050565b610aee611255565b610af860006112aa565b565b610b02611255565b61090684848484611330565b336001600160a01b03861614610b2957610b2933868561133c565b61090485858585856113e3565b336001600160a01b03841614801590610b585750336001600160a01b03851614155b15610ba8576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101b2565b6000610bb48585610930565b905082811015610bf0576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610c01858783600187610fe3565b6000858285604051602001610c189392919061261c565b60405160208183030381529060405290506108428782611188565b610c3b611255565b3415610c5a5760405163f36ba73760e01b815260040160405180910390fd5b610c648282611580565b5050565b610c70611255565b3415610c8f5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610cca576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610d05576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610d5557610d4d838281518110610d2657610d2661264d565b6020026020010151838381518110610d4057610d4061264d565b6020026020010151611580565b600101610d08565b505050565b610d68338484600185610fe3565b6000338383604051602001610d7f9392919061261c565b60405160208183030381529060405290506109068482611188565b6001600160a01b03811660009081526005602052604090206060906106479061158a565b6060815167ffffffffffffffff811115610dda57610dda611daa565b604051908082528060200260200182016040528015610e0d57816020015b6060815260200190600190039081610df85790505b50905060005b8251811015610e6357610e3e838281518110610e3157610e3161264d565b60200260200101516111b3565b828281518110610e5057610e5061264d565b6020908102919091010152600101610e13565b50919050565b610e71611255565b6001600160a01b038116610eb1576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eba816112aa565b50565b60008080610ef57fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611597565b90506000610f02826111b3565b90508051601414158015610f165750805115155b15610f4f57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101b2919061225a565b610f58816126ec565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610647575061064782611608565b600080610fb86301ffc9a760e01b610ebd565b5090506001600160a01b038116610fd25750600092915050565b610fdc8184611656565b9392505050565b6001600160a01b038416611023576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b03160361106e576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083209388168352929052208390558215611110576001600160a01b03851660009081526005602052604090206110be90856116f4565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d84604051611103919061225a565b60405180910390a4610904565b6001600160a01b03851660009081526005602052604090206111329085611709565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd416784604051611179919061225a565b60405180910390a45050505050565b610c64827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc8361171e565b60008181526001602052604090208054606091906111d090612728565b80601f01602080910402602001604051908101604052809291908181526020018280546111fc90612728565b80156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b50505050509050919050565b336112686000546001600160a01b031690565b6001600160a01b031614610af8576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101b2565b6000546001600160a01b03828116911614610eba57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b610906848484846117b2565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156113bd576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101b2565b61090683856113cc858561275c565b600060405180602001604052806000815250610fe3565b6001600160a01b038516158061140057506001600160a01b038416155b1561141e57604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b0385166000908152600460205260409020548084111561148a576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101b2565b6001600160a01b038616600090815260046020526040812080548692906114b290849061275c565b90915550506001600160a01b038516600090815260046020526040812080548692906114df908490612609565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a68787876040516115379392919061276f565b60405180910390a46000338787878660405160200161155a959493929190612790565b6040516020818303038152906040529050611575878261182b565b610842868583611856565b610c648282611949565b60606000610fdc83611aa9565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611600906127ca565b949350505050565b60006001600160e01b031982167f629aa69400000000000000000000000000000000000000000000000000000000148061064757506301ffc9a760e01b6001600160e01b0319831614610647565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156116dd575060208210155b80156116e95750600081115b979650505050505050565b6000610fdc836001600160a01b038416611b04565b6000610fdc836001600160a01b038416611b53565b6117386001600160a01b038416631aed5a8560e21b611656565b15610d5557604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061176b90859085906004016127ee565b6000604051808303816000875af115801561178a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109069190810190612807565b7f0000000000000000000000000000000000000000000000000000000000000000836117dd60035490565b6117e79190612609565b111561181f576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61090684848484611c46565b610c64827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea8361171e565b61186783631aed5a8560e21b611656565b156118ba57604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061176b907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c9085906004016127ee565b81610d55576001600160a01b0383163b1561190c576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101b2565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016119a2576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016119fb576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201611a54576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260409020611a6c82826128bd565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051611a9d919061225a565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561124957602002820191906000526020600020905b815481526020019060010190808311611ae55750505050509050919050565b6000818152600183016020526040812054611b4b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610647565b506000610647565b60008181526001830160205260408120548015611c3c576000611b7760018361275c565b8554909150600090611b8b9060019061275c565b9050818114611bf0576000866000018281548110611bab57611bab61264d565b9060005260206000200154905080876000018481548110611bce57611bce61264d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c0157611c0161297d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610647565b6000915050610647565b6001600160a01b038416611c6d57604051630d2d5ec360e41b815260040160405180910390fd5b8260036000828254611c7f9190612609565b90915550506001600160a01b03841660009081526004602052604081208054859290611cac908490612609565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690611cf59088908890889061276f565b60405180910390a46000336000868685604051602001611d19959493929190612790565b6040516020818303038152906040529050610904858483611856565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611d7657600080fd5b81356001600160e01b031981168114610fdc57600080fd5b80356001600160a01b0381168114611da557600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611de957611de9611daa565b604052919050565b600067ffffffffffffffff821115611e0b57611e0b611daa565b50601f01601f191660200190565b600082601f830112611e2a57600080fd5b8135611e3d611e3882611df1565b611dc0565b818152846020838601011115611e5257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611e8457600080fd5b611e8d84611d8e565b925060208401359150604084013567ffffffffffffffff811115611eb057600080fd5b611ebc86828701611e19565b9150509250925092565b600067ffffffffffffffff821115611ee057611ee0611daa565b5060051b60200190565b600082601f830112611efb57600080fd5b81356020611f0b611e3883611ec6565b8083825260208201915060208460051b870101935086841115611f2d57600080fd5b602086015b84811015611f5057611f4381611d8e565b8352918301918301611f32565b509695505050505050565b600082601f830112611f6c57600080fd5b81356020611f7c611e3883611ec6565b8083825260208201915060208460051b870101935086841115611f9e57600080fd5b602086015b84811015611f505780358352918301918301611fa3565b80358015158114611da557600080fd5b600082601f830112611fdb57600080fd5b81356020611feb611e3883611ec6565b8083825260208201915060208460051b87010193508684111561200d57600080fd5b602086015b84811015611f505761202381611fba565b8352918301918301612012565b600082601f83011261204157600080fd5b81356020612051611e3883611ec6565b82815260059290921b8401810191818101908684111561207057600080fd5b8286015b84811015611f5057803567ffffffffffffffff8111156120945760008081fd5b6120a28986838b0101611e19565b845250918301918301612074565b600080600080600060a086880312156120c857600080fd5b853567ffffffffffffffff808211156120e057600080fd5b6120ec89838a01611eea565b9650602088013591508082111561210257600080fd5b61210e89838a01611eea565b9550604088013591508082111561212457600080fd5b61213089838a01611f5b565b9450606088013591508082111561214657600080fd5b61215289838a01611fca565b9350608088013591508082111561216857600080fd5b5061217588828901612030565b9150509295509295909350565b6000806000806080858703121561219857600080fd5b6121a185611d8e565b93506121af60208601611d8e565b92506121bd60408601611fba565b9150606085013567ffffffffffffffff8111156121d957600080fd5b6121e587828801611e19565b91505092959194509250565b60006020828403121561220357600080fd5b5035919050565b60005b8381101561222557818101518382015260200161220d565b50506000910152565b6000815180845261224681602086016020860161220a565b601f01601f19169290920160200192915050565b602081526000610fdc602083018461222e565b6000806040838503121561228057600080fd5b61228983611d8e565b915061229760208401611d8e565b90509250929050565b600080602083850312156122b357600080fd5b823567ffffffffffffffff808211156122cb57600080fd5b818501915085601f8301126122df57600080fd5b8135818111156122ee57600080fd5b8660208260051b850101111561230357600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561236c57603f1988860301845261235a85835161222e565b9450928501929085019060010161233e565b5092979650505050505050565b60006020828403121561238b57600080fd5b610fdc82611d8e565b600080600080608085870312156123aa57600080fd5b6123b385611d8e565b9350602085013592506121bd60408601611fba565b600080600080600060a086880312156123e057600080fd5b6123e986611d8e565b94506123f760208701611d8e565b93506040860135925061240c60608701611fba565b9150608086013567ffffffffffffffff81111561242857600080fd5b61217588828901611e19565b6000806000806080858703121561244a57600080fd5b61245385611d8e565b935061246160208601611d8e565b925060408501359150606085013567ffffffffffffffff8111156121d957600080fd5b6000806040838503121561249757600080fd5b82359150602083013567ffffffffffffffff8111156124b557600080fd5b6124c185828601611e19565b9150509250929050565b600080604083850312156124de57600080fd5b823567ffffffffffffffff808211156124f657600080fd5b61250286838701611f5b565b9350602085013591508082111561251857600080fd5b506124c185828601612030565b6020808252825182820181905260009190848201906040850190845b818110156125665783516001600160a01b031683529284019291840191600101612541565b50909695505050505050565b60006020828403121561258457600080fd5b813567ffffffffffffffff81111561259b57600080fd5b61160084828501611f5b565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516125e981846020870161220a565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610647576106476125f3565b6001600160a01b0384168152826020820152606060408201526000612644606083018461222e565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612644606083018461222e565b6000808335601e198436030181126126a557600080fd5b83018035915067ffffffffffffffff8211156126c057600080fd5b6020019150368190038213156126d557600080fd5b9250929050565b8183823760009101908152919050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156127205780818460140360031b1b83161693505b505050919050565b600181811c9082168061273c57607f821691505b602082108103610e6357634e487b7160e01b600052602260045260246000fd5b81810381811115610647576106476125f3565b8381528215156020820152606060408201526000612644606083018461222e565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526116e960a083018461222e565b80516020808301519190811015610e635760001960209190910360031b1b16919050565b828152604060208201526000611600604083018461222e565b60006020828403121561281957600080fd5b815167ffffffffffffffff81111561283057600080fd5b8201601f8101841361284157600080fd5b805161284f611e3882611df1565b81815285602083850101111561286457600080fd5b61264482602083016020860161220a565b601f821115610d55576000816000526020600020601f850160051c8101602086101561289e5750805b601f850160051c820191505b8181101561073b578281556001016128aa565b815167ffffffffffffffff8111156128d7576128d7611daa565b6128eb816128e58454612728565b84612875565b602080601f83116001811461292057600084156129085750858301515b600019600386901b1c1916600185901b17855561073b565b600085815260208120601f198616915b8281101561294f57888601518255948401946001909101908401612930565b508582101561296d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfea264697066735822122057176e101e7207d98f194d4e8e92da68ba2e6a7916bf522d02b2396b3110576b64736f6c63430008160033 diff --git a/artifacts/bytecode/4201/assets/lsp8/MintableIdentifiableDigitalAsset.bin b/artifacts/bytecode/4201/assets/lsp8/MintableIdentifiableDigitalAsset.bin index 80d6d4e..8590987 100644 --- a/artifacts/bytecode/4201/assets/lsp8/MintableIdentifiableDigitalAsset.bin +++ b/artifacts/bytecode/4201/assets/lsp8/MintableIdentifiableDigitalAsset.bin @@ -1 +1 @@ -0x60a06040523480156200001157600080fd5b506040516200371938038062003719833981016040819052620000349162000451565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001ea565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000258565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000258565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000258565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000258565b50506040805160208101859052620001ae93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620002b1565b5050505050505050505080600003620001da5760405163038d9fc360e41b815260040160405180910390fd5b608052506200068c945050505050565b6000546001600160a01b038281169116146200025557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200027282826200058b565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620002a5919062000657565b60405180910390a25050565b620002bd8282620002c1565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820162000302576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200034357604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200025857604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b75781810151838201526020016200039d565b50506000910152565b600082601f830112620003d257600080fd5b81516001600160401b0380821115620003ef57620003ef62000384565b604051601f8301601f19908116603f011681019082821181831017156200041a576200041a62000384565b816040528381528660208588010111156200043457600080fd5b620004478460208301602089016200039a565b9695505050505050565b60008060008060008060c087890312156200046b57600080fd5b86516001600160401b03808211156200048357600080fd5b620004918a838b01620003c0565b97506020890151915080821115620004a857600080fd5b50620004b789828a01620003c0565b604089015190965090506001600160a01b0381168114620004d757600080fd5b80945050606087015192506080870151915060a087015190509295509295509295565b600181811c908216806200050f57607f821691505b6020821081036200053057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000586576000816000526020600020601f850160051c81016020861015620005615750805b601f850160051c820191505b8181101562000582578281556001016200056d565b5050505b505050565b81516001600160401b03811115620005a757620005a762000384565b620005bf81620005b88454620004fa565b8462000536565b602080601f831160018114620005f75760008415620005de5750858301515b600019600386901b1c1916600185901b17855562000582565b600085815260208120601f198616915b82811015620006285788860151825594840194600190910190840162000607565b5085821015620006475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006788160408501602087016200039a565b601f01601f19169190910160400192915050565b60805161306a620006af600039600081816103be0152611d9a015261306a6000f3fe6080604052600436106101a55760003560e01c80637e87632c116100e1578063a3b261f21161008a578063d6c1407c11610064578063d6c1407c14610575578063db8c966314610595578063dedff9c6146105b5578063f2fde38b146105d557610219565b8063a3b261f214610508578063af255b6114610535578063be9f0e6f1461055557610219565b80638da5cb5b116100bb5780638da5cb5b146104aa57806392a91a3a146104c857806397902421146104f557610219565b80637e87632c146104575780637f23690c1461047757806386a10ddd1461048a57610219565b806349a6078d1161014e57806354f6127f1161012857806354f6127f146103e25780636963d4381461040257806370a0823114610422578063715018a61461044257610219565b806349a6078d14610360578063511b69521461038d57806352058d8a146103af57610219565b80631d26fce61161017f5780631d26fce6146102db578063217b2270146103085780632a3654a41461034057610219565b806301ffc9a71461025a57806316e023b31461028f57806318160ddd146102bc57610219565b3661021957346000036101e75760405163e5099ee360e01b81526004016101de9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561024457828260405163e5099ee360e01b81526004016101de9291906122da565b61024e83836105f5565b80519350602001915050f35b34801561026657600080fd5b5061027a610275366004612309565b610704565b60405190151581526020015b60405180910390f35b34801561029b57600080fd5b506102af6102aa366004612333565b610751565b60405161028691906123a5565b3480156102c857600080fd5b506002545b604051908152602001610286565b3480156102e757600080fd5b506102fb6102f6366004612492565b610764565b60405161028691906124f6565b34801561031457600080fd5b5061032861032336600461255a565b61082a565b6040516001600160a01b039091168152602001610286565b34801561034c57600080fd5b5061027a61035b36600461258f565b610863565b34801561036c57600080fd5b5061038061037b36600461255a565b610878565b60405161028691906125b9565b34801561039957600080fd5b506103ad6103a836600461268f565b61089a565b005b3480156103bb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cd565b3480156103ee57600080fd5b506102af6103fd36600461255a565b6108f7565b34801561040e57600080fd5b506102fb61041d366004612708565b610902565b34801561042e57600080fd5b506102cd61043d36600461277d565b610a4b565b34801561044e57600080fd5b506103ad610a6c565b34801561046357600080fd5b506103ad6104723660046128e4565b610a80565b6103ad6104853660046129a9565b610b88565b34801561049657600080fd5b506103ad6104a53660046129e6565b610bbd565b3480156104b657600080fd5b506000546001600160a01b0316610328565b3480156104d457600080fd5b506102cd6104e336600461255a565b60009081526007602052604090205490565b6103ad610503366004612a3d565b610d50565b34801561051457600080fd5b5061052861052336600461277d565b610e42565b6040516102869190612a97565b34801561054157600080fd5b506103ad610550366004612acf565b610e66565b34801561056157600080fd5b506103ad610570366004612b37565b610e80565b34801561058157600080fd5b506103ad610590366004612bb5565b610f77565b3480156105a157600080fd5b506103ad6105b0366004612acf565b610f8a565b3480156105c157600080fd5b506102fb6105d0366004612bef565b61105e565b3480156105e157600080fd5b506103ad6105f036600461277d565b611109565b6060600061060e6000356001600160e01b03191661115d565b5090506001600160a01b03811661065f576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101de565b600080826001600160a01b031634878733346040516020016106849493929190612c24565b60408051601f198184030181529082905261069e91612c54565b60006040518083038185875af1925050503d80600081146106db576040519150601f19603f3d011682016040523d82523d6000602084013e6106e0565b606091505b509150915081156106f55792506106fe915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610742575061074282611207565b806106fe57506106fe82611245565b606061075d838361127c565b9392505050565b6060825167ffffffffffffffff811115610780576107806123b8565b6040519080825280602002602001820160405280156107b357816020015b606081526020019060019003908161079e5790505b50905060005b8351811015610823576107fe8482815181106107d7576107d7612c70565b60200260200101518483815181106107f1576107f1612c70565b602002602001015161127c565b82828151811061081057610810612c70565b60209081029190910101526001016107b9565b5092915050565b6000818152600360205260408120546001600160a01b0316806106fe57604051635747cd1b60e11b8152600481018490526024016101de565b600061086e82611353565b61075d838361138b565b606061088382611353565b60008281526005602052604090206106fe906113c8565b6108a4338461138b565b6108e3576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481018490523360248201526044016101de565b6108f085858585856113d5565b5050505050565b60606106fe826115c3565b60608167ffffffffffffffff81111561091d5761091d6123b8565b60405190808252806020026020018201604052801561095057816020015b606081526020019060019003908161093b5790505b50905060005b82811015610823576000803086868581811061097457610974612c70565b90506020028101906109869190612c86565b604051610994929190612cd4565b600060405180830381855af49150503d80600081146109cf576040519150601f19603f3d011682016040523d82523d6000602084013e6109d4565b606091505b509150915081610a23578051156109ee5780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016101de565b80848481518110610a3657610a36612c70565b60209081029190910101525050600101610956565b6001600160a01b03811660009081526004602052604081206106fe90611665565b610a7461166f565b610a7e60006116c4565b565b8451845181141580610a93575083518114155b80610a9f575082518114155b80610aab575081518114155b15610ae2576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610b7f57610b77878281518110610b0257610b02612c70565b6020026020010151878381518110610b1c57610b1c612c70565b6020026020010151878481518110610b3657610b36612c70565b6020026020010151878581518110610b5057610b50612c70565b6020026020010151878681518110610b6a57610b6a612c70565b602002602001015161089a565b600101610ae5565b50505050505050565b610b9061166f565b3415610baf5760405163f36ba73760e01b815260040160405180910390fd5b610bb9828261173f565b5050565b6000610bc88361082a565b90506001600160a01b0381163314610c0b57604051632d938f5160e11b81526001600160a01b0382166004820152602481018490523360448201526064016101de565b6001600160a01b038416610c3257604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610c64576040516344fed6b160e11b815260040160405180910390fd5b6000838152600560205260408120610c7c90866117a2565b905080610cc7576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044016101de565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610d0b91906123a5565b60405180910390a460003385600186604051602001610d2d9493929190612ce4565b6040516020818303038152906040529050610d4886826117b7565b505050505050565b610d5861166f565b3415610d775760405163f36ba73760e01b815260040160405180910390fd5b8051825114610db2576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610ded576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610e3d57610e35838281518110610e0e57610e0e612c70565b6020026020010151838381518110610e2857610e28612c70565b602002602001015161173f565b600101610df0565b505050565b6001600160a01b03811660009081526004602052604090206060906106fe906113c8565b610e6e61166f565b610e7a848484846117e2565b50505050565b610e8861166f565b81518351141580610e9b57508051825114155b15610ed2576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251600003610f0d576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015610e7a57610f6f848281518110610f2e57610f2e612c70565b6020026020010151848381518110610f4857610f48612c70565b6020026020010151848481518110610f6257610f62612c70565b60200260200101516117ee565b600101610f10565b610f7f61166f565b610e3d8383836117ee565b6000610f958461082a565b90506001600160a01b0381163314610fd857604051632d938f5160e11b81526001600160a01b0382166004820152602481018590523360448201526064016101de565b6001600160a01b038516610fff57604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031603611031576040516344fed6b160e11b815260040160405180910390fd5b61103e858286868661187e565b82156108f05760003385600085604051602001610d2d9493929190612ce4565b6060815167ffffffffffffffff81111561107a5761107a6123b8565b6040519080825280602002602001820160405280156110ad57816020015b60608152602001906001900390816110985790505b50905060005b8251811015611103576110de8382815181106110d1576110d1612c70565b60200260200101516115c3565b8282815181106110f0576110f0612c70565b60209081029190910101526001016110b3565b50919050565b61111161166f565b6001600160a01b038116611151576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115a816116c4565b50565b600080806111957fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611937565b905060006111a2826115c3565b905080516014141580156111b65750805115155b156111ef57806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101de91906123a5565b6111f881612d1e565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806106fe57506106fe826119a8565b6000806112586301ffc9a760e01b61115d565b5090506001600160a01b0381166112725750600092915050565b61075d81846119f6565b606060016000848460405160200161129e929190918252602082015260400190565b60405160208183030381529060405280519060200120815260200190815260200160002080546112cd90612d5a565b80601f01602080910402602001604051908101604052809291908181526020018280546112f990612d5a565b80156113465780601f1061131b57610100808354040283529160200191611346565b820191906000526020600020905b81548152906001019060200180831161132957829003601f168201915b5050505050905092915050565b6000818152600360205260409020546001600160a01b031661115a57604051635747cd1b60e11b8152600481018290526024016101de565b60006113968261082a565b6001600160a01b0316836001600160a01b0316148061075d5750600082815260056020526040902061075d9084611a94565b6060600061075d83611ab6565b836001600160a01b0316856001600160a01b031603611420576040517f5d67d6c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061142b8461082a565b9050856001600160a01b0316816001600160a01b03161461147957604051632d938f5160e11b81526001600160a01b03808316600483015260248201869052871660448201526064016101de565b6001600160a01b0385166114a0576040516324ecef4d60e01b815260040160405180910390fd5b6114ac86868685611b11565b6114b58461082a565b90506114c18685611b1d565b6001600160a01b03861660009081526004602052604090206114e39085611b75565b506001600160a01b03851660009081526004602052604090206115069085611b81565b5060008481526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518692918916907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061157a90339089908990612d8e565b60405180910390a46000338787878660405160200161159d959493929190612dc1565b60405160208183030381529060405290506115b88782611b8d565b610b7f868583611bb8565b60008181526001602052604090208054606091906115e090612d5a565b80601f016020809104026020016040519081016040528092919081815260200182805461160c90612d5a565b80156116595780601f1061162e57610100808354040283529160200191611659565b820191906000526020600020905b81548152906001019060200180831161163c57829003601f168201915b50505050509050919050565b60006106fe825490565b336116826000546001600160a01b031690565b6001600160a01b031614610a7e576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101de565b6000546001600160a01b0382811691161461115a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201611798576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb98282611cf2565b600061075d836001600160a01b038416611cfc565b610bb9827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083611d4b565b610e7a84848484611d98565b8060016000858560405160200161180f929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020908161183f9190612e43565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161187191906123a5565b60405180910390a3505050565b60008381526005602052604081206118969087611e0b565b9050806118e1576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602481018590526044016101de565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051611927929190612f03565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806119a090612f1e565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806106fe57506301ffc9a760e01b6001600160e01b03198316146106fe565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611a7d575060208210155b8015611a895750600081115b979650505050505050565b6001600160a01b0381166000908152600183016020526040812054151561075d565b60608160000180548060200260200160405190810160405280929190818152602001828054801561165957602002820191906000526020600020905b815481526020019060010190808311611af25750505050509050919050565b610e7a84848484611e20565b600081815260056020526040812090611b3582611665565b90506000805b82811015610d4857611b4e846000611ee7565b9150611b6d82878760006040518060200160405280600081525061187e565b600101611b3b565b600061075d8383611ef3565b600061075d8383611cfc565b610bb9827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083611d4b565b611bc983631aed5a8560e21b6119f6565b15611c6357604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c1c907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401612f42565b6000604051808303816000875af1158015611c3b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e7a9190810190612f5b565b81610e3d576001600160a01b0383163b15611cb5576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b610bb98282611fe6565b6000818152600183016020526040812054611d43575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106fe565b5060006106fe565b611d656001600160a01b038416631aed5a8560e21b6119f6565b15610e3d57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c1c9085908590600401612f42565b7f0000000000000000000000000000000000000000000000000000000000000000600254611dc7906001612fdf565b1115611dff576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e7a84848484612146565b600061075d836001600160a01b038416611ef3565b6001600160a01b038416611e5a576000611e3960025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316611ee25760006001611e7560025490565b611e7f9190612ff2565b60008481526008602052604090205490915081811015611ec1576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b610e7a565b600061075d83836122b0565b60008181526001830160205260408120548015611fdc576000611f17600183612ff2565b8554909150600090611f2b90600190612ff2565b9050818114611f90576000866000018281548110611f4b57611f4b612c70565b9060005260206000200154905080876000018481548110611f6e57611f6e612c70565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611fa157611fa1613005565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106fe565b60009150506106fe565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820161203f576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612098576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016120f1576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206121098282612e43565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161213a91906123a5565b60405180910390a25050565b6001600160a01b03841661216d576040516324ecef4d60e01b815260040160405180910390fd5b61217a6000858584611b11565b6000838152600360205260409020546001600160a01b0316156121cc576040517f34c7b511000000000000000000000000000000000000000000000000000000008152600481018490526024016101de565b6002600081546121db9061301b565b909155506001600160a01b03841660009081526004602052604090206122019084611b81565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061227090339088908890612d8e565b60405180910390a46000336000868685604051602001612294959493929190612dc1565b60405160208183030381529060405290506108f0858483611bb8565b60008260000182815481106122c7576122c7612c70565b9060005260206000200154905092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561231b57600080fd5b81356001600160e01b03198116811461075d57600080fd5b6000806040838503121561234657600080fd5b50508035926020909101359150565b60005b83811015612370578181015183820152602001612358565b50506000910152565b60008151808452612391816020860160208601612355565b601f01601f19169290920160200192915050565b60208152600061075d6020830184612379565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156123f7576123f76123b8565b604052919050565b600067ffffffffffffffff821115612419576124196123b8565b5060051b60200190565b600082601f83011261243457600080fd5b81356020612449612444836123ff565b6123ce565b8083825260208201915060208460051b87010193508684111561246b57600080fd5b602086015b848110156124875780358352918301918301612470565b509695505050505050565b600080604083850312156124a557600080fd5b823567ffffffffffffffff808211156124bd57600080fd5b6124c986838701612423565b935060208501359150808211156124df57600080fd5b506124ec85828601612423565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561254d57603f1988860301845261253b858351612379565b9450928501929085019060010161251f565b5092979650505050505050565b60006020828403121561256c57600080fd5b5035919050565b80356001600160a01b038116811461258a57600080fd5b919050565b600080604083850312156125a257600080fd5b6125ab83612573565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156125fa5783516001600160a01b0316835292840192918401916001016125d5565b50909695505050505050565b8035801515811461258a57600080fd5b600067ffffffffffffffff821115612630576126306123b8565b50601f01601f191660200190565b600082601f83011261264f57600080fd5b813561265d61244482612616565b81815284602083860101111561267257600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156126a757600080fd5b6126b086612573565b94506126be60208701612573565b9350604086013592506126d360608701612606565b9150608086013567ffffffffffffffff8111156126ef57600080fd5b6126fb8882890161263e565b9150509295509295909350565b6000806020838503121561271b57600080fd5b823567ffffffffffffffff8082111561273357600080fd5b818501915085601f83011261274757600080fd5b81358181111561275657600080fd5b8660208260051b850101111561276b57600080fd5b60209290920196919550909350505050565b60006020828403121561278f57600080fd5b61075d82612573565b600082601f8301126127a957600080fd5b813560206127b9612444836123ff565b8083825260208201915060208460051b8701019350868411156127db57600080fd5b602086015b84811015612487576127f181612573565b83529183019183016127e0565b600082601f83011261280f57600080fd5b8135602061281f612444836123ff565b8083825260208201915060208460051b87010193508684111561284157600080fd5b602086015b848110156124875761285781612606565b8352918301918301612846565b600082601f83011261287557600080fd5b81356020612885612444836123ff565b82815260059290921b840181019181810190868411156128a457600080fd5b8286015b8481101561248757803567ffffffffffffffff8111156128c85760008081fd5b6128d68986838b010161263e565b8452509183019183016128a8565b600080600080600060a086880312156128fc57600080fd5b853567ffffffffffffffff8082111561291457600080fd5b61292089838a01612798565b9650602088013591508082111561293657600080fd5b61294289838a01612798565b9550604088013591508082111561295857600080fd5b61296489838a01612423565b9450606088013591508082111561297a57600080fd5b61298689838a016127fe565b9350608088013591508082111561299c57600080fd5b506126fb88828901612864565b600080604083850312156129bc57600080fd5b82359150602083013567ffffffffffffffff8111156129da57600080fd5b6124ec8582860161263e565b6000806000606084860312156129fb57600080fd5b612a0484612573565b925060208401359150604084013567ffffffffffffffff811115612a2757600080fd5b612a338682870161263e565b9150509250925092565b60008060408385031215612a5057600080fd5b823567ffffffffffffffff80821115612a6857600080fd5b612a7486838701612423565b93506020850135915080821115612a8a57600080fd5b506124ec85828601612864565b6020808252825182820181905260009190848201906040850190845b818110156125fa57835183529284019291840191600101612ab3565b60008060008060808587031215612ae557600080fd5b612aee85612573565b935060208501359250612b0360408601612606565b9150606085013567ffffffffffffffff811115612b1f57600080fd5b612b2b8782880161263e565b91505092959194509250565b600080600060608486031215612b4c57600080fd5b833567ffffffffffffffff80821115612b6457600080fd5b612b7087838801612423565b94506020860135915080821115612b8657600080fd5b612b9287838801612423565b93506040860135915080821115612ba857600080fd5b50612a3386828701612864565b600080600060608486031215612bca57600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612a2757600080fd5b600060208284031215612c0157600080fd5b813567ffffffffffffffff811115612c1857600080fd5b6119a084828501612423565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612c66818460208701612355565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112612c9d57600080fd5b83018035915067ffffffffffffffff821115612cb857600080fd5b602001915036819003821315612ccd57600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b03851681528360208201528215156040820152608060608201526000612d146080830184612379565b9695505050505050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612d525780818460140360031b1b83161693505b505050919050565b600181811c90821680612d6e57607f821691505b60208210810361110357634e487b7160e01b600052602260045260246000fd5b6001600160a01b03841681528215156020820152606060408201526000612db86060830184612379565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611a8960a0830184612379565b601f821115610e3d576000816000526020600020601f850160051c81016020861015612e245750805b601f850160051c820191505b81811015610d4857828155600101612e30565b815167ffffffffffffffff811115612e5d57612e5d6123b8565b612e7181612e6b8454612d5a565b84612dfb565b602080601f831160018114612ea65760008415612e8e5750858301515b600019600386901b1c1916600185901b178555610d48565b600085815260208120601f198616915b82811015612ed557888601518255948401946001909101908401612eb6565b5085821015612ef35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006119a06040830184612379565b805160208083015191908110156111035760001960209190910360031b1b16919050565b8281526040602082015260006119a06040830184612379565b600060208284031215612f6d57600080fd5b815167ffffffffffffffff811115612f8457600080fd5b8201601f81018413612f9557600080fd5b8051612fa361244482612616565b818152856020838501011115612fb857600080fd5b612db8826020830160208601612355565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fe576106fe612fc9565b818103818111156106fe576106fe612fc9565b634e487b7160e01b600052603160045260246000fd5b60006001820161302d5761302d612fc9565b506001019056fea26469706673582212202e26d9e5fae4b9f46724bcfe7df7e29494d7322fb6042fd7d0663323a85691fe64736f6c63430008160033 +0x60a06040523480156200001157600080fd5b506040516200373138038062003731833981016040819052620000349162000451565b808686868686848484848484848484816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620001ea565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000258565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000258565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000258565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000258565b50506040805160208101859052620001ae93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620002b1565b5050505050505050505080600003620001da5760405163038d9fc360e41b815260040160405180910390fd5b608052506200068c945050505050565b6000546001600160a01b038281169116146200025557600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200027282826200058b565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620002a5919062000657565b60405180910390a25050565b620002bd8282620002c1565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820162000302576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200034357604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200025857604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b75781810151838201526020016200039d565b50506000910152565b600082601f830112620003d257600080fd5b81516001600160401b0380821115620003ef57620003ef62000384565b604051601f8301601f19908116603f011681019082821181831017156200041a576200041a62000384565b816040528381528660208588010111156200043457600080fd5b620004478460208301602089016200039a565b9695505050505050565b60008060008060008060c087890312156200046b57600080fd5b86516001600160401b03808211156200048357600080fd5b620004918a838b01620003c0565b97506020890151915080821115620004a857600080fd5b50620004b789828a01620003c0565b604089015190965090506001600160a01b0381168114620004d757600080fd5b80945050606087015192506080870151915060a087015190509295509295509295565b600181811c908216806200050f57607f821691505b6020821081036200053057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000586576000816000526020600020601f850160051c81016020861015620005615750805b601f850160051c820191505b8181101562000582578281556001016200056d565b5050505b505050565b81516001600160401b03811115620005a757620005a762000384565b620005bf81620005b88454620004fa565b8462000536565b602080601f831160018114620005f75760008415620005de5750858301515b600019600386901b1c1916600185901b17855562000582565b600085815260208120601f198616915b82811015620006285788860151825594840194600190910190840162000607565b5085821015620006475787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006788160408501602087016200039a565b601f01601f19169190910160400192915050565b608051613082620006af600039600081816103be0152611d9201526130826000f3fe6080604052600436106101a55760003560e01c80637e87632c116100e1578063a3b261f21161008a578063d6c1407c11610064578063d6c1407c14610575578063db8c966314610595578063dedff9c6146105b5578063f2fde38b146105d557610219565b8063a3b261f214610508578063af255b6114610535578063be9f0e6f1461055557610219565b80638da5cb5b116100bb5780638da5cb5b146104aa57806392a91a3a146104c857806397902421146104f557610219565b80637e87632c146104575780637f23690c1461047757806386a10ddd1461048a57610219565b806349a6078d1161014e57806354f6127f1161012857806354f6127f146103e25780636963d4381461040257806370a0823114610422578063715018a61461044257610219565b806349a6078d14610360578063511b69521461038d57806352058d8a146103af57610219565b80631d26fce61161017f5780631d26fce6146102db578063217b2270146103085780632a3654a41461034057610219565b806301ffc9a71461025a57806316e023b31461028f57806318160ddd146102bc57610219565b3661021957346000036101e75760405163e5099ee360e01b81526004016101de9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561024457828260405163e5099ee360e01b81526004016101de9291906122f2565b61024e83836105f5565b80519350602001915050f35b34801561026657600080fd5b5061027a610275366004612321565b610704565b60405190151581526020015b60405180910390f35b34801561029b57600080fd5b506102af6102aa36600461234b565b610751565b60405161028691906123bd565b3480156102c857600080fd5b506002545b604051908152602001610286565b3480156102e757600080fd5b506102fb6102f63660046124aa565b610764565b604051610286919061250e565b34801561031457600080fd5b50610328610323366004612572565b61084c565b6040516001600160a01b039091168152602001610286565b34801561034c57600080fd5b5061027a61035b3660046125a7565b610885565b34801561036c57600080fd5b5061038061037b366004612572565b610891565b60405161028691906125d1565b34801561039957600080fd5b506103ad6103a83660046126a7565b6108b3565b005b3480156103bb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102cd565b3480156103ee57600080fd5b506102af6103fd366004612572565b610910565b34801561040e57600080fd5b506102fb61041d366004612720565b61091b565b34801561042e57600080fd5b506102cd61043d366004612795565b610a64565b34801561044e57600080fd5b506103ad610a85565b34801561046357600080fd5b506103ad6104723660046128fc565b610a99565b6103ad6104853660046129c1565b610ba1565b34801561049657600080fd5b506103ad6104a53660046129fe565b610bd6565b3480156104b657600080fd5b506000546001600160a01b0316610328565b3480156104d457600080fd5b506102cd6104e3366004612572565b60009081526007602052604090205490565b6103ad610503366004612a55565b610d69565b34801561051457600080fd5b50610528610523366004612795565b610e5b565b6040516102869190612aaf565b34801561054157600080fd5b506103ad610550366004612ae7565b610e7f565b34801561056157600080fd5b506103ad610570366004612b4f565b610e99565b34801561058157600080fd5b506103ad610590366004612bcd565b610f77565b3480156105a157600080fd5b506103ad6105b0366004612ae7565b610f8a565b3480156105c157600080fd5b506102fb6105d0366004612c07565b611087565b3480156105e157600080fd5b506103ad6105f0366004612795565b611132565b6060600061060e6000356001600160e01b031916611186565b5090506001600160a01b03811661065f576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101de565b600080826001600160a01b031634878733346040516020016106849493929190612c3c565b60408051601f198184030181529082905261069e91612c6c565b60006040518083038185875af1925050503d80600081146106db576040519150601f19603f3d011682016040523d82523d6000602084013e6106e0565b606091505b509150915081156106f55792506106fe915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610742575061074282611230565b806106fe57506106fe8261126e565b606061075d83836112a5565b9392505050565b60608151835114610788576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff8111156107a2576107a26123d0565b6040519080825280602002602001820160405280156107d557816020015b60608152602001906001900390816107c05790505b50905060005b8351811015610845576108208482815181106107f9576107f9612c88565b602002602001015184838151811061081357610813612c88565b60200260200101516112a5565b82828151811061083257610832612c88565b60209081029190910101526001016107db565b5092915050565b6000818152600360205260408120546001600160a01b0316806106fe57604051635747cd1b60e11b8152600481018490526024016101de565b600061075d8383611353565b606061089c82611390565b60008281526005602052604090206106fe906113c8565b6108bd3384611353565b6108fc576040517f1294d2a9000000000000000000000000000000000000000000000000000000008152600481018490523360248201526044016101de565b61090985858585856113d5565b5050505050565b60606106fe826115e9565b60608167ffffffffffffffff811115610936576109366123d0565b60405190808252806020026020018201604052801561096957816020015b60608152602001906001900390816109545790505b50905060005b82811015610845576000803086868581811061098d5761098d612c88565b905060200281019061099f9190612c9e565b6040516109ad929190612cec565b600060405180830381855af49150503d80600081146109e8576040519150601f19603f3d011682016040523d82523d6000602084013e6109ed565b606091505b509150915081610a3c57805115610a075780518082602001fd5b6040517f234eb819000000000000000000000000000000000000000000000000000000008152600481018490526024016101de565b80848481518110610a4f57610a4f612c88565b6020908102919091010152505060010161096f565b6001600160a01b03811660009081526004602052604081206106fe9061168b565b610a8d611695565b610a9760006116ea565b565b8451845181141580610aac575083518114155b80610ab8575082518114155b80610ac4575081518114155b15610afb576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610b9857610b90878281518110610b1b57610b1b612c88565b6020026020010151878381518110610b3557610b35612c88565b6020026020010151878481518110610b4f57610b4f612c88565b6020026020010151878581518110610b6957610b69612c88565b6020026020010151878681518110610b8357610b83612c88565b60200260200101516108b3565b600101610afe565b50505050505050565b610ba9611695565b3415610bc85760405163f36ba73760e01b815260040160405180910390fd5b610bd28282611765565b5050565b6000610be18361084c565b90506001600160a01b0381163314610c2457604051632d938f5160e11b81526001600160a01b0382166004820152602481018490523360448201526064016101de565b6001600160a01b038416610c4b57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610c7d576040516344fed6b160e11b815260040160405180910390fd5b6000838152600560205260408120610c9590866117c8565b905080610ce0576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044016101de565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610d2491906123bd565b60405180910390a460003385600186604051602001610d469493929190612cfc565b6040516020818303038152906040529050610d6186826117dd565b505050505050565b610d71611695565b3415610d905760405163f36ba73760e01b815260040160405180910390fd5b8051825114610dcb576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610e06576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610e5657610e4e838281518110610e2757610e27612c88565b6020026020010151838381518110610e4157610e41612c88565b6020026020010151611765565b600101610e09565b505050565b6001600160a01b03811660009081526004602052604090206060906106fe906113c8565b610e87611695565b610e9384848484611808565b50505050565b610ea1611695565b81518351141580610eb457508051825114155b15610ed2576040516317d38eff60e11b815260040160405180910390fd5b8251600003610f0d576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015610e9357610f6f848281518110610f2e57610f2e612c88565b6020026020010151848381518110610f4857610f48612c88565b6020026020010151848481518110610f6257610f62612c88565b6020026020010151611814565b600101610f10565b610f7f611695565b610e56838383611814565b6000610f958461084c565b9050336001600160a01b03821614611001576001600160a01b0385163314611001576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0382166024820152604481018590526064016101de565b6001600160a01b03851661102857604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b03160361105a576040516344fed6b160e11b815260040160405180910390fd5b6110678582868686611876565b82156109095760008185600085604051602001610d469493929190612cfc565b6060815167ffffffffffffffff8111156110a3576110a36123d0565b6040519080825280602002602001820160405280156110d657816020015b60608152602001906001900390816110c15790505b50905060005b825181101561112c576111078382815181106110fa576110fa612c88565b60200260200101516115e9565b82828151811061111957611119612c88565b60209081029190910101526001016110dc565b50919050565b61113a611695565b6001600160a01b03811661117a576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611183816116ea565b50565b600080806111be7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b0319861661192f565b905060006111cb826115e9565b905080516014141580156111df5750805115155b1561121857806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101de91906123bd565b61122181612d36565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806106fe57506106fe826119a0565b6000806112816301ffc9a760e01b611186565b5090506001600160a01b03811661129b5750600092915050565b61075d81846119ee565b600082815260066020908152604080832084845290915290208054606091906112cd90612d72565b80601f01602080910402602001604051908101604052809291908181526020018280546112f990612d72565b80156113465780601f1061131b57610100808354040283529160200191611346565b820191906000526020600020905b81548152906001019060200180831161132957829003601f168201915b5050505050905092915050565b600061135e8261084c565b6001600160a01b0316836001600160a01b0316148061075d5750600082815260056020526040902061075d9084611a8c565b6000818152600360205260409020546001600160a01b031661118357604051635747cd1b60e11b8152600481018290526024016101de565b6060600061075d83611aae565b60006113e08461084c565b9050856001600160a01b0316816001600160a01b03161461142e57604051632d938f5160e11b81526001600160a01b03808316600483015260248201869052871660448201526064016101de565b6001600160a01b038516611455576040516324ecef4d60e01b815260040160405180910390fd5b61146186868685611b09565b600061146c8561084c565b9050806001600160a01b0316826001600160a01b0316146114d3576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b038084166024830152821660448201526064016101de565b6114dd8786611b15565b6001600160a01b03871660009081526004602052604090206114ff9086611b6d565b506001600160a01b03861660009081526004602052604090206115229086611b79565b5060008581526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906115969033908a908a90612da6565b60405180910390a4600033888888876040516020016115b9959493929190612dd9565b60405160208183030381529060405290506115d48882611b85565b6115df878683611bb0565b5050505050505050565b600081815260016020526040902080546060919061160690612d72565b80601f016020809104026020016040519081016040528092919081815260200182805461163290612d72565b801561167f5780601f106116545761010080835404028352916020019161167f565b820191906000526020600020905b81548152906001019060200180831161166257829003601f168201915b50505050509050919050565b60006106fe825490565b336116a86000546001600160a01b031690565b6001600160a01b031614610a97576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101de565b6000546001600160a01b0382811691161461118357600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e7382016117be576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd28282611cea565b600061075d836001600160a01b038416611cf4565b610bd2827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083611d43565b610e9384848484611d90565b600083815260066020908152604080832085845290915290206118378282612e5b565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161186991906123bd565b60405180910390a3505050565b600083815260056020526040812061188e9087611e03565b9050806118d9576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152602481018590526044016101de565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c868660405161191f929190612f1b565b60405180910390a4505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c8301529182910160405160208183030381529060405290508061199890612f36565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806106fe57506301ffc9a760e01b6001600160e01b03198316146106fe565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611a75575060208210155b8015611a815750600081115b979650505050505050565b6001600160a01b0381166000908152600183016020526040812054151561075d565b60608160000180548060200260200160405190810160405280929190818152602001828054801561167f57602002820191906000526020600020905b815481526020019060010190808311611aea5750505050509050919050565b610e9384848484611e18565b600081815260056020526040812090611b2d8261168b565b90506000805b82811015610d6157611b46846000611edf565b9150611b65828787600060405180602001604052806000815250611876565b600101611b33565b600061075d8383611eeb565b600061075d8383611cf4565b610bd2827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083611d43565b611bc183631aed5a8560e21b6119ee565b15611c5b57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c14907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401612f5a565b6000604051808303816000875af1158015611c33573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e939190810190612f73565b81610e56576001600160a01b0383163b15611cad576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101de565b610bd28282611fde565b6000818152600183016020526040812054611d3b575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556106fe565b5060006106fe565b611d5d6001600160a01b038416631aed5a8560e21b6119ee565b15610e5657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611c149085908590600401612f5a565b7f0000000000000000000000000000000000000000000000000000000000000000600254611dbf906001612ff7565b1115611df7576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e938484848461213e565b600061075d836001600160a01b038416611eeb565b6001600160a01b038416611e52576000611e3160025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316611eda5760006001611e6d60025490565b611e77919061300a565b60008481526008602052604090205490915081811015611eb9576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b610e93565b600061075d83836122c8565b60008181526001830160205260408120548015611fd4576000611f0f60018361300a565b8554909150600090611f239060019061300a565b9050818114611f88576000866000018281548110611f4357611f43612c88565b9060005260206000200154905080876000018481548110611f6657611f66612c88565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611f9957611f9961301d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506106fe565b60009150506106fe565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612037576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612090576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016120e9576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206121018282612e5b565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161213291906123bd565b60405180910390a25050565b6001600160a01b038416612165576040516324ecef4d60e01b815260040160405180910390fd5b6000838152600360205260409020546001600160a01b03161561219e576040516334c7b51160e01b8152600481018490526024016101de565b6121ab6000858584611b09565b6000838152600360205260409020546001600160a01b0316156121e4576040516334c7b51160e01b8152600481018490526024016101de565b6002600081546121f390613033565b909155506001600160a01b03841660009081526004602052604090206122199084611b79565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061228890339088908890612da6565b60405180910390a460003360008686856040516020016122ac959493929190612dd9565b6040516020818303038152906040529050610909858483611bb0565b60008260000182815481106122df576122df612c88565b9060005260206000200154905092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561233357600080fd5b81356001600160e01b03198116811461075d57600080fd5b6000806040838503121561235e57600080fd5b50508035926020909101359150565b60005b83811015612388578181015183820152602001612370565b50506000910152565b600081518084526123a981602086016020860161236d565b601f01601f19169290920160200192915050565b60208152600061075d6020830184612391565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561240f5761240f6123d0565b604052919050565b600067ffffffffffffffff821115612431576124316123d0565b5060051b60200190565b600082601f83011261244c57600080fd5b8135602061246161245c83612417565b6123e6565b8083825260208201915060208460051b87010193508684111561248357600080fd5b602086015b8481101561249f5780358352918301918301612488565b509695505050505050565b600080604083850312156124bd57600080fd5b823567ffffffffffffffff808211156124d557600080fd5b6124e18683870161243b565b935060208501359150808211156124f757600080fd5b506125048582860161243b565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561256557603f19888603018452612553858351612391565b94509285019290850190600101612537565b5092979650505050505050565b60006020828403121561258457600080fd5b5035919050565b80356001600160a01b03811681146125a257600080fd5b919050565b600080604083850312156125ba57600080fd5b6125c38361258b565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156126125783516001600160a01b0316835292840192918401916001016125ed565b50909695505050505050565b803580151581146125a257600080fd5b600067ffffffffffffffff821115612648576126486123d0565b50601f01601f191660200190565b600082601f83011261266757600080fd5b813561267561245c8261262e565b81815284602083860101111561268a57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156126bf57600080fd5b6126c88661258b565b94506126d66020870161258b565b9350604086013592506126eb6060870161261e565b9150608086013567ffffffffffffffff81111561270757600080fd5b61271388828901612656565b9150509295509295909350565b6000806020838503121561273357600080fd5b823567ffffffffffffffff8082111561274b57600080fd5b818501915085601f83011261275f57600080fd5b81358181111561276e57600080fd5b8660208260051b850101111561278357600080fd5b60209290920196919550909350505050565b6000602082840312156127a757600080fd5b61075d8261258b565b600082601f8301126127c157600080fd5b813560206127d161245c83612417565b8083825260208201915060208460051b8701019350868411156127f357600080fd5b602086015b8481101561249f576128098161258b565b83529183019183016127f8565b600082601f83011261282757600080fd5b8135602061283761245c83612417565b8083825260208201915060208460051b87010193508684111561285957600080fd5b602086015b8481101561249f5761286f8161261e565b835291830191830161285e565b600082601f83011261288d57600080fd5b8135602061289d61245c83612417565b82815260059290921b840181019181810190868411156128bc57600080fd5b8286015b8481101561249f57803567ffffffffffffffff8111156128e05760008081fd5b6128ee8986838b0101612656565b8452509183019183016128c0565b600080600080600060a0868803121561291457600080fd5b853567ffffffffffffffff8082111561292c57600080fd5b61293889838a016127b0565b9650602088013591508082111561294e57600080fd5b61295a89838a016127b0565b9550604088013591508082111561297057600080fd5b61297c89838a0161243b565b9450606088013591508082111561299257600080fd5b61299e89838a01612816565b935060808801359150808211156129b457600080fd5b506127138882890161287c565b600080604083850312156129d457600080fd5b82359150602083013567ffffffffffffffff8111156129f257600080fd5b61250485828601612656565b600080600060608486031215612a1357600080fd5b612a1c8461258b565b925060208401359150604084013567ffffffffffffffff811115612a3f57600080fd5b612a4b86828701612656565b9150509250925092565b60008060408385031215612a6857600080fd5b823567ffffffffffffffff80821115612a8057600080fd5b612a8c8683870161243b565b93506020850135915080821115612aa257600080fd5b506125048582860161287c565b6020808252825182820181905260009190848201906040850190845b8181101561261257835183529284019291840191600101612acb565b60008060008060808587031215612afd57600080fd5b612b068561258b565b935060208501359250612b1b6040860161261e565b9150606085013567ffffffffffffffff811115612b3757600080fd5b612b4387828801612656565b91505092959194509250565b600080600060608486031215612b6457600080fd5b833567ffffffffffffffff80821115612b7c57600080fd5b612b888783880161243b565b94506020860135915080821115612b9e57600080fd5b612baa8783880161243b565b93506040860135915080821115612bc057600080fd5b50612a4b8682870161287c565b600080600060608486031215612be257600080fd5b8335925060208401359150604084013567ffffffffffffffff811115612a3f57600080fd5b600060208284031215612c1957600080fd5b813567ffffffffffffffff811115612c3057600080fd5b6119988482850161243b565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612c7e81846020870161236d565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112612cb557600080fd5b83018035915067ffffffffffffffff821115612cd057600080fd5b602001915036819003821315612ce557600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b03851681528360208201528215156040820152608060608201526000612d2c6080830184612391565b9695505050505050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612d6a5780818460140360031b1b83161693505b505050919050565b600181811c90821680612d8657607f821691505b60208210810361112c57634e487b7160e01b600052602260045260246000fd5b6001600160a01b03841681528215156020820152606060408201526000612dd06060830184612391565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611a8160a0830184612391565b601f821115610e56576000816000526020600020601f850160051c81016020861015612e3c5750805b601f850160051c820191505b81811015610d6157828155600101612e48565b815167ffffffffffffffff811115612e7557612e756123d0565b612e8981612e838454612d72565b84612e13565b602080601f831160018114612ebe5760008415612ea65750858301515b600019600386901b1c1916600185901b178555610d61565b600085815260208120601f198616915b82811015612eed57888601518255948401946001909101908401612ece565b5085821015612f0b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006119986040830184612391565b8051602080830151919081101561112c5760001960209190910360031b1b16919050565b8281526040602082015260006119986040830184612391565b600060208284031215612f8557600080fd5b815167ffffffffffffffff811115612f9c57600080fd5b8201601f81018413612fad57600080fd5b8051612fbb61245c8261262e565b818152856020838501011115612fd057600080fd5b612dd082602083016020860161236d565b634e487b7160e01b600052601160045260246000fd5b808201808211156106fe576106fe612fe1565b818103818111156106fe576106fe612fe1565b634e487b7160e01b600052603160045260246000fd5b60006001820161304557613045612fe1565b506001019056fea26469706673582212208f8c5d410fe71b0fb79ec17bc12af95b9b0f370d956ac35c10a291f13b41b62b64736f6c63430008160033 diff --git a/artifacts/bytecode/4201/drops/LSP7DropsDigitalAsset.bin b/artifacts/bytecode/4201/drops/LSP7DropsDigitalAsset.bin index 6c2d512..0d3adf0 100644 --- a/artifacts/bytecode/4201/drops/LSP7DropsDigitalAsset.bin +++ b/artifacts/bytecode/4201/drops/LSP7DropsDigitalAsset.bin @@ -1 +1 @@ -0x6101006040523480156200001257600080fd5b50604051620040e2380380620040e2833981016040819052620000359162000470565b838382848a8a8a60018084848483816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a09150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af4158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022491906200053a565b6200024e576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026c57506001600160a01b038216155b156200028b5760405163d92e233d60e01b815260040160405180910390fd5b600d805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a05250620006f795505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6000828152600160205260409020620003478282620005f6565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006c2565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600060e0888a0312156200048c57600080fd5b87516001600160401b0380821115620004a457600080fd5b620004b28b838c01620003c2565b985060208a0151915080821115620004c957600080fd5b50620004d88a828b01620003c2565b965050620004e96040890162000453565b9450620004f96060890162000453565b9350620005096080890162000453565b925060a0880151915060c088015163ffffffff811681146200052a57600080fd5b8091505092959891949750929550565b6000602082840312156200054d57600080fd5b815180151581146200055e57600080fd5b9392505050565b600181811c908216806200057a57607f821691505b6020821081036200059b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005f1576000816000526020600020601f850160051c81016020861015620005cc5750805b601f850160051c820191505b81811015620005ed57828155600101620005d8565b5050505b505050565b81516001600160401b0381111562000612576200061262000386565b6200062a8162000623845462000565565b84620005a1565b602080601f831160018114620006625760008415620006495750858301515b600019600386901b1c1916600185901b178555620005ed565b600085815260208120601f198616915b82811015620006935788860151825594840194600190910190840162000672565b5085821015620006b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006e38160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e0516139956200074d600039600081816103b40152611dd301526000818161070d01526120070152600081816104670152611f1f0152600081816104e20152612a2201526139956000f3fe6080604052600436106102535760003560e01c8063715018a611610138578063aad3ec96116100b0578063dedff9c61161007f578063f2fde38b11610064578063f2fde38b1461078f578063f575191e146107af578063fc618071146107c5576102c7565b8063dedff9c61461075c578063edb8d1e21461077c576102c7565b8063aad3ec96146106bb578063b49506fd146106db578063d598d4c9146106fb578063d72fc29a1461072f576102c7565b80637f23690c116101075780638da5cb5b116100ec5780638da5cb5b14610654578063942cd44b1461067257806397902421146106a8576102c7565b80637f23690c146106215780638bbd437814610634576102c7565b8063715018a6146105b6578063760d9bba146105cb57806378e97925146105eb5780637b204c4e14610601576102c7565b80633c3e8ae3116101cb57806354f6127f1161019a5780636817c76c1161017f5780636817c76c146105535780636963d4381461056957806370a0823114610596576102c7565b806354f6127f1461050657806365aeaa9514610533576102c7565b80633c3e8ae3146104555780634521748e1461049e57806351b42b00146104be57806352058d8a146104d3576102c7565b80632b47da52116102225780632bc1da82116102075780632bc1da82146103ee5780632d7667c91461040e578063313ce5671461042e576102c7565b80632b47da521461038d5780632b7ac3f3146103a2576102c7565b806301ffc9a7146103085780630f15f4c01461033d57806318160ddd14610354578063186601ca14610373576102c7565b366102c757346000036102955760405163e5099ee360e01b815260040161028c9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156102f257828260405163e5099ee360e01b815260040161028c929190612bd1565b6102fc83836107d8565b80519350602001915050f35b34801561031457600080fd5b50610328610323366004612c00565b6108e7565b60405190151581526020015b60405180910390f35b34801561034957600080fd5b50610352610934565b005b34801561036057600080fd5b506003545b604051908152602001610334565b34801561037f57600080fd5b50600d546103289060ff1681565b34801561039957600080fd5b50610365610946565b3480156103ae57600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b3480156103fa57600080fd5b50610352610409366004612d0b565b610956565b34801561041a57600080fd5b50610352610429366004612f4c565b6109ff565b34801561043a57600080fd5b50610443610b07565b60405160ff9091168152602001610334565b34801561046157600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610334565b3480156104aa57600080fd5b506103526104b936600461301e565b610b20565b3480156104ca57600080fd5b50610352610b6e565b3480156104df57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610365565b34801561051257600080fd5b50610526610521366004613066565b610bb6565b60405161033491906130cf565b34801561053f57600080fd5b5061036561054e3660046130e2565b610bc1565b34801561055f57600080fd5b50610365600b5481565b34801561057557600080fd5b50610589610584366004613161565b610c27565b60405161033491906131a3565b3480156105a257600080fd5b506103656105b1366004613207565b610d77565b3480156105c257600080fd5b50610352610d95565b3480156105d757600080fd5b506103526105e6366004613222565b610da7565b3480156105f757600080fd5b50610365600a5481565b34801561060d57600080fd5b5061035261061c366004612d0b565b610e21565b61035261062f36600461328e565b610e7a565b34801561064057600080fd5b5061035261064f3660046132d5565b610eaf565b34801561066057600080fd5b506000546001600160a01b03166103d6565b34801561067e57600080fd5b5061036561068d366004613207565b6001600160a01b03166000908152600e602052604090205490565b6103526106b6366004613307565b610f94565b3480156106c757600080fd5b506103526106d6366004613361565b611081565b3480156106e757600080fd5b506103526106f6366004612d0b565b61125d565b34801561070757600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561073b57600080fd5b5061074f61074a366004613207565b611282565b604051610334919061338b565b34801561076857600080fd5b506105896107773660046133d8565b6112a6565b61035261078a36600461341e565b611351565b34801561079b57600080fd5b506103526107aa366004613207565b611403565b3480156107bb57600080fd5b50610365600c5481565b6103526107d33660046134a8565b611457565b606060006107f16000356001600160e01b0319166114e1565b5090506001600160a01b038116610842576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161028c565b600080826001600160a01b0316348787333460405160200161086794939291906134f6565b60408051601f198184030181529082905261088191613526565b60006040518083038185875af1925050503d80600081146108be576040519150601f19603f3d011682016040523d82523d6000602084013e6108c3565b606091505b509150915081156108d85792506108e1915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fb3c4928f00000000000000000000000000000000000000000000000000000000148061092557506109258261158b565b806108e157506108e1826115c9565b61093c611607565b61094461165c565b565b600061095160085490565b905090565b60006109628433610bc1565b9050806000036109a9576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161028c565b60006109b58483613558565b90506109c533868360018761169e565b60003382856040516020016109dc9392919061356b565b60405160208183030381529060405290506109f78682611843565b505050505050565b8451845181141580610a12575083518114155b80610a1e575082518114155b80610a2a575081518114155b15610a61576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610afe57610af6878281518110610a8157610a8161359c565b6020026020010151878381518110610a9b57610a9b61359c565b6020026020010151878481518110610ab557610ab561359c565b6020026020010151878581518110610acf57610acf61359c565b6020026020010151878681518110610ae957610ae961359c565b6020026020010151610da7565b600101610a64565b50505050505050565b60025460009060ff16610b1a5750601290565b50600090565b610b2e33846000858561169e565b8115610b6957600033600083604051602001610b4c939291906135b2565b6040516020818303038152906040529050610b678482611843565b505b505050565b610b76611607565b600d5460ff161561094457600d805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b60606108e18261186e565b6000826001600160a01b0316826001600160a01b031603610bfb57506001600160a01b0381166000908152600460205260409020546108e1565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546108e1565b60608167ffffffffffffffff811115610c4257610c42612c46565b604051908082528060200260200182016040528015610c7557816020015b6060815260200190600190039081610c605790505b50905060005b82811015610d705760008030868685818110610c9957610c9961359c565b9050602002810190610cab91906135dd565b604051610cb9929190613624565b600060405180830381855af49150503d8060008114610cf4576040519150601f19603f3d011682016040523d82523d6000602084013e610cf9565b606091505b509150915081610d4857805115610d135780518082602001fd5b6040517fb774c2840000000000000000000000000000000000000000000000000000000081526004810184905260240161028c565b80848481518110610d5b57610d5b61359c565b60209081029190910101525050600101610c7b565b5092915050565b6001600160a01b0381166000908152600460205260408120546108e1565b610d9d611607565b6109446000611910565b836001600160a01b0316856001600160a01b031603610df2576040517fb9afb00000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614610e0d57610e0d338685611996565b610e1a8585858585611a3d565b5050505050565b6000610e2d8433610bc1565b905082811015610e69576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281036109c533868360018761169e565b610e82611607565b3415610ea15760405163f36ba73760e01b815260040160405180910390fd5b610eab8282611bf2565b5050565b610eb7611607565b42841015610ef4576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161028c565b81600003610f2e576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a849055600b839055600c829055610f4681600855565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b610f9c611607565b3415610fbb5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610ff6576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003611031576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610b69576110798382815181106110525761105261359c565b602002602001015183838151811061106c5761106c61359c565b6020026020010151611bf2565b600101611034565b611089611bfc565b6001600160a01b0382166110c9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611103576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600e602052604090205481811015611150576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161028c565b336000908152600e60205260408120805484929061116f908490613634565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d80600081146111bf576040519150601f19603f3d011682016040523d82523d6000602084013e6111c4565b606091505b5050905080611211576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161028c565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610eab6001600755565b61126b33848460018561169e565b6000338383604051602001610b4c9392919061356b565b6001600160a01b03811660009081526005602052604090206060906108e190611c55565b6060815167ffffffffffffffff8111156112c2576112c2612c46565b6040519080825280602002602001820160405280156112f557816020015b60608152602001906001900390816112e05790505b50905060005b825181101561134b576113268382815181106113195761131961359c565b602002602001015161186e565b8282815181106113385761133861359c565b60209081029190910101526001016112fb565b50919050565b600d5460ff1615806113645750600a5442105b1561138257604051632e8acb0d60e01b815260040160405180910390fd5b61138a611bfc565b6113e288888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b9350019050604051602081830303815290604052611c62565b6113ef8585858585611d79565b6113f96001600755565b5050505050505050565b61140b611607565b6001600160a01b03811661144b576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145481611910565b50565b600d5460ff16158061146a5750600a5442105b1561148857604051632e8acb0d60e01b815260040160405180910390fd5b611490611bfc565b600854156114ca576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114d78585858585611d79565b610e1a6001600755565b600080806115197fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612061565b905060006115268261186e565b9050805160141415801561153a5750805115155b1561157357806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161028c91906130cf565b61157c81613647565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806108e157506108e1826120d2565b6000806115dc6301ffc9a760e01b6114e1565b5090506001600160a01b0381166115f65750600092915050565b6116008184612120565b9392505050565b3361161a6000546001600160a01b031690565b6001600160a01b031614610944576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161028c565b600d5460ff1661094457600d805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b6001600160a01b0384166116de576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611729576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522083905582156117cb576001600160a01b038516600090815260056020526040902061177990856121be565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516117be91906130cf565b60405180910390a4610e1a565b6001600160a01b03851660009081526005602052604090206117ed90856121d3565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161183491906130cf565b60405180910390a45050505050565b610eab827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc836121e8565b600081815260016020526040902080546060919061188b90613683565b80601f01602080910402602001604051908101604052809291908181526020018280546118b790613683565b80156119045780601f106118d957610100808354040283529160200191611904565b820191906000526020600020905b8154815290600101906020018083116118e757829003601f168201915b50505050509050919050565b6000546001600160a01b0382811691161461145457600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b0380831660009081526006602090815260408083209387168352929052205480821115611a17576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015260248201839052851660448201526064810183905260840161028c565b610b678385611a268585613634565b60006040518060200160405280600081525061169e565b6001600160a01b0385161580611a5a57506001600160a01b038416155b15611a7857604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611ae4576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03871660248201526044810185905260640161028c565b611af086868685610b67565b6001600160a01b03861660009081526004602052604081208054869290611b18908490613634565b90915550506001600160a01b03851660009081526004602052604081208054869290611b45908490613558565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611b9d939291906136b7565b60405180910390a4611bb186868685610b67565b60003387878786604051602001611bcc9594939291906136d8565b6040516020818303038152906040529050611be7878261227c565b610afe8685836122a7565b610eab828261239a565b600260075403611c4e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028c565b6002600755565b60606000611600836124fa565b600854611c9b576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ca482612555565b15611cdf5781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161028c929190613712565b60008282604051602001611cf4929190613712565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050611d368460085483612596565b611d705782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161028c929190613712565b610b67836125ac565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e07828686866125ea565b6001600160a01b031614611e47576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085611e5388610d77565b611e5d9190613558565b9050600c54811115611e9e576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161028c565b6000600b5487611eae919061372b565b9050803414611eeb576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161028c565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af4158015611f83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa79190613742565b9050611fb38183613634565b600e6000611fc96000546001600160a01b031690565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611ff89190613558565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600e602052604081208054839290612045908490613558565b909155506120569050898984612612565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806120ca9061375b565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806108e157506301ffc9a760e01b6001600160e01b03198316146108e1565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156121a7575060208210155b80156121b35750600081115b979650505050505050565b6000611600836001600160a01b038416612672565b6000611600836001600160a01b0384166126c1565b6122026001600160a01b038416631aed5a8560e21b612120565b15610b6957604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906122359085908590600401613712565b6000604051808303816000875af1158015612254573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b67919081019061377f565b610eab827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea836121e8565b6122b883631aed5a8560e21b612120565b1561230b57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612235907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401613712565b81610b69576001600160a01b0383163b1561235d576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016123f3576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161244c576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016124a5576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206124bd8282613835565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516124ee91906130cf565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561190457602002820191906000526020600020905b8154815260200190600101908083116125365750505050509050919050565b6000806125646101008461390b565b905060006125746101008561391f565b60009283526009602052604090922054600190921b9182169091149392505050565b6000826125a385846127b4565b14949350505050565b60006125ba6101008361390b565b905060006125ca6101008461391f565b6000928352600960205260409092208054600190931b9092179091555050565b60008060006125fb878787876127f7565b91509150612608816128bb565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a2610b698383600060405180602001604052806000815250612a20565b60008181526001830160205260408120546126b9575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108e1565b5060006108e1565b600081815260018301602052604081205480156127aa5760006126e5600183613634565b85549091506000906126f990600190613634565b905081811461275e5760008660000182815481106127195761271961359c565b906000526020600020015490508087600001848154811061273c5761273c61359c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061276f5761276f613933565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108e1565b60009150506108e1565b600081815b84518110156127ef576127e5828683815181106127d8576127d861359c565b6020026020010151612a99565b91506001016127b9565b509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561282e57506000905060036128b2565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612882573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166128ab576000600192509250506128b2565b9150600090505b94509492505050565b60008160048111156128cf576128cf613949565b036128d75750565b60018160048111156128eb576128eb613949565b036129385760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161028c565b600281600481111561294c5761294c613949565b036129995760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161028c565b60038160048111156129ad576129ad613949565b036114545760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161028c565b7f000000000000000000000000000000000000000000000000000000000000000083612a4b60035490565b612a559190613558565b1115612a8d576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b6784848484612ac8565b6000818310612ab5576000828152602084905260409020611600565b6000838152602083905260409020611600565b6001600160a01b038416612aef57604051630d2d5ec360e41b815260040160405180910390fd5b612afc6000858584610b67565b8260036000828254612b0e9190613558565b90915550506001600160a01b03841660009081526004602052604081208054859290612b3b908490613558565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690612b84908890889088906136b7565b60405180910390a4612b996000858584610b67565b6000336000868685604051602001612bb59594939291906136d8565b6040516020818303038152906040529050610e1a8584836122a7565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215612c1257600080fd5b81356001600160e01b03198116811461160057600080fd5b80356001600160a01b0381168114612c4157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612c8557612c85612c46565b604052919050565b600067ffffffffffffffff821115612ca757612ca7612c46565b50601f01601f191660200190565b600082601f830112612cc657600080fd5b8135612cd9612cd482612c8d565b612c5c565b818152846020838601011115612cee57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612d2057600080fd5b612d2984612c2a565b925060208401359150604084013567ffffffffffffffff811115612d4c57600080fd5b612d5886828701612cb5565b9150509250925092565b600067ffffffffffffffff821115612d7c57612d7c612c46565b5060051b60200190565b600082601f830112612d9757600080fd5b81356020612da7612cd483612d62565b8083825260208201915060208460051b870101935086841115612dc957600080fd5b602086015b84811015612dec57612ddf81612c2a565b8352918301918301612dce565b509695505050505050565b600082601f830112612e0857600080fd5b81356020612e18612cd483612d62565b8083825260208201915060208460051b870101935086841115612e3a57600080fd5b602086015b84811015612dec5780358352918301918301612e3f565b80358015158114612c4157600080fd5b600082601f830112612e7757600080fd5b81356020612e87612cd483612d62565b8083825260208201915060208460051b870101935086841115612ea957600080fd5b602086015b84811015612dec57612ebf81612e56565b8352918301918301612eae565b600082601f830112612edd57600080fd5b81356020612eed612cd483612d62565b82815260059290921b84018101918181019086841115612f0c57600080fd5b8286015b84811015612dec57803567ffffffffffffffff811115612f305760008081fd5b612f3e8986838b0101612cb5565b845250918301918301612f10565b600080600080600060a08688031215612f6457600080fd5b853567ffffffffffffffff80821115612f7c57600080fd5b612f8889838a01612d86565b96506020880135915080821115612f9e57600080fd5b612faa89838a01612d86565b95506040880135915080821115612fc057600080fd5b612fcc89838a01612df7565b94506060880135915080821115612fe257600080fd5b612fee89838a01612e66565b9350608088013591508082111561300457600080fd5b5061301188828901612ecc565b9150509295509295909350565b60008060006060848603121561303357600080fd5b61303c84612c2a565b925061304a60208501612e56565b9150604084013567ffffffffffffffff811115612d4c57600080fd5b60006020828403121561307857600080fd5b5035919050565b60005b8381101561309a578181015183820152602001613082565b50506000910152565b600081518084526130bb81602086016020860161307f565b601f01601f19169290920160200192915050565b60208152600061160060208301846130a3565b600080604083850312156130f557600080fd5b6130fe83612c2a565b915061310c60208401612c2a565b90509250929050565b60008083601f84011261312757600080fd5b50813567ffffffffffffffff81111561313f57600080fd5b6020830191508360208260051b850101111561315a57600080fd5b9250929050565b6000806020838503121561317457600080fd5b823567ffffffffffffffff81111561318b57600080fd5b61319785828601613115565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156131fa57603f198886030184526131e88583516130a3565b945092850192908501906001016131cc565b5092979650505050505050565b60006020828403121561321957600080fd5b61160082612c2a565b600080600080600060a0868803121561323a57600080fd5b61324386612c2a565b945061325160208701612c2a565b93506040860135925061326660608701612e56565b9150608086013567ffffffffffffffff81111561328257600080fd5b61301188828901612cb5565b600080604083850312156132a157600080fd5b82359150602083013567ffffffffffffffff8111156132bf57600080fd5b6132cb85828601612cb5565b9150509250929050565b600080600080608085870312156132eb57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561331a57600080fd5b823567ffffffffffffffff8082111561333257600080fd5b61333e86838701612df7565b9350602085013591508082111561335457600080fd5b506132cb85828601612ecc565b6000806040838503121561337457600080fd5b61337d83612c2a565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156133cc5783516001600160a01b0316835292840192918401916001016133a7565b50909695505050505050565b6000602082840312156133ea57600080fd5b813567ffffffffffffffff81111561340157600080fd5b6120ca84828501612df7565b803560ff81168114612c4157600080fd5b60008060008060008060008060e0898b03121561343a57600080fd5b883567ffffffffffffffff81111561345157600080fd5b61345d8b828c01613115565b9099509750506020890135955061347660408a01612c2a565b94506060890135935061348b60808a0161340d565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a086880312156134c057600080fd5b6134c986612c2a565b9450602086013593506134de6040870161340d565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b6000825161353881846020870161307f565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108e1576108e1613542565b6001600160a01b038416815282602082015260606040820152600061359360608301846130a3565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff8316602082015260606040820152600061359360608301846130a3565b6000808335601e198436030181126135f457600080fd5b83018035915067ffffffffffffffff82111561360f57600080fd5b60200191503681900382131561315a57600080fd5b8183823760009101908152919050565b818103818111156108e1576108e1613542565b805160208201516bffffffffffffffffffffffff19808216929190601483101561367b5780818460140360031b1b83161693505b505050919050565b600181811c9082168061369757607f821691505b60208210810361134b57634e487b7160e01b600052602260045260246000fd5b838152821515602082015260606040820152600061359360608301846130a3565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526121b360a08301846130a3565b8281526040602082015260006120ca60408301846130a3565b80820281158282048414176108e1576108e1613542565b60006020828403121561375457600080fd5b5051919050565b8051602080830151919081101561134b5760001960209190910360031b1b16919050565b60006020828403121561379157600080fd5b815167ffffffffffffffff8111156137a857600080fd5b8201601f810184136137b957600080fd5b80516137c7612cd482612c8d565b8181528560208385010111156137dc57600080fd5b61359382602083016020860161307f565b601f821115610b69576000816000526020600020601f850160051c810160208610156138165750805b601f850160051c820191505b818110156109f757828155600101613822565b815167ffffffffffffffff81111561384f5761384f612c46565b6138638161385d8454613683565b846137ed565b602080601f83116001811461389857600084156138805750858301515b600019600386901b1c1916600185901b1785556109f7565b600085815260208120601f198616915b828110156138c7578886015182559484019460019091019084016138a8565b50858210156138e55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b60008261391a5761391a6138f5565b500490565b60008261392e5761392e6138f5565b500690565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea264697066735822122072309e67267e34306aa057dd5c42b65f313b794a49612cff42e089811090fae764736f6c63430008160033 +0x6101006040523480156200001257600080fd5b506040516200420c3803806200420c833981016040819052620000359162000470565b838382848a8a8a60018084848483816001600160a01b0381166200006c576040516306b620db60e21b815260040160405180910390fd5b6200007781620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c0907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ec7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001187f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000161917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a09150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af4158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022491906200053a565b6200024e576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026c57506001600160a01b038216155b156200028b5760405163d92e233d60e01b815260040160405180910390fd5b600d805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a05250620006f795505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b6000828152600160205260409020620003478282620005f6565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006c2565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600060e0888a0312156200048c57600080fd5b87516001600160401b0380821115620004a457600080fd5b620004b28b838c01620003c2565b985060208a0151915080821115620004c957600080fd5b50620004d88a828b01620003c2565b965050620004e96040890162000453565b9450620004f96060890162000453565b9350620005096080890162000453565b925060a0880151915060c088015163ffffffff811681146200052a57600080fd5b8091505092959891949750929550565b6000602082840312156200054d57600080fd5b815180151581146200055e57600080fd5b9392505050565b600181811c908216806200057a57607f821691505b6020821081036200059b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005f1576000816000526020600020601f850160051c81016020861015620005cc5750805b601f850160051c820191505b81811015620005ed57828155600101620005d8565b5050505b505050565b81516001600160401b0381111562000612576200061262000386565b6200062a8162000623845462000565565b84620005a1565b602080601f831160018114620006625760008415620006495750858301515b600019600386901b1c1916600185901b178555620005ed565b600085815260208120601f198616915b82811015620006935788860151825594840194600190910190840162000672565b5085821015620006b25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006e38160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e051613abf6200074d600039600081816103b40152611ea001526000818161070d01526120d40152600081816104870152611fec0152600081816104e20152612aef0152613abf6000f3fe6080604052600436106102535760003560e01c8063715018a611610138578063aad3ec96116100b0578063dedff9c61161007f578063f2fde38b11610064578063f2fde38b1461078f578063f575191e146107af578063fc618071146107c5576102c7565b8063dedff9c61461075c578063edb8d1e21461077c576102c7565b8063aad3ec96146106bb578063b49506fd146106db578063d598d4c9146106fb578063d72fc29a1461072f576102c7565b80637f23690c116101075780638da5cb5b116100ec5780638da5cb5b14610654578063942cd44b1461067257806397902421146106a8576102c7565b80637f23690c146106215780638bbd437814610634576102c7565b8063715018a6146105b6578063760d9bba146105cb57806378381670146105eb57806378e979251461060b576102c7565b8063313ce567116101cb57806354f6127f1161019a5780636817c76c1161017f5780636817c76c146105535780636963d4381461056957806370a0823114610596576102c7565b806354f6127f1461050657806365aeaa9514610533576102c7565b8063313ce5671461044e5780633c3e8ae31461047557806351b42b00146104be57806352058d8a146104d3576102c7565b80632b47da52116102225780632bc1da82116102075780632bc1da82146103ee5780632d7667c91461040e57806330d0dc371461042e576102c7565b80632b47da521461038d5780632b7ac3f3146103a2576102c7565b806301ffc9a7146103085780630f15f4c01461033d57806318160ddd14610354578063186601ca14610373576102c7565b366102c757346000036102955760405163e5099ee360e01b815260040161028c9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156102f257828260405163e5099ee360e01b815260040161028c929190612c84565b6102fc83836107d8565b80519350602001915050f35b34801561031457600080fd5b50610328610323366004612cb3565b6108e7565b60405190151581526020015b60405180910390f35b34801561034957600080fd5b50610352610934565b005b34801561036057600080fd5b506003545b604051908152602001610334565b34801561037f57600080fd5b50600d546103289060ff1681565b34801561039957600080fd5b50610365610946565b3480156103ae57600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610334565b3480156103fa57600080fd5b50610352610409366004612dbe565b610956565b34801561041a57600080fd5b50610352610429366004612fff565b6109ff565b34801561043a57600080fd5b506103526104493660046130d1565b610b07565b34801561045a57600080fd5b50610463610bc8565b60405160ff9091168152602001610334565b34801561048157600080fd5b506104a97f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610334565b3480156104ca57600080fd5b50610352610be1565b3480156104df57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610365565b34801561051257600080fd5b50610526610521366004613140565b610c29565b60405161033491906131a9565b34801561053f57600080fd5b5061036561054e3660046131bc565b610c34565b34801561055f57600080fd5b50610365600b5481565b34801561057557600080fd5b5061058961058436600461323b565b610c9a565b604051610334919061327d565b3480156105a257600080fd5b506103656105b13660046132e1565b610dea565b3480156105c257600080fd5b50610352610e08565b3480156105d757600080fd5b506103526105e63660046132fc565b610e1a565b3480156105f757600080fd5b50610352610606366004613368565b610e42565b34801561061757600080fd5b50610365600a5481565b61035261062f3660046133b8565b610f3f565b34801561064057600080fd5b5061035261064f3660046133ff565b610f74565b34801561066057600080fd5b506000546001600160a01b03166103d6565b34801561067e57600080fd5b5061036561068d3660046132e1565b6001600160a01b03166000908152600e602052604090205490565b6103526106b6366004613431565b611059565b3480156106c757600080fd5b506103526106d636600461348b565b61114b565b3480156106e757600080fd5b506103526106f6366004612dbe565b611327565b34801561070757600080fd5b506103d67f000000000000000000000000000000000000000000000000000000000000000081565b34801561073b57600080fd5b5061074f61074a3660046132e1565b611367565b60405161033491906134b5565b34801561076857600080fd5b50610589610777366004613502565b61138b565b61035261078a366004613548565b611436565b34801561079b57600080fd5b506103526107aa3660046132e1565b6114e8565b3480156107bb57600080fd5b50610365600c5481565b6103526107d33660046135d2565b61153c565b606060006107f16000356001600160e01b0319166115c6565b5090506001600160a01b038116610842576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161028c565b600080826001600160a01b031634878733346040516020016108679493929190613620565b60408051601f198184030181529082905261088191613650565b60006040518083038185875af1925050503d80600081146108be576040519150601f19603f3d011682016040523d82523d6000602084013e6108c3565b606091505b509150915081156108d85792506108e1915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d6008000000000000000000000000000000000000000000000000000000001480610925575061092582611670565b806108e157506108e1826116ae565b61093c6116ec565b610944611741565b565b600061095160085490565b905090565b60006109628433610c34565b9050806000036109a9576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240161028c565b60006109b58483613682565b90506109c5338683600187611783565b60003382856040516020016109dc93929190613695565b60405160208183030381529060405290506109f78682611928565b505050505050565b8451845181141580610a12575083518114155b80610a1e575082518114155b80610a2a575081518114155b15610a61576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610afe57610af6878281518110610a8157610a816136c6565b6020026020010151878381518110610a9b57610a9b6136c6565b6020026020010151878481518110610ab557610ab56136c6565b6020026020010151878581518110610acf57610acf6136c6565b6020026020010151878681518110610ae957610ae96136c6565b6020026020010151610e1a565b600101610a64565b50505050505050565b336001600160a01b03841614801590610b295750336001600160a01b03851614155b15610b79576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0380851660248301528516604482015260640161028c565b610b87838560008585611783565b8115610bc257600083600083604051602001610ba5939291906136dc565b6040516020818303038152906040529050610bc08582611928565b505b50505050565b60025460009060ff16610bdb5750601290565b50600090565b610be96116ec565b600d5460ff161561094457600d805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b60606108e182611953565b6000826001600160a01b0316826001600160a01b031603610c6e57506001600160a01b0381166000908152600460205260409020546108e1565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546108e1565b60608167ffffffffffffffff811115610cb557610cb5612cf9565b604051908082528060200260200182016040528015610ce857816020015b6060815260200190600190039081610cd35790505b50905060005b82811015610de35760008030868685818110610d0c57610d0c6136c6565b9050602002810190610d1e9190613707565b604051610d2c92919061374e565b600060405180830381855af49150503d8060008114610d67576040519150601f19603f3d011682016040523d82523d6000602084013e610d6c565b606091505b509150915081610dbb57805115610d865780518082602001fd5b6040517fb774c2840000000000000000000000000000000000000000000000000000000081526004810184905260240161028c565b80848481518110610dce57610dce6136c6565b60209081029190910101525050600101610cee565b5092915050565b6001600160a01b0381166000908152600460205260408120546108e1565b610e106116ec565b61094460006119f5565b336001600160a01b03861614610e3557610e35338685611a7b565b610bc08585858585611b22565b336001600160a01b03841614801590610e645750336001600160a01b03851614155b15610eb4576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0380851660248301528516604482015260640161028c565b6000610ec08585610c34565b905082811015610efc576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610f0d858783600187611783565b6000858285604051602001610f2493929190613695565b6040516020818303038152906040529050610afe8782611928565b610f476116ec565b3415610f665760405163f36ba73760e01b815260040160405180910390fd5b610f708282611cbf565b5050565b610f7c6116ec565b42841015610fb9576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161028c565b81600003610ff3576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a849055600b839055600c82905561100b81600855565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b6110616116ec565b34156110805760405163f36ba73760e01b815260040160405180910390fd5b80518251146110bb576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036110f6576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156111465761113e838281518110611117576111176136c6565b6020026020010151838381518110611131576111316136c6565b6020026020010151611cbf565b6001016110f9565b505050565b611153611cc9565b6001600160a01b038216611193576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036111cd576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600e60205260409020548181101561121a576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161028c565b336000908152600e60205260408120805484929061123990849061375e565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d8060008114611289576040519150601f19603f3d011682016040523d82523d6000602084013e61128e565b606091505b50509050806112db576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161028c565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610f706001600755565b611335338484600185611783565b600033838360405160200161134c93929190613695565b6040516020818303038152906040529050610bc28482611928565b6001600160a01b03811660009081526005602052604090206060906108e190611d22565b6060815167ffffffffffffffff8111156113a7576113a7612cf9565b6040519080825280602002602001820160405280156113da57816020015b60608152602001906001900390816113c55790505b50905060005b82518110156114305761140b8382815181106113fe576113fe6136c6565b6020026020010151611953565b82828151811061141d5761141d6136c6565b60209081029190910101526001016113e0565b50919050565b600d5460ff1615806114495750600a5442105b1561146757604051632e8acb0d60e01b815260040160405180910390fd5b61146f611cc9565b6114c788888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b9350019050604051602081830303815290604052611d2f565b6114d48585858585611e46565b6114de6001600755565b5050505050505050565b6114f06116ec565b6001600160a01b038116611530576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611539816119f5565b50565b600d5460ff16158061154f5750600a5442105b1561156d57604051632e8acb0d60e01b815260040160405180910390fd5b611575611cc9565b600854156115af576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115bc8585858585611e46565b610bc06001600755565b600080806115fe7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b0319861661212e565b9050600061160b82611953565b9050805160141415801561161f5750805115155b1561165857806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161028c91906131a9565b61166181613771565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806108e157506108e18261219f565b6000806116c16301ffc9a760e01b6115c6565b5090506001600160a01b0381166116db5750600092915050565b6116e581846121ed565b9392505050565b336116ff6000546001600160a01b031690565b6001600160a01b031614610944576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161028c565b600d5460ff1661094457600d805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b6001600160a01b0384166117c3576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b03160361180e576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03808616600090815260066020908152604080832093881683529290522083905582156118b0576001600160a01b038516600090815260056020526040902061185e908561228b565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516118a391906131a9565b60405180910390a4610bc0565b6001600160a01b03851660009081526005602052604090206118d290856122a0565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161191991906131a9565b60405180910390a45050505050565b610f70827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc836122b5565b6000818152600160205260409020805460609190611970906137ad565b80601f016020809104026020016040519081016040528092919081815260200182805461199c906137ad565b80156119e95780601f106119be576101008083540402835291602001916119e9565b820191906000526020600020905b8154815290600101906020018083116119cc57829003601f168201915b50505050509050919050565b6000546001600160a01b0382811691161461153957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b0380831660009081526006602090815260408083209387168352929052205480821115611afc576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b03808516600483015260248201839052851660448201526064810183905260840161028c565b610bc28385611b0b858561375e565b600060405180602001604052806000815250611783565b6001600160a01b0385161580611b3f57506001600160a01b038416155b15611b5d57604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611bc9576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b03871660248201526044810185905260640161028c565b6001600160a01b03861660009081526004602052604081208054869290611bf190849061375e565b90915550506001600160a01b03851660009081526004602052604081208054869290611c1e908490613682565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611c76939291906137e1565b60405180910390a460003387878786604051602001611c99959493929190613802565b6040516020818303038152906040529050611cb48782612349565b610afe868583612374565b610f708282612467565b600260075403611d1b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161028c565b6002600755565b606060006116e5836125c7565b600854611d68576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d7182612622565b15611dac5781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161028c92919061383c565b60008282604051602001611dc192919061383c565b60408051601f1981840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050611e038460085483612663565b611e3d5782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161028c92919061383c565b610bc283612679565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ed4828686866126b7565b6001600160a01b031614611f14576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085611f2088610dea565b611f2a9190613682565b9050600c54811115611f6b576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161028c565b6000600b5487611f7b9190613855565b9050803414611fb8576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161028c565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af4158015612050573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612074919061386c565b9050612080818361375e565b600e60006120966000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546120c59190613682565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600e602052604081208054839290612112908490613682565b9091555061212390508989846126df565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c8301529182910160405160208183030381529060405290508061219790613885565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806108e157506301ffc9a760e01b6001600160e01b03198316146108e1565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015612274575060208210155b80156122805750600081115b979650505050505050565b60006116e5836001600160a01b03841661273f565b60006116e5836001600160a01b03841661278e565b6122cf6001600160a01b038416631aed5a8560e21b6121ed565b1561114657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612302908590859060040161383c565b6000604051808303816000875af1158015612321573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bc291908101906138a9565b610f70827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea836122b5565b61238583631aed5a8560e21b6121ed565b156123d857604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612302907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c90859060040161383c565b81611146576001600160a01b0383163b1561242a576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161028c565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016124c0576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612519576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201612572576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061258a828261395f565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516125bb91906131a9565b60405180910390a25050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156119e957602002820191906000526020600020905b8154815260200190600101908083116126035750505050509050919050565b60008061263161010084613a35565b9050600061264161010085613a49565b60009283526009602052604090922054600190921b9182169091149392505050565b6000826126708584612881565b14949350505050565b600061268761010083613a35565b9050600061269761010084613a49565b6000928352600960205260409092208054600190931b9092179091555050565b60008060006126c8878787876128c4565b915091506126d581612988565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a26111468383600060405180602001604052806000815250612aed565b6000818152600183016020526040812054612786575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108e1565b5060006108e1565b600081815260018301602052604081205480156128775760006127b260018361375e565b85549091506000906127c69060019061375e565b905081811461282b5760008660000182815481106127e6576127e66136c6565b9060005260206000200154905080876000018481548110612809576128096136c6565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061283c5761283c613a5d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108e1565b60009150506108e1565b600081815b84518110156128bc576128b2828683815181106128a5576128a56136c6565b6020026020010151612b66565b9150600101612886565b509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156128fb575060009050600361297f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561294f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166129785760006001925092505061297f565b9150600090505b94509492505050565b600081600481111561299c5761299c613a73565b036129a45750565b60018160048111156129b8576129b8613a73565b03612a055760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161028c565b6002816004811115612a1957612a19613a73565b03612a665760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161028c565b6003816004811115612a7a57612a7a613a73565b036115395760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161028c565b7f000000000000000000000000000000000000000000000000000000000000000083612b1860035490565b612b229190613682565b1115612b5a576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bc284848484612b95565b6000818310612b825760008281526020849052604090206116e5565b60008381526020839052604090206116e5565b6001600160a01b038416612bbc57604051630d2d5ec360e41b815260040160405180910390fd5b8260036000828254612bce9190613682565b90915550506001600160a01b03841660009081526004602052604081208054859290612bfb908490613682565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a690612c44908890889088906137e1565b60405180910390a46000336000868685604051602001612c68959493929190613802565b6040516020818303038152906040529050610bc0858483612374565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215612cc557600080fd5b81356001600160e01b0319811681146116e557600080fd5b80356001600160a01b0381168114612cf457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d3857612d38612cf9565b604052919050565b600067ffffffffffffffff821115612d5a57612d5a612cf9565b50601f01601f191660200190565b600082601f830112612d7957600080fd5b8135612d8c612d8782612d40565b612d0f565b818152846020838601011115612da157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215612dd357600080fd5b612ddc84612cdd565b925060208401359150604084013567ffffffffffffffff811115612dff57600080fd5b612e0b86828701612d68565b9150509250925092565b600067ffffffffffffffff821115612e2f57612e2f612cf9565b5060051b60200190565b600082601f830112612e4a57600080fd5b81356020612e5a612d8783612e15565b8083825260208201915060208460051b870101935086841115612e7c57600080fd5b602086015b84811015612e9f57612e9281612cdd565b8352918301918301612e81565b509695505050505050565b600082601f830112612ebb57600080fd5b81356020612ecb612d8783612e15565b8083825260208201915060208460051b870101935086841115612eed57600080fd5b602086015b84811015612e9f5780358352918301918301612ef2565b80358015158114612cf457600080fd5b600082601f830112612f2a57600080fd5b81356020612f3a612d8783612e15565b8083825260208201915060208460051b870101935086841115612f5c57600080fd5b602086015b84811015612e9f57612f7281612f09565b8352918301918301612f61565b600082601f830112612f9057600080fd5b81356020612fa0612d8783612e15565b82815260059290921b84018101918181019086841115612fbf57600080fd5b8286015b84811015612e9f57803567ffffffffffffffff811115612fe35760008081fd5b612ff18986838b0101612d68565b845250918301918301612fc3565b600080600080600060a0868803121561301757600080fd5b853567ffffffffffffffff8082111561302f57600080fd5b61303b89838a01612e39565b9650602088013591508082111561305157600080fd5b61305d89838a01612e39565b9550604088013591508082111561307357600080fd5b61307f89838a01612eaa565b9450606088013591508082111561309557600080fd5b6130a189838a01612f19565b935060808801359150808211156130b757600080fd5b506130c488828901612f7f565b9150509295509295909350565b600080600080608085870312156130e757600080fd5b6130f085612cdd565b93506130fe60208601612cdd565b925061310c60408601612f09565b9150606085013567ffffffffffffffff81111561312857600080fd5b61313487828801612d68565b91505092959194509250565b60006020828403121561315257600080fd5b5035919050565b60005b8381101561317457818101518382015260200161315c565b50506000910152565b60008151808452613195816020860160208601613159565b601f01601f19169290920160200192915050565b6020815260006116e5602083018461317d565b600080604083850312156131cf57600080fd5b6131d883612cdd565b91506131e660208401612cdd565b90509250929050565b60008083601f84011261320157600080fd5b50813567ffffffffffffffff81111561321957600080fd5b6020830191508360208260051b850101111561323457600080fd5b9250929050565b6000806020838503121561324e57600080fd5b823567ffffffffffffffff81111561326557600080fd5b613271858286016131ef565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156132d457603f198886030184526132c285835161317d565b945092850192908501906001016132a6565b5092979650505050505050565b6000602082840312156132f357600080fd5b6116e582612cdd565b600080600080600060a0868803121561331457600080fd5b61331d86612cdd565b945061332b60208701612cdd565b93506040860135925061334060608701612f09565b9150608086013567ffffffffffffffff81111561335c57600080fd5b6130c488828901612d68565b6000806000806080858703121561337e57600080fd5b61338785612cdd565b935061339560208601612cdd565b925060408501359150606085013567ffffffffffffffff81111561312857600080fd5b600080604083850312156133cb57600080fd5b82359150602083013567ffffffffffffffff8111156133e957600080fd5b6133f585828601612d68565b9150509250929050565b6000806000806080858703121561341557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561344457600080fd5b823567ffffffffffffffff8082111561345c57600080fd5b61346886838701612eaa565b9350602085013591508082111561347e57600080fd5b506133f585828601612f7f565b6000806040838503121561349e57600080fd5b6134a783612cdd565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156134f65783516001600160a01b0316835292840192918401916001016134d1565b50909695505050505050565b60006020828403121561351457600080fd5b813567ffffffffffffffff81111561352b57600080fd5b61219784828501612eaa565b803560ff81168114612cf457600080fd5b60008060008060008060008060e0898b03121561356457600080fd5b883567ffffffffffffffff81111561357b57600080fd5b6135878b828c016131ef565b909950975050602089013595506135a060408a01612cdd565b9450606089013593506135b560808a01613537565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a086880312156135ea57600080fd5b6135f386612cdd565b94506020860135935061360860408701613537565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251613662818460208701613159565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108e1576108e161366c565b6001600160a01b03841681528260208201526060604082015260006136bd606083018461317d565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff831660208201526060604082015260006136bd606083018461317d565b6000808335601e1984360301811261371e57600080fd5b83018035915067ffffffffffffffff82111561373957600080fd5b60200191503681900382131561323457600080fd5b8183823760009101908152919050565b818103818111156108e1576108e161366c565b805160208201516bffffffffffffffffffffffff1980821692919060148310156137a55780818460140360031b1b83161693505b505050919050565b600181811c908216806137c157607f821691505b60208210810361143057634e487b7160e01b600052602260045260246000fd5b83815282151560208201526060604082015260006136bd606083018461317d565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a0608083015261228060a083018461317d565b828152604060208201526000612197604083018461317d565b80820281158282048414176108e1576108e161366c565b60006020828403121561387e57600080fd5b5051919050565b805160208083015191908110156114305760001960209190910360031b1b16919050565b6000602082840312156138bb57600080fd5b815167ffffffffffffffff8111156138d257600080fd5b8201601f810184136138e357600080fd5b80516138f1612d8782612d40565b81815285602083850101111561390657600080fd5b6136bd826020830160208601613159565b601f821115611146576000816000526020600020601f850160051c810160208610156139405750805b601f850160051c820191505b818110156109f75782815560010161394c565b815167ffffffffffffffff81111561397957613979612cf9565b61398d8161398784546137ad565b84613917565b602080601f8311600181146139c257600084156139aa5750858301515b600019600386901b1c1916600185901b1785556109f7565b600085815260208120601f198616915b828110156139f1578886015182559484019460019091019084016139d2565b5085821015613a0f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b600082613a4457613a44613a1f565b500490565b600082613a5857613a58613a1f565b500690565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220a9ffc6cc620861ec047e29295ace60d3bb4779f385b6526436f3abee356f15da64736f6c63430008160033 diff --git a/artifacts/bytecode/4201/drops/LSP7DropsLightAsset.bin b/artifacts/bytecode/4201/drops/LSP7DropsLightAsset.bin index de606e9..ef7c44d 100644 --- a/artifacts/bytecode/4201/drops/LSP7DropsLightAsset.bin +++ b/artifacts/bytecode/4201/drops/LSP7DropsLightAsset.bin @@ -1 +1 @@ -0x6101206040523480156200001257600080fd5b50604051620039cb380380620039cb833981016040819052620000359162000470565b84848483858c8c8c60018084848483816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a19150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af4158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022591906200054d565b6200024f576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026d57506001600160a01b038216155b156200028c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c052506200070a9650505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b600082815260016020526040902062000347828262000609565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006d5565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600080610100898b0312156200048e57600080fd5b88516001600160401b0380821115620004a657600080fd5b620004b48c838d01620003c2565b995060208b0151915080821115620004cb57600080fd5b50620004da8b828c01620003c2565b975050620004eb60408a0162000453565b9550620004fb60608a0162000453565b94506200050b60808a0162000453565b93506200051b60a08a0162000453565b925060c0890151915060e089015163ffffffff811681146200053c57600080fd5b809150509295985092959890939650565b6000602082840312156200056057600080fd5b815180151581146200057157600080fd5b9392505050565b600181811c908216806200058d57607f821691505b602082108103620005ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000604576000816000526020600020601f850160051c81016020861015620005df5750805b601f850160051c820191505b818110156200060057828155600101620005eb565b5050505b505050565b81516001600160401b0381111562000625576200062562000386565b6200063d8162000636845462000578565b84620005b4565b602080601f8311600181146200067557600084156200065c5750858301515b600019600386901b1c1916600185901b17855562000600565b600085815260208120601f198616915b82811015620006a65788860151825594840194600190910190840162000685565b5085821015620006c55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006f68160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e0516101005161325962000772600039600081816102e101526111e201526000818161060f01526113750152600081816103ca015261128a015260008181610396015261132801526000818161043001526122e601526132596000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063aad3ec9611610095578063dedff9c611610064578063dedff9c61461065e578063f2fde38b1461067e578063f31a4faf1461069e578063fc618071146106d45761023a565b8063aad3ec96146105bd578063b49506fd146105dd578063d598d4c9146105fd578063d72fc29a146106315761023a565b80637f23690c116100d15780637f23690c146105435780638da5cb5b14610556578063942cd44b1461057457806397902421146105aa5761023a565b8063715018a6146104ee578063760d9bba146105035780637b204c4e146105235761023a565b80633c3e8ae31161016457806354f6127f1161013e57806354f6127f1461045457806365aeaa95146104815780636963d438146104a157806370a08231146104ce5761023a565b80633c3e8ae3146103b85780634521748e1461040157806352058d8a146104215761023a565b80632bc1da82116101a05780632bc1da821461031b5780632d7667c91461033d578063313ce5671461035d57806338af3eed146103845761023a565b806301ffc9a71461027b57806318160ddd146102b05780632b7ac3f3146102cf5761023a565b3661023a57346000036102085760405163e5099ee360e01b81526004016101ff9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561026557828260405163e5099ee360e01b81526004016101ff9291906125a8565b61026f83836106e7565b80519350602001915050f35b34801561028757600080fd5b5061029b6102963660046125d7565b6107f6565b60405190151581526020015b60405180910390f35b3480156102bc57600080fd5b506003545b6040519081526020016102a7565b3480156102db57600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a7565b34801561032757600080fd5b5061033b6103363660046126e2565b610843565b005b34801561034957600080fd5b5061033b610358366004612923565b6108ec565b34801561036957600080fd5b506103726109f4565b60405160ff90911681526020016102a7565b34801561039057600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b3480156103c457600080fd5b506103ec7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102a7565b34801561040d57600080fd5b5061033b61041c3660046129f5565b610a0d565b34801561042d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102c1565b34801561046057600080fd5b5061047461046f366004612a3d565b610a5b565b6040516102a79190612aa6565b34801561048d57600080fd5b506102c161049c366004612ab9565b610a66565b3480156104ad57600080fd5b506104c16104bc366004612aec565b610acc565b6040516102a79190612b61565b3480156104da57600080fd5b506102c16104e9366004612bc5565b610c1c565b3480156104fa57600080fd5b5061033b610c3a565b34801561050f57600080fd5b5061033b61051e366004612be0565b610c4e565b34801561052f57600080fd5b5061033b61053e3660046126e2565b610cc8565b61033b610551366004612c4c565b610d21565b34801561056257600080fd5b506000546001600160a01b0316610303565b34801561058057600080fd5b506102c161058f366004612bc5565b6001600160a01b031660009081526008602052604090205490565b61033b6105b8366004612c93565b610d56565b3480156105c957600080fd5b5061033b6105d8366004612ced565b610e43565b3480156105e957600080fd5b5061033b6105f83660046126e2565b61101f565b34801561060957600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b34801561063d57600080fd5b5061065161064c366004612bc5565b611044565b6040516102a79190612d17565b34801561066a57600080fd5b506104c1610679366004612d64565b611068565b34801561068a57600080fd5b5061033b610699366004612bc5565b611113565b3480156106aa57600080fd5b506102c16106b9366004612bc5565b6001600160a01b031660009081526009602052604090205490565b61033b6106e2366004612d99565b611167565b606060006107006000356001600160e01b0319166113d1565b5090506001600160a01b038116610751576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101ff565b600080826001600160a01b031634878733346040516020016107769493929190612def565b60408051601f198184030181529082905261079091612e1f565b60006040518083038185875af1925050503d80600081146107cd576040519150601f19603f3d011682016040523d82523d6000602084013e6107d2565b606091505b509150915081156107e75792506107f0915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fb3c4928f00000000000000000000000000000000000000000000000000000000148061083457506108348261147b565b806107f057506107f0826114b9565b600061084f8433610a66565b905080600003610896576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101ff565b60006108a28483612e51565b90506108b23386836001876114f7565b60003382856040516020016108c993929190612e64565b60405160208183030381529060405290506108e4868261169c565b505050505050565b84518451811415806108ff575083518114155b8061090b575082518114155b80610917575081518114155b1561094e576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109eb576109e387828151811061096e5761096e612e95565b602002602001015187838151811061098857610988612e95565b60200260200101518784815181106109a2576109a2612e95565b60200260200101518785815181106109bc576109bc612e95565b60200260200101518786815181106109d6576109d6612e95565b6020026020010151610c4e565b600101610951565b50505050505050565b60025460009060ff16610a075750601290565b50600090565b610a1b3384600085856114f7565b8115610a5657600033600083604051602001610a3993929190612eab565b6040516020818303038152906040529050610a54848261169c565b505b505050565b60606107f0826116c7565b6000826001600160a01b0316826001600160a01b031603610aa057506001600160a01b0381166000908152600460205260409020546107f0565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546107f0565b60608167ffffffffffffffff811115610ae757610ae761261d565b604051908082528060200260200182016040528015610b1a57816020015b6060815260200190600190039081610b055790505b50905060005b82811015610c155760008030868685818110610b3e57610b3e612e95565b9050602002810190610b509190612ed6565b604051610b5e929190612f24565b600060405180830381855af49150503d8060008114610b99576040519150601f19603f3d011682016040523d82523d6000602084013e610b9e565b606091505b509150915081610bed57805115610bb85780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101ff565b80848481518110610c0057610c00612e95565b60209081029190910101525050600101610b20565b5092915050565b6001600160a01b0381166000908152600460205260408120546107f0565b610c42611769565b610c4c60006117be565b565b836001600160a01b0316856001600160a01b031603610c99576040517fb9afb00000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336001600160a01b03861614610cb457610cb4338685611844565b610cc185858585856118eb565b5050505050565b6000610cd48433610a66565b905082811015610d10576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281036108b23386836001876114f7565b610d29611769565b3415610d485760405163f36ba73760e01b815260040160405180910390fd5b610d528282611aa0565b5050565b610d5e611769565b3415610d7d5760405163f36ba73760e01b815260040160405180910390fd5b8051825114610db8576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610df3576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610a5657610e3b838281518110610e1457610e14612e95565b6020026020010151838381518110610e2e57610e2e612e95565b6020026020010151611aa0565b600101610df6565b610e4b611aaa565b6001600160a01b038216610e8b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610ec5576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526008602052604090205481811015610f12576040517fffb97f81000000000000000000000000000000000000000000000000000000008152600481018390526024016101ff565b3360009081526008602052604081208054849290610f31908490612f34565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d8060008114610f81576040519150601f19603f3d011682016040523d82523d6000602084013e610f86565b606091505b5050905080610fd3576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018490526044016101ff565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610d526001600755565b61102d3384846001856114f7565b6000338383604051602001610a3993929190612e64565b6001600160a01b03811660009081526005602052604090206060906107f090611b03565b6060815167ffffffffffffffff8111156110845761108461261d565b6040519080825280602002602001820160405280156110b757816020015b60608152602001906001900390816110a25790505b50905060005b825181101561110d576110e88382815181106110db576110db612e95565b60200260200101516116c7565b8282815181106110fa576110fa612e95565b60209081029190910101526001016110bd565b50919050565b61111b611769565b6001600160a01b03811661115b576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611164816117be565b50565b61116f611aaa565b34600030468861117e81611b10565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661121682878787611b3f565b6001600160a01b031614611256576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af41580156112ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113129190612f47565b905061131e8184612f34565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526008602052604081208054909190611366908490612e51565b90915550506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260086020526040812080548392906113b3908490612e51565b909155506113c49050888885611b67565b505050610cc16001600755565b600080806114097fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611bc7565b90506000611416826116c7565b9050805160141415801561142a5750805115155b1561146357806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101ff9190612aa6565b61146c81612f60565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806107f057506107f082611c38565b6000806114cc6301ffc9a760e01b6113d1565b5090506001600160a01b0381166114e65750600092915050565b6114f08184611c86565b9392505050565b6001600160a01b038416611537576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611582576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083209388168352929052208390558215611624576001600160a01b03851660009081526005602052604090206115d29085611d24565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516116179190612aa6565b60405180910390a4610cc1565b6001600160a01b03851660009081526005602052604090206116469085611d39565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd41678460405161168d9190612aa6565b60405180910390a45050505050565b610d52827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611d4e565b60008181526001602052604090208054606091906116e490612f9c565b80601f016020809104026020016040519081016040528092919081815260200182805461171090612f9c565b801561175d5780601f106117325761010080835404028352916020019161175d565b820191906000526020600020905b81548152906001019060200180831161174057829003601f168201915b50505050509050919050565b3361177c6000546001600160a01b031690565b6001600160a01b031614610c4c576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101ff565b6000546001600160a01b0382811691161461116457600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156118c5576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101ff565b610a5483856118d48585612f34565b6000604051806020016040528060008152506114f7565b6001600160a01b038516158061190857506001600160a01b038416155b1561192657604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611992576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101ff565b61199e86868685610a54565b6001600160a01b038616600090815260046020526040812080548692906119c6908490612f34565b90915550506001600160a01b038516600090815260046020526040812080548692906119f3908490612e51565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611a4b93929190612fd0565b60405180910390a4611a5f86868685610a54565b60003387878786604051602001611a7a959493929190612ff1565b6040516020818303038152906040529050611a958782611de2565b6109eb868583611e0d565b610d528282611f00565b600260075403611afc5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ff565b6002600755565b606060006114f083612060565b6001600160a01b038116600090815260096020526040812080549082611b358361302b565b9091555092915050565b6000806000611b50878787876120bb565b91509150611b5d8161217f565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a2610a5683836001604051806020016040528060008152506122e4565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611c3090613044565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806107f057506301ffc9a760e01b6001600160e01b03198316146107f0565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611d0d575060208210155b8015611d195750600081115b979650505050505050565b60006114f0836001600160a01b03841661235d565b60006114f0836001600160a01b0384166123ac565b611d686001600160a01b038416631aed5a8560e21b611c86565b15610a5657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611d9b9085908590600401613068565b6000604051808303816000875af1158015611dba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a549190810190613081565b610d52827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611d4e565b611e1e83631aed5a8560e21b611c86565b15611e7157604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611d9b907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401613068565b81610a56576001600160a01b0383163b15611ec3576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201611f59576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201611fb2576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d820161200b576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206120238282613137565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516120549190612aa6565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561175d57602002820191906000526020600020905b81548152602001906001019080831161209c5750505050509050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156120f25750600090506003612176565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612146573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661216f57600060019250925050612176565b9150600090505b94509492505050565b6000816004811115612193576121936131f7565b0361219b5750565b60018160048111156121af576121af6131f7565b036121fc5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101ff565b6002816004811115612210576122106131f7565b0361225d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101ff565b6003816004811115612271576122716131f7565b036111645760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016101ff565b7f00000000000000000000000000000000000000000000000000000000000000008361230f60035490565b6123199190612e51565b1115612351576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a548484848461249f565b60008181526001830160205260408120546123a4575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f0565b5060006107f0565b600081815260018301602052604081205480156124955760006123d0600183612f34565b85549091506000906123e490600190612f34565b905081811461244957600086600001828154811061240457612404612e95565b906000526020600020015490508087600001848154811061242757612427612e95565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061245a5761245a61320d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f0565b60009150506107f0565b6001600160a01b0384166124c657604051630d2d5ec360e41b815260040160405180910390fd5b6124d36000858584610a54565b82600360008282546124e59190612e51565b90915550506001600160a01b03841660009081526004602052604081208054859290612512908490612e51565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a69061255b90889088908890612fd0565b60405180910390a46125706000858584610a54565b600033600086868560405160200161258c959493929190612ff1565b6040516020818303038152906040529050610cc1858483611e0d565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156125e957600080fd5b81356001600160e01b0319811681146114f057600080fd5b80356001600160a01b038116811461261857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561265c5761265c61261d565b604052919050565b600067ffffffffffffffff82111561267e5761267e61261d565b50601f01601f191660200190565b600082601f83011261269d57600080fd5b81356126b06126ab82612664565b612633565b8181528460208386010111156126c557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156126f757600080fd5b61270084612601565b925060208401359150604084013567ffffffffffffffff81111561272357600080fd5b61272f8682870161268c565b9150509250925092565b600067ffffffffffffffff8211156127535761275361261d565b5060051b60200190565b600082601f83011261276e57600080fd5b8135602061277e6126ab83612739565b8083825260208201915060208460051b8701019350868411156127a057600080fd5b602086015b848110156127c3576127b681612601565b83529183019183016127a5565b509695505050505050565b600082601f8301126127df57600080fd5b813560206127ef6126ab83612739565b8083825260208201915060208460051b87010193508684111561281157600080fd5b602086015b848110156127c35780358352918301918301612816565b8035801515811461261857600080fd5b600082601f83011261284e57600080fd5b8135602061285e6126ab83612739565b8083825260208201915060208460051b87010193508684111561288057600080fd5b602086015b848110156127c3576128968161282d565b8352918301918301612885565b600082601f8301126128b457600080fd5b813560206128c46126ab83612739565b82815260059290921b840181019181810190868411156128e357600080fd5b8286015b848110156127c357803567ffffffffffffffff8111156129075760008081fd5b6129158986838b010161268c565b8452509183019183016128e7565b600080600080600060a0868803121561293b57600080fd5b853567ffffffffffffffff8082111561295357600080fd5b61295f89838a0161275d565b9650602088013591508082111561297557600080fd5b61298189838a0161275d565b9550604088013591508082111561299757600080fd5b6129a389838a016127ce565b945060608801359150808211156129b957600080fd5b6129c589838a0161283d565b935060808801359150808211156129db57600080fd5b506129e8888289016128a3565b9150509295509295909350565b600080600060608486031215612a0a57600080fd5b612a1384612601565b9250612a216020850161282d565b9150604084013567ffffffffffffffff81111561272357600080fd5b600060208284031215612a4f57600080fd5b5035919050565b60005b83811015612a71578181015183820152602001612a59565b50506000910152565b60008151808452612a92816020860160208601612a56565b601f01601f19169290920160200192915050565b6020815260006114f06020830184612a7a565b60008060408385031215612acc57600080fd5b612ad583612601565b9150612ae360208401612601565b90509250929050565b60008060208385031215612aff57600080fd5b823567ffffffffffffffff80821115612b1757600080fd5b818501915085601f830112612b2b57600080fd5b813581811115612b3a57600080fd5b8660208260051b8501011115612b4f57600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612bb857603f19888603018452612ba6858351612a7a565b94509285019290850190600101612b8a565b5092979650505050505050565b600060208284031215612bd757600080fd5b6114f082612601565b600080600080600060a08688031215612bf857600080fd5b612c0186612601565b9450612c0f60208701612601565b935060408601359250612c246060870161282d565b9150608086013567ffffffffffffffff811115612c4057600080fd5b6129e88882890161268c565b60008060408385031215612c5f57600080fd5b82359150602083013567ffffffffffffffff811115612c7d57600080fd5b612c898582860161268c565b9150509250929050565b60008060408385031215612ca657600080fd5b823567ffffffffffffffff80821115612cbe57600080fd5b612cca868387016127ce565b93506020850135915080821115612ce057600080fd5b50612c89858286016128a3565b60008060408385031215612d0057600080fd5b612d0983612601565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015612d585783516001600160a01b031683529284019291840191600101612d33565b50909695505050505050565b600060208284031215612d7657600080fd5b813567ffffffffffffffff811115612d8d57600080fd5b611c30848285016127ce565b600080600080600060a08688031215612db157600080fd5b612dba86612601565b945060208601359350604086013560ff81168114612dd757600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612e31818460208701612a56565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107f0576107f0612e3b565b6001600160a01b0384168152826020820152606060408201526000612e8c6060830184612a7a565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612e8c6060830184612a7a565b6000808335601e19843603018112612eed57600080fd5b83018035915067ffffffffffffffff821115612f0857600080fd5b602001915036819003821315612f1d57600080fd5b9250929050565b8183823760009101908152919050565b818103818111156107f0576107f0612e3b565b600060208284031215612f5957600080fd5b5051919050565b805160208201516bffffffffffffffffffffffff198082169291906014831015612f945780818460140360031b1b83161693505b505050919050565b600181811c90821680612fb057607f821691505b60208210810361110d57634e487b7160e01b600052602260045260246000fd5b8381528215156020820152606060408201526000612e8c6060830184612a7a565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611d1960a0830184612a7a565b60006001820161303d5761303d612e3b565b5060010190565b8051602080830151919081101561110d5760001960209190910360031b1b16919050565b828152604060208201526000611c306040830184612a7a565b60006020828403121561309357600080fd5b815167ffffffffffffffff8111156130aa57600080fd5b8201601f810184136130bb57600080fd5b80516130c96126ab82612664565b8181528560208385010111156130de57600080fd5b612e8c826020830160208601612a56565b601f821115610a56576000816000526020600020601f850160051c810160208610156131185750805b601f850160051c820191505b818110156108e457828155600101613124565b815167ffffffffffffffff8111156131515761315161261d565b6131658161315f8454612f9c565b846130ef565b602080601f83116001811461319a57600084156131825750858301515b600019600386901b1c1916600185901b1785556108e4565b600085815260208120601f198616915b828110156131c9578886015182559484019460019091019084016131aa565b50858210156131e75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea26469706673582212206efaeb1b70f67ff9659c05434dfb69210c95e56fde81491020b7279e64f73d8664736f6c63430008160033 +0x6101206040523480156200001257600080fd5b5060405162003af538038062003af5833981016040819052620000359162000470565b84848483858c8c8c60018084848483816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002bf565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200032d565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200032d565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200032d565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200032d565b50506002805460ff19169315159390931790925550505060008490039250620001a19150505760405163acf1d8c560e01b815260040160405180910390fd5b6080526001600755604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af4158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022591906200054d565b6200024f576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b03831615806200026d57506001600160a01b038216155b156200028c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c052506200070a9650505050505050565b6000546001600160a01b038281169116146200032a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b600082815260016020526040902062000347828262000609565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516200037a9190620006d5565b60405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620003b95781810151838201526020016200039f565b50506000910152565b600082601f830112620003d457600080fd5b81516001600160401b0380821115620003f157620003f162000386565b604051601f8301601f19908116603f011681019082821181831017156200041c576200041c62000386565b816040528381528660208588010111156200043657600080fd5b620004498460208301602089016200039c565b9695505050505050565b80516001600160a01b03811681146200046b57600080fd5b919050565b600080600080600080600080610100898b0312156200048e57600080fd5b88516001600160401b0380821115620004a657600080fd5b620004b48c838d01620003c2565b995060208b0151915080821115620004cb57600080fd5b50620004da8b828c01620003c2565b975050620004eb60408a0162000453565b9550620004fb60608a0162000453565b94506200050b60808a0162000453565b93506200051b60a08a0162000453565b925060c0890151915060e089015163ffffffff811681146200053c57600080fd5b809150509295985092959890939650565b6000602082840312156200056057600080fd5b815180151581146200057157600080fd5b9392505050565b600181811c908216806200058d57607f821691505b602082108103620005ae57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000604576000816000526020600020601f850160051c81016020861015620005df5750805b601f850160051c820191505b818110156200060057828155600101620005eb565b5050505b505050565b81516001600160401b0381111562000625576200062562000386565b6200063d8162000636845462000578565b84620005b4565b602080601f8311600181146200067557600084156200065c5750858301515b600019600386901b1c1916600185901b17855562000600565b600085815260208120601f198616915b82811015620006a65788860151825594840194600190910190840162000685565b5085821015620006c55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620006f68160408501602087016200039c565b601f01601f19169190910160400192915050565b60805160a05160c05160e0516101005161338362000772600039600081816102e101526112c701526000818161060f015261145a0152600081816103ea015261136f0152600081816103b6015261140d01526000818161043001526123b301526133836000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063aad3ec9611610095578063dedff9c611610064578063dedff9c61461065e578063f2fde38b1461067e578063f31a4faf1461069e578063fc618071146106d45761023a565b8063aad3ec96146105bd578063b49506fd146105dd578063d598d4c9146105fd578063d72fc29a146106315761023a565b80637f23690c116100d15780637f23690c146105435780638da5cb5b14610556578063942cd44b1461057457806397902421146105aa5761023a565b8063715018a6146104ee578063760d9bba1461050357806378381670146105235761023a565b806338af3eed1161016457806354f6127f1161013e57806354f6127f1461045457806365aeaa95146104815780636963d438146104a157806370a08231146104ce5761023a565b806338af3eed146103a45780633c3e8ae3146103d857806352058d8a146104215761023a565b80632bc1da82116101a05780632bc1da821461031b5780632d7667c91461033d57806330d0dc371461035d578063313ce5671461037d5761023a565b806301ffc9a71461027b57806318160ddd146102b05780632b7ac3f3146102cf5761023a565b3661023a57346000036102085760405163e5099ee360e01b81526004016101ff9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f388f5adc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561026557828260405163e5099ee360e01b81526004016101ff92919061265b565b61026f83836106e7565b80519350602001915050f35b34801561028757600080fd5b5061029b61029636600461268a565b6107f6565b60405190151581526020015b60405180910390f35b3480156102bc57600080fd5b506003545b6040519081526020016102a7565b3480156102db57600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102a7565b34801561032757600080fd5b5061033b610336366004612795565b610843565b005b34801561034957600080fd5b5061033b6103583660046129d6565b6108ec565b34801561036957600080fd5b5061033b610378366004612aa8565b6109f4565b34801561038957600080fd5b50610392610ab5565b60405160ff90911681526020016102a7565b3480156103b057600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e457600080fd5b5061040c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016102a7565b34801561042d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102c1565b34801561046057600080fd5b5061047461046f366004612b17565b610ace565b6040516102a79190612b80565b34801561048d57600080fd5b506102c161049c366004612b93565b610ad9565b3480156104ad57600080fd5b506104c16104bc366004612bc6565b610b3f565b6040516102a79190612c3b565b3480156104da57600080fd5b506102c16104e9366004612c9f565b610c8f565b3480156104fa57600080fd5b5061033b610cad565b34801561050f57600080fd5b5061033b61051e366004612cba565b610cc1565b34801561052f57600080fd5b5061033b61053e366004612d26565b610ce9565b61033b610551366004612d76565b610de6565b34801561056257600080fd5b506000546001600160a01b0316610303565b34801561058057600080fd5b506102c161058f366004612c9f565b6001600160a01b031660009081526008602052604090205490565b61033b6105b8366004612dbd565b610e1b565b3480156105c957600080fd5b5061033b6105d8366004612e17565b610f0d565b3480156105e957600080fd5b5061033b6105f8366004612795565b6110e9565b34801561060957600080fd5b506103037f000000000000000000000000000000000000000000000000000000000000000081565b34801561063d57600080fd5b5061065161064c366004612c9f565b611129565b6040516102a79190612e41565b34801561066a57600080fd5b506104c1610679366004612e8e565b61114d565b34801561068a57600080fd5b5061033b610699366004612c9f565b6111f8565b3480156106aa57600080fd5b506102c16106b9366004612c9f565b6001600160a01b031660009081526009602052604090205490565b61033b6106e2366004612ec3565b61124c565b606060006107006000356001600160e01b0319166114b6565b5090506001600160a01b038116610751576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b03196000351660048201526024016101ff565b600080826001600160a01b031634878733346040516020016107769493929190612f19565b60408051601f198184030181529082905261079091612f49565b60006040518083038185875af1925050503d80600081146107cd576040519150601f19603f3d011682016040523d82523d6000602084013e6107d2565b606091505b509150915081156107e75792506107f0915050565b80518060208301fd5b92915050565b60006001600160e01b031982167fc52d6008000000000000000000000000000000000000000000000000000000001480610834575061083482611560565b806107f057506107f08261159e565b600061084f8433610ad9565b905080600003610896576040517fcba6e9770000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016101ff565b60006108a28483612f7b565b90506108b23386836001876115dc565b60003382856040516020016108c993929190612f8e565b60405160208183030381529060405290506108e48682611781565b505050505050565b84518451811415806108ff575083518114155b8061090b575082518114155b80610917575081518114155b1561094e576040517f263eee8d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156109eb576109e387828151811061096e5761096e612fbf565b602002602001015187838151811061098857610988612fbf565b60200260200101518784815181106109a2576109a2612fbf565b60200260200101518785815181106109bc576109bc612fbf565b60200260200101518786815181106109d6576109d6612fbf565b6020026020010151610cc1565b600101610951565b50505050505050565b336001600160a01b03841614801590610a165750336001600160a01b03851614155b15610a66576040517f1a525b320000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101ff565b610a748385600085856115dc565b8115610aaf57600083600083604051602001610a9293929190612fd5565b6040516020818303038152906040529050610aad8582611781565b505b50505050565b60025460009060ff16610ac85750601290565b50600090565b60606107f0826117ac565b6000826001600160a01b0316826001600160a01b031603610b1357506001600160a01b0381166000908152600460205260409020546107f0565b506001600160a01b038082166000908152600660209081526040808320938616835292905220546107f0565b60608167ffffffffffffffff811115610b5a57610b5a6126d0565b604051908082528060200260200182016040528015610b8d57816020015b6060815260200190600190039081610b785790505b50905060005b82811015610c885760008030868685818110610bb157610bb1612fbf565b9050602002810190610bc39190613000565b604051610bd192919061304e565b600060405180830381855af49150503d8060008114610c0c576040519150601f19603f3d011682016040523d82523d6000602084013e610c11565b606091505b509150915081610c6057805115610c2b5780518082602001fd5b6040517fb774c284000000000000000000000000000000000000000000000000000000008152600481018490526024016101ff565b80848481518110610c7357610c73612fbf565b60209081029190910101525050600101610b93565b5092915050565b6001600160a01b0381166000908152600460205260408120546107f0565b610cb561184e565b610cbf60006118a3565b565b336001600160a01b03861614610cdc57610cdc338685611929565b610aad85858585856119d0565b336001600160a01b03841614801590610d0b5750336001600160a01b03851614155b15610d5b576040517f98ce29450000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038085166024830152851660448201526064016101ff565b6000610d678585610ad9565b905082811015610da3576040517f0ef76c3500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828103610db48587836001876115dc565b6000858285604051602001610dcb93929190612f8e565b60405160208183030381529060405290506109eb8782611781565b610dee61184e565b3415610e0d5760405163f36ba73760e01b815260040160405180910390fd5b610e178282611b6d565b5050565b610e2361184e565b3415610e425760405163f36ba73760e01b815260040160405180910390fd5b8051825114610e7d576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003610eb8576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610f0857610f00838281518110610ed957610ed9612fbf565b6020026020010151838381518110610ef357610ef3612fbf565b6020026020010151611b6d565b600101610ebb565b505050565b610f15611b77565b6001600160a01b038216610f55576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610f8f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526008602052604090205481811015610fdc576040517fffb97f81000000000000000000000000000000000000000000000000000000008152600481018390526024016101ff565b3360009081526008602052604081208054849290610ffb90849061305e565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461104b576040519150601f19603f3d011682016040523d82523d6000602084013e611050565b606091505b505090508061109d576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602481018490526044016101ff565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610e176001600755565b6110f73384846001856115dc565b600033838360405160200161110e93929190612f8e565b6040516020818303038152906040529050610aaf8482611781565b6001600160a01b03811660009081526005602052604090206060906107f090611bd0565b6060815167ffffffffffffffff811115611169576111696126d0565b60405190808252806020026020018201604052801561119c57816020015b60608152602001906001900390816111875790505b50905060005b82518110156111f2576111cd8382815181106111c0576111c0612fbf565b60200260200101516117ac565b8282815181106111df576111df612fbf565b60209081029190910101526001016111a2565b50919050565b61120061184e565b6001600160a01b038116611240576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611249816118a3565b50565b611254611b77565b34600030468861126381611bdd565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112fb82878787611c0c565b6001600160a01b03161461133b576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af41580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f79190613071565b9050611403818461305e565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600860205260408120805490919061144b908490612f7b565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526008602052604081208054839290611498908490612f7b565b909155506114a99050888885611c34565b505050610aad6001600755565b600080806114ee7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616611c94565b905060006114fb826117ac565b9050805160141415801561150f5750805115155b1561154857806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016101ff9190612b80565b6115518161308a565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b0000000000000000000000000000000000000000000000000000000014806107f057506107f082611d05565b6000806115b16301ffc9a760e01b6114b6565b5090506001600160a01b0381166115cb5750600092915050565b6115d58184611d53565b9392505050565b6001600160a01b03841661161c576040517f6355e76600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b846001600160a01b0316846001600160a01b031603611667576040517fdab7504700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083209388168352929052208390558215611709576001600160a01b03851660009081526005602052604090206116b79085611df1565b5082856001600160a01b0316856001600160a01b03167ff772a43bfdf4729b196e3fb54a818b91a2ca6c49d10b2e16278752f9f515c25d846040516116fc9190612b80565b60405180910390a4610aad565b6001600160a01b038516600090815260056020526040902061172b9085611e06565b50811515856001600160a01b0316856001600160a01b03167f0ebf5762d8855cbe012d2ca42fb33a81175e17c8a8751f8859931ba453bd4167846040516117729190612b80565b60405180910390a45050505050565b610e17827f386072cc5a58e61263b434c722725f21031cd06e7c552cfaa06db5de8a320dbc83611e1b565b60008181526001602052604090208054606091906117c9906130c6565b80601f01602080910402602001604051908101604052809291908181526020018280546117f5906130c6565b80156118425780601f1061181757610100808354040283529160200191611842565b820191906000526020600020905b81548152906001019060200180831161182557829003601f168201915b50505050509050919050565b336118616000546001600160a01b031690565b6001600160a01b031614610cbf576040517fbf1169c50000000000000000000000000000000000000000000000000000000081523360048201526024016101ff565b6000546001600160a01b0382811691161461124957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0383167fffffffffffffffffffffffff000000000000000000000000000000000000000090911617905550565b6001600160a01b03808316600090815260066020908152604080832093871683529290522054808211156119aa576040517ff3a6b6910000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301526024820183905285166044820152606481018390526084016101ff565b610aaf83856119b9858561305e565b6000604051806020016040528060008152506115dc565b6001600160a01b03851615806119ed57506001600160a01b038416155b15611a0b57604051630d2d5ec360e41b815260040160405180910390fd5b6001600160a01b03851660009081526004602052604090205480841115611a77576040517f08d47949000000000000000000000000000000000000000000000000000000008152600481018290526001600160a01b0387166024820152604481018590526064016101ff565b6001600160a01b03861660009081526004602052604081208054869290611a9f90849061305e565b90915550506001600160a01b03851660009081526004602052604081208054869290611acc908490612f7b565b92505081905550846001600160a01b0316866001600160a01b0316336001600160a01b03167f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a6878787604051611b24939291906130fa565b60405180910390a460003387878786604051602001611b4795949392919061311b565b6040516020818303038152906040529050611b628782611eaf565b6109eb868583611eda565b610e178282611fcd565b600260075403611bc95760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ff565b6002600755565b606060006115d58361212d565b6001600160a01b038116600090815260096020526040812080549082611c0283613155565b9091555092915050565b6000806000611c1d87878787612188565b91509150611c2a8161224c565b5095945050505050565b60408051838152602081018390526001600160a01b038516917f25b428dfde728ccfaddad7e29e4ac23c24ed7fd1a6e3e3f91894a9a073f5dfff910160405180910390a2610f0883836001604051806020016040528060008152506123b1565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080611cfd9061316e565b949350505050565b60006001600160e01b031982167f629aa6940000000000000000000000000000000000000000000000000000000014806107f057506301ffc9a760e01b6001600160e01b03198316146107f0565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015611dda575060208210155b8015611de65750600081115b979650505050505050565b60006115d5836001600160a01b03841661242a565b60006115d5836001600160a01b038416612479565b611e356001600160a01b038416631aed5a8560e21b611d53565b15610f0857604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611e689085908590600401613192565b6000604051808303816000875af1158015611e87573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610aaf91908101906131ab565b610e17827f429ac7a06903dbc9c13dfcb3c9d11df8194581fa047c96d7a4171fc7402958ea83611e1b565b611eeb83631aed5a8560e21b611d53565b15611f3e57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490611e68907f20804611b3e2ea21c480dc465142210acf4a2485947541770ec1fb87dee4a55c908590600401613192565b81610f08576001600160a01b0383163b15611f90576040517fa608fbb60000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b6040517f26c247f40000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016101ff565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612026576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161207f576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016120d8576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526001602052604090206120f08282613261565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516121219190612b80565b60405180910390a25050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561184257602002820191906000526020600020905b8154815260200190600101908083116121695750505050509050919050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156121bf5750600090506003612243565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612213573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661223c57600060019250925050612243565b9150600090505b94509492505050565b600081600481111561226057612260613321565b036122685750565b600181600481111561227c5761227c613321565b036122c95760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016101ff565b60028160048111156122dd576122dd613321565b0361232a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016101ff565b600381600481111561233e5761233e613321565b036112495760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016101ff565b7f0000000000000000000000000000000000000000000000000000000000000000836123dc60035490565b6123e69190612f7b565b111561241e576040517feacbf0d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aaf8484848461256c565b6000818152600183016020526040812054612471575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f0565b5060006107f0565b6000818152600183016020526040812054801561256257600061249d60018361305e565b85549091506000906124b19060019061305e565b90508181146125165760008660000182815481106124d1576124d1612fbf565b90600052602060002001549050808760000184815481106124f4576124f4612fbf565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061252757612527613337565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f0565b60009150506107f0565b6001600160a01b03841661259357604051630d2d5ec360e41b815260040160405180910390fd5b82600360008282546125a59190612f7b565b90915550506001600160a01b038416600090815260046020526040812080548592906125d2908490612f7b565b90915550506040516001600160a01b0385169060009033907f3997e418d2cef0b3b0e907b1e39605c3f7d32dbd061e82ea5b4a770d46a160a69061261b908890889088906130fa565b60405180910390a4600033600086868560405160200161263f95949392919061311b565b6040516020818303038152906040529050610aad858483611eda565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561269c57600080fd5b81356001600160e01b0319811681146115d557600080fd5b80356001600160a01b03811681146126cb57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561270f5761270f6126d0565b604052919050565b600067ffffffffffffffff821115612731576127316126d0565b50601f01601f191660200190565b600082601f83011261275057600080fd5b813561276361275e82612717565b6126e6565b81815284602083860101111561277857600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156127aa57600080fd5b6127b3846126b4565b925060208401359150604084013567ffffffffffffffff8111156127d657600080fd5b6127e28682870161273f565b9150509250925092565b600067ffffffffffffffff821115612806576128066126d0565b5060051b60200190565b600082601f83011261282157600080fd5b8135602061283161275e836127ec565b8083825260208201915060208460051b87010193508684111561285357600080fd5b602086015b8481101561287657612869816126b4565b8352918301918301612858565b509695505050505050565b600082601f83011261289257600080fd5b813560206128a261275e836127ec565b8083825260208201915060208460051b8701019350868411156128c457600080fd5b602086015b8481101561287657803583529183019183016128c9565b803580151581146126cb57600080fd5b600082601f83011261290157600080fd5b8135602061291161275e836127ec565b8083825260208201915060208460051b87010193508684111561293357600080fd5b602086015b8481101561287657612949816128e0565b8352918301918301612938565b600082601f83011261296757600080fd5b8135602061297761275e836127ec565b82815260059290921b8401810191818101908684111561299657600080fd5b8286015b8481101561287657803567ffffffffffffffff8111156129ba5760008081fd5b6129c88986838b010161273f565b84525091830191830161299a565b600080600080600060a086880312156129ee57600080fd5b853567ffffffffffffffff80821115612a0657600080fd5b612a1289838a01612810565b96506020880135915080821115612a2857600080fd5b612a3489838a01612810565b95506040880135915080821115612a4a57600080fd5b612a5689838a01612881565b94506060880135915080821115612a6c57600080fd5b612a7889838a016128f0565b93506080880135915080821115612a8e57600080fd5b50612a9b88828901612956565b9150509295509295909350565b60008060008060808587031215612abe57600080fd5b612ac7856126b4565b9350612ad5602086016126b4565b9250612ae3604086016128e0565b9150606085013567ffffffffffffffff811115612aff57600080fd5b612b0b8782880161273f565b91505092959194509250565b600060208284031215612b2957600080fd5b5035919050565b60005b83811015612b4b578181015183820152602001612b33565b50506000910152565b60008151808452612b6c816020860160208601612b30565b601f01601f19169290920160200192915050565b6020815260006115d56020830184612b54565b60008060408385031215612ba657600080fd5b612baf836126b4565b9150612bbd602084016126b4565b90509250929050565b60008060208385031215612bd957600080fd5b823567ffffffffffffffff80821115612bf157600080fd5b818501915085601f830112612c0557600080fd5b813581811115612c1457600080fd5b8660208260051b8501011115612c2957600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612c9257603f19888603018452612c80858351612b54565b94509285019290850190600101612c64565b5092979650505050505050565b600060208284031215612cb157600080fd5b6115d5826126b4565b600080600080600060a08688031215612cd257600080fd5b612cdb866126b4565b9450612ce9602087016126b4565b935060408601359250612cfe606087016128e0565b9150608086013567ffffffffffffffff811115612d1a57600080fd5b612a9b8882890161273f565b60008060008060808587031215612d3c57600080fd5b612d45856126b4565b9350612d53602086016126b4565b925060408501359150606085013567ffffffffffffffff811115612aff57600080fd5b60008060408385031215612d8957600080fd5b82359150602083013567ffffffffffffffff811115612da757600080fd5b612db38582860161273f565b9150509250929050565b60008060408385031215612dd057600080fd5b823567ffffffffffffffff80821115612de857600080fd5b612df486838701612881565b93506020850135915080821115612e0a57600080fd5b50612db385828601612956565b60008060408385031215612e2a57600080fd5b612e33836126b4565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b81811015612e825783516001600160a01b031683529284019291840191600101612e5d565b50909695505050505050565b600060208284031215612ea057600080fd5b813567ffffffffffffffff811115612eb757600080fd5b611cfd84828501612881565b600080600080600060a08688031215612edb57600080fd5b612ee4866126b4565b945060208601359350604086013560ff81168114612f0157600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251612f5b818460208701612b30565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b808201808211156107f0576107f0612f65565b6001600160a01b0384168152826020820152606060408201526000612fb66060830184612b54565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038416815260ff83166020820152606060408201526000612fb66060830184612b54565b6000808335601e1984360301811261301757600080fd5b83018035915067ffffffffffffffff82111561303257600080fd5b60200191503681900382131561304757600080fd5b9250929050565b8183823760009101908152919050565b818103818111156107f0576107f0612f65565b60006020828403121561308357600080fd5b5051919050565b805160208201516bffffffffffffffffffffffff1980821692919060148310156130be5780818460140360031b1b83161693505b505050919050565b600181811c908216806130da57607f821691505b6020821081036111f257634e487b7160e01b600052602260045260246000fd5b8381528215156020820152606060408201526000612fb66060830184612b54565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152611de660a0830184612b54565b60006001820161316757613167612f65565b5060010190565b805160208083015191908110156111f25760001960209190910360031b1b16919050565b828152604060208201526000611cfd6040830184612b54565b6000602082840312156131bd57600080fd5b815167ffffffffffffffff8111156131d457600080fd5b8201601f810184136131e557600080fd5b80516131f361275e82612717565b81815285602083850101111561320857600080fd5b612fb6826020830160208601612b30565b601f821115610f08576000816000526020600020601f850160051c810160208610156132425750805b601f850160051c820191505b818110156108e45782815560010161324e565b815167ffffffffffffffff81111561327b5761327b6126d0565b61328f8161328984546130c6565b84613219565b602080601f8311600181146132c457600084156132ac5750858301515b600019600386901b1c1916600185901b1785556108e4565b600085815260208120601f198616915b828110156132f3578886015182559484019460019091019084016132d4565b50858210156133115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220295b9ceb1ac2d7d24d89f91b32bc8ec65fb20131b4389d444035f1813fd46df264736f6c63430008160033 diff --git a/artifacts/bytecode/4201/drops/LSP8DropsDigitalAsset.bin b/artifacts/bytecode/4201/drops/LSP8DropsDigitalAsset.bin index d08f4af..353402a 100644 --- a/artifacts/bytecode/4201/drops/LSP8DropsDigitalAsset.bin +++ b/artifacts/bytecode/4201/drops/LSP8DropsDigitalAsset.bin @@ -1 +1 @@ -0x6101006040523480156200001257600080fd5b5060405162004e7b38038062004e7b833981016040819052620000359162000579565b838382848a8a8a6001600084848484816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002f5565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000363565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000363565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000363565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000363565b50506040805160208101859052620001af93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003bc565b505050505080600003620001d65760405163038d9fc360e41b815260040160405180910390fd5b6080526001600955604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af415801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000643565b62000284576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002a257506001600160a01b038216155b15620002c15760405163d92e233d60e01b815260040160405180910390fd5b600f805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a052506200080095505050505050565b6000546001600160a01b038281169116146200036057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200037d8282620006ff565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003b09190620007cb565b60405180910390a25050565b620003c88282620003cc565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016200040d576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200044e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036357604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b50506000910152565b600082601f830112620004dd57600080fd5b81516001600160401b0380821115620004fa57620004fa6200048f565b604051601f8301601f19908116603f011681019082821181831017156200052557620005256200048f565b816040528381528660208588010111156200053f57600080fd5b62000552846020830160208901620004a5565b9695505050505050565b80516001600160a01b03811681146200057457600080fd5b919050565b600080600080600080600060e0888a0312156200059557600080fd5b87516001600160401b0380821115620005ad57600080fd5b620005bb8b838c01620004cb565b985060208a0151915080821115620005d257600080fd5b50620005e18a828b01620004cb565b965050620005f2604089016200055c565b945062000602606089016200055c565b935062000612608089016200055c565b925060a0880151915060c088015163ffffffff811681146200063357600080fd5b8091505092959891949750929550565b6000602082840312156200065657600080fd5b815180151581146200066757600080fd5b9392505050565b600181811c908216806200068357607f821691505b602082108103620006a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006fa576000816000526020600020601f850160051c81016020861015620006d55750805b601f850160051c820191505b81811015620006f657828155600101620006e1565b5050505b505050565b81516001600160401b038111156200071b576200071b6200048f565b62000733816200072c84546200066e565b84620006aa565b602080601f8311600181146200076b5760008415620007525750858301515b600019600386901b1c1916600185901b178555620006f6565b600085815260208120601f198616915b828110156200079c578886015182559484019460019091019084016200077b565b5085821015620007bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620007ec816040850160208701620004a5565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161462562000856600039600081816104e801526123d501526000818161082f015261260901526000818161053c01526125210152600081816105e401526133a301526146256000f3fe6080604052600436106102d55760003560e01c806378e9792511610179578063aad3ec96116100d6578063dd5ffa1e1161008a578063f2fde38b11610064578063f2fde38b146108d9578063f575191e146108f9578063fc6180711461090f57610349565b8063dd5ffa1e14610891578063dedff9c6146108a6578063edb8d1e2146108c657610349565b8063d598d4c9116100bb578063d598d4c91461081d578063d6c1407c14610851578063db8c96631461087157610349565b8063aad3ec96146107dd578063be9f0e6f146107fd57610349565b80638da5cb5b1161012d578063942cd44b11610112578063942cd44b14610767578063979024211461079d578063a3b261f2146107b057610349565b80638da5cb5b1461071c57806392a91a3a1461073a57610349565b80637f23690c1161015e5780637f23690c146106c957806386a10ddd146106dc5780638bbd4378146106fc57610349565b806378e97925146106935780637e87632c146106a957610349565b806337e3f8dc1161023257806352058d8a116101e65780636963d438116101c05780636963d4381461063e57806370a082311461065e578063715018a61461067e57610349565b806352058d8a146105d557806354f6127f146106085780636817c76c1461062857610349565b806349a6078d1161021757806349a6078d14610573578063511b6952146105a057806351b42b00146105c057610349565b806337e3f8dc1461050a5780633c3e8ae31461052a57610349565b80631d26fce6116102895780632a3654a41161026e5780632a3654a4146104a15780632b47da52146104c15780632b7ac3f3146104d657610349565b80631d26fce61461043c578063217b22701461046957610349565b806316e023b3116102ba57806316e023b3146103d657806318160ddd14610403578063186601ca1461042257610349565b806301ffc9a71461038a5780630f15f4c0146103bf57610349565b3661034957346000036103175760405163e5099ee360e01b815260040161030e9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561037457828260405163e5099ee360e01b815260040161030e929190613579565b61037e8383610922565b80519350602001915050f35b34801561039657600080fd5b506103aa6103a53660046135a8565b610a31565b60405190151581526020015b60405180910390f35b3480156103cb57600080fd5b506103d4610a7e565b005b3480156103e257600080fd5b506103f66103f13660046135d2565b610a90565b6040516103b69190613644565b34801561040f57600080fd5b506002545b6040519081526020016103b6565b34801561042e57600080fd5b50600f546103aa9060ff1681565b34801561044857600080fd5b5061045c610457366004613731565b610aa3565b6040516103b69190613795565b34801561047557600080fd5b506104896104843660046137f9565b610b69565b6040516001600160a01b0390911681526020016103b6565b3480156104ad57600080fd5b506103aa6104bc36600461382e565b610ba2565b3480156104cd57600080fd5b50610414610bb7565b3480156104e257600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b506103d4610525366004613858565b610bc7565b34801561053657600080fd5b5061055e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103b6565b34801561057f57600080fd5b5061059361058e3660046137f9565b610c1a565b6040516103b691906138ca565b3480156105ac57600080fd5b506103d46105bb3660046139a0565b610c3c565b3480156105cc57600080fd5b506103d4610c99565b3480156105e157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610414565b34801561061457600080fd5b506103f66106233660046137f9565b610ce1565b34801561063457600080fd5b50610414600d5481565b34801561064a57600080fd5b5061045c610659366004613a65565b610cec565b34801561066a57600080fd5b50610414610679366004613aa7565b610e35565b34801561068a57600080fd5b506103d4610e40565b34801561069f57600080fd5b50610414600c5481565b3480156106b557600080fd5b506103d46106c4366004613c0e565b610e52565b6103d46106d7366004613cd3565b610f5a565b3480156106e857600080fd5b506103d46106f7366004613d10565b610f8f565b34801561070857600080fd5b506103d4610717366004613d67565b611122565b34801561072857600080fd5b506000546001600160a01b0316610489565b34801561074657600080fd5b506104146107553660046137f9565b60009081526007602052604090205490565b34801561077357600080fd5b50610414610782366004613aa7565b6001600160a01b031660009081526010602052604090205490565b6103d46107ab366004613d99565b611207565b3480156107bc57600080fd5b506107d06107cb366004613aa7565b6112f9565b6040516103b69190613e2f565b3480156107e957600080fd5b506103d46107f836600461382e565b61131d565b34801561080957600080fd5b506103d4610818366004613e42565b6114f9565b34801561082957600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561085d57600080fd5b506103d461086c366004613ec0565b6115f6565b34801561087d57600080fd5b506103d461088c366004613efa565b611609565b34801561089d57600080fd5b506103f66116dd565b3480156108b257600080fd5b5061045c6108c1366004613f62565b61176b565b6103d46108d4366004613fa8565b611816565b3480156108e557600080fd5b506103d46108f4366004613aa7565b6118c8565b34801561090557600080fd5b50610414600e5481565b6103d461091d366004614032565b61191c565b6060600061093b6000356001600160e01b0319166119a6565b5090506001600160a01b03811661098c576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161030e565b600080826001600160a01b031634878733346040516020016109b19493929190614080565b60408051601f19818403018152908290526109cb916140b0565b60006040518083038185875af1925050503d8060008114610a08576040519150601f19603f3d011682016040523d82523d6000602084013e610a0d565b606091505b50915091508115610a22579250610a2b915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610a6f5750610a6f82611a50565b80610a2b5750610a2b82611a8e565b610a86611ac5565b610a8e611b1a565b565b6060610a9c8383611b5c565b9392505050565b6060825167ffffffffffffffff811115610abf57610abf613657565b604051908082528060200260200182016040528015610af257816020015b6060815260200190600190039081610add5790505b50905060005b8351811015610b6257610b3d848281518110610b1657610b166140cc565b6020026020010151848381518110610b3057610b306140cc565b6020026020010151611b5c565b828281518110610b4f57610b4f6140cc565b6020908102919091010152600101610af8565b5092915050565b6000818152600360205260408120546001600160a01b031680610a2b57604051635747cd1b60e11b81526004810184905260240161030e565b6000610bad82611c71565b610a9c8383611ca9565b6000610bc2600a5490565b905090565b610bcf611ac5565b6011610bdc82848361415e565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610c0e929190613579565b60405180910390a15050565b6060610c2582611c71565b6000828152600560205260409020610a2b90611ce6565b610c463384611ca9565b610c85576040517f1294d2a90000000000000000000000000000000000000000000000000000000081526004810184905233602482015260440161030e565b610c928585858585611cf3565b5050505050565b610ca1611ac5565b600f5460ff1615610a8e57600f805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b6060610a2b82611ee1565b60608167ffffffffffffffff811115610d0757610d07613657565b604051908082528060200260200182016040528015610d3a57816020015b6060815260200190600190039081610d255790505b50905060005b82811015610b625760008030868685818110610d5e57610d5e6140cc565b9050602002810190610d70919061421e565b604051610d7e929190614265565b600060405180830381855af49150503d8060008114610db9576040519150601f19603f3d011682016040523d82523d6000602084013e610dbe565b606091505b509150915081610e0d57805115610dd85780518082602001fd5b6040517f234eb8190000000000000000000000000000000000000000000000000000000081526004810184905260240161030e565b80848481518110610e2057610e206140cc565b60209081029190910101525050600101610d40565b6000610a2b82611f83565b610e48611ac5565b610a8e6000611fa4565b8451845181141580610e65575083518114155b80610e71575082518114155b80610e7d575081518114155b15610eb4576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610f5157610f49878281518110610ed457610ed46140cc565b6020026020010151878381518110610eee57610eee6140cc565b6020026020010151878481518110610f0857610f086140cc565b6020026020010151878581518110610f2257610f226140cc565b6020026020010151878681518110610f3c57610f3c6140cc565b6020026020010151610c3c565b600101610eb7565b50505050505050565b610f62611ac5565b3415610f815760405163f36ba73760e01b815260040160405180910390fd5b610f8b828261201f565b5050565b6000610f9a83610b69565b90506001600160a01b0381163314610fdd57604051632d938f5160e11b81526001600160a01b03821660048201526024810184905233604482015260640161030e565b6001600160a01b03841661100457604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603611036576040516344fed6b160e11b815260040160405180910390fd5b600083815260056020526040812061104e9086612082565b905080611099576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260440161030e565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc236671215866040516110dd9190613644565b60405180910390a4600033856001866040516020016110ff9493929190614275565b604051602081830303815290604052905061111a8682612097565b505050505050565b61112a611ac5565b42841015611167576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161030e565b816000036111a1576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c849055600d839055600e8290556111b981600a55565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b61120f611ac5565b341561122e5760405163f36ba73760e01b815260040160405180910390fd5b8051825114611269576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036112a4576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156112f4576112ec8382815181106112c5576112c56140cc565b60200260200101518383815181106112df576112df6140cc565b602002602001015161201f565b6001016112a7565b505050565b6001600160a01b0381166000908152600460205260409020606090610a2b90611ce6565b6113256120c2565b6001600160a01b038216611365576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060000361139f576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260106020526040902054818110156113ec576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161030e565b336000908152601060205260408120805484929061140b9084906142c5565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461145b576040519150601f19603f3d011682016040523d82523d6000602084013e611460565b606091505b50509050806114ad576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161030e565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610f8b6001600955565b611501611ac5565b8151835114158061151457508051825114155b1561154b576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251600003611586576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156115f0576115e88482815181106115a7576115a76140cc565b60200260200101518483815181106115c1576115c16140cc565b60200260200101518484815181106115db576115db6140cc565b602002602001015161211b565b600101611589565b50505050565b6115fe611ac5565b6112f483838361211b565b600061161484610b69565b90506001600160a01b038116331461165757604051632d938f5160e11b81526001600160a01b03821660048201526024810185905233604482015260640161030e565b6001600160a01b03851661167e57604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b0316036116b0576040516344fed6b160e11b815260040160405180910390fd5b6116bd85828686866121ab565b8215610c9257600033856000856040516020016110ff9493929190614275565b601180546116ea906140e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611716906140e2565b80156117635780601f1061173857610100808354040283529160200191611763565b820191906000526020600020905b81548152906001019060200180831161174657829003601f168201915b505050505081565b6060815167ffffffffffffffff81111561178757611787613657565b6040519080825280602002602001820160405280156117ba57816020015b60608152602001906001900390816117a55790505b50905060005b8251811015611810576117eb8382815181106117de576117de6140cc565b6020026020010151611ee1565b8282815181106117fd576117fd6140cc565b60209081029190910101526001016117c0565b50919050565b600f5460ff1615806118295750600c5442105b1561184757604051632e8acb0d60e01b815260040160405180910390fd5b61184f6120c2565b6118a788888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b9350019050604051602081830303815290604052612264565b6118b4858585858561237b565b6118be6001600955565b5050505050505050565b6118d0611ac5565b6001600160a01b038116611910576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191981611fa4565b50565b600f5460ff16158061192f5750600c5442105b1561194d57604051632e8acb0d60e01b815260040160405180910390fd5b6119556120c2565b600a541561198f576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61199c858585858561237b565b610c926001600955565b600080806119de7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612663565b905060006119eb82611ee1565b905080516014141580156119ff5750805115155b15611a3857806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161030e9190613644565b611a41816142d8565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610a2b5750610a2b826126d4565b600080611aa16301ffc9a760e01b6119a6565b5090506001600160a01b038116611abb5750600092915050565b610a9c8184612722565b33611ad86000546001600160a01b031690565b6001600160a01b031614610a8e576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161030e565b600f5460ff16610a8e57600f805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b60606000611b6a84846127c0565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e83148015611b9a57508051155b15610a9c576000611bca7f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611ee1565b90508051600003611c695760118054611be2906140e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611c0e906140e2565b8015611c5b5780601f10611c3057610100808354040283529160200191611c5b565b820191906000526020600020905b815481529060010190602001808311611c3e57829003601f168201915b505050505092505050610a2b565b509392505050565b6000818152600360205260409020546001600160a01b031661191957604051635747cd1b60e11b81526004810182905260240161030e565b6000611cb482610b69565b6001600160a01b0316836001600160a01b03161480610a9c57506000828152600560205260409020610a9c9084612897565b60606000610a9c836128b9565b836001600160a01b0316856001600160a01b031603611d3e576040517f5d67d6c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d4984610b69565b9050856001600160a01b0316816001600160a01b031614611d9757604051632d938f5160e11b81526001600160a01b038083166004830152602482018690528716604482015260640161030e565b6001600160a01b038516611dbe576040516324ecef4d60e01b815260040160405180910390fd5b611dca86868685612914565b611dd384610b69565b9050611ddf8685612920565b6001600160a01b0386166000908152600460205260409020611e019085612978565b506001600160a01b0385166000908152600460205260409020611e249085612984565b5060008481526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518692918916907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611e9890339089908990614314565b60405180910390a460003387878786604051602001611ebb959493929190614347565b6040516020818303038152906040529050611ed68782612990565b610f518685836129bb565b6000818152600160205260409020805460609190611efe906140e2565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2a906140e2565b8015611f775780601f10611f4c57610100808354040283529160200191611f77565b820191906000526020600020905b815481529060010190602001808311611f5a57829003601f168201915b50505050509050919050565b6001600160a01b0381166000908152600460205260408120610a2b90612af5565b6000546001600160a01b0382811691161461191957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201612078576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f8b8282612aff565b6000610a9c836001600160a01b038416612b09565b610f8b827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612b58565b6002600954036121145760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030e565b6002600955565b8060016000858560405160200161213c929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020908161216c9190614381565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161219e9190613644565b60405180910390a3505050565b60008381526005602052604081206121c39087612ba5565b90508061220e576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b03871660048201526024810185905260440161030e565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612254929190614441565b60405180910390a4505050505050565b600a5461229d576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122a682612bba565b156122e15781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161030e92919061445c565b600082826040516020016122f692919061445c565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061233884600a5483612bfb565b6123725782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161030e92919061445c565b6115f083612c11565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661240982868686612c4f565b6001600160a01b031614612449576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008561245588610e35565b61245f9190614475565b9050600e548111156124a0576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161030e565b6000600d54876124b09190614488565b90508034146124ed576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161030e565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af4158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a9919061449f565b90506125b581836142c5565b601060006125cb6000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125fa9190614475565b90915550506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660009081526010602052604081208054839290612647908490614475565b909155506126589050898984612c77565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806126cc906144b8565b949350505050565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610a2b57506301ffc9a760e01b6001600160e01b0319831614610a2b565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156127a9575060208210155b80156127b55750600081115b979650505050505050565b60606001600084846040516020016127e2929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020016000208054612811906140e2565b80601f016020809104026020016040519081016040528092919081815260200182805461283d906140e2565b801561288a5780601f1061285f5761010080835404028352916020019161288a565b820191906000526020600020905b81548152906001019060200180831161286d57829003601f168201915b5050505050905092915050565b6001600160a01b03811660009081526001830160205260408120541515610a9c565b606081600001805480602002602001604051908101604052809291908181526020018280548015611f7757602002820191906000526020600020905b8154815260200190600101908083116128f55750505050509050919050565b6115f084848484612db2565b60008181526005602052604081209061293882612af5565b90506000805b8281101561111a57612951846000612e79565b91506129708287876000604051806020016040528060008152506121ab565b60010161293e565b6000610a9c8383612e85565b6000610a9c8383612b09565b610f8b827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612b58565b6129cc83631aed5a8560e21b612722565b15612a6657604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a1f907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161445c565b6000604051808303816000875af1158015612a3e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115f091908101906144dc565b816112f4576001600160a01b0383163b15612ab8576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6000610a2b825490565b610f8b8282612f78565b6000818152600183016020526040812054612b5057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a2b565b506000610a2b565b612b726001600160a01b038416631aed5a8560e21b612722565b156112f457604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a1f908590859060040161445c565b6000610a9c836001600160a01b038416612e85565b600080612bc961010084614560565b90506000612bd961010085614574565b6000928352600b602052604090922054600190921b9182169091149392505050565b600082612c0885846130d8565b14949350505050565b6000612c1f61010083614560565b90506000612c2f61010084614574565b6000928352600b60205260409092208054600190931b9092179091555050565b6000806000612c6087878787613113565b91509150612c6d816131d7565b5095945050505050565b60008267ffffffffffffffff811115612c9257612c92613657565b604051908082528060200260200182016040528015612cbb578160200160208202803683370190505b50905060006012546001612ccf9190614475565b90508360126000828254612ce39190614475565b90915550600090505b84811015612d2657612cfe8183614475565b60001b838281518110612d1357612d136140cc565b6020908102919091010152600101612cec565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612d62929190614588565b60405180910390a260005b8481101561111a57612daa86848381518110612d8b57612d8b6140cc565b602002602001015160006040518060200160405280600081525061333c565b600101612d6d565b6001600160a01b038416612dec576000612dcb60025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316612e745760006001612e0760025490565b612e1191906142c5565b60008481526008602052604090205490915081811015612e53576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b6115f0565b6000610a9c8383613348565b60008181526001830160205260408120548015612f6e576000612ea96001836142c5565b8554909150600090612ebd906001906142c5565b9050818114612f22576000866000018281548110612edd57612edd6140cc565b9060005260206000200154905080876000018481548110612f0057612f006140cc565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f3357612f336145aa565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a2b565b6000915050610a2b565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612fd1576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa820161302a576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613083576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061309b8282614381565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516130cc9190613644565b60405180910390a25050565b600081815b8451811015611c6957613109828683815181106130fc576130fc6140cc565b6020026020010151613372565b91506001016130dd565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561314a57506000905060036131ce565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561319e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131c7576000600192509250506131ce565b9150600090505b94509492505050565b60008160048111156131eb576131eb6145c0565b036131f35750565b6001816004811115613207576132076145c0565b036132545760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161030e565b6002816004811115613268576132686145c0565b036132b55760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161030e565b60038160048111156132c9576132c96145c0565b036119195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161030e565b6115f0848484846133a1565b600082600001828154811061335f5761335f6140cc565b9060005260206000200154905092915050565b600081831061338e576000828152602084905260409020610a9c565b6000838152602083905260409020610a9c565b7f00000000000000000000000000000000000000000000000000000000000000006002546133d0906001614475565b1115613408576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f0848484846001600160a01b038416613436576040516324ecef4d60e01b815260040160405180910390fd5b6134436000858584612914565b6000838152600360205260409020546001600160a01b031615613495576040517f34c7b5110000000000000000000000000000000000000000000000000000000081526004810184905260240161030e565b6002600081546134a4906145d6565b909155506001600160a01b03841660009081526004602052604090206134ca9084612984565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061353990339088908890614314565b60405180910390a4600033600086868560405160200161355d959493929190614347565b6040516020818303038152906040529050610c928584836129bb565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156135ba57600080fd5b81356001600160e01b031981168114610a9c57600080fd5b600080604083850312156135e557600080fd5b50508035926020909101359150565b60005b8381101561360f5781810151838201526020016135f7565b50506000910152565b600081518084526136308160208601602086016135f4565b601f01601f19169290920160200192915050565b602081526000610a9c6020830184613618565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561369657613696613657565b604052919050565b600067ffffffffffffffff8211156136b8576136b8613657565b5060051b60200190565b600082601f8301126136d357600080fd5b813560206136e86136e38361369e565b61366d565b8083825260208201915060208460051b87010193508684111561370a57600080fd5b602086015b84811015613726578035835291830191830161370f565b509695505050505050565b6000806040838503121561374457600080fd5b823567ffffffffffffffff8082111561375c57600080fd5b613768868387016136c2565b9350602085013591508082111561377e57600080fd5b5061378b858286016136c2565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156137ec57603f198886030184526137da858351613618565b945092850192908501906001016137be565b5092979650505050505050565b60006020828403121561380b57600080fd5b5035919050565b80356001600160a01b038116811461382957600080fd5b919050565b6000806040838503121561384157600080fd5b61384a83613812565b946020939093013593505050565b6000806020838503121561386b57600080fd5b823567ffffffffffffffff8082111561388357600080fd5b818501915085601f83011261389757600080fd5b8135818111156138a657600080fd5b8660208285010111156138b857600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561390b5783516001600160a01b0316835292840192918401916001016138e6565b50909695505050505050565b8035801515811461382957600080fd5b600067ffffffffffffffff82111561394157613941613657565b50601f01601f191660200190565b600082601f83011261396057600080fd5b813561396e6136e382613927565b81815284602083860101111561398357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156139b857600080fd5b6139c186613812565b94506139cf60208701613812565b9350604086013592506139e460608701613917565b9150608086013567ffffffffffffffff811115613a0057600080fd5b613a0c8882890161394f565b9150509295509295909350565b60008083601f840112613a2b57600080fd5b50813567ffffffffffffffff811115613a4357600080fd5b6020830191508360208260051b8501011115613a5e57600080fd5b9250929050565b60008060208385031215613a7857600080fd5b823567ffffffffffffffff811115613a8f57600080fd5b613a9b85828601613a19565b90969095509350505050565b600060208284031215613ab957600080fd5b610a9c82613812565b600082601f830112613ad357600080fd5b81356020613ae36136e38361369e565b8083825260208201915060208460051b870101935086841115613b0557600080fd5b602086015b8481101561372657613b1b81613812565b8352918301918301613b0a565b600082601f830112613b3957600080fd5b81356020613b496136e38361369e565b8083825260208201915060208460051b870101935086841115613b6b57600080fd5b602086015b8481101561372657613b8181613917565b8352918301918301613b70565b600082601f830112613b9f57600080fd5b81356020613baf6136e38361369e565b82815260059290921b84018101918181019086841115613bce57600080fd5b8286015b8481101561372657803567ffffffffffffffff811115613bf25760008081fd5b613c008986838b010161394f565b845250918301918301613bd2565b600080600080600060a08688031215613c2657600080fd5b853567ffffffffffffffff80821115613c3e57600080fd5b613c4a89838a01613ac2565b96506020880135915080821115613c6057600080fd5b613c6c89838a01613ac2565b95506040880135915080821115613c8257600080fd5b613c8e89838a016136c2565b94506060880135915080821115613ca457600080fd5b613cb089838a01613b28565b93506080880135915080821115613cc657600080fd5b50613a0c88828901613b8e565b60008060408385031215613ce657600080fd5b82359150602083013567ffffffffffffffff811115613d0457600080fd5b61378b8582860161394f565b600080600060608486031215613d2557600080fd5b613d2e84613812565b925060208401359150604084013567ffffffffffffffff811115613d5157600080fd5b613d5d8682870161394f565b9150509250925092565b60008060008060808587031215613d7d57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215613dac57600080fd5b823567ffffffffffffffff80821115613dc457600080fd5b613dd0868387016136c2565b93506020850135915080821115613de657600080fd5b5061378b85828601613b8e565b60008151808452602080850194506020840160005b83811015613e2457815187529582019590820190600101613e08565b509495945050505050565b602081526000610a9c6020830184613df3565b600080600060608486031215613e5757600080fd5b833567ffffffffffffffff80821115613e6f57600080fd5b613e7b878388016136c2565b94506020860135915080821115613e9157600080fd5b613e9d878388016136c2565b93506040860135915080821115613eb357600080fd5b50613d5d86828701613b8e565b600080600060608486031215613ed557600080fd5b8335925060208401359150604084013567ffffffffffffffff811115613d5157600080fd5b60008060008060808587031215613f1057600080fd5b613f1985613812565b935060208501359250613f2e60408601613917565b9150606085013567ffffffffffffffff811115613f4a57600080fd5b613f568782880161394f565b91505092959194509250565b600060208284031215613f7457600080fd5b813567ffffffffffffffff811115613f8b57600080fd5b6126cc848285016136c2565b803560ff8116811461382957600080fd5b60008060008060008060008060e0898b031215613fc457600080fd5b883567ffffffffffffffff811115613fdb57600080fd5b613fe78b828c01613a19565b9099509750506020890135955061400060408a01613812565b94506060890135935061401560808a01613f97565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a0868803121561404a57600080fd5b61405386613812565b94506020860135935061406860408701613f97565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516140c28184602087016135f4565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806140f657607f821691505b60208210810361181057634e487b7160e01b600052602260045260246000fd5b601f8211156112f4576000816000526020600020601f850160051c8101602086101561413f5750805b601f850160051c820191505b8181101561111a5782815560010161414b565b67ffffffffffffffff83111561417657614176613657565b61418a8361418483546140e2565b83614116565b6000601f8411600181146141be57600085156141a65750838201355b600019600387901b1c1916600186901b178355610c92565b600083815260209020601f19861690835b828110156141ef57868501358255602094850194600190920191016141cf565b508682101561420c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e1984360301811261423557600080fd5b83018035915067ffffffffffffffff82111561425057600080fd5b602001915036819003821315613a5e57600080fd5b8183823760009101908152919050565b6001600160a01b038516815283602082015282151560408201526080606082015260006142a56080830184613618565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a2b57610a2b6142af565b805160208201516bffffffffffffffffffffffff19808216929190601483101561430c5780818460140360031b1b83161693505b505050919050565b6001600160a01b0384168152821515602082015260606040820152600061433e6060830184613618565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526127b560a0830184613618565b815167ffffffffffffffff81111561439b5761439b613657565b6143af816143a984546140e2565b84614116565b602080601f8311600181146143e457600084156143cc5750858301515b600019600386901b1c1916600185901b17855561111a565b600085815260208120601f198616915b82811015614413578886015182559484019460019091019084016143f4565b50858210156144315787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006126cc6040830184613618565b8281526040602082015260006126cc6040830184613618565b80820180821115610a2b57610a2b6142af565b8082028115828204841417610a2b57610a2b6142af565b6000602082840312156144b157600080fd5b5051919050565b805160208083015191908110156118105760001960209190910360031b1b16919050565b6000602082840312156144ee57600080fd5b815167ffffffffffffffff81111561450557600080fd5b8201601f8101841361451657600080fd5b80516145246136e382613927565b81815285602083850101111561453957600080fd5b61433e8260208301602086016135f4565b634e487b7160e01b600052601260045260246000fd5b60008261456f5761456f61454a565b500490565b6000826145835761458361454a565b500690565b60408152600061459b6040830185613df3565b90508260208301529392505050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016145e8576145e86142af565b506001019056fea26469706673582212204c125742e63315455de6fbd60a4c874aa234ffdfbb72867776ff5d22737bfd2764736f6c63430008160033 +0x6101006040523480156200001257600080fd5b5060405162004e8938038062004e89833981016040819052620000359162000579565b838382848a8a8a6001600084848484816001600160a01b0381166200006d576040516306b620db60e21b815260040160405180910390fd5b6200007881620002f5565b506040805180820190915260048152632936598960e21b6020820152620000c1907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000363565b620000ed7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000363565b620001197f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000363565b604080516020810183905262000162917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000363565b50506040805160208101859052620001af93507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003bc565b505050505080600003620001d65760405163038d9fc360e41b815260040160405180910390fd5b6080526001600955604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af415801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000643565b62000284576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002a257506001600160a01b038216155b15620002c15760405163d92e233d60e01b815260040160405180910390fd5b600f805460ff191690556001600160a01b0392831660c052911660e05263ffffffff1660a052506200080095505050505050565b6000546001600160a01b038281169116146200036057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200037d8282620006ff565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003b09190620007cb565b60405180910390a25050565b620003c88282620003cc565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016200040d576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200044e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036357604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b50506000910152565b600082601f830112620004dd57600080fd5b81516001600160401b0380821115620004fa57620004fa6200048f565b604051601f8301601f19908116603f011681019082821181831017156200052557620005256200048f565b816040528381528660208588010111156200053f57600080fd5b62000552846020830160208901620004a5565b9695505050505050565b80516001600160a01b03811681146200057457600080fd5b919050565b600080600080600080600060e0888a0312156200059557600080fd5b87516001600160401b0380821115620005ad57600080fd5b620005bb8b838c01620004cb565b985060208a0151915080821115620005d257600080fd5b50620005e18a828b01620004cb565b965050620005f2604089016200055c565b945062000602606089016200055c565b935062000612608089016200055c565b925060a0880151915060c088015163ffffffff811681146200063357600080fd5b8091505092959891949750929550565b6000602082840312156200065657600080fd5b815180151581146200066757600080fd5b9392505050565b600181811c908216806200068357607f821691505b602082108103620006a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006fa576000816000526020600020601f850160051c81016020861015620006d55750805b601f850160051c820191505b81811015620006f657828155600101620006e1565b5050505b505050565b81516001600160401b038111156200071b576200071b6200048f565b62000733816200072c84546200066e565b84620006aa565b602080601f8311600181146200076b5760008415620007525750858301515b600019600386901b1c1916600185901b178555620006f6565b600085815260208120601f198616915b828110156200079c578886015182559484019460019091019084016200077b565b5085821015620007bb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620007ec816040850160208701620004a5565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161463362000856600039600081816104e801526123ec01526000818161082f015261262001526000818161053c01526125380152600081816105e4015261339101526146336000f3fe6080604052600436106102d55760003560e01c806378e9792511610179578063aad3ec96116100d6578063dd5ffa1e1161008a578063f2fde38b11610064578063f2fde38b146108d9578063f575191e146108f9578063fc6180711461090f57610349565b8063dd5ffa1e14610891578063dedff9c6146108a6578063edb8d1e2146108c657610349565b8063d598d4c9116100bb578063d598d4c91461081d578063d6c1407c14610851578063db8c96631461087157610349565b8063aad3ec96146107dd578063be9f0e6f146107fd57610349565b80638da5cb5b1161012d578063942cd44b11610112578063942cd44b14610767578063979024211461079d578063a3b261f2146107b057610349565b80638da5cb5b1461071c57806392a91a3a1461073a57610349565b80637f23690c1161015e5780637f23690c146106c957806386a10ddd146106dc5780638bbd4378146106fc57610349565b806378e97925146106935780637e87632c146106a957610349565b806337e3f8dc1161023257806352058d8a116101e65780636963d438116101c05780636963d4381461063e57806370a082311461065e578063715018a61461067e57610349565b806352058d8a146105d557806354f6127f146106085780636817c76c1461062857610349565b806349a6078d1161021757806349a6078d14610573578063511b6952146105a057806351b42b00146105c057610349565b806337e3f8dc1461050a5780633c3e8ae31461052a57610349565b80631d26fce6116102895780632a3654a41161026e5780632a3654a4146104a15780632b47da52146104c15780632b7ac3f3146104d657610349565b80631d26fce61461043c578063217b22701461046957610349565b806316e023b3116102ba57806316e023b3146103d657806318160ddd14610403578063186601ca1461042257610349565b806301ffc9a71461038a5780630f15f4c0146103bf57610349565b3661034957346000036103175760405163e5099ee360e01b815260040161030e9060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000366060600482101561037457828260405163e5099ee360e01b815260040161030e929190613587565b61037e8383610922565b80519350602001915050f35b34801561039657600080fd5b506103aa6103a53660046135b6565b610a31565b60405190151581526020015b60405180910390f35b3480156103cb57600080fd5b506103d4610a7e565b005b3480156103e257600080fd5b506103f66103f13660046135e0565b610a90565b6040516103b69190613652565b34801561040f57600080fd5b506002545b6040519081526020016103b6565b34801561042e57600080fd5b50600f546103aa9060ff1681565b34801561044857600080fd5b5061045c61045736600461373f565b610aa3565b6040516103b691906137a3565b34801561047557600080fd5b50610489610484366004613807565b610b8b565b6040516001600160a01b0390911681526020016103b6565b3480156104ad57600080fd5b506103aa6104bc36600461383c565b610bc4565b3480156104cd57600080fd5b50610414610bd0565b3480156104e257600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b506103d4610525366004613866565b610be0565b34801561053657600080fd5b5061055e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103b6565b34801561057f57600080fd5b5061059361058e366004613807565b610c33565b6040516103b691906138d8565b3480156105ac57600080fd5b506103d46105bb3660046139ae565b610c55565b3480156105cc57600080fd5b506103d4610cb2565b3480156105e157600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610414565b34801561061457600080fd5b506103f6610623366004613807565b610cfa565b34801561063457600080fd5b50610414600d5481565b34801561064a57600080fd5b5061045c610659366004613a73565b610d05565b34801561066a57600080fd5b50610414610679366004613ab5565b610e4e565b34801561068a57600080fd5b506103d4610e59565b34801561069f57600080fd5b50610414600c5481565b3480156106b557600080fd5b506103d46106c4366004613c1c565b610e6b565b6103d46106d7366004613ce1565b610f73565b3480156106e857600080fd5b506103d46106f7366004613d1e565b610fa8565b34801561070857600080fd5b506103d4610717366004613d75565b61113b565b34801561072857600080fd5b506000546001600160a01b0316610489565b34801561074657600080fd5b50610414610755366004613807565b60009081526007602052604090205490565b34801561077357600080fd5b50610414610782366004613ab5565b6001600160a01b031660009081526010602052604090205490565b6103d46107ab366004613da7565b611220565b3480156107bc57600080fd5b506107d06107cb366004613ab5565b611312565b6040516103b69190613e3d565b3480156107e957600080fd5b506103d46107f836600461383c565b611336565b34801561080957600080fd5b506103d4610818366004613e50565b611512565b34801561082957600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b34801561085d57600080fd5b506103d461086c366004613ece565b6115f6565b34801561087d57600080fd5b506103d461088c366004613f08565b611609565b34801561089d57600080fd5b506103f6611706565b3480156108b257600080fd5b5061045c6108c1366004613f70565b611794565b6103d46108d4366004613fb6565b61183f565b3480156108e557600080fd5b506103d46108f4366004613ab5565b6118f1565b34801561090557600080fd5b50610414600e5481565b6103d461091d366004614040565b611945565b6060600061093b6000356001600160e01b0319166119cf565b5090506001600160a01b03811661098c576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b031960003516600482015260240161030e565b600080826001600160a01b031634878733346040516020016109b1949392919061408e565b60408051601f19818403018152908290526109cb916140be565b60006040518083038185875af1925050503d8060008114610a08576040519150601f19603f3d011682016040523d82523d6000602084013e610a0d565b606091505b50915091508115610a22579250610a2b915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480610a6f5750610a6f82611a79565b80610a2b5750610a2b82611ab7565b610a86611aee565b610a8e611b43565b565b6060610a9c8383611b85565b9392505050565b60608151835114610ac7576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff811115610ae157610ae1613665565b604051908082528060200260200182016040528015610b1457816020015b6060815260200190600190039081610aff5790505b50905060005b8351811015610b8457610b5f848281518110610b3857610b386140da565b6020026020010151848381518110610b5257610b526140da565b6020026020010151611b85565b828281518110610b7157610b716140da565b6020908102919091010152600101610b1a565b5092915050565b6000818152600360205260408120546001600160a01b031680610a2b57604051635747cd1b60e11b81526004810184905260240161030e565b6000610a9c8383611c9a565b6000610bdb600a5490565b905090565b610be8611aee565b6011610bf582848361416c565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610c27929190613587565b60405180910390a15050565b6060610c3e82611cd7565b6000828152600560205260409020610a2b90611d0f565b610c5f3384611c9a565b610c9e576040517f1294d2a90000000000000000000000000000000000000000000000000000000081526004810184905233602482015260440161030e565b610cab8585858585611d1c565b5050505050565b610cba611aee565b600f5460ff1615610a8e57600f805460ff191690556040517f1142a68cc39970640eb3524e77b91f78be21abc64f20f5919387eb46699bb77290600090a1565b6060610a2b82611f26565b60608167ffffffffffffffff811115610d2057610d20613665565b604051908082528060200260200182016040528015610d5357816020015b6060815260200190600190039081610d3e5790505b50905060005b82811015610b845760008030868685818110610d7757610d776140da565b9050602002810190610d89919061422c565b604051610d97929190614273565b600060405180830381855af49150503d8060008114610dd2576040519150601f19603f3d011682016040523d82523d6000602084013e610dd7565b606091505b509150915081610e2657805115610df15780518082602001fd5b6040517f234eb8190000000000000000000000000000000000000000000000000000000081526004810184905260240161030e565b80848481518110610e3957610e396140da565b60209081029190910101525050600101610d59565b6000610a2b82611fc8565b610e61611aee565b610a8e6000611fe9565b8451845181141580610e7e575083518114155b80610e8a575082518114155b80610e96575081518114155b15610ecd576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610f6a57610f62878281518110610eed57610eed6140da565b6020026020010151878381518110610f0757610f076140da565b6020026020010151878481518110610f2157610f216140da565b6020026020010151878581518110610f3b57610f3b6140da565b6020026020010151878681518110610f5557610f556140da565b6020026020010151610c55565b600101610ed0565b50505050505050565b610f7b611aee565b3415610f9a5760405163f36ba73760e01b815260040160405180910390fd5b610fa48282612064565b5050565b6000610fb383610b8b565b90506001600160a01b0381163314610ff657604051632d938f5160e11b81526001600160a01b03821660048201526024810184905233604482015260640161030e565b6001600160a01b03841661101d57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b03160361104f576040516344fed6b160e11b815260040160405180910390fd5b600083815260056020526040812061106790866120c7565b9050806110b2576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260440161030e565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc236671215866040516110f69190613652565b60405180910390a4600033856001866040516020016111189493929190614283565b604051602081830303815290604052905061113386826120dc565b505050505050565b611143611aee565b42841015611180576040517f76429b570000000000000000000000000000000000000000000000000000000081526004810185905260240161030e565b816000036111ba576040517f39af805800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c849055600d839055600e8290556111d281600a55565b6040805185815260208101859052908101839052606081018290527f8aeedf0ed8cd3693ef01d328f512281c622ee40528326aa6fba505184ab13a439060800160405180910390a150505050565b611228611aee565b34156112475760405163f36ba73760e01b815260040160405180910390fd5b8051825114611282576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036112bd576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561130d576113058382815181106112de576112de6140da565b60200260200101518383815181106112f8576112f86140da565b6020026020010151612064565b6001016112c0565b505050565b6001600160a01b0381166000908152600460205260409020606090610a2b90611d0f565b61133e612107565b6001600160a01b03821661137e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036113b8576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526010602052604090205481811015611405576040517fffb97f810000000000000000000000000000000000000000000000000000000081526004810183905260240161030e565b33600090815260106020526040812080548492906114249084906142d3565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d8060008114611474576040519150601f19603f3d011682016040523d82523d6000602084013e611479565b606091505b50509050806114c6576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161030e565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610fa46001600955565b61151a611aee565b8151835114158061152d57508051825114155b1561154b576040516317d38eff60e11b815260040160405180910390fd5b8251600003611586576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156115f0576115e88482815181106115a7576115a76140da565b60200260200101518483815181106115c1576115c16140da565b60200260200101518484815181106115db576115db6140da565b6020026020010151612160565b600101611589565b50505050565b6115fe611aee565b61130d838383612160565b600061161484610b8b565b9050336001600160a01b03821614611680576001600160a01b0385163314611680576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03821660248201526044810185905260640161030e565b6001600160a01b0385166116a757604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b0316036116d9576040516344fed6b160e11b815260040160405180910390fd5b6116e685828686866121c2565b8215610cab57600081856000856040516020016111189493929190614283565b60118054611713906140f0565b80601f016020809104026020016040519081016040528092919081815260200182805461173f906140f0565b801561178c5780601f106117615761010080835404028352916020019161178c565b820191906000526020600020905b81548152906001019060200180831161176f57829003601f168201915b505050505081565b6060815167ffffffffffffffff8111156117b0576117b0613665565b6040519080825280602002602001820160405280156117e357816020015b60608152602001906001900390816117ce5790505b50905060005b825181101561183957611814838281518110611807576118076140da565b6020026020010151611f26565b828281518110611826576118266140da565b60209081029190910101526001016117e9565b50919050565b600f5460ff1615806118525750600c5442105b1561187057604051632e8acb0d60e01b815260040160405180910390fd5b611878612107565b6118d088888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080513360208201528b935001905060405160208183030381529060405261227b565b6118dd8585858585612392565b6118e76001600955565b5050505050505050565b6118f9611aee565b6001600160a01b038116611939576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61194281611fe9565b50565b600f5460ff1615806119585750600c5442105b1561197657604051632e8acb0d60e01b815260040160405180910390fd5b61197e612107565b600a54156119b8576040517f1df4698600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119c58585858585612392565b610cab6001600955565b60008080611a077fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b0319861661267a565b90506000611a1482611f26565b90508051601414158015611a285750805115155b15611a6157806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161030e9190613652565b611a6a816142e6565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610a2b5750610a2b826126eb565b600080611aca6301ffc9a760e01b6119cf565b5090506001600160a01b038116611ae45750600092915050565b610a9c8184612739565b33611b016000546001600160a01b031690565b6001600160a01b031614610a8e576040517fbf1169c500000000000000000000000000000000000000000000000000000000815233600482015260240161030e565b600f5460ff16610a8e57600f805460ff191660011790556040517fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b090600090a1565b60606000611b9384846127d7565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e83148015611bc357508051155b15610a9c576000611bf37f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611f26565b90508051600003611c925760118054611c0b906140f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611c37906140f0565b8015611c845780601f10611c5957610100808354040283529160200191611c84565b820191906000526020600020905b815481529060010190602001808311611c6757829003601f168201915b505050505092505050610a2b565b509392505050565b6000611ca582610b8b565b6001600160a01b0316836001600160a01b03161480610a9c57506000828152600560205260409020610a9c9084612885565b6000818152600360205260409020546001600160a01b031661194257604051635747cd1b60e11b81526004810182905260240161030e565b60606000610a9c836128a7565b6000611d2784610b8b565b9050856001600160a01b0316816001600160a01b031614611d7557604051632d938f5160e11b81526001600160a01b038083166004830152602482018690528716604482015260640161030e565b6001600160a01b038516611d9c576040516324ecef4d60e01b815260040160405180910390fd5b611da886868685612902565b6000611db385610b8b565b9050806001600160a01b0316826001600160a01b031614611e1a576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b0380841660248301528216604482015260640161030e565b611e24878661290e565b6001600160a01b0387166000908152600460205260409020611e469086612966565b506001600160a01b0386166000908152600460205260409020611e699086612972565b5060008581526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611edd9033908a908a90614322565b60405180910390a460003388888887604051602001611f00959493929190614355565b6040516020818303038152906040529050611f1b888261297e565b6118e78786836129a9565b6000818152600160205260409020805460609190611f43906140f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611f6f906140f0565b8015611fbc5780601f10611f9157610100808354040283529160200191611fbc565b820191906000526020600020905b815481529060010190602001808311611f9f57829003601f168201915b50505050509050919050565b6001600160a01b0381166000908152600460205260408120610a2b90612ae3565b6000546001600160a01b0382811691161461194257600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e7382016120bd576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fa48282612aed565b6000610a9c836001600160a01b038416612af7565b610fa4827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612b46565b6002600954036121595760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161030e565b6002600955565b60008381526006602090815260408083208584529091529020612183828261438f565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb836040516121b59190613652565b60405180910390a3505050565b60008381526005602052604081206121da9087612b93565b905080612225576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b03871660048201526024810185905260440161030e565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c868660405161226b92919061444f565b60405180910390a4505050505050565b600a546122b4576040517f5058901600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122bd82612ba8565b156122f85781816040517f331e2c3f00000000000000000000000000000000000000000000000000000000815260040161030e92919061446a565b6000828260405160200161230d92919061446a565b60408051601f198184030181528282528051602091820120908301520160405160208183030381529060405280519060200120905061234f84600a5483612be9565b6123895782826040517f4a0e7b1300000000000000000000000000000000000000000000000000000000815260040161030e92919061446a565b6115f083612bff565b6040516bffffffffffffffffffffffff1930606090811b8216602084015246603484015287901b1660548201526068810185905234608882015260009060a8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661242082868686612c3d565b6001600160a01b031614612460576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008561246c88610e4e565b6124769190614483565b9050600e548111156124b7576040517f941b43eb0000000000000000000000000000000000000000000000000000000081526004810182905260240161030e565b6000600d54876124c79190614496565b9050803414612504576040517ffe2b819500000000000000000000000000000000000000000000000000000000815234600482015260240161030e565b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810182905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af415801561259c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c091906144ad565b90506125cc81836142d3565b601060006125e26000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546126119190614483565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152601060205260408120805483929061265e908490614483565b9091555061266f9050898984612c65565b505050505050505050565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806126e3906144c6565b949350505050565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610a2b57506301ffc9a760e01b6001600160e01b0319831614610a2b565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156127c0575060208210155b80156127cc5750600081115b979650505050505050565b600082815260066020908152604080832084845290915290208054606091906127ff906140f0565b80601f016020809104026020016040519081016040528092919081815260200182805461282b906140f0565b80156128785780601f1061284d57610100808354040283529160200191612878565b820191906000526020600020905b81548152906001019060200180831161285b57829003601f168201915b5050505050905092915050565b6001600160a01b03811660009081526001830160205260408120541515610a9c565b606081600001805480602002602001604051908101604052809291908181526020018280548015611fbc57602002820191906000526020600020905b8154815260200190600101908083116128e35750505050509050919050565b6115f084848484612da0565b60008181526005602052604081209061292682612ae3565b90506000805b828110156111335761293f846000612e67565b915061295e8287876000604051806020016040528060008152506121c2565b60010161292c565b6000610a9c8383612e73565b6000610a9c8383612af7565b610fa4827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612b46565b6129ba83631aed5a8560e21b612739565b15612a5457604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a0d907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d90859060040161446a565b6000604051808303816000875af1158015612a2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115f091908101906144ea565b8161130d576001600160a01b0383163b15612aa6576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161030e565b6000610a2b825490565b610fa48282612f66565b6000818152600183016020526040812054612b3e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a2b565b506000610a2b565b612b606001600160a01b038416631aed5a8560e21b612739565b1561130d57604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612a0d908590859060040161446a565b6000610a9c836001600160a01b038416612e73565b600080612bb76101008461456e565b90506000612bc761010085614582565b6000928352600b602052604090922054600190921b9182169091149392505050565b600082612bf685846130c6565b14949350505050565b6000612c0d6101008361456e565b90506000612c1d61010084614582565b6000928352600b60205260409092208054600190931b9092179091555050565b6000806000612c4e87878787613101565b91509150612c5b816131c5565b5095945050505050565b60008267ffffffffffffffff811115612c8057612c80613665565b604051908082528060200260200182016040528015612ca9578160200160208202803683370190505b50905060006012546001612cbd9190614483565b90508360126000828254612cd19190614483565b90915550600090505b84811015612d1457612cec8183614483565b60001b838281518110612d0157612d016140da565b6020908102919091010152600101612cda565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612d50929190614596565b60405180910390a260005b8481101561113357612d9886848381518110612d7957612d796140da565b602002602001015160006040518060200160405280600081525061332a565b600101612d5b565b6001600160a01b038416612dda576000612db960025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316612e625760006001612df560025490565b612dff91906142d3565b60008481526008602052604090205490915081811015612e41576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b6115f0565b6000610a9c8383613336565b60008181526001830160205260408120548015612f5c576000612e976001836142d3565b8554909150600090612eab906001906142d3565b9050818114612f10576000866000018281548110612ecb57612ecb6140da565b9060005260206000200154905080876000018481548110612eee57612eee6140da565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f2157612f216145b8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a2b565b6000915050610a2b565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612fbf576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201613018576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613071576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260409020613089828261438f565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b2826040516130ba9190613652565b60405180910390a25050565b600081815b8451811015611c92576130f7828683815181106130ea576130ea6140da565b6020026020010151613360565b91506001016130cb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561313857506000905060036131bc565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561318c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131b5576000600192509250506131bc565b9150600090505b94509492505050565b60008160048111156131d9576131d96145ce565b036131e15750565b60018160048111156131f5576131f56145ce565b036132425760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161030e565b6002816004811115613256576132566145ce565b036132a35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161030e565b60038160048111156132b7576132b76145ce565b036119425760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161030e565b6115f08484848461338f565b600082600001828154811061334d5761334d6140da565b9060005260206000200154905092915050565b600081831061337c576000828152602084905260409020610a9c565b6000838152602083905260409020610a9c565b7f00000000000000000000000000000000000000000000000000000000000000006002546133be906001614483565b11156133f6576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115f0848484846001600160a01b038416613424576040516324ecef4d60e01b815260040160405180910390fd5b6000838152600360205260409020546001600160a01b03161561345d576040516334c7b51160e01b81526004810184905260240161030e565b61346a6000858584612902565b6000838152600360205260409020546001600160a01b0316156134a3576040516334c7b51160e01b81526004810184905260240161030e565b6002600081546134b2906145e4565b909155506001600160a01b03841660009081526004602052604090206134d89084612972565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf9061354790339088908890614322565b60405180910390a4600033600086868560405160200161356b959493929190614355565b6040516020818303038152906040529050610cab8584836129a9565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156135c857600080fd5b81356001600160e01b031981168114610a9c57600080fd5b600080604083850312156135f357600080fd5b50508035926020909101359150565b60005b8381101561361d578181015183820152602001613605565b50506000910152565b6000815180845261363e816020860160208601613602565b601f01601f19169290920160200192915050565b602081526000610a9c6020830184613626565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136a4576136a4613665565b604052919050565b600067ffffffffffffffff8211156136c6576136c6613665565b5060051b60200190565b600082601f8301126136e157600080fd5b813560206136f66136f1836136ac565b61367b565b8083825260208201915060208460051b87010193508684111561371857600080fd5b602086015b84811015613734578035835291830191830161371d565b509695505050505050565b6000806040838503121561375257600080fd5b823567ffffffffffffffff8082111561376a57600080fd5b613776868387016136d0565b9350602085013591508082111561378c57600080fd5b50613799858286016136d0565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156137fa57603f198886030184526137e8858351613626565b945092850192908501906001016137cc565b5092979650505050505050565b60006020828403121561381957600080fd5b5035919050565b80356001600160a01b038116811461383757600080fd5b919050565b6000806040838503121561384f57600080fd5b61385883613820565b946020939093013593505050565b6000806020838503121561387957600080fd5b823567ffffffffffffffff8082111561389157600080fd5b818501915085601f8301126138a557600080fd5b8135818111156138b457600080fd5b8660208285010111156138c657600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156139195783516001600160a01b0316835292840192918401916001016138f4565b50909695505050505050565b8035801515811461383757600080fd5b600067ffffffffffffffff82111561394f5761394f613665565b50601f01601f191660200190565b600082601f83011261396e57600080fd5b813561397c6136f182613935565b81815284602083860101111561399157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156139c657600080fd5b6139cf86613820565b94506139dd60208701613820565b9350604086013592506139f260608701613925565b9150608086013567ffffffffffffffff811115613a0e57600080fd5b613a1a8882890161395d565b9150509295509295909350565b60008083601f840112613a3957600080fd5b50813567ffffffffffffffff811115613a5157600080fd5b6020830191508360208260051b8501011115613a6c57600080fd5b9250929050565b60008060208385031215613a8657600080fd5b823567ffffffffffffffff811115613a9d57600080fd5b613aa985828601613a27565b90969095509350505050565b600060208284031215613ac757600080fd5b610a9c82613820565b600082601f830112613ae157600080fd5b81356020613af16136f1836136ac565b8083825260208201915060208460051b870101935086841115613b1357600080fd5b602086015b8481101561373457613b2981613820565b8352918301918301613b18565b600082601f830112613b4757600080fd5b81356020613b576136f1836136ac565b8083825260208201915060208460051b870101935086841115613b7957600080fd5b602086015b8481101561373457613b8f81613925565b8352918301918301613b7e565b600082601f830112613bad57600080fd5b81356020613bbd6136f1836136ac565b82815260059290921b84018101918181019086841115613bdc57600080fd5b8286015b8481101561373457803567ffffffffffffffff811115613c005760008081fd5b613c0e8986838b010161395d565b845250918301918301613be0565b600080600080600060a08688031215613c3457600080fd5b853567ffffffffffffffff80821115613c4c57600080fd5b613c5889838a01613ad0565b96506020880135915080821115613c6e57600080fd5b613c7a89838a01613ad0565b95506040880135915080821115613c9057600080fd5b613c9c89838a016136d0565b94506060880135915080821115613cb257600080fd5b613cbe89838a01613b36565b93506080880135915080821115613cd457600080fd5b50613a1a88828901613b9c565b60008060408385031215613cf457600080fd5b82359150602083013567ffffffffffffffff811115613d1257600080fd5b6137998582860161395d565b600080600060608486031215613d3357600080fd5b613d3c84613820565b925060208401359150604084013567ffffffffffffffff811115613d5f57600080fd5b613d6b8682870161395d565b9150509250925092565b60008060008060808587031215613d8b57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215613dba57600080fd5b823567ffffffffffffffff80821115613dd257600080fd5b613dde868387016136d0565b93506020850135915080821115613df457600080fd5b5061379985828601613b9c565b60008151808452602080850194506020840160005b83811015613e3257815187529582019590820190600101613e16565b509495945050505050565b602081526000610a9c6020830184613e01565b600080600060608486031215613e6557600080fd5b833567ffffffffffffffff80821115613e7d57600080fd5b613e89878388016136d0565b94506020860135915080821115613e9f57600080fd5b613eab878388016136d0565b93506040860135915080821115613ec157600080fd5b50613d6b86828701613b9c565b600080600060608486031215613ee357600080fd5b8335925060208401359150604084013567ffffffffffffffff811115613d5f57600080fd5b60008060008060808587031215613f1e57600080fd5b613f2785613820565b935060208501359250613f3c60408601613925565b9150606085013567ffffffffffffffff811115613f5857600080fd5b613f648782880161395d565b91505092959194509250565b600060208284031215613f8257600080fd5b813567ffffffffffffffff811115613f9957600080fd5b6126e3848285016136d0565b803560ff8116811461383757600080fd5b60008060008060008060008060e0898b031215613fd257600080fd5b883567ffffffffffffffff811115613fe957600080fd5b613ff58b828c01613a27565b9099509750506020890135955061400e60408a01613820565b94506060890135935061402360808a01613fa5565b925060a0890135915060c089013590509295985092959890939650565b600080600080600060a0868803121561405857600080fd5b61406186613820565b94506020860135935061407660408701613fa5565b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516140d0818460208701613602565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061410457607f821691505b60208210810361183957634e487b7160e01b600052602260045260246000fd5b601f82111561130d576000816000526020600020601f850160051c8101602086101561414d5750805b601f850160051c820191505b8181101561113357828155600101614159565b67ffffffffffffffff83111561418457614184613665565b6141988361419283546140f0565b83614124565b6000601f8411600181146141cc57600085156141b45750838201355b600019600387901b1c1916600186901b178355610cab565b600083815260209020601f19861690835b828110156141fd57868501358255602094850194600190920191016141dd565b508682101561421a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e1984360301811261424357600080fd5b83018035915067ffffffffffffffff82111561425e57600080fd5b602001915036819003821315613a6c57600080fd5b8183823760009101908152919050565b6001600160a01b038516815283602082015282151560408201526080606082015260006142b36080830184613626565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a2b57610a2b6142bd565b805160208201516bffffffffffffffffffffffff19808216929190601483101561431a5780818460140360031b1b83161693505b505050919050565b6001600160a01b0384168152821515602082015260606040820152600061434c6060830184613626565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526127cc60a0830184613626565b815167ffffffffffffffff8111156143a9576143a9613665565b6143bd816143b784546140f0565b84614124565b602080601f8311600181146143f257600084156143da5750858301515b600019600386901b1c1916600185901b178555611133565b600085815260208120601f198616915b8281101561442157888601518255948401946001909101908401614402565b508582101561443f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006126e36040830184613626565b8281526040602082015260006126e36040830184613626565b80820180821115610a2b57610a2b6142bd565b8082028115828204841417610a2b57610a2b6142bd565b6000602082840312156144bf57600080fd5b5051919050565b805160208083015191908110156118395760001960209190910360031b1b16919050565b6000602082840312156144fc57600080fd5b815167ffffffffffffffff81111561451357600080fd5b8201601f8101841361452457600080fd5b80516145326136f182613935565b81815285602083850101111561454757600080fd5b61434c826020830160208601613602565b634e487b7160e01b600052601260045260246000fd5b60008261457d5761457d614558565b500490565b60008261459157614591614558565b500690565b6040815260006145a96040830185613e01565b90508260208301529392505050565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6000600182016145f6576145f66142bd565b506001019056fea2646970667358221220fd84b54bcd00607a2a0c5f318db38f975197e3863d5af445bcf41d09e573788864736f6c63430008160033 diff --git a/artifacts/bytecode/4201/drops/LSP8DropsLightAsset.bin b/artifacts/bytecode/4201/drops/LSP8DropsLightAsset.bin index be58f73..db0feb1 100644 --- a/artifacts/bytecode/4201/drops/LSP8DropsLightAsset.bin +++ b/artifacts/bytecode/4201/drops/LSP8DropsLightAsset.bin @@ -1 +1 @@ -0x6101206040523480156200001257600080fd5b506040516200473638038062004736833981016040819052620000359162000579565b84848483858c8c8c6001600084848484816001600160a01b0381166200006e576040516306b620db60e21b815260040160405180910390fd5b6200007981620002f5565b506040805180820190915260048152632936598960e21b6020820152620000c2907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c9062000363565b620000ee7fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af18562000363565b6200011a7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db9327568462000363565b604080516020810183905262000163917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f1981840301815291905262000363565b50506040805160208101859052620001b093507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003bc565b505050505080600003620001d75760405163038d9fc360e41b815260040160405180910390fd5b6080526001600955604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af415801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b919062000656565b62000285576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002a357506001600160a01b038216155b15620002c25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c05250620008139650505050505050565b6000546001600160a01b038281169116146200036057600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200037d828262000712565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003b09190620007de565b60405180910390a25050565b620003c88282620003cc565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016200040d576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200044e57604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036357604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004c2578181015183820152602001620004a8565b50506000910152565b600082601f830112620004dd57600080fd5b81516001600160401b0380821115620004fa57620004fa6200048f565b604051601f8301601f19908116603f011681019082821181831017156200052557620005256200048f565b816040528381528660208588010111156200053f57600080fd5b62000552846020830160208901620004a5565b9695505050505050565b80516001600160a01b03811681146200057457600080fd5b919050565b600080600080600080600080610100898b0312156200059757600080fd5b88516001600160401b0380821115620005af57600080fd5b620005bd8c838d01620004cb565b995060208b0151915080821115620005d457600080fd5b50620005e38b828c01620004cb565b975050620005f460408a016200055c565b95506200060460608a016200055c565b94506200061460808a016200055c565b93506200062460a08a016200055c565b925060c0890151915060e089015163ffffffff811681146200064557600080fd5b809150509295985092959890939650565b6000602082840312156200066957600080fd5b815180151581146200067a57600080fd5b9392505050565b600181811c908216806200069657607f821691505b602082108103620006b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200070d576000816000526020600020601f850160051c81016020861015620006e85750805b601f850160051c820191505b818110156200070957828155600101620006f4565b5050505b505050565b81516001600160401b038111156200072e576200072e6200048f565b62000746816200073f845462000681565b84620006bd565b602080601f8311600181146200077e5760008415620007655750858301515b600019600386901b1c1916600185901b17855562000709565b600085815260208120601f198616915b82811015620007af578886015182559484019460019091019084016200078e565b5085821015620007ce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620007ff816040850160208701620004a5565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161010051613ebb6200087b600039600081816104050152611697015260008181610721015261182a01526000818161048f015261173f01526000818161045b01526117dd0152600081816105220152612d480152613ebb6000f3fe6080604052600436106102385760003560e01c80637e87632c11610138578063be9f0e6f116100b0578063dd5ffa1e1161007f578063f2fde38b11610064578063f2fde38b146107b8578063f31a4faf146107d8578063fc6180711461080e576102ac565b8063dd5ffa1e14610783578063dedff9c614610798576102ac565b8063be9f0e6f146106ef578063d598d4c91461070f578063d6c1407c14610743578063db8c966314610763576102ac565b806392a91a3a1161010757806397902421116100ec578063979024211461068f578063a3b261f2146106a2578063aad3ec96146106cf576102ac565b806392a91a3a1461062c578063942cd44b14610659576102ac565b80637e87632c146105bb5780637f23690c146105db57806386a10ddd146105ee5780638da5cb5b1461060e576102ac565b806338af3eed116101cb57806352058d8a1161019a5780636963d4381161017f5780636963d4381461056657806370a0823114610586578063715018a6146105a6576102ac565b806352058d8a1461051357806354f6127f14610546576102ac565b806338af3eed146104495780633c3e8ae31461047d57806349a6078d146104c6578063511b6952146104f3576102ac565b8063217b227011610207578063217b22701461039b5780632a3654a4146103d35780632b7ac3f3146103f357806337e3f8dc14610427576102ac565b806301ffc9a7146102ed57806316e023b31461032257806318160ddd1461034f5780631d26fce61461036e576102ac565b366102ac573460000361027a5760405163e5099ee360e01b81526004016102719060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156102d757828260405163e5099ee360e01b8152600401610271929190612f4d565b6102e18383610821565b80519350602001915050f35b3480156102f957600080fd5b5061030d610308366004612f7c565b610930565b60405190151581526020015b60405180910390f35b34801561032e57600080fd5b5061034261033d366004612fa6565b61097d565b6040516103199190613018565b34801561035b57600080fd5b506002545b604051908152602001610319565b34801561037a57600080fd5b5061038e610389366004613105565b610990565b6040516103199190613169565b3480156103a757600080fd5b506103bb6103b63660046131cd565b610a56565b6040516001600160a01b039091168152602001610319565b3480156103df57600080fd5b5061030d6103ee366004613202565b610a8f565b3480156103ff57600080fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043357600080fd5b5061044761044236600461322c565b610aa4565b005b34801561045557600080fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048957600080fd5b506104b17f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610319565b3480156104d257600080fd5b506104e66104e13660046131cd565b610af7565b604051610319919061329e565b3480156104ff57600080fd5b5061044761050e366004613374565b610b19565b34801561051f57600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610360565b34801561055257600080fd5b506103426105613660046131cd565b610b76565b34801561057257600080fd5b5061038e6105813660046133ed565b610b81565b34801561059257600080fd5b506103606105a1366004613450565b610cca565b3480156105b257600080fd5b50610447610cd5565b3480156105c757600080fd5b506104476105d63660046135b7565b610ce9565b6104476105e936600461367c565b610df1565b3480156105fa57600080fd5b506104476106093660046136b9565b610e26565b34801561061a57600080fd5b506000546001600160a01b03166103bb565b34801561063857600080fd5b506103606106473660046131cd565b60009081526007602052604090205490565b34801561066557600080fd5b50610360610674366004613450565b6001600160a01b03166000908152600a602052604090205490565b61044761069d366004613710565b610fb9565b3480156106ae57600080fd5b506106c26106bd366004613450565b6110ab565b60405161031991906137a6565b3480156106db57600080fd5b506104476106ea366004613202565b6110cf565b3480156106fb57600080fd5b5061044761070a3660046137b9565b6112ab565b34801561071b57600080fd5b506103bb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561074f57600080fd5b5061044761075e366004613837565b6113a8565b34801561076f57600080fd5b5061044761077e366004613871565b6113bb565b34801561078f57600080fd5b5061034261148f565b3480156107a457600080fd5b5061038e6107b33660046138d9565b61151d565b3480156107c457600080fd5b506104476107d3366004613450565b6115c8565b3480156107e457600080fd5b506103606107f3366004613450565b6001600160a01b03166000908152600b602052604090205490565b61044761081c36600461390e565b61161c565b6060600061083a6000356001600160e01b031916611886565b5090506001600160a01b03811661088b576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610271565b600080826001600160a01b031634878733346040516020016108b09493929190613964565b60408051601f19818403018152908290526108ca91613994565b60006040518083038185875af1925050503d8060008114610907576040519150601f19603f3d011682016040523d82523d6000602084013e61090c565b606091505b5091509150811561092157925061092a915050565b80518060208301fd5b92915050565b60006001600160e01b031982167f3a27170600000000000000000000000000000000000000000000000000000000148061096e575061096e82611930565b8061092a575061092a8261196e565b606061098983836119a5565b9392505050565b6060825167ffffffffffffffff8111156109ac576109ac61302b565b6040519080825280602002602001820160405280156109df57816020015b60608152602001906001900390816109ca5790505b50905060005b8351811015610a4f57610a2a848281518110610a0357610a036139b0565b6020026020010151848381518110610a1d57610a1d6139b0565b60200260200101516119a5565b828281518110610a3c57610a3c6139b0565b60209081029190910101526001016109e5565b5092915050565b6000818152600360205260408120546001600160a01b03168061092a57604051635747cd1b60e11b815260048101849052602401610271565b6000610a9a82611aba565b6109898383611af2565b610aac611b2f565b600c610ab9828483613a42565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610aeb929190612f4d565b60405180910390a15050565b6060610b0282611aba565b600082815260056020526040902061092a90611b84565b610b233384611af2565b610b62576040517f1294d2a900000000000000000000000000000000000000000000000000000000815260048101849052336024820152604401610271565b610b6f8585858585611b91565b5050505050565b606061092a82611d7f565b60608167ffffffffffffffff811115610b9c57610b9c61302b565b604051908082528060200260200182016040528015610bcf57816020015b6060815260200190600190039081610bba5790505b50905060005b82811015610a4f5760008030868685818110610bf357610bf36139b0565b9050602002810190610c059190613b02565b604051610c13929190613b50565b600060405180830381855af49150503d8060008114610c4e576040519150601f19603f3d011682016040523d82523d6000602084013e610c53565b606091505b509150915081610ca257805115610c6d5780518082602001fd5b6040517f234eb81900000000000000000000000000000000000000000000000000000000815260048101849052602401610271565b80848481518110610cb557610cb56139b0565b60209081029190910101525050600101610bd5565b600061092a82611e21565b610cdd611b2f565b610ce76000611e42565b565b8451845181141580610cfc575083518114155b80610d08575082518114155b80610d14575081518114155b15610d4b576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610de857610de0878281518110610d6b57610d6b6139b0565b6020026020010151878381518110610d8557610d856139b0565b6020026020010151878481518110610d9f57610d9f6139b0565b6020026020010151878581518110610db957610db96139b0565b6020026020010151878681518110610dd357610dd36139b0565b6020026020010151610b19565b600101610d4e565b50505050505050565b610df9611b2f565b3415610e185760405163f36ba73760e01b815260040160405180910390fd5b610e228282611ebd565b5050565b6000610e3183610a56565b90506001600160a01b0381163314610e7457604051632d938f5160e11b81526001600160a01b038216600482015260248101849052336044820152606401610271565b6001600160a01b038416610e9b57604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b031603610ecd576040516344fed6b160e11b815260040160405180910390fd5b6000838152600560205260408120610ee59086611f20565b905080610f30576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101859052604401610271565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc23667121586604051610f749190613018565b60405180910390a460003385600186604051602001610f969493929190613b60565b6040516020818303038152906040529050610fb18682611f35565b505050505050565b610fc1611b2f565b3415610fe05760405163f36ba73760e01b815260040160405180910390fd5b805182511461101b576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600003611056576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156110a65761109e838281518110611077576110776139b0565b6020026020010151838381518110611091576110916139b0565b6020026020010151611ebd565b600101611059565b505050565b6001600160a01b038116600090815260046020526040902060609061092a90611b84565b6110d7611f60565b6001600160a01b038216611117576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003611151576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600a60205260409020548181101561119e576040517fffb97f8100000000000000000000000000000000000000000000000000000000815260048101839052602401610271565b336000908152600a6020526040812080548492906111bd908490613bb0565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461120d576040519150601f19603f3d011682016040523d82523d6000602084013e611212565b606091505b505090508061125f576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101849052604401610271565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610e226001600955565b6112b3611b2f565b815183511415806112c657508051825114155b156112fd576040517f2fa71dfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251600003611338576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156113a25761139a848281518110611359576113596139b0565b6020026020010151848381518110611373576113736139b0565b602002602001015184848151811061138d5761138d6139b0565b6020026020010151611fb9565b60010161133b565b50505050565b6113b0611b2f565b6110a6838383611fb9565b60006113c684610a56565b90506001600160a01b038116331461140957604051632d938f5160e11b81526001600160a01b038216600482015260248101859052336044820152606401610271565b6001600160a01b03851661143057604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b031603611462576040516344fed6b160e11b815260040160405180910390fd5b61146f8582868686612049565b8215610b6f5760003385600085604051602001610f969493929190613b60565b600c805461149c906139c6565b80601f01602080910402602001604051908101604052809291908181526020018280546114c8906139c6565b80156115155780601f106114ea57610100808354040283529160200191611515565b820191906000526020600020905b8154815290600101906020018083116114f857829003601f168201915b505050505081565b6060815167ffffffffffffffff8111156115395761153961302b565b60405190808252806020026020018201604052801561156c57816020015b60608152602001906001900390816115575790505b50905060005b82518110156115c25761159d838281518110611590576115906139b0565b6020026020010151611d7f565b8282815181106115af576115af6139b0565b6020908102919091010152600101611572565b50919050565b6115d0611b2f565b6001600160a01b038116611610576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61161981611e42565b50565b611624611f60565b34600030468861163381612102565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166116cb82878787612131565b6001600160a01b03161461170b576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af41580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190613bc3565b90506117d38184613bb0565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a60205260408120805490919061181b908490613bdc565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a602052604081208054839290611868908490613bdc565b909155506118799050888885612159565b505050610b6f6001600955565b600080806118be7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612294565b905060006118cb82611d7f565b905080516014141580156118df5750805115155b1561191857806040517f42bfe79f0000000000000000000000000000000000000000000000000000000081526004016102719190613018565b61192181613bef565b60601c95600195509350505050565b60006001600160e01b031982167fa918fa6b00000000000000000000000000000000000000000000000000000000148061092a575061092a82612305565b6000806119816301ffc9a760e01b611886565b5090506001600160a01b03811661199b5750600092915050565b6109898184612353565b606060006119b384846123f1565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e831480156119e357508051155b15610989576000611a137f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611d7f565b90508051600003611ab257600c8054611a2b906139c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611a57906139c6565b8015611aa45780601f10611a7957610100808354040283529160200191611aa4565b820191906000526020600020905b815481529060010190602001808311611a8757829003601f168201915b50505050509250505061092a565b509392505050565b6000818152600360205260409020546001600160a01b031661161957604051635747cd1b60e11b815260048101829052602401610271565b6000611afd82610a56565b6001600160a01b0316836001600160a01b031614806109895750600082815260056020526040902061098990846124c8565b33611b426000546001600160a01b031690565b6001600160a01b031614610ce7576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610271565b60606000610989836124ea565b836001600160a01b0316856001600160a01b031603611bdc576040517f5d67d6c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611be784610a56565b9050856001600160a01b0316816001600160a01b031614611c3557604051632d938f5160e11b81526001600160a01b0380831660048301526024820186905287166044820152606401610271565b6001600160a01b038516611c5c576040516324ecef4d60e01b815260040160405180910390fd5b611c6886868685612545565b611c7184610a56565b9050611c7d8685612551565b6001600160a01b0386166000908152600460205260409020611c9f90856125a9565b506001600160a01b0385166000908152600460205260409020611cc290856125b5565b5060008481526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0388811691821790925591518692918916907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90611d3690339089908990613c2b565b60405180910390a460003387878786604051602001611d59959493929190613c5e565b6040516020818303038152906040529050611d7487826125c1565b610de88685836125ec565b6000818152600160205260409020805460609190611d9c906139c6565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc8906139c6565b8015611e155780601f10611dea57610100808354040283529160200191611e15565b820191906000526020600020905b815481529060010190602001808311611df857829003601f168201915b50505050509050919050565b6001600160a01b038116600090815260046020526040812061092a90612726565b6000546001600160a01b0382811691161461161957600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e738201611f16576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e228282612730565b6000610989836001600160a01b03841661273a565b610e22827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f0097083612789565b600260095403611fb25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610271565b6002600955565b80600160008585604051602001611fda929190918252602082015260400190565b604051602081830303815290604052805190602001208152602001908152602001600020908161200a9190613c98565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb8360405161203c9190613018565b60405180910390a3505050565b600083815260056020526040812061206190876127d6565b9050806120ac576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101859052604401610271565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c86866040516120f2929190613d58565b60405180910390a4505050505050565b6001600160a01b0381166000908152600b602052604081208054908261212783613d73565b9091555092915050565b6000806000612142878787876127eb565b9150915061214f816128af565b5095945050505050565b60008267ffffffffffffffff8111156121745761217461302b565b60405190808252806020026020018201604052801561219d578160200160208202803683370190505b5090506000600d5460016121b19190613bdc565b905083600d60008282546121c59190613bdc565b90915550600090505b84811015612208576121e08183613bdc565b60001b8382815181106121f5576121f56139b0565b60209081029190910101526001016121ce565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612244929190613d8c565b60405180910390a260005b84811015610fb15761228c8684838151811061226d5761226d6139b0565b6020026020010151600160405180602001604052806000815250612a14565b60010161224f565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c830152918291016040516020818303038152906040529050806122fd90613dae565b949350505050565b60006001600160e01b031982167f629aa69400000000000000000000000000000000000000000000000000000000148061092a57506301ffc9a760e01b6001600160e01b031983161461092a565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d915060005190508280156123da575060208210155b80156123e65750600081115b979650505050505050565b6060600160008484604051602001612413929190918252602082015260400190565b6040516020818303038152906040528051906020012081526020019081526020016000208054612442906139c6565b80601f016020809104026020016040519081016040528092919081815260200182805461246e906139c6565b80156124bb5780601f10612490576101008083540402835291602001916124bb565b820191906000526020600020905b81548152906001019060200180831161249e57829003601f168201915b5050505050905092915050565b6001600160a01b03811660009081526001830160205260408120541515610989565b606081600001805480602002602001604051908101604052809291908181526020018280548015611e1557602002820191906000526020600020905b8154815260200190600101908083116125265750505050509050919050565b6113a284848484612a20565b60008181526005602052604081209061256982612726565b90506000805b82811015610fb157612582846000612ae7565b91506125a1828787600060405180602001604052806000815250612049565b60010161256f565b60006109898383612af3565b6000610989838361273a565b610e22827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab0083612789565b6125fd83631aed5a8560e21b612353565b1561269757604051631aed5a8560e21b81526001600160a01b03841690636bb56a1490612650907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401613dd2565b6000604051808303816000875af115801561266f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113a29190810190613deb565b816110a6576001600160a01b0383163b156126e9576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610271565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610271565b600061092a825490565b610e228282612be6565b60008181526001830160205260408120546127815750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561092a565b50600061092a565b6127a36001600160a01b038416631aed5a8560e21b612353565b156110a657604051631aed5a8560e21b81526001600160a01b03841690636bb56a14906126509085908590600401613dd2565b6000610989836001600160a01b038416612af3565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561282257506000905060036128a6565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612876573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661289f576000600192509250506128a6565b9150600090505b94509492505050565b60008160048111156128c3576128c3613e59565b036128cb5750565b60018160048111156128df576128df613e59565b0361292c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610271565b600281600481111561294057612940613e59565b0361298d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610271565b60038160048111156129a1576129a1613e59565b036116195760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610271565b6113a284848484612d46565b6001600160a01b038416612a5a576000612a3960025490565b60008181526007602090815260408083208790558683526008909152902055505b6001600160a01b038316612ae25760006001612a7560025490565b612a7f9190613bb0565b60008481526008602052604090205490915081811015612ac1576000828152600760209081526040808320548484528184208190558352600890915290208190555b50600090815260076020908152604080832083905584835260089091528120555b6113a2565b60006109898383612db9565b60008181526001830160205260408120548015612bdc576000612b17600183613bb0565b8554909150600090612b2b90600190613bb0565b9050818114612b90576000866000018281548110612b4b57612b4b6139b0565b9060005260206000200154905080876000018481548110612b6e57612b6e6139b0565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ba157612ba1613e6f565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061092a565b600091505061092a565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f8201612c3f576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa8201612c98576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201612cf1576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600160205260409020612d098282613c98565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051612d3a9190613018565b60405180910390a25050565b7f0000000000000000000000000000000000000000000000000000000000000000600254612d75906001613bdc565b1115612dad576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113a284848484612de3565b6000826000018281548110612dd057612dd06139b0565b9060005260206000200154905092915050565b6001600160a01b038416612e0a576040516324ecef4d60e01b815260040160405180910390fd5b612e176000858584612545565b6000838152600360205260409020546001600160a01b031615612e69576040517f34c7b51100000000000000000000000000000000000000000000000000000000815260048101849052602401610271565b600260008154612e7890613d73565b909155506001600160a01b0384166000908152600460205260409020612e9e90846125b5565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90612f0d90339088908890613c2b565b60405180910390a46000336000868685604051602001612f31959493929190613c5e565b6040516020818303038152906040529050610b6f8584836125ec565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215612f8e57600080fd5b81356001600160e01b03198116811461098957600080fd5b60008060408385031215612fb957600080fd5b50508035926020909101359150565b60005b83811015612fe3578181015183820152602001612fcb565b50506000910152565b60008151808452613004816020860160208601612fc8565b601f01601f19169290920160200192915050565b6020815260006109896020830184612fec565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561306a5761306a61302b565b604052919050565b600067ffffffffffffffff82111561308c5761308c61302b565b5060051b60200190565b600082601f8301126130a757600080fd5b813560206130bc6130b783613072565b613041565b8083825260208201915060208460051b8701019350868411156130de57600080fd5b602086015b848110156130fa57803583529183019183016130e3565b509695505050505050565b6000806040838503121561311857600080fd5b823567ffffffffffffffff8082111561313057600080fd5b61313c86838701613096565b9350602085013591508082111561315257600080fd5b5061315f85828601613096565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156131c057603f198886030184526131ae858351612fec565b94509285019290850190600101613192565b5092979650505050505050565b6000602082840312156131df57600080fd5b5035919050565b80356001600160a01b03811681146131fd57600080fd5b919050565b6000806040838503121561321557600080fd5b61321e836131e6565b946020939093013593505050565b6000806020838503121561323f57600080fd5b823567ffffffffffffffff8082111561325757600080fd5b818501915085601f83011261326b57600080fd5b81358181111561327a57600080fd5b86602082850101111561328c57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156132df5783516001600160a01b0316835292840192918401916001016132ba565b50909695505050505050565b803580151581146131fd57600080fd5b600067ffffffffffffffff8211156133155761331561302b565b50601f01601f191660200190565b600082601f83011261333457600080fd5b81356133426130b7826132fb565b81815284602083860101111561335757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561338c57600080fd5b613395866131e6565b94506133a3602087016131e6565b9350604086013592506133b8606087016132eb565b9150608086013567ffffffffffffffff8111156133d457600080fd5b6133e088828901613323565b9150509295509295909350565b6000806020838503121561340057600080fd5b823567ffffffffffffffff8082111561341857600080fd5b818501915085601f83011261342c57600080fd5b81358181111561343b57600080fd5b8660208260051b850101111561328c57600080fd5b60006020828403121561346257600080fd5b610989826131e6565b600082601f83011261347c57600080fd5b8135602061348c6130b783613072565b8083825260208201915060208460051b8701019350868411156134ae57600080fd5b602086015b848110156130fa576134c4816131e6565b83529183019183016134b3565b600082601f8301126134e257600080fd5b813560206134f26130b783613072565b8083825260208201915060208460051b87010193508684111561351457600080fd5b602086015b848110156130fa5761352a816132eb565b8352918301918301613519565b600082601f83011261354857600080fd5b813560206135586130b783613072565b82815260059290921b8401810191818101908684111561357757600080fd5b8286015b848110156130fa57803567ffffffffffffffff81111561359b5760008081fd5b6135a98986838b0101613323565b84525091830191830161357b565b600080600080600060a086880312156135cf57600080fd5b853567ffffffffffffffff808211156135e757600080fd5b6135f389838a0161346b565b9650602088013591508082111561360957600080fd5b61361589838a0161346b565b9550604088013591508082111561362b57600080fd5b61363789838a01613096565b9450606088013591508082111561364d57600080fd5b61365989838a016134d1565b9350608088013591508082111561366f57600080fd5b506133e088828901613537565b6000806040838503121561368f57600080fd5b82359150602083013567ffffffffffffffff8111156136ad57600080fd5b61315f85828601613323565b6000806000606084860312156136ce57600080fd5b6136d7846131e6565b925060208401359150604084013567ffffffffffffffff8111156136fa57600080fd5b61370686828701613323565b9150509250925092565b6000806040838503121561372357600080fd5b823567ffffffffffffffff8082111561373b57600080fd5b61374786838701613096565b9350602085013591508082111561375d57600080fd5b5061315f85828601613537565b60008151808452602080850194506020840160005b8381101561379b5781518752958201959082019060010161377f565b509495945050505050565b602081526000610989602083018461376a565b6000806000606084860312156137ce57600080fd5b833567ffffffffffffffff808211156137e657600080fd5b6137f287838801613096565b9450602086013591508082111561380857600080fd5b61381487838801613096565b9350604086013591508082111561382a57600080fd5b5061370686828701613537565b60008060006060848603121561384c57600080fd5b8335925060208401359150604084013567ffffffffffffffff8111156136fa57600080fd5b6000806000806080858703121561388757600080fd5b613890856131e6565b9350602085013592506138a5604086016132eb565b9150606085013567ffffffffffffffff8111156138c157600080fd5b6138cd87828801613323565b91505092959194509250565b6000602082840312156138eb57600080fd5b813567ffffffffffffffff81111561390257600080fd5b6122fd84828501613096565b600080600080600060a0868803121561392657600080fd5b61392f866131e6565b945060208601359350604086013560ff8116811461394c57600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b600082516139a6818460208701612fc8565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806139da57607f821691505b6020821081036115c257634e487b7160e01b600052602260045260246000fd5b601f8211156110a6576000816000526020600020601f850160051c81016020861015613a235750805b601f850160051c820191505b81811015610fb157828155600101613a2f565b67ffffffffffffffff831115613a5a57613a5a61302b565b613a6e83613a6883546139c6565b836139fa565b6000601f841160018114613aa25760008515613a8a5750838201355b600019600387901b1c1916600186901b178355610b6f565b600083815260209020601f19861690835b82811015613ad35786850135825560209485019460019092019101613ab3565b5086821015613af05760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e19843603018112613b1957600080fd5b83018035915067ffffffffffffffff821115613b3457600080fd5b602001915036819003821315613b4957600080fd5b9250929050565b8183823760009101908152919050565b6001600160a01b03851681528360208201528215156040820152608060608201526000613b906080830184612fec565b9695505050505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561092a5761092a613b9a565b600060208284031215613bd557600080fd5b5051919050565b8082018082111561092a5761092a613b9a565b805160208201516bffffffffffffffffffffffff198082169291906014831015613c235780818460140360031b1b83161693505b505050919050565b6001600160a01b03841681528215156020820152606060408201526000613c556060830184612fec565b95945050505050565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a060808301526123e660a0830184612fec565b815167ffffffffffffffff811115613cb257613cb261302b565b613cc681613cc084546139c6565b846139fa565b602080601f831160018114613cfb5760008415613ce35750858301515b600019600386901b1c1916600185901b178555610fb1565b600085815260208120601f198616915b82811015613d2a57888601518255948401946001909101908401613d0b565b5085821015613d485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b82151581526040602082015260006122fd6040830184612fec565b600060018201613d8557613d85613b9a565b5060010190565b604081526000613d9f604083018561376a565b90508260208301529392505050565b805160208083015191908110156115c25760001960209190910360031b1b16919050565b8281526040602082015260006122fd6040830184612fec565b600060208284031215613dfd57600080fd5b815167ffffffffffffffff811115613e1457600080fd5b8201601f81018413613e2557600080fd5b8051613e336130b7826132fb565b818152856020838501011115613e4857600080fd5b613c55826020830160208601612fc8565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220e8151e70641ccb0b2e6545ee0506f55891ea2a371f1fbe17185cd31c6c9310d364736f6c63430008160033 +0x6101206040523480156200001257600080fd5b506040516200599638038062005996833981016040819052620000359162000583565b84848483858c8c8c60016000848484848484848484816001600160a01b03811662000073576040516306b620db60e21b815260040160405180910390fd5b6200007e81620002ff565b506040805180820190915260048152632936598960e21b6020820152620000c7907feafec4d89fa9619884b60000a4d96624a38f7ac2d8d9a604ecf07c12c77e480c906200036d565b620000f37fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1856200036d565b6200011f7f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756846200036d565b604080516020810183905262000168917fe0261fa95db2eb3b5439bd033cda66d56b96f92f243a8228fd87550ed7bdfdb3910160408051601f198184030181529190526200036d565b50506040805160208101859052620001b593507ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d92500160408051601f19818403018152919052620003c6565b5050505050505050505080600003620001e15760405163038d9fc360e41b815260040160405180910390fd5b6080526001600a55604051633c7bdc1960e01b815263ffffffff82166004820152733582f474f6e9fb087651b135d6224500a89e6f4490633c7bdc1990602401602060405180830381865af41580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000265919062000660565b6200028f576040516363a0a0e760e01b815263ffffffff8216600482015260240160405180910390fd5b6001600160a01b0383161580620002ad57506001600160a01b038216155b15620002cc5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a05291831660e0529091166101005263ffffffff1660c052506200081d9650505050505050565b6000546001600160a01b038281169116146200036a57600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0383161790555b50565b60008281526001602052604090206200038782826200071c565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b282604051620003ba9190620007e8565b60405180910390a25050565b620003d28282620003d6565b5050565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f820162000417576040516385c169bd60e01b815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016200045857604051630eceab6760e31b815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d82016200036d57604051634ef6d7fb60e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004cc578181015183820152602001620004b2565b50506000910152565b600082601f830112620004e757600080fd5b81516001600160401b038082111562000504576200050462000499565b604051601f8301601f19908116603f011681019082821181831017156200052f576200052f62000499565b816040528381528660208588010111156200054957600080fd5b6200055c846020830160208901620004af565b9695505050505050565b80516001600160a01b03811681146200057e57600080fd5b919050565b600080600080600080600080610100898b031215620005a157600080fd5b88516001600160401b0380821115620005b957600080fd5b620005c78c838d01620004d5565b995060208b0151915080821115620005de57600080fd5b50620005ed8b828c01620004d5565b975050620005fe60408a0162000566565b95506200060e60608a0162000566565b94506200061e60808a0162000566565b93506200062e60a08a0162000566565b925060c0890151915060e089015163ffffffff811681146200064f57600080fd5b809150509295985092959890939650565b6000602082840312156200067357600080fd5b815180151581146200068457600080fd5b9392505050565b600181811c90821680620006a057607f821691505b602082108103620006c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000717576000816000526020600020601f850160051c81016020861015620006f25750805b601f850160051c820191505b818110156200071357828155600101620006fe565b5050505b505050565b81516001600160401b0381111562000738576200073862000499565b62000750816200074984546200068b565b84620006c7565b602080601f8311600181146200078857600084156200076f5750858301515b600019600386901b1c1916600185901b17855562000713565b600085815260208120601f198616915b82811015620007b95788860151825594840194600190910190840162000798565b5085821015620007d85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000809816040850160208701620004af565b601f01601f19169190910160400192915050565b60805160a05160c05160e05161010051615111620008856000396000818161055f0152611af401526000818161096e0152611c870152600081816106070152611b9c0152600081816105d30152611c3a0152600081816106da0152613a8a01526151116000f3fe6080604052600436106103175760003560e01c8063715018a61161019a578063b88d4fde116100e1578063dd5ffa1e1161008a578063f2fde38b11610064578063f2fde38b14610a4e578063f31a4faf14610a6e578063fc61807114610aa45761038b565b8063dd5ffa1e146109d0578063dedff9c6146109e5578063e985e9c514610a055761038b565b8063d598d4c9116100bb578063d598d4c91461095c578063d6c1407c14610990578063db8c9663146109b05761038b565b8063b88d4fde146108fc578063be9f0e6f1461091c578063c87b56dd1461093c5761038b565b8063942cd44b11610143578063a22cb4651161011d578063a22cb4651461088f578063a3b261f2146108af578063aad3ec96146108dc5761038b565b8063942cd44b1461083157806395d89b4114610867578063979024211461087c5761038b565b806386a10ddd1161017457806386a10ddd146107c65780638da5cb5b146107e657806392a91a3a146108045761038b565b8063715018a61461077e5780637e87632c146107935780637f23690c146107b35761038b565b806337e3f8dc1161025e578063511b6952116102075780636352211e116101e15780636352211e1461071e5780636963d4381461073e57806370a082311461075e5761038b565b8063511b6952146106ab57806352058d8a146106cb57806354f6127f146106fe5761038b565b806342842e0e1161023857806342842e0e1461063e57806349a6078d1461065e5780634f6ccce71461068b5761038b565b806337e3f8dc146105a157806338af3eed146105c15780633c3e8ae3146105f55761038b565b80631d26fce6116102c05780632a3654a41161029a5780632a3654a41461052d5780632b7ac3f31461054d5780632f745c59146105815761038b565b80631d26fce6146104c0578063217b2270146104ed57806323b872dd1461050d5761038b565b8063095ea7b3116102f1578063095ea7b31461045b57806316e023b31461047d57806318160ddd1461049d5761038b565b806301ffc9a7146103cc57806306fdde0314610401578063081812fc146104235761038b565b3661038b57346000036103595760405163e5099ee360e01b81526004016103509060208082526004908201526000604082015260600190565b60405180910390fd5b6040517f61f4944200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600036606060048210156103b657828260405163e5099ee360e01b8152600401610350929190614030565b6103c08383610ab7565b80519350602001915050f35b3480156103d857600080fd5b506103ec6103e7366004614075565b610bc6565b60405190151581526020015b60405180910390f35b34801561040d57600080fd5b50610416610bd1565b6040516103f891906140e2565b34801561042f57600080fd5b5061044361043e3660046140f5565b610bfe565b6040516001600160a01b0390911681526020016103f8565b34801561046757600080fd5b5061047b61047636600461412a565b610c64565b005b34801561048957600080fd5b50610416610498366004614154565b610c85565b3480156104a957600080fd5b506104b2610c98565b6040519081526020016103f8565b3480156104cc57600080fd5b506104e06104db366004614250565b610ca8565b6040516103f891906142b4565b3480156104f957600080fd5b506104436105083660046140f5565b610d90565b34801561051957600080fd5b5061047b610528366004614318565b610dc9565b34801561053957600080fd5b506103ec61054836600461412a565b610dee565b34801561055957600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561058d57600080fd5b506104b261059c36600461412a565b610dfa565b3480156105ad57600080fd5b5061047b6105bc366004614354565b610e2e565b3480156105cd57600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561060157600080fd5b506106297f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016103f8565b34801561064a57600080fd5b5061047b610659366004614318565b610e81565b34801561066a57600080fd5b5061067e6106793660046140f5565b610e9c565b6040516103f891906143c6565b34801561069757600080fd5b506104b26106a63660046140f5565b610ebe565b3480156106b757600080fd5b5061047b6106c636600461449c565b610ed2565b3480156106d757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006104b2565b34801561070a57600080fd5b506104166107193660046140f5565b610f16565b34801561072a57600080fd5b506104436107393660046140f5565b610f21565b34801561074a57600080fd5b506104e0610759366004614515565b610f2c565b34801561076a57600080fd5b506104b2610779366004614578565b611075565b34801561078a57600080fd5b5061047b611080565b34801561079f57600080fd5b5061047b6107ae3660046146df565b611094565b61047b6107c13660046147a4565b61119c565b3480156107d257600080fd5b5061047b6107e13660046147e1565b6111cd565b3480156107f257600080fd5b506000546001600160a01b0316610443565b34801561081057600080fd5b506104b261081f3660046140f5565b60009081526008602052604090205490565b34801561083d57600080fd5b506104b261084c366004614578565b6001600160a01b03166000908152600b602052604090205490565b34801561087357600080fd5b506104166111d8565b61047b61088a366004614838565b611205565b34801561089b57600080fd5b5061047b6108aa366004614892565b6112f2565b3480156108bb57600080fd5b506108cf6108ca366004614578565b6112fd565b6040516103f89190614901565b3480156108e857600080fd5b5061047b6108f736600461412a565b611321565b34801561090857600080fd5b5061047b610917366004614914565b6114fd565b34801561092857600080fd5b5061047b61093736600461497c565b61150f565b34801561094857600080fd5b506104166109573660046140f5565b6115ed565b34801561096857600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561099c57600080fd5b5061047b6109ab3660046149fa565b6117b9565b3480156109bc57600080fd5b5061047b6109cb366004614a34565b6117cc565b3480156109dc57600080fd5b506104166118ec565b3480156109f157600080fd5b506104e0610a00366004614a84565b61197a565b348015610a1157600080fd5b506103ec610a20366004614ab9565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b348015610a5a57600080fd5b5061047b610a69366004614578565b611a25565b348015610a7a57600080fd5b506104b2610a89366004614578565b6001600160a01b03166000908152600c602052604090205490565b61047b610ab2366004614ae3565b611a79565b60606000610ad06000356001600160e01b031916611ce3565b5090506001600160a01b038116610b21576040517fbb370b2b0000000000000000000000000000000000000000000000000000000081526001600160e01b0319600035166004820152602401610350565b600080826001600160a01b03163487873334604051602001610b469493929190614b39565b60408051601f1981840301815290829052610b6091614b69565b60006040518083038185875af1925050503d8060008114610b9d576040519150601f19603f3d011682016040523d82523d6000602084013e610ba2565b606091505b50915091508115610bb7579250610bc0915050565b80518060208301fd5b92915050565b6000610bc082611d8d565b60606000610bc07fdeba1e292f8ba88238e10ab3c7f88bd4be4fac56cad5194b6ecceaf653468af1611dcb565b600081610c0a81611e6d565b6000610c1582610e9c565b80519091506000819003610c2e57506000949350505050565b81610c3a600183614b9b565b81518110610c4a57610c4a614bae565b60200260200101519350505050919050565b505050919050565b610c81828260001b604051806020016040528060008152506111cd565b5050565b6060610c918383611ea5565b9392505050565b6000610ca360025490565b905090565b60608151835114610ccc576040516317d38eff60e11b815260040160405180910390fd5b825167ffffffffffffffff811115610ce657610ce6614176565b604051908082528060200260200182016040528015610d1957816020015b6060815260200190600190039081610d045790505b50905060005b8351811015610d8957610d64848281518110610d3d57610d3d614bae565b6020026020010151848381518110610d5757610d57614bae565b6020026020010151611ea5565b828281518110610d7657610d76614bae565b6020908102919091010152600101610d1f565b5092915050565b6000818152600360205260408120546001600160a01b031680610bc057604051635747cd1b60e11b815260048101849052602401610350565b610de983838360001b600160405180602001604052806000815250611fba565b505050565b6000610c918383611fc7565b600080610e06846112fd565b9050808381518110610e1a57610e1a614bae565b602002602001015160001c91505092915050565b610e36612004565b600d610e43828483614c40565b507ff85f74f3190acca77203c20a6d4934fd0908afeec893df8bc8c9ca6edfbf9be88282604051610e75929190614030565b60405180910390a15050565b610de983838360405180602001604052806000815250612059565b6060610ea782611e6d565b6000828152600560205260409020610bc0906120e7565b600081815260086020526040812054610bc0565b610edc3384611fc7565b610f0257604051631294d2a960e01b815260048101849052336024820152604401610350565b610f0f8585858585611fba565b5050505050565b6060610bc082611dcb565b6000610bc082610d90565b60608167ffffffffffffffff811115610f4757610f47614176565b604051908082528060200260200182016040528015610f7a57816020015b6060815260200190600190039081610f655790505b50905060005b82811015610d895760008030868685818110610f9e57610f9e614bae565b9050602002810190610fb09190614d00565b604051610fbe929190614d4e565b600060405180830381855af49150503d8060008114610ff9576040519150601f19603f3d011682016040523d82523d6000602084013e610ffe565b606091505b50915091508161104d578051156110185780518082602001fd5b6040517f234eb81900000000000000000000000000000000000000000000000000000000815260048101849052602401610350565b8084848151811061106057611060614bae565b60209081029190910101525050600101610f80565b6000610bc0826120f4565b611088612004565b61109260006120ff565b565b84518451811415806110a7575083518114155b806110b3575082518114155b806110bf575081518114155b156110f6576040517f93a8311900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156111935761118b87828151811061111657611116614bae565b602002602001015187838151811061113057611130614bae565b602002602001015187848151811061114a5761114a614bae565b602002602001015187858151811061116457611164614bae565b602002602001015187868151811061117e5761117e614bae565b6020026020010151610ed2565b6001016110f9565b50505050505050565b6111a4612004565b34156111c35760405163f36ba73760e01b815260040160405180910390fd5b610c81828261217a565b610de98383836121dd565b60606000610bc07f2f0a68ab07768e01943a599e73362a0e17a63a72e94dd2e384d2c1d4db932756611dcb565b61120d612004565b341561122c5760405163f36ba73760e01b815260040160405180910390fd5b8051825114611267576040517f3bcc897900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036112a2576040517f97da5f9500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610de9576112ea8382815181106112c3576112c3614bae565b60200260200101518383815181106112dd576112dd614bae565b602002602001015161217a565b6001016112a5565b610c813383836123c8565b6001600160a01b0381166000908152600460205260409020606090610bc0906120e7565b6113296124bd565b6001600160a01b038216611369576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036113a3576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600b6020526040902054818110156113f0576040517fffb97f8100000000000000000000000000000000000000000000000000000000815260048101839052602401610350565b336000908152600b60205260408120805484929061140f908490614b9b565b90915550506040516000906001600160a01b0385169084908381818185875af1925050503d806000811461145f576040519150601f19603f3d011682016040523d82523d6000602084013e611464565b606091505b50509050806114b1576040517fa00139f80000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260248101849052604401610350565b6040518381526001600160a01b0385169033907ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839060200160405180910390a35050610c816001600a55565b61150984848484612059565b50505050565b611517612004565b8151835114158061152a57508051825114155b15611548576040516317d38eff60e11b815260040160405180910390fd5b8251600003611583576040517f80c9830500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8351811015611509576115e58482815181106115a4576115a4614bae565b60200260200101518483815181106115be576115be614bae565b60200260200101518484815181106115d8576115d8614bae565b6020026020010151612516565b600101611586565b6060600061161b837f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e611ea5565b9050805160001461166857600061163382600661256b565b61163e906008614d5e565b61ffff169050600061165f828385516116579190614b9b565b8591906125d1565b95945050505050565b5060006116947f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611dcb565b905080516000036116b5575050604080516020810190915260008152919050565b60006116c282600661256b565b6116cd906008614d5e565b61ffff16905060006116e6828385516116579190614b9b565b9050600061171d816117177ff675e9361af1c1664c1868cfa3eb97672d6b1a513aa5b81dec34c9ee330e818d611dcb565b906126f8565b90508060000361174357611739826117348861275e565b6127fe565b9695505050505050565b8060010361177657611739828760405160200161176291815260200190565b6040516020818303038152906040526127fe565b8060020361178d576117398261173488601461287b565b806003148061179c5750806004145b156117b0576117398261173488602061287b565b50949350505050565b6117c1612004565b610de9838383612516565b60006117d784610d90565b9050336001600160a01b03821614611843576001600160a01b0385163314611843576040517f760b5acd0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038216602482015260448101859052606401610350565b6001600160a01b03851661186a57604051639577b8b360e01b815260040160405180910390fd5b846001600160a01b0316816001600160a01b03160361189c576040516344fed6b160e11b815260040160405180910390fd5b6118a98582868686612a5c565b8215610f0f57600081856000856040516020016118c99493929190614d79565b60405160208183030381529060405290506118e48682612b15565b505050505050565b600d80546118f990614bc4565b80601f016020809104026020016040519081016040528092919081815260200182805461192590614bc4565b80156119725780601f1061194757610100808354040283529160200191611972565b820191906000526020600020905b81548152906001019060200180831161195557829003601f168201915b505050505081565b6060815167ffffffffffffffff81111561199657611996614176565b6040519080825280602002602001820160405280156119c957816020015b60608152602001906001900390816119b45790505b50905060005b8251811015611a1f576119fa8382815181106119ed576119ed614bae565b6020026020010151611dcb565b828281518110611a0c57611a0c614bae565b60209081029190910101526001016119cf565b50919050565b611a2d612004565b6001600160a01b038116611a6d576040517f1ad8836c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611a76816120ff565b50565b611a816124bd565b346000304688611a9081612b40565b6040516bffffffffffffffffffffffff19606095861b8116602083015260348201949094529190931b909116605482015260688101919091526088810187905260a8810183905260c8016040516020818303038152906040528051906020012090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b2882878787612b6f565b6001600160a01b031614611b68576040517f04f186ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1817cb8e0000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152600090733582f474f6e9fb087651b135d6224500a89e6f4490631817cb8e90604401602060405180830381865af4158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c249190614da9565b9050611c308184614b9b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600b602052604081208054909190611c78908490614dc2565b90915550506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600b602052604081208054839290611cc5908490614dc2565b90915550611cd69050888885612b99565b505050610f0f6001600a55565b60008080611d1b7fcee78b4094da86011096000000000000000000000000000000000000000000006001600160e01b03198616612cd4565b90506000611d2882611dcb565b90508051601414158015611d3c5750805115155b15611d7557806040517f42bfe79f00000000000000000000000000000000000000000000000000000000815260040161035091906140e2565b611d7e81614dd5565b60601c95600195509350505050565b60006001600160e01b031982167f780e9d63000000000000000000000000000000000000000000000000000000001480610bc05750610bc082612d3d565b6000818152600160205260409020805460609190611de890614bc4565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1490614bc4565b8015611e615780601f10611e3657610100808354040283529160200191611e61565b820191906000526020600020905b815481529060010190602001808311611e4457829003601f168201915b50505050509050919050565b6000818152600360205260409020546001600160a01b0316611a7657604051635747cd1b60e11b815260048101829052602401610350565b60606000611eb38484612daf565b90507f9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e83148015611ee357508051155b15610c91576000611f137f1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843611dcb565b90508051600003611fb257600d8054611f2b90614bc4565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5790614bc4565b8015611fa45780601f10611f7957610100808354040283529160200191611fa4565b820191906000526020600020905b815481529060010190602001808311611f8757829003601f168201915b505050505092505050610bc0565b509392505050565b610f0f8585858585612e5d565b6000611fd282610d90565b6001600160a01b0316836001600160a01b03161480610c9157506000828152600560205260409020610c919084612f07565b336120176000546001600160a01b031690565b6001600160a01b031614611092576040517fbf1169c5000000000000000000000000000000000000000000000000000000008152336004820152602401610350565b612067848484600185611fba565b61207384848484612f29565b611509576040805162461bcd60e51b81526020600482015260248101919091527f4c535038436f6d70617469626c654552433732313a207472616e73666572207460448201527f6f206e6f6e20455243373231526563656976657220696d706c656d656e7465726064820152608401610350565b60606000610c9183613081565b6000610bc0826130dc565b6000546001600160a01b03828116911614611a7657600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911617905550565b7f098a16c9e50e3e99b3e797305c146898d294e5aec55a47e213cb3611ccf17e7382016121d3576040517f3664800a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c8182826130e7565b60006121e883610d90565b90506001600160a01b038116331480159061222757506001600160a01b038116600090815260076020908152604080832033845290915290205460ff16155b1561225d57604051632d938f5160e11b81526001600160a01b038216600482015260248101849052336044820152606401610350565b6001600160a01b03841661228457604051639577b8b360e01b815260040160405180910390fd5b836001600160a01b0316816001600160a01b0316036122b6576040516344fed6b160e11b815260040160405180910390fd5b60008381526005602052604081206122ce90866130f1565b905080612319576040517fa7626b680000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101859052604401610350565b83826001600160a01b0316866001600160a01b03167f1b1b58aa2ec0cec2228b2d37124556d41f5a1f7b12f089171f896cc2366712158660405161235d91906140e2565b60405180910390a4836001600160a01b03861661237982610d90565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4600033856001866040516020016118c99493929190614d79565b816001600160a01b0316836001600160a01b03160361244f5760405162461bcd60e51b815260206004820152602760248201527f4c535038436f6d70617469626c654552433732313a20617070726f766520746f60448201527f2063616c6c6572000000000000000000000000000000000000000000000000006064820152608401610350565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6002600a540361250f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610350565b6002600a55565b600083815260066020908152604080832085845290915290206125398282614e0d565b5081837fa6e4251f855f750545fe414f120db91c76b88def14d120969e5bb2d3f05debbb836040516124b091906140e2565b6000612578826002614dc2565b835110156125c85760405162461bcd60e51b815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610350565b50016002015190565b6060816125df81601f614dc2565b101561262d5760405162461bcd60e51b815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610350565b6126378284614dc2565b845110156126875760405162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610350565b6060821580156126a657604051915060008252602082016040526117b0565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156126df5780518352602092830192016126c7565b5050858452601f01601f19166040525050949350505050565b6000612705826020614dc2565b835110156127555760405162461bcd60e51b815260206004820152601560248201527f746f55696e743235365f6f75744f66426f756e647300000000000000000000006044820152606401610350565b50016020015190565b6060600061276b83613106565b600101905060008167ffffffffffffffff81111561278b5761278b614176565b6040519080825280601f01601f1916602001820160405280156127b5576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846127bf57509392505050565b6060806040519050835180825260208201818101602087015b8183101561282f578051835260209283019201612817565b50855184518101855292509050808201602086015b8183101561285c578051835260209283019201612844565b508651929092011591909101601f01601f191660405250905092915050565b6060600061288a836002614ecd565b612895906002614dc2565b67ffffffffffffffff8111156128ad576128ad614176565b6040519080825280601f01601f1916602001820160405280156128d7576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061290e5761290e614bae565b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061295957612959614bae565b60200101906001600160f81b031916908160001a905350600061297d846002614ecd565b612988906001614dc2565b90505b6001811115612a0d577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106129c9576129c9614bae565b1a60f81b8282815181106129df576129df614bae565b60200101906001600160f81b031916908160001a90535060049490941c93612a0681614ee4565b905061298b565b508315610c915760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610350565b6000838152600560205260408120612a7490876131e8565b905080612abf576040517f4aa31a8c0000000000000000000000000000000000000000000000000000000081526001600160a01b038716600482015260248101859052604401610350565b83856001600160a01b0316876001600160a01b03167fc78cd419d6136f9f1c1c6aec1d3fae098cffaf8bc86314a8f2685e32fe574e3c8686604051612b05929190614efb565b60405180910390a4505050505050565b610c81827f8a1c15a8799f71b547e08e2bcb2e85257e81b0a07eee2ce6712549eef1f00970836131fd565b6001600160a01b0381166000908152600c6020526040812080549082612b6583614f16565b9091555092915050565b6000806000612b8087878787613291565b91509150612b8d81613355565b5090505b949350505050565b60008267ffffffffffffffff811115612bb457612bb4614176565b604051908082528060200260200182016040528015612bdd578160200160208202803683370190505b5090506000600e546001612bf19190614dc2565b905083600e6000828254612c059190614dc2565b90915550600090505b84811015612c4857612c208183614dc2565b60001b838281518110612c3557612c35614bae565b6020908102919091010152600101612c0e565b50846001600160a01b03167f3c48674dd1f5f1f6cbbeaa3b830f54a7b75f5c1598e1ea94b968ea1424f7bff38385604051612c84929190614f2f565b60405180910390a260005b848110156118e457612ccc86848381518110612cad57612cad614bae565b60200260200101516001604051806020016040528060008152506134ba565b600101612c8f565b604080517fffffffffffffffffffff00000000000000000000000000000000000000000000841660208201526000602a82018190526bffffffffffffffffffffffff198416602c83015291829101604051602081830303815290604052905080612b9190614f51565b60006001600160e01b031982167f80ac58cd000000000000000000000000000000000000000000000000000000001480612da057506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610bc05750610bc0826134c6565b60008281526006602090815260408083208484529091529020805460609190612dd790614bc4565b80601f0160208091040260200160405190810160405280929190818152602001828054612e0390614bc4565b8015612e505780601f10612e2557610100808354040283529160200191612e50565b820191906000526020600020905b815481529060010190602001808311612e3357829003601f168201915b5050505050905092915050565b6001600160a01b038516600090815260076020908152604080832033845290915290205460ff16158015612e985750612e963384611fc7565b155b15612ebf57604051631294d2a960e01b815260048101849052336024820152604401610350565b60405183906001600160a01b0380871691908816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90600090a4610f0f8585858585613513565b6001600160a01b03811660009081526001830160205260408120541515610c91565b6000836001600160a01b03163b600003612f4557506001612b91565b604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612f77903390899088908890600401614f75565b6020604051808303816000875af1925050508015612fb2575060408051601f3d908101601f19168201909252612faf91810190614fa7565b60015b613067573d808015612fe0576040519150601f19603f3d011682016040523d82523d6000602084013e612fe5565b606091505b50805160000361305f576040805162461bcd60e51b81526020600482015260248101919091527f4c535038436f6d70617469626c654552433732313a207472616e73666572207460448201527f6f206e6f6e20455243373231526563656976657220696d706c656d656e7465726064820152608401610350565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612b91565b606081600001805480602002602001604051908101604052809291908181526020018280548015611e6157602002820191906000526020600020905b8154815260200190600101908083116130bd5750505050509050919050565b6000610bc082613727565b610c818282613748565b6000610c91836001600160a01b0384166138a8565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061314f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061317b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061319957662386f26fc10000830492506010015b6305f5e10083106131b1576305f5e100830492506008015b61271083106131c557612710830492506004015b606483106131d7576064830492506002015b600a8310610bc05760010192915050565b6000610c91836001600160a01b0384166138f7565b6132176001600160a01b038416631aed5a8560e21b6139ea565b15610de957604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061324a9085908590600401614fc4565b6000604051808303816000875af1158015613269573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115099190810190614fdd565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156132c8575060009050600361334c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561331c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166133455760006001925092505061334c565b9150600090505b94509492505050565b60008160048111156133695761336961504b565b036133715750565b60018160048111156133855761338561504b565b036133d25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610350565b60028160048111156133e6576133e661504b565b036134335760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610350565b60038160048111156134475761344761504b565b03611a765760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610350565b61150984848484613a88565b60006001600160e01b031982167f3a271706000000000000000000000000000000000000000000000000000000001480613504575061350482613b00565b80610bc05750610bc082613b3e565b600061351e84610d90565b9050856001600160a01b0316816001600160a01b03161461356c57604051632d938f5160e11b81526001600160a01b0380831660048301526024820186905287166044820152606401610350565b6001600160a01b038516613593576040516324ecef4d60e01b815260040160405180910390fd5b61359f86868685613b75565b60006135aa85610d90565b9050806001600160a01b0316826001600160a01b031614613611576040517f5a9c31d3000000000000000000000000000000000000000000000000000000008152600481018690526001600160a01b03808416602483015282166044820152606401610350565b61361b8786613b81565b6001600160a01b038716600090815260046020526040902061363d9086613bd9565b506001600160a01b03861660009081526004602052604090206136609086613be5565b5060008581526003602052604090819020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518792918a16907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf906136d49033908a908a90615061565b60405180910390a4600033888888876040516020016136f795949392919061508b565b60405160208183030381529060405290506137128882613bf1565b61371d878683613c1c565b5050505050505050565b6001600160a01b0381166000908152600460205260408120610bc090613d0f565b7f2145e1d6d074577dc71ef54c3807742b41b053a9352ae6b491331509acb9750f82016137a1576040517f85c169bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fd0f59754f88971fe6bc5a6618cc9d5f1e859c58d16b22d1c7b2d3e2b246cd8aa82016137fa576040517f76755b3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1fd9e056a24d14c4abc642fcc325992a946906d0dbc57dd70278aaf12842024d8201613853576040517f4ef6d7fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260016020526040902061386b8282614e0d565b50817fece574603820d07bc9b91f2a932baadf4628aabcb8afba49776529c14a6104b28260405161389c91906140e2565b60405180910390a25050565b60008181526001830160205260408120546138ef57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610bc0565b506000610bc0565b600081815260018301602052604081205480156139e057600061391b600183614b9b565b855490915060009061392f90600190614b9b565b905081811461399457600086600001828154811061394f5761394f614bae565b906000526020600020015490508087600001848154811061397257613972614bae565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806139a5576139a56150c5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610bc0565b6000915050610bc0565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d91506000519050828015613a71575060208210155b8015613a7d5750600081115b979650505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000613ab1610c98565b613abc906001614dc2565b1115613af4576040517fe8ba229100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61150984848484613d19565b60006001600160e01b031982167fa918fa6b000000000000000000000000000000000000000000000000000000001480610bc05750610bc082613d5d565b600080613b516301ffc9a760e01b611ce3565b5090506001600160a01b038116613b6b5750600092915050565b610c9181846139ea565b61150984848484613dab565b600081815260056020526040812090613b9982613d0f565b90506000805b828110156118e457613bb2846000613e70565b9150613bd1828787600060405180602001604052806000815250612a5c565b600101613b9f565b6000610c9183836138f7565b6000610c9183836138a8565b610c81827fb23eae7e6d1564b295b4c3e3be402d9a2f0776c57bdf365903496f6fa481ab00836131fd565b613c2d83631aed5a8560e21b6139ea565b15613c8057604051631aed5a8560e21b81526001600160a01b03841690636bb56a149061324a907f0b084a55ebf70fd3c06fd755269dac2212c4d3f0f4d09079780bfa50c1b2984d908590600401614fc4565b81610de9576001600160a01b0383163b15613cd2576040517f4349776d0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610350565b6040517f031731370000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401610350565b6000610bc0825490565b60405183906001600160a01b038616906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461150984848484613e7c565b60006001600160e01b031982167f629aa694000000000000000000000000000000000000000000000000000000001480610bc057506301ffc9a760e01b6001600160e01b0319831614610bc0565b6001600160a01b038416613de4576000613dc3610c98565b60008181526008602090815260408083208790558683526009909152902055505b6001600160a01b038316613e6b5760006001613dfe610c98565b613e089190614b9b565b60008481526009602052604090205490915081811015613e4a576000828152600860209081526040808320548484528184208190558352600990915290208190555b50600090815260086020908152604080832083905584835260099091528120555b611509565b6000610c918383614006565b6001600160a01b038416613ea3576040516324ecef4d60e01b815260040160405180910390fd5b6000838152600360205260409020546001600160a01b031615613edc576040516334c7b51160e01b815260048101849052602401610350565b613ee96000858584613b75565b6000838152600360205260409020546001600160a01b031615613f22576040516334c7b51160e01b815260048101849052602401610350565b600260008154613f3190614f16565b909155506001600160a01b0384166000908152600460205260409020613f579084613be5565b50600083815260036020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881690811790915590518592907fb333c813a7426a7a11e2b190cad52c44119421594b47f6f32ace6d8c7207b2bf90613fc690339088908890615061565b60405180910390a46000336000868685604051602001613fea95949392919061508b565b6040516020818303038152906040529050610f0f858483613c1c565b600082600001828154811061401d5761401d614bae565b9060005260206000200154905092915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6001600160e01b031981168114611a7657600080fd5b60006020828403121561408757600080fd5b8135610c918161405f565b60005b838110156140ad578181015183820152602001614095565b50506000910152565b600081518084526140ce816020860160208601614092565b601f01601f19169290920160200192915050565b602081526000610c9160208301846140b6565b60006020828403121561410757600080fd5b5035919050565b80356001600160a01b038116811461412557600080fd5b919050565b6000806040838503121561413d57600080fd5b6141468361410e565b946020939093013593505050565b6000806040838503121561416757600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156141b5576141b5614176565b604052919050565b600067ffffffffffffffff8211156141d7576141d7614176565b5060051b60200190565b600082601f8301126141f257600080fd5b81356020614207614202836141bd565b61418c565b8083825260208201915060208460051b87010193508684111561422957600080fd5b602086015b84811015614245578035835291830191830161422e565b509695505050505050565b6000806040838503121561426357600080fd5b823567ffffffffffffffff8082111561427b57600080fd5b614287868387016141e1565b9350602085013591508082111561429d57600080fd5b506142aa858286016141e1565b9150509250929050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561430b57603f198886030184526142f98583516140b6565b945092850192908501906001016142dd565b5092979650505050505050565b60008060006060848603121561432d57600080fd5b6143368461410e565b92506143446020850161410e565b9150604084013590509250925092565b6000806020838503121561436757600080fd5b823567ffffffffffffffff8082111561437f57600080fd5b818501915085601f83011261439357600080fd5b8135818111156143a257600080fd5b8660208285010111156143b457600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156144075783516001600160a01b0316835292840192918401916001016143e2565b50909695505050505050565b8035801515811461412557600080fd5b600067ffffffffffffffff82111561443d5761443d614176565b50601f01601f191660200190565b600082601f83011261445c57600080fd5b813561446a61420282614423565b81815284602083860101111561447f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156144b457600080fd5b6144bd8661410e565b94506144cb6020870161410e565b9350604086013592506144e060608701614413565b9150608086013567ffffffffffffffff8111156144fc57600080fd5b6145088882890161444b565b9150509295509295909350565b6000806020838503121561452857600080fd5b823567ffffffffffffffff8082111561454057600080fd5b818501915085601f83011261455457600080fd5b81358181111561456357600080fd5b8660208260051b85010111156143b457600080fd5b60006020828403121561458a57600080fd5b610c918261410e565b600082601f8301126145a457600080fd5b813560206145b4614202836141bd565b8083825260208201915060208460051b8701019350868411156145d657600080fd5b602086015b84811015614245576145ec8161410e565b83529183019183016145db565b600082601f83011261460a57600080fd5b8135602061461a614202836141bd565b8083825260208201915060208460051b87010193508684111561463c57600080fd5b602086015b848110156142455761465281614413565b8352918301918301614641565b600082601f83011261467057600080fd5b81356020614680614202836141bd565b82815260059290921b8401810191818101908684111561469f57600080fd5b8286015b8481101561424557803567ffffffffffffffff8111156146c35760008081fd5b6146d18986838b010161444b565b8452509183019183016146a3565b600080600080600060a086880312156146f757600080fd5b853567ffffffffffffffff8082111561470f57600080fd5b61471b89838a01614593565b9650602088013591508082111561473157600080fd5b61473d89838a01614593565b9550604088013591508082111561475357600080fd5b61475f89838a016141e1565b9450606088013591508082111561477557600080fd5b61478189838a016145f9565b9350608088013591508082111561479757600080fd5b506145088882890161465f565b600080604083850312156147b757600080fd5b82359150602083013567ffffffffffffffff8111156147d557600080fd5b6142aa8582860161444b565b6000806000606084860312156147f657600080fd5b6147ff8461410e565b925060208401359150604084013567ffffffffffffffff81111561482257600080fd5b61482e8682870161444b565b9150509250925092565b6000806040838503121561484b57600080fd5b823567ffffffffffffffff8082111561486357600080fd5b61486f868387016141e1565b9350602085013591508082111561488557600080fd5b506142aa8582860161465f565b600080604083850312156148a557600080fd5b6148ae8361410e565b91506148bc60208401614413565b90509250929050565b60008151808452602080850194506020840160005b838110156148f6578151875295820195908201906001016148da565b509495945050505050565b602081526000610c9160208301846148c5565b6000806000806080858703121561492a57600080fd5b6149338561410e565b93506149416020860161410e565b925060408501359150606085013567ffffffffffffffff81111561496457600080fd5b6149708782880161444b565b91505092959194509250565b60008060006060848603121561499157600080fd5b833567ffffffffffffffff808211156149a957600080fd5b6149b5878388016141e1565b945060208601359150808211156149cb57600080fd5b6149d7878388016141e1565b935060408601359150808211156149ed57600080fd5b5061482e8682870161465f565b600080600060608486031215614a0f57600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561482257600080fd5b60008060008060808587031215614a4a57600080fd5b614a538561410e565b935060208501359250614a6860408601614413565b9150606085013567ffffffffffffffff81111561496457600080fd5b600060208284031215614a9657600080fd5b813567ffffffffffffffff811115614aad57600080fd5b612b91848285016141e1565b60008060408385031215614acc57600080fd5b614ad58361410e565b91506148bc6020840161410e565b600080600080600060a08688031215614afb57600080fd5b614b048661410e565b945060208601359350604086013560ff81168114614b2157600080fd5b94979396509394606081013594506080013592915050565b8385823760609290921b6bffffffffffffffffffffffff1916919092019081526014810191909152603401919050565b60008251614b7b818460208701614092565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bc057610bc0614b85565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614bd857607f821691505b602082108103611a1f57634e487b7160e01b600052602260045260246000fd5b601f821115610de9576000816000526020600020601f850160051c81016020861015614c215750805b601f850160051c820191505b818110156118e457828155600101614c2d565b67ffffffffffffffff831115614c5857614c58614176565b614c6c83614c668354614bc4565b83614bf8565b6000601f841160018114614ca05760008515614c885750838201355b600019600387901b1c1916600186901b178355610f0f565b600083815260209020601f19861690835b82811015614cd15786850135825560209485019460019092019101614cb1565b5086821015614cee5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e19843603018112614d1757600080fd5b83018035915067ffffffffffffffff821115614d3257600080fd5b602001915036819003821315614d4757600080fd5b9250929050565b8183823760009101908152919050565b61ffff818116838216019080821115610d8957610d89614b85565b6001600160a01b0385168152836020820152821515604082015260806060820152600061173960808301846140b6565b600060208284031215614dbb57600080fd5b5051919050565b80820180821115610bc057610bc0614b85565b805160208201516bffffffffffffffffffffffff198082169291906014831015610c5c5760149290920360031b82901b161692915050565b815167ffffffffffffffff811115614e2757614e27614176565b614e3b81614e358454614bc4565b84614bf8565b602080601f831160018114614e705760008415614e585750858301515b600019600386901b1c1916600185901b1785556118e4565b600085815260208120601f198616915b82811015614e9f57888601518255948401946001909101908401614e80565b5085821015614ebd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082028115828204841417610bc057610bc0614b85565b600081614ef357614ef3614b85565b506000190190565b8215158152604060208201526000612b9160408301846140b6565b600060018201614f2857614f28614b85565b5060010190565b604081526000614f4260408301856148c5565b90508260208301529392505050565b80516020808301519190811015611a1f5760001960209190910360031b1b16919050565b60006001600160a01b0380871683528086166020840152508360408301526080606083015261173960808301846140b6565b600060208284031215614fb957600080fd5b8151610c918161405f565b828152604060208201526000612b9160408301846140b6565b600060208284031215614fef57600080fd5b815167ffffffffffffffff81111561500657600080fd5b8201601f8101841361501757600080fd5b805161502561420282614423565b81815285602083850101111561503a57600080fd5b61165f826020830160208601614092565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0384168152821515602082015260606040820152600061165f60608301846140b6565b60006001600160a01b038088168352808716602084015280861660408401525083606083015260a06080830152613a7d60a08301846140b6565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220833f965137e08f27a4f37c4b680188eca2020eab3ecd8ead299d52de30ca0cb164736f6c63430008160033 diff --git a/lib/lsp-smart-contracts b/lib/lsp-smart-contracts index acf5ea9..5481427 160000 --- a/lib/lsp-smart-contracts +++ b/lib/lsp-smart-contracts @@ -1 +1 @@ -Subproject commit acf5ea902e5b964b4e7dba08331d09b998b84052 +Subproject commit 5481427b0d27703c8ac3f47a6dc374ab72902a0d diff --git a/remappings.txt b/remappings.txt index 8c3f2fd..5017177 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,7 +1,7 @@ @erc725/smart-contracts/=lib/erc725/implementations/ @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/ -@lukso/lsp-smart-contracts/=lib/lsp-smart-contracts/ +@lukso/=lib/lsp-smart-contracts/packages/ ds-test/=lib/forge-std/lib/ds-test/src/ forge-std/=lib/forge-std/src/ solidity-bytes-utils/=lib/solidity-bytes-utils/ diff --git a/src/common/LSP8CompatibleERC721.sol b/src/common/LSP8CompatibleERC721.sol new file mode 100644 index 0000000..178be95 --- /dev/null +++ b/src/common/LSP8CompatibleERC721.sol @@ -0,0 +1,257 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.12; + +import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; +import {IERC721Receiver} from "@openzeppelin/contracts/interfaces/IERC721Receiver.sol"; +import {IERC721Metadata, IERC721} from "@openzeppelin/contracts/interfaces/IERC721Metadata.sol"; +import {BytesLib} from "solidity-bytes-utils/contracts/BytesLib.sol"; +import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; +import {LSP1Utils} from "@lukso/lsp-smart-contracts/contracts/LSP1UniversalReceiver/LSP1Utils.sol"; +import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; +import { + LSP8IdentifiableDigitalAssetCore, + LSP8IdentifiableDigitalAsset +} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol"; +import { + LSP8NotTokenOwner, + LSP8CannotUseAddressZeroAsOperator, + LSP8TokenOwnerCannotBeOperator, + LSP8OperatorAlreadyAuthorized, + LSP8NotTokenOperator +} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8Errors.sol"; +import { + _LSP4_METADATA_KEY, + _LSP4_TOKEN_NAME_KEY, + _LSP4_TOKEN_SYMBOL_KEY +} from "@lukso/lsp-smart-contracts/contracts/LSP4DigitalAssetMetadata/LSP4Constants.sol"; +import { + _LSP8_TOKEN_METADATA_BASE_URI, + _LSP8_TOKENID_FORMAT_KEY +} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8Constants.sol"; + +abstract contract LSP8CompatibleERC721 is IERC721Metadata, LSP8IdentifiableDigitalAsset { + using BytesLib for bytes; + using EnumerableSet for EnumerableSet.AddressSet; + using LSP1Utils for address; + + mapping(address => mapping(address => bool)) private _operatorApprovals; + + constructor( + string memory name_, + string memory symbol_, + address newOwner_, + uint256 lsp4TokenType_, + uint256 lsp8TokenIdFormat_ + ) LSP8IdentifiableDigitalAsset(name_, symbol_, newOwner_, lsp4TokenType_, lsp8TokenIdFormat_) {} + + function name() public view virtual override returns (string memory) { + bytes memory data = _getData(_LSP4_TOKEN_NAME_KEY); + return string(data); + } + + function symbol() public view virtual override returns (string memory) { + bytes memory data = _getData(_LSP4_TOKEN_SYMBOL_KEY); + return string(data); + } + + function balanceOf(address tokenOwner) + public + view + virtual + override(IERC721, LSP8IdentifiableDigitalAssetCore) + returns (uint256) + { + return super.balanceOf(tokenOwner); + } + + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override(IERC165, LSP8IdentifiableDigitalAsset) + returns (bool) + { + return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId + || super.supportsInterface(interfaceId); + } + + function tokenURI(uint256 tokenId) public view virtual returns (string memory) { + // per token metadata if available + { + bytes memory data = _getDataForTokenId(bytes32(tokenId), _LSP4_METADATA_KEY); + if (data.length != 0) { + // bytes2(identifier) + bytes4(method) + bytes2(verificationDataLength) + bytes(verificationData) + uint256 offset = 8 + data.toUint16(6); + string memory tokenUri = string(data.slice(offset, data.length - offset)); + return tokenUri; + } + } + + // reconstruct token uri + bytes memory baseUriData = _getData(_LSP8_TOKEN_METADATA_BASE_URI); + if (baseUriData.length == 0) { + return ""; + } + // bytes2(identifier) + bytes4(method) + bytes2(verificationDataLength) + bytes(verificationData) + uint256 baseUriOffset = 8 + baseUriData.toUint16(6); + bytes memory baseUri = baseUriData.slice(baseUriOffset, baseUriData.length - baseUriOffset); + + uint256 tokenIdFormat = _getData(_LSP8_TOKENID_FORMAT_KEY).toUint256(0); + if (tokenIdFormat == 0) { + return string(BytesLib.concat(baseUri, bytes(Strings.toString(tokenId)))); + } else if (tokenIdFormat == 1) { + return string(BytesLib.concat(baseUri, abi.encodePacked(tokenId))); + } else if (tokenIdFormat == 2) { + return string(BytesLib.concat(baseUri, bytes(Strings.toHexString(tokenId, 20)))); + } else if (tokenIdFormat == 3 || tokenIdFormat == 4) { + return string(BytesLib.concat(baseUri, bytes(Strings.toHexString(tokenId, 32)))); + } else { + return string(baseUri); + } + } + + function ownerOf(uint256 tokenId) public view virtual override returns (address) { + return tokenOwnerOf(bytes32(tokenId)); + } + + function getApproved(uint256 tokenId) public view virtual override returns (address) { + bytes32 tokenIdAsBytes32 = bytes32(tokenId); + _existsOrError(tokenIdAsBytes32); + + address[] memory operatorsForTokenId = getOperatorsOf(tokenIdAsBytes32); + uint256 operatorListLength = operatorsForTokenId.length; + + if (operatorListLength == 0) { + return address(0); + } else { + // Read the last added operator authorized to provide "best" compatibility. + // In ERC721 there is one operator address at a time for a tokenId, so multiple calls to + // `approve` would cause `getApproved` to return the last added operator. In this + // compatibility version the same is true, when the authorized operators were not previously + // authorized. If addresses are removed, then `getApproved` returned address can change due + // to implementation of `EnumberableSet._remove`. + return operatorsForTokenId[operatorListLength - 1]; + } + } + + function isApprovedForAll(address tokenOwner, address operator) public view virtual override returns (bool) { + return _operatorApprovals[tokenOwner][operator]; + } + + function approve(address operator, uint256 tokenId) public virtual override { + authorizeOperator(operator, bytes32(tokenId), ""); + } + + function setApprovalForAll(address operator, bool approved) public virtual override { + _setApprovalForAll(msg.sender, operator, approved); + } + + function transferFrom(address from, address to, uint256 tokenId) public virtual override { + _transfer(from, to, bytes32(tokenId), true, ""); + } + + function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override { + _safeTransfer(from, to, tokenId, ""); + } + + function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override { + _safeTransfer(from, to, tokenId, data); + } + + function authorizeOperator(address operator, bytes32 tokenId, bytes memory operatorNotificationData) + public + virtual + override + { + address tokenOwner = tokenOwnerOf(tokenId); + + if (tokenOwner != msg.sender && !isApprovedForAll(tokenOwner, msg.sender)) { + revert LSP8NotTokenOwner(tokenOwner, tokenId, msg.sender); + } + + if (operator == address(0)) { + revert LSP8CannotUseAddressZeroAsOperator(); + } + + if (tokenOwner == operator) { + revert LSP8TokenOwnerCannotBeOperator(); + } + + bool isAdded = _operators[tokenId].add(operator); + if (!isAdded) revert LSP8OperatorAlreadyAuthorized(operator, tokenId); + + emit OperatorAuthorizationChanged(operator, tokenOwner, tokenId, operatorNotificationData); + emit Approval(tokenOwnerOf(tokenId), operator, uint256(tokenId)); + + bytes memory lsp1Data = abi.encode( + msg.sender, + tokenId, + true, // authorized + operatorNotificationData + ); + + _notifyTokenOperator(operator, lsp1Data); + } + + function _transfer(address from, address to, bytes32 tokenId, bool force, bytes memory data) + internal + virtual + override + { + if (!isApprovedForAll(from, msg.sender) && !_isOperatorOrOwner(msg.sender, tokenId)) { + revert LSP8NotTokenOperator(tokenId, msg.sender); + } + + emit Transfer(from, to, uint256(tokenId)); + super._transfer(from, to, tokenId, force, data); + } + + function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual { + _transfer(from, to, bytes32(tokenId), true, data); + require( + _checkOnERC721Received(from, to, tokenId, data), + "LSP8CompatibleERC721: transfer to non ERC721Receiver implementer" + ); + } + + function _mint(address to, bytes32 tokenId, bool force, bytes memory data) internal virtual override { + emit Transfer(address(0), to, uint256(tokenId)); + super._mint(to, tokenId, force, data); + } + + function _burn(bytes32 tokenId, bytes memory data) internal virtual override { + address tokenOwner = tokenOwnerOf(tokenId); + + emit Transfer(tokenOwner, address(0), uint256(tokenId)); + super._burn(tokenId, data); + } + + function _setApprovalForAll(address tokensOwner, address operator, bool approved) internal virtual { + require(tokensOwner != operator, "LSP8CompatibleERC721: approve to caller"); + _operatorApprovals[tokensOwner][operator] = approved; + emit ApprovalForAll(tokensOwner, operator, approved); + } + + function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory data) + private + returns (bool) + { + if (to.code.length == 0) { + return true; + } + + try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, data) returns (bytes4 retval) { + return retval == IERC721Receiver.onERC721Received.selector; + } catch (bytes memory reason) { + if (reason.length == 0) { + revert("LSP8CompatibleERC721: transfer to non ERC721Receiver implementer"); + } else { + // solhint-disable no-inline-assembly + /// @solidity memory-safe-assembly + assembly { + revert(add(32, reason), mload(reason)) + } + } + } + } +} diff --git a/src/common/LSP8CompatibleERC721Enumerable.sol b/src/common/LSP8CompatibleERC721Enumerable.sol new file mode 100644 index 0000000..224e319 --- /dev/null +++ b/src/common/LSP8CompatibleERC721Enumerable.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.12; + +import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol"; +import {IERC721Enumerable, IERC721} from "@openzeppelin/contracts/interfaces/IERC721Enumerable.sol"; +import { + LSP8IdentifiableDigitalAsset, + LSP8IdentifiableDigitalAssetCore +} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol"; +import {LSP8Enumerable} from + "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8Enumerable.sol"; + +abstract contract LSP8CompatibleERC721Enumerable is IERC721Enumerable, LSP8Enumerable { + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override(IERC165, LSP8IdentifiableDigitalAsset) + returns (bool) + { + return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); + } + + function totalSupply() + public + view + virtual + override(IERC721Enumerable, LSP8IdentifiableDigitalAssetCore) + returns (uint256) + { + return _existingTokens; + } + + function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) { + bytes32[] memory tokenIds = tokenIdsOf(owner); + return uint256(tokenIds[index]); + } + + function tokenByIndex(uint256 index) public view override returns (uint256) { + return uint256(tokenAt(index)); + } + + function balanceOf(address tokenOwner) + public + view + virtual + override(IERC721, LSP8IdentifiableDigitalAssetCore) + returns (uint256) + { + return super.balanceOf(tokenOwner); + } +} diff --git a/src/drops/LSP8DropsLightAsset.sol b/src/drops/LSP8DropsLightAsset.sol index eb2e49e..70122cd 100644 --- a/src/drops/LSP8DropsLightAsset.sol +++ b/src/drops/LSP8DropsLightAsset.sol @@ -5,23 +5,28 @@ import { LSP8IdentifiableDigitalAsset, LSP8IdentifiableDigitalAssetCore } from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.sol"; -import {_INTERFACEID_LSP8} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8Constants.sol"; -import {LSP8CappedSupply} from - "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8CappedSupply.sol"; import {LSP8Enumerable} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8Enumerable.sol"; -import {_LSP8_TOKENID_FORMAT_NUMBER} from - "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8Constants.sol"; +import {LSP8CappedSupply} from + "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/extensions/LSP8CappedSupply.sol"; +import { + _LSP8_TOKEN_METADATA_BASE_URI, + _LSP8_TOKENID_FORMAT_NUMBER +} from "@lukso/lsp-smart-contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8Constants.sol"; import {_LSP4_TOKEN_TYPE_NFT} from "@lukso/lsp-smart-contracts/contracts/LSP4DigitalAssetMetadata/LSP4Constants.sol"; +import {LSP8CompatibleERC721} from "../common/LSP8CompatibleERC721.sol"; +import {LSP8CompatibleERC721Enumerable} from "../common/LSP8CompatibleERC721Enumerable.sol"; import {DropsLightAsset} from "./DropsLightAsset.sol"; -contract LSP8DropsLightAsset is LSP8CappedSupply, LSP8Enumerable, DropsLightAsset { +contract LSP8DropsLightAsset is + LSP8CompatibleERC721, + LSP8CompatibleERC721Enumerable, + LSP8CappedSupply, + DropsLightAsset +{ event Minted(address indexed recipient, bytes32[] tokenIds, uint256 totalPrice); event DefaultTokenDataChanged(bytes defaultTokenData); - bytes32 private constant _LSP8_TOKEN_METADATA_BASE_URI_KEY = - 0x1a7628600c3bac7101f53697f48df381ddc36b9015e7d7c9c5633d1252aa2843; - bytes32 private constant _LSP4_METADATA_KEY = 0x9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e; bytes public defaultTokenUri; @@ -37,7 +42,7 @@ contract LSP8DropsLightAsset is LSP8CappedSupply, LSP8Enumerable, DropsLightAsse uint256 tokenSupplyCap_, uint32 serviceFeePoints_ ) - LSP8IdentifiableDigitalAsset(name_, symbol_, newOwner_, _LSP4_TOKEN_TYPE_NFT, _LSP8_TOKENID_FORMAT_NUMBER) + LSP8CompatibleERC721(name_, symbol_, newOwner_, _LSP4_TOKEN_TYPE_NFT, _LSP8_TOKENID_FORMAT_NUMBER) LSP8CappedSupply(tokenSupplyCap_) DropsLightAsset(beneficiary_, service_, verifier_, serviceFeePoints_) {} @@ -50,7 +55,7 @@ contract LSP8DropsLightAsset is LSP8CappedSupply, LSP8Enumerable, DropsLightAsse function _getDataForTokenId(bytes32 tokenId, bytes32 dataKey) internal view override returns (bytes memory) { bytes memory result = super._getDataForTokenId(tokenId, dataKey); if (dataKey == _LSP4_METADATA_KEY && result.length == 0) { - bytes memory baseUri = super._getData(_LSP8_TOKEN_METADATA_BASE_URI_KEY); + bytes memory baseUri = super._getData(_LSP8_TOKEN_METADATA_BASE_URI); if (baseUri.length == 0) { return defaultTokenUri; } @@ -73,11 +78,31 @@ contract LSP8DropsLightAsset is LSP8CappedSupply, LSP8Enumerable, DropsLightAsse } } + function supportsInterface(bytes4 interfaceId) + public + view + virtual + override(LSP8CompatibleERC721Enumerable, LSP8CompatibleERC721, LSP8IdentifiableDigitalAsset) + returns (bool) + { + return super.supportsInterface(interfaceId); + } + + function totalSupply() + public + view + virtual + override(LSP8CompatibleERC721Enumerable, LSP8IdentifiableDigitalAssetCore) + returns (uint256) + { + return super.totalSupply(); + } + function balanceOf(address tokenOwner) public view virtual - override(LSP8IdentifiableDigitalAssetCore, DropsLightAsset) + override(LSP8CompatibleERC721Enumerable, LSP8CompatibleERC721, LSP8IdentifiableDigitalAssetCore, DropsLightAsset) returns (uint256) { return super.balanceOf(tokenOwner); @@ -86,7 +111,7 @@ contract LSP8DropsLightAsset is LSP8CappedSupply, LSP8Enumerable, DropsLightAsse function _mint(address to, bytes32 tokenId, bool allowNonLSP1Recipient, bytes memory data) internal virtual - override(LSP8IdentifiableDigitalAssetCore, LSP8CappedSupply) + override(LSP8CappedSupply, LSP8CompatibleERC721, LSP8IdentifiableDigitalAssetCore) { super._mint(to, tokenId, allowNonLSP1Recipient, data); } @@ -94,8 +119,32 @@ contract LSP8DropsLightAsset is LSP8CappedSupply, LSP8Enumerable, DropsLightAsse function _beforeTokenTransfer(address from, address to, bytes32 tokenId, bytes memory data) internal virtual - override(LSP8IdentifiableDigitalAssetCore, LSP8Enumerable) + override(LSP8Enumerable, LSP8IdentifiableDigitalAssetCore) { super._beforeTokenTransfer(from, to, tokenId, data); } + + function authorizeOperator(address operator, bytes32 tokenId, bytes memory operatorNotificationData) + public + virtual + override(LSP8CompatibleERC721, LSP8IdentifiableDigitalAssetCore) + { + super.authorizeOperator(operator, tokenId, operatorNotificationData); + } + + function _transfer(address from, address to, bytes32 tokenId, bool force, bytes memory data) + internal + virtual + override(LSP8CompatibleERC721, LSP8IdentifiableDigitalAssetCore) + { + super._transfer(from, to, tokenId, force, data); + } + + function _burn(bytes32 tokenId, bytes memory data) + internal + virtual + override(LSP8CompatibleERC721, LSP8IdentifiableDigitalAssetCore) + { + super._burn(tokenId, data); + } } diff --git a/src/profiles/ProfilesReverseLookup.sol b/src/profiles/ProfilesReverseLookup.sol index cb4935c..a4ca76e 100644 --- a/src/profiles/ProfilesReverseLookup.sol +++ b/src/profiles/ProfilesReverseLookup.sol @@ -2,8 +2,8 @@ pragma solidity =0.8.22; import {IERC725Y} from "@erc725/smart-contracts/contracts/interfaces/IERC725Y.sol"; -import {LSP6Utils} from "lsp-smart-contracts/LSP6KeyManager/LSP6Utils.sol"; -import {_PERMISSION_SIGN} from "lsp-smart-contracts/LSP6KeyManager/LSP6Constants.sol"; +import {LSP6Utils} from "@lukso/lsp-smart-contracts/contracts/LSP6KeyManager/LSP6Utils.sol"; +import {_PERMISSION_SIGN} from "@lukso/lsp-smart-contracts/contracts/LSP6KeyManager/LSP6Constants.sol"; contract ProfilesReverseLookup { error UnathorizedController(address controller, address profile);