3.7k txs
3.7k calls
constructor
constructor()
functions
auctionAccessData
viewfunction auctionAccessData(uint256) view returns (bytes)
auctionAccessManager
viewfunction auctionAccessManager(uint256) view returns (address)
auctionCounter
viewfunction auctionCounter() view returns (uint256)
auctionData
viewfunction auctionData(uint256) view returns (address auctioningToken, address biddingToken, uint256 orderCancellationEndDate, uint256 auctionEndDate, bytes32 initialAuctionOrder, uint256 minimumBiddingAmountPerOrder, uint256 interimSumBidAmount, bytes32 interimOrder, bytes32 clearingPriceOrder, uint96 volumeClearingPriceOrder, bool minFundingThresholdNotReached, bool isAtomicClosureAllowed, uint256 feeNumerator, uint256 minFundingThreshold)
containsOrder
viewfunction containsOrder(uint256 auctionId, bytes32 order) view returns (bool)
FEE_DENOMINATOR
viewfunction FEE_DENOMINATOR() view returns (uint256)
feeNumerator
viewfunction feeNumerator() view returns (uint256)
feeReceiverUserId
viewfunction feeReceiverUserId() view returns (uint64)
getSecondsRemainingInBatch
viewfunction getSecondsRemainingInBatch(uint256 auctionId) view returns (uint256)
numUsers
viewfunction numUsers() view returns (uint64)
owner
viewfunction owner() view returns (address)
cancelSellOrders
nonpayablefunction cancelSellOrders(uint256 auctionId, bytes32[] _sellOrders)
claimFromParticipantOrder
nonpayablefunction claimFromParticipantOrder(uint256 auctionId, bytes32[] orders) returns (uint256 sumAuctioningTokenAmount, uint256 sumBiddingTokenAmount)
getUserId
nonpayablefunction getUserId(address user) returns (uint64 userId)
initiateAuction
nonpayablefunction initiateAuction(address _auctioningToken, address _biddingToken, uint256 orderCancellationEndDate, uint256 auctionEndDate, uint96 _auctionedSellAmount, uint96 _minBuyAmount, uint256 minimumBiddingAmountPerOrder, uint256 minFundingThreshold, bool isAtomicClosureAllowed, address accessManagerContract, bytes accessManagerContractData) returns (uint256)
placeSellOrders
nonpayablefunction placeSellOrders(uint256 auctionId, uint96[] _minBuyAmounts, uint96[] _sellAmounts, bytes32[] _prevSellOrders, bytes allowListCallData) returns (uint64 userId)
placeSellOrdersOnBehalf
nonpayablefunction placeSellOrdersOnBehalf(uint256 auctionId, uint96[] _minBuyAmounts, uint96[] _sellAmounts, bytes32[] _prevSellOrders, bytes allowListCallData, address orderSubmitter) returns (uint64 userId)
precalculateSellAmountSum
nonpayablefunction precalculateSellAmountSum(uint256 auctionId, uint256 iterationSteps)
registerUser
nonpayablefunction registerUser(address user) returns (uint64 userId)
renounceOwnership
nonpayablefunction renounceOwnership()
setFeeParameters
nonpayablefunction setFeeParameters(uint256 newFeeNumerator, address newfeeReceiverAddress)
settleAuction
nonpayablefunction settleAuction(uint256 auctionId) returns (bytes32 clearingOrder)
settleAuctionAtomically
nonpayablefunction settleAuctionAtomically(uint256 auctionId, uint96[] _minBuyAmount, uint96[] _sellAmount, bytes32[] _prevSellOrder, bytes allowListCallData)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AuctionCleared
event AuctionCleared(uint256 indexed auctionId, uint96 soldAuctioningTokens, uint96 soldBiddingTokens, bytes32 clearingPriceOrder)
CancellationSellOrder
event CancellationSellOrder(uint256 indexed auctionId, uint64 indexed userId, uint96 buyAmount, uint96 sellAmount)
ClaimedFromOrder
event ClaimedFromOrder(uint256 indexed auctionId, uint64 indexed userId, uint96 buyAmount, uint96 sellAmount)
NewAuction
event NewAuction(uint256 indexed auctionId, address indexed _auctioningToken, address indexed _biddingToken, uint256 orderCancellationEndDate, uint256 auctionEndDate, uint64 userId, uint96 _auctionedSellAmount, uint96 _minBuyAmount, uint256 minimumBiddingAmountPerOrder, uint256 minFundingThreshold, address allowListContract, bytes allowListData)
NewSellOrder
event NewSellOrder(uint256 indexed auctionId, uint64 indexed userId, uint96 buyAmount, uint96 sellAmount)
NewUser
event NewUser(uint64 indexed userId, address indexed userAddress)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
UserRegistration
event UserRegistration(address indexed user, uint64 userId)
errors
No errors.
creation bytecode
0x608060405260006009556001600a60006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055503480156200004057600080fd5b50600062000053620000f760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620000ff565b600033905090565b615b6e806200010f6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80637882deaf116100c3578063d73792a91161007c578063d73792a914610ccf578063e4a59ef414610ced578063e86dea4a14610d45578063ec20d0bb14610d63578063f2fde38b14610fe0578063f59c2f061461102457610158565b80637882deaf146106425780637ed18b701461071f5780638da5cb5b146107e157806391cfc1d414610815578063a7e7664414610a54578063d225269c14610a7257610158565b80633e12905f116101155780633e12905f1461046157806340b20b091461049957806355fc62d2146104e75780635cefb291146105c257806363c699a4146105ea578063715018a61461063857610158565b80630a4cd6c91461015d57806315d37b4b146102f157806319a50f49146103335780632199d5cd1461035b5780632b956ff7146103bd5780632e9936111461041f575b600080fd5b6102db600480360361016081101561017457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080356bffffffffffffffffffffffff16906020019092919080356bffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803515159060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110cb565b6040518082815260200191505060405180910390f35b61031d6004803603602081101561030757600080fd5b810190808035906020019092919050505061178a565b6040518082815260200191505060405180910390f35b61033b6117e4565b604051808267ffffffffffffffff16815260200191505060405180910390f35b61039d6004803603602081101561037157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117fe565b604051808267ffffffffffffffff16815260200191505060405180910390f35b6103ff600480360360208110156103d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611978565b604051808267ffffffffffffffff16815260200191505060405180910390f35b61044b6004803603602081101561043557600080fd5b8101908080359060200190929190505050611a0d565b6040518082815260200191505060405180910390f35b6104976004803603604081101561047757600080fd5b810190808035906020019092919080359060200190929190505050611fb4565b005b6104e5600480360360408110156104af57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122d6565b005b610513600480360360208110156104fd57600080fd5b8101908080359060200190929190505050612434565b604051808f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020018d81526020018c81526020018b81526020018a8152602001898152602001888152602001878152602001866bffffffffffffffffffffffff168152602001851515815260200184151581526020018381526020018281526020019e50505050505050505050505050505060405180910390f35b6105ca612512565b604051808267ffffffffffffffff16815260200191505060405180910390f35b6106206004803603604081101561060057600080fd5b81019080803590602001909291908035906020019092919050505061252c565b60405180821515815260200191505060405180910390f35b61064061255b565b005b6107026004803603604081101561065857600080fd5b81019080803590602001909291908035906020019064010000000081111561067f57600080fd5b82018360208201111561069157600080fd5b803590602001918460208302840111640100000000831117156106b357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506126e1565b604051808381526020018281526020019250505060405180910390f35b6107df6004803603604081101561073557600080fd5b81019080803590602001909291908035906020019064010000000081111561075c57600080fd5b82018360208201111561076e57600080fd5b8035906020019184602083028401116401000000008311171561079057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612d2d565b005b6107e9612f90565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a52600480360360a081101561082b57600080fd5b81019080803590602001909291908035906020019064010000000081111561085257600080fd5b82018360208201111561086457600080fd5b8035906020019184602083028401116401000000008311171561088657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108e657600080fd5b8201836020820111156108f857600080fd5b8035906020019184602083028401116401000000008311171561091a57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561097a57600080fd5b82018360208201111561098c57600080fd5b803590602001918460208302840111640100000000831117156109ae57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610a0e57600080fd5b820183602082011115610a2057600080fd5b80359060200191846001830284011164010000000083111715610a4257600080fd5b9091929391929390505050612fb9565b005b610a5c613221565b6040518082815260200191505060405180910390f35b610caf600480360360a0811015610a8857600080fd5b810190808035906020019092919080359060200190640100000000811115610aaf57600080fd5b820183602082011115610ac157600080fd5b80359060200191846020830284011164010000000083111715610ae357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b4357600080fd5b820183602082011115610b5557600080fd5b80359060200191846020830284011164010000000083111715610b7757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610bd757600080fd5b820183602082011115610be957600080fd5b80359060200191846020830284011164010000000083111715610c0b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610c6b57600080fd5b820183602082011115610c7d57600080fd5b80359060200191846001830284011164010000000083111715610c9f57600080fd5b9091929391929390505050613227565b604051808267ffffffffffffffff16815260200191505060405180910390f35b610cd76132b4565b6040518082815260200191505060405180910390f35b610d1960048036036020811015610d0357600080fd5b81019080803590602001909291905050506132ba565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d4d6132ed565b6040518082815260200191505060405180910390f35b610fc0600480360360c0811015610d7957600080fd5b810190808035906020019092919080359060200190640100000000811115610da057600080fd5b820183602082011115610db257600080fd5b80359060200191846020830284011164010000000083111715610dd457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e3457600080fd5b820183602082011115610e4657600080fd5b80359060200191846020830284011164010000000083111715610e6857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ec857600080fd5b820183602082011115610eda57600080fd5b80359060200191846020830284011164010000000083111715610efc57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610f5c57600080fd5b820183602082011115610f6e57600080fd5b80359060200191846001830284011164010000000083111715610f9057600080fd5b9091929391929390803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506132f3565b604051808267ffffffffffffffff16815260200191505060405180910390f35b61102260048036036020811015610ff657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613381565b005b6110506004803603602081101561103a57600080fd5b810190808035906020019092919050505061358c565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015611090578082015181840152602081019050611075565b50505050905090810190601f1680156110bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000611144333061111d6103e861110f6110f26009546103e861363c90919063ffffffff16565b8e6bffffffffffffffffffffffff166136c490919063ffffffff16565b61374a90919063ffffffff16565b8f73ffffffffffffffffffffffffffffffffffffffff16613794909392919063ffffffff16565b6000886bffffffffffffffffffffffff16116111c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f63616e6e6f742061756374696f6e207a65726f20746f6b656e7300000000000081525060200191505060405180910390fd5b6000876bffffffffffffffffffffffff161161122f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806158406023913960400191505060405180910390fd5b60008611611288576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806159a66036913960400191505060405180910390fd5b888a11156112e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615ac46029913960400191505060405180910390fd5b428911611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061592f6026913960400191505060405180910390fd5b61134f600160085461363c90919063ffffffff16565b600881905550611372600160006008548152602001908152602001600020613855565b600061137d33611978565b9050604051806101c001604052808e73ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020016113da838b8d6138da565b815260200188815260200160008152602001600160001b81526020016000801b815260200160006bffffffffffffffffffffffff168152602001600015158152602001861515815260200160095481526020018781525060026000600854815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015561010082015181600801556101208201518160090160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061014082015181600901600c6101000a81548160ff02191690831515021790555061016082015181600901600d6101000a81548160ff02191690831515021790555061018082015181600a01556101a082015181600b01559050508360036000600854815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006008548152602001908152602001600020908051906020019061162b9291906155dc565b508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff166008547f728d0fed13687f1840de94f5ae640eae49b43eda26b7ffe97e55e79a0de6e40c8e8e868f8f8f8f8e8e604051808a81526020018981526020018867ffffffffffffffff168152602001876bffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611733578082015181840152602081019050611718565b50505050905090810190601f1680156117605780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390a46008549150509b9a5050505050505050505050565b600042600260008481526020019081526020016000206003015410156117b357600090506117df565b6117dc42600260008581526020019081526020016000206003015461391b90919063ffffffff16565b90505b919050565b600760009054906101000a900467ffffffffffffffff1681565b600061183c6118376001600760009054906101000a900467ffffffffffffffff1667ffffffffffffffff1661363c90919063ffffffff16565b613965565b600760006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550611890600760009054906101000a900467ffffffffffffffff168360056139d09092919063ffffffff16565b611902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5573657220616c7265616479207265676973746572656400000000000000000081525060200191505060405180910390fd5b600760009054906101000a900467ffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff167f6838f67cb358c332087b73dbe769a6c869a5f87225236c16dda5d0013a77074c82604051808267ffffffffffffffff16815260200191505060405180910390a2919050565b600061198e826005613cf690919063ffffffff16565b156119ae576119a7826005613d6390919063ffffffff16565b9050611a08565b6119b7826117fe565b90508173ffffffffffffffffffffffffffffffffffffffff168167ffffffffffffffff167f969d438b19b6b5fb3c0d3c6f16867e519fcec4233799d6be29d1c00f2045ba2660405160405180910390a35b919050565b60008160006002600083815260200190815260200160002060030154905060008114158015611a3c5750804210155b8015611a6057506000801b6002600084815260200190815260200160002060080154145b611ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a466028913960400191505060405180910390fd5b506000806000611ada6002600088815260200190815260200160002060040154613e42565b92509250925060006002600088815260200190815260200160002060060154905060006002600089815260200190815260200160002060070154905060008060008590505b6000611b4685600160008f8152602001908152602001600020613e6890919063ffffffff16565b90507fffffffffffffffffffffffffffffffffffffffff00000000000000000000000160001b811415611b795750611c02565b809450611b8585613e42565b909150816bffffffffffffffffffffffff169150806bffffffffffffffffffffffff1690508094508195505050611bc5838761363c90919063ffffffff16565b955050611be982876bffffffffffffffffffffffff166136c490919063ffffffff16565b611bfc84876136c490919063ffffffff16565b10611b1f575b600085118015611c445750611c2e82876bffffffffffffffffffffffff166136c490919063ffffffff16565b611c4184876136c490919063ffffffff16565b10155b15611d4d576000611c90611c8185611c73868b6bffffffffffffffffffffffff166136c490919063ffffffff16565b61374a90919063ffffffff16565b8761391b90919063ffffffff16565b9050808310611d1b576000611cae828561391b90919063ffffffff16565b9050611cb981613f66565b600260008f815260200190815260200160002060090160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611d10828861391b90919063ffffffff16565b9650859b5050611d47565b611d2e838761391b90919063ffffffff16565b9550611d44600088611d3f89613f66565b6138da565b9a505b50611dd9565b866bffffffffffffffffffffffff16851115611d7e57611d77600087611d7288613f66565b6138da565b9950611dd8565b611d8a600087896138da565b9950611dd5611dd0886bffffffffffffffffffffffff16611dc2896bffffffffffffffffffffffff16896136c490919063ffffffff16565b61374a90919063ffffffff16565b613f66565b90505b5b89600260008d81526020019081526020016000206008018190555084600260008d8152602001908152602001600020600b01541115611e42576001600260008d8152602001908152602001600020600901600c6101000a81548160ff0219169083151502179055505b611e5c8b826bffffffffffffffffffffffff168a89613fd5565b8a7f4d160a2a345f2faeb9ac2e65272820b8ca5473b80aabef416bdf7e07ee7f591082878d60405180846bffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff168152602001828152602001935050505060405180910390a26000600360008d815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008c81526020019081526020016000206000611f32919061565c565b6000801b600260008d8152602001908152602001600020600401819055506000801b600260008d8152602001908152602001600020600701819055506000600260008d8152602001908152602001600020600601819055506000600260008d815260200190815260200160002060050181905550505050505050505050919050565b8160006002600083815260200190815260200160002060030154905060008114158015611fe15750804210155b801561200557506000801b6002600084815260200190815260200160002060080154145b61205a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a466028913960400191505060405180910390fd5b50600061207c6002600086815260200190815260200160002060040154613e42565b9250505060006002600086815260200190815260200160002060060154905060006002600087815260200190815260200160002060070154905060005b85811015612128576120e682600160008a8152602001908152602001600020613e6890919063ffffffff16565b915060006120f383613e42565b92505050612118816bffffffffffffffffffffffff168561363c90919063ffffffff16565b93505080806001019150506120b9565b507fffffffffffffffffffffffffffffffffffffffff00000000000000000000000160001b8114156121c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265616368656420656e64206f66206f72646572206c6973740000000000000081525060200191505060405180910390fd5b6000806121ce83613e42565b9250925050612202816bffffffffffffffffffffffff16866bffffffffffffffffffffffff166136c490919063ffffffff16565b612223836bffffffffffffffffffffffff16866136c490919063ffffffff16565b10612296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f746f6f206d616e79206f72646572732073756d6d65642075700000000000000081525060200191505060405180910390fd5b83600260008a81526020019081526020016000206006018190555082600260008a8152602001908152602001600020600701819055505050505050505050565b6122de6141c7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461239e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600f8211156123f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615902602d913960400191505060405180910390fd5b61240181611978565b600a60006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816009819055505050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154908060060154908060070154908060080154908060090160009054906101000a90046bffffffffffffffffffffffff169080600901600c9054906101000a900460ff169080600901600d9054906101000a900460ff169080600a01549080600b015490508e565b600a60009054906101000a900467ffffffffffffffff1681565b600061255382600160008681526020019081526020016000206141cf90919063ffffffff16565b905092915050565b6125636141c7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080836000801b60026000838152602001908152602001600020600801541415612774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f41756374696f6e206e6f74207965742066696e6973686564000000000000000081525060200191505060405180910390fd5b60005b8451811015612837576127b885828151811061278f57fe5b60200260200101516001600089815260200190815260200160002061420b90919063ffffffff16565b61282a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f6f72646572206973206e6f206c6f6e67657220636c61696d61626c650000000081525060200191505060405180910390fd5b8080600101915050612777565b506128406156a4565b60026000878152602001908152602001600020604051806101c00160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160098201600c9054906101000a900460ff1615151515815260200160098201600d9054906101000a900460ff16151515158152602001600a8201548152602001600b8201548152505090506000806129ec836101000151613e42565b92509250506000612a1088600081518110612a0357fe5b6020026020010151613e42565b505090506000600260008b8152602001908152602001600020600901600c9054906101000a900460ff16905060005b8951811015612d13576000806000612a698d8581518110612a5c57fe5b6020026020010151613e42565b9250925092508567ffffffffffffffff168367ffffffffffffffff1614612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615a236023913960400191505060405180910390fd5b8415612b0957612b02816bffffffffffffffffffffffff168c61363c90919063ffffffff16565b9a50612c9c565b8861010001518d8581518110612b1b57fe5b60200260200101511415612bde57612b8f612b80886bffffffffffffffffffffffff16612b728b6bffffffffffffffffffffffff168d61012001516bffffffffffffffffffffffff166136c490919063ffffffff16565b61374a90919063ffffffff16565b8d61363c90919063ffffffff16565b9b50612bd7612bc88a61012001516bffffffffffffffffffffffff16836bffffffffffffffffffffffff1661391b90919063ffffffff16565b8c61363c90919063ffffffff16565b9a50612c9b565b612c098961010001518e8681518110612bf357fe5b602002602001015161424890919063ffffffff16565b15612c7657612c6f612c60886bffffffffffffffffffffffff16612c528b6bffffffffffffffffffffffff16856bffffffffffffffffffffffff166136c490919063ffffffff16565b61374a90919063ffffffff16565b8d61363c90919063ffffffff16565b9b50612c9a565b612c97816bffffffffffffffffffffffff168c61363c90919063ffffffff16565b9a505b5b5b8567ffffffffffffffff168e7f3f2c83616e48a2f8b3c9cc26499e2e5c61643714dac49027d82cf6732f96a91a848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a35050508080600101915050612a3f565b50612d208a898985614466565b5050505050509250929050565b8160026000828152602001908152602001600020600201544210612d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806158636032913960400191505060405180910390fd5b6000612da733611978565b90506000805b8451811015612f27576000612df0868381518110612dc757fe5b6020026020010151600160008a815260200190815260200160002061455b90919063ffffffff16565b90508015612f19576000806000612e19898681518110612e0c57fe5b6020026020010151613e42565b9250925092508667ffffffffffffffff168367ffffffffffffffff1614612e8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806157f76023913960400191505060405180910390fd5b612eac816bffffffffffffffffffffffff168761363c90919063ffffffff16565b95508667ffffffffffffffff168a7f7edae327fe79804b2f38bd490d874a0d188d3ae8911b303205abe47400086ac4848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a35050505b508080600101915050612dad565b50612f8933826002600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166146069092919063ffffffff16565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8560006002600083815260200190815260200160002060030154905060008114158015612fe65750804210155b801561300a57506000801b6002600084815260200190815260200160002060080154145b61305f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615a466028913960400191505060405180910390fd5b5060026000888152602001908152602001600020600901600d9054906101000a900460ff166130d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061579e6028913960400191505060405180910390fd5b600186511480156130eb575060018551145b613140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806159556027913960400191505060405180910390fd5b600061314b33611978565b90506131a8613183828960008151811061316157fe5b60200260200101518960008151811061317657fe5b60200260200101516138da565b600260008b81526020019081526020016000206007015461424890919063ffffffff16565b6131fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806157c66031913960400191505060405180910390fd5b61320c888888888888336146a8565b5061321688611a0d565b505050505050505050565b60085481565b60008660026000828152602001908152602001600020600301544210613298576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b176022913960400191505060405180910390fd5b6132a7888888888888336146a8565b9150509695505050505050565b6103e881565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60008760026000828152602001908152602001600020600301544210613364576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615b176022913960400191505060405180910390fd5b613373898989898989896146a8565b915050979650505050505050565b6133896141c7565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613449576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061581a6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60046020528060005260406000206000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156136345780601f1061360957610100808354040283529160200191613634565b820191906000526020600020905b81548152906001019060200180831161361757829003601f168201915b505050505081565b6000808284019050838110156136ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156136d75760009050613744565b60008284029050828482816136e857fe5b041461373f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159dc6021913960400191505060405180910390fd5b809150505b92915050565b600061378c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614cc0565b905092915050565b61384f846323b872dd60e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614d86565b50505050565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000160001b816000016000600160001b815260200190815260200160002081905550600160001b8160010160007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000160001b81526020019081526020016000208190555050565b6000816bffffffffffffffffffffffff166060846bffffffffffffffffffffffff16901b60c08667ffffffffffffffff16901b010160001b90509392505050565b600061395d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614e75565b905092915050565b60006801000000000000000082106139c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806159fd6026913960400191505060405180910390fd5b819050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616e6e6f7420696e73657274207a65726f206164647265737300000000000081525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff168367ffffffffffffffff161415613b1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f43616e6e6f7420696e73657274206d61782075696e743634000000000000000081525060200191505060405180910390fd5b60008460010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff16141580613c065750600073ffffffffffffffffffffffffffffffffffffffff168460000160006001860167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15613c145760009050613cef565b818460000160006001860167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600183018460010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600190505b9392505050565b6000808360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1667ffffffffffffffff161415905092915050565b6000613d6f8383613cf6565b613de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d7573742068617665204164647265737320746f20676574204944000000000081525060200191505060405180910390fd5b60018360010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900467ffffffffffffffff1603905092915050565b600080600060c08460001c901c925060608460001c901c91508360001c90509193909250565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000160001b821415613ee6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806158ba6022913960400191505060405180910390fd5b60008360000160008481526020019081526020016000205490506000801b811415613f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061597c602a913960400191505060405180910390fd5b8091505092915050565b60006c010000000000000000000000008210613fcd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806157786026913960400191505060405180910390fd5b819050919050565b60006140226103e861401460026000898152602001908152602001600020600a0154856bffffffffffffffffffffffff166136c490919063ffffffff16565b61374a90919063ffffffff16565b905060026000868152602001908152602001600020600901600c9054906101000a900460ff161561407f5761407a8561407283856bffffffffffffffffffffffff1661363c90919063ffffffff16565b600086614466565b6141c0565b6000806140a16002600089815260200190815260200160002060080154613e42565b925092505060006140c987866bffffffffffffffffffffffff1661391b90919063ffffffff16565b90506000614112614103876bffffffffffffffffffffffff166140f585896136c490919063ffffffff16565b61374a90919063ffffffff16565b8361363c90919063ffffffff16565b90506000614157856bffffffffffffffffffffffff16614149866bffffffffffffffffffffffff168c6136c490919063ffffffff16565b61374a90919063ffffffff16565b90506141658a83838b614466565b6141ba8a61419c896bffffffffffffffffffffffff1661418e8d8b6136c490919063ffffffff16565b61374a90919063ffffffff16565b6000600a60009054906101000a900467ffffffffffffffff16614466565b50505050505b5050505050565b600033905090565b6000600160001b8214156141e65760009050614205565b6000801b83600001600084815260200190815260200160002054141590505b92915050565b600080614218848461455b565b9050801561423e576000801b846001016000858152602001908152602001600020819055505b8091505092915050565b60008060008061425786613e42565b925092509250600080600061426b88613e42565b9250925092506142a0846bffffffffffffffffffffffff16836bffffffffffffffffffffffff166136c490919063ffffffff16565b6142cf826bffffffffffffffffffffffff16876bffffffffffffffffffffffff166136c490919063ffffffff16565b10156142e45760019650505050505050614460565b614313846bffffffffffffffffffffffff16836bffffffffffffffffffffffff166136c490919063ffffffff16565b614342826bffffffffffffffffffffffff16876bffffffffffffffffffffffff166136c490919063ffffffff16565b11156143575760009650505050505050614460565b816bffffffffffffffffffffffff16856bffffffffffffffffffffffff16101561438a5760019650505050505050614460565b816bffffffffffffffffffffffff16856bffffffffffffffffffffffff1611156143bd5760009650505050505050614460565b8267ffffffffffffffff168667ffffffffffffffff16141561442a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180615a6e602d913960400191505060405180910390fd5b8267ffffffffffffffff168667ffffffffffffffff1610156144555760019650505050505050614460565b600096505050505050505b92915050565b600061447c826005614f3590919063ffffffff16565b905060008411156144e9576144e881856002600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166146069092919063ffffffff16565b5b60008311156145545761455381846002600089815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166146069092919063ffffffff16565b5b5050505050565b600061456783836141cf565b6145745760009050614600565b60008360010160008481526020019081526020016000205490506000846000016000858152602001908152602001600020549050808560000160008481526020019081526020016000208190555081856001016000838152602001908152602001600020819055506000801b856000016000868152602001908152602001600020819055506001925050505b92915050565b6146a38363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614d86565b505050565b600080600360008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146148ad576319a05a7e60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff166319a05a7e858c89896040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060206040518083038186803b1580156147df57600080fd5b505afa1580156147f3573d6000803e3d6000fd5b505050506040513d602081101561480957600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146148ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f75736572206e6f7420616c6c6f77656420746f20706c616365206f726465720081525060200191505060405180910390fd5b5b506000806148d0600260008c815260200190815260200160002060040154613e42565b925092505060005b89518110156149c8576149238982815181106148f057fe5b60200260200101516bffffffffffffffffffffffff16836bffffffffffffffffffffffff166136c490919063ffffffff16565b614965846bffffffffffffffffffffffff168c848151811061494157fe5b60200260200101516bffffffffffffffffffffffff166136c490919063ffffffff16565b106149bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615a9b6029913960400191505060405180910390fd5b80806001019150506148d8565b50505060006149d683611978565b91506000600260008b815260200190815260200160002060050154905060005b8951811015614c4f5760008a8281518110614a0d57fe5b60200260200101516bffffffffffffffffffffffff1611614a79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806158956025913960400191505060405180910390fd5b81898281518110614a8657fe5b60200260200101516bffffffffffffffffffffffff1611614b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f6f7264657220746f6f20736d616c6c000000000000000000000000000000000081525060200191505060405180910390fd5b614b79614b43858c8481518110614b2257fe5b60200260200101518c8581518110614b3657fe5b60200260200101516138da565b898381518110614b4f57fe5b6020026020010151600160008f81526020019081526020016000206150089092919063ffffffff16565b15614c4257614bb2898281518110614b8d57fe5b60200260200101516bffffffffffffffffffffffff168461363c90919063ffffffff16565b92508367ffffffffffffffff168b7f9304f2fc7ed6d42c0400e678dbc7283e1e9054889c3afea5f965adff66ef9eac8c8481518110614bed57fe5b60200260200101518c8581518110614c0157fe5b602002602001015160405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a35b80806001019150506149f6565b50614cb3333084600260008f815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613794909392919063ffffffff16565b5050979650505050505050565b60008083118290614d6c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614d31578082015181840152602081019050614d16565b50505050905090810190601f168015614d5e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614d7857fe5b049050809150509392505050565b6060614de8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166152b69092919063ffffffff16565b9050600081511115614e7057808060200190516020811015614e0957600080fd5b8101908080519060200190929190505050614e6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615aed602a913960400191505060405180910390fd5b5b505050565b6000838311158290614f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614ee7578082015181840152602081019050614ecc565b50505050905090810190601f168015614f145780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000614f4183836152ce565b614fb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4d757374206861766520494420746f206765742041646472657373000000000081525060200191505060405180910390fd5b8260000160006001840167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905092915050565b60008061501484613e42565b9250505060006bffffffffffffffffffffffff16816bffffffffffffffffffffffff1614156150ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e73657274696e67207a65726f206973206e6f7420737570706f727465640081525060200191505060405180910390fd5b600160001b84141580156150e257507fffffffffffffffffffffffffffffffffffffffff00000000000000000000000160001b8414155b615154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73657274696e6720656c656d656e74206973206e6f742076616c6964000081525060200191505060405180910390fd5b61515e85856141cf565b1561516d5760009150506152af565b600160001b831415801561519857506000801b85600101600085815260200190815260200160002054145b156151a75760009150506152af565b6151ba848461424890919063ffffffff16565b6151c85760009150506152af565b5b6000801b856000016000858152602001908152602001600020541415615206578460010160008481526020019081526020016000205492506151c9565b6000808490505b80915086600001600082815260200190815260200160002054905061523b868261424890919063ffffffff16565b61520d578587600001600084815260200190815260200160002081905550858760010160008381526020019081526020016000208190555081876001016000888152602001908152602001600020819055508087600001600088815260200190815260200160002081905550600193505050505b9392505050565b60606152c58484600085615354565b90509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168360000160006001850167ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415905092915050565b6060824710156153af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158dc6026913960400191505060405180910390fd5b6153b8856154fd565b61542a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061547a5780518252602082019150602081019050602083039250615457565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146154dc576040519150601f19603f3d011682016040523d82523d6000602084013e6154e1565b606091505b50915091506154f1828286615510565b92505050949350505050565b600080823b905060008111915050919050565b60608315615520578290506155d5565b6000835111156155335782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561559a57808201518184015260208101905061557f565b50505050905090810190601f1680156155c75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061561d57805160ff191683800117855561564b565b8280016001018555821561564b579182015b8281111561564a57825182559160200191906001019061562f565b5b509050615658919061575a565b5090565b50805460018160011615610100020316600290046000825580601f1061568257506156a1565b601f0160209004906000526020600020908101906156a0919061575a565b5b50565b604051806101c00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600080191681526020016000815260200160008152602001600080191681526020016000801916815260200160006bffffffffffffffffffffffff16815260200160001515815260200160001515815260200160008152602001600081525090565b5b8082111561577357600081600090555060010161575b565b509056fe53616665436173743a2076616c756520646f65736e27742066697420696e20393620626974736e6f7420616c6c6f77656420746f20736574746c652061756374696f6e2061746f6d6963616c6c7970726563616c63756c61746553656c6c416d6f756e7453756d20697320616c726561647920746f6f20616476616e6365644f6e6c792074686520757365722063616e2063616e63656c20686973206f72646572734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373746f6b656e732063616e6e6f742062652061756374696f6e656420666f7220667265656e6f206c6f6e67657220696e206f7264657220706c6163656d656e7420616e642063616e63656c6174696f6e2070686173655f6d696e427579416d6f756e7473206d7573742062652067726561746572207468616e2030547279696e6720746f20676574206e657874206f66206c61737420656c656d656e74416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c466565206973206e6f7420616c6c6f77656420746f2062652073657420686967686572207468616e20312e352561756374696f6e20656e642064617465206d75737420626520696e20746865206675747572654f6e6c79206f6e65206f726465722063616e20626520706c616365642061746f6d6963616c6c79547279696e6720746f20676574206e657874206f66206e6f6e2d6578697374656e7420656c656d656e746d696e696d756d42696464696e67416d6f756e745065724f72646572206973206e6f7420616c6c6f77656420746f206265207a65726f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20363420626974736f6e6c7920616c6c6f77656420746f20636c61696d20666f722073616d65207573657241756374696f6e206e6f7420696e20736f6c7574696f6e207375626d697373696f6e20706861736575736572206973206e6f7420616c6c6f77656420746f20706c6163652073616d65206f726465722074776963656c696d6974207072696365206e6f7420626574746572207468616e206d696d696d616c206f6666657274696d6520706572696f647320617265206e6f7420636f6e6669677572656420636f72726563746c795361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f206c6f6e67657220696e206f7264657220706c6163656d656e74207068617365a26469706673582212209d3f3585da1ffe9756c8a2e5f28991662e7f098068faf72dd2ec014b6bd536c964736f6c634300060c0033