diff --git a/src/blockchain/buyerMethods.ts b/src/blockchain/buyerMethods.ts index 7d6bd09..183c4ad 100644 --- a/src/blockchain/buyerMethods.ts +++ b/src/blockchain/buyerMethods.ts @@ -21,9 +21,6 @@ const addLock = async ( const lock = await p2pContract.lock( seller, token, - etherStore.walletAddress, // String "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" (Example) - ethers.constants.AddressZero, // String "0x0000000000000000000000000000000000000000" - 0, parseEther(String(amount)), // BigNumber [], [] @@ -36,7 +33,7 @@ const addLock = async ( }; const releaseLock = async ( - pixKey: number, + pixKey: string, amount: number, e2eId: string, lockId: string @@ -46,7 +43,7 @@ const releaseLock = async ( ); const messageToSign = ethers.utils.solidityKeccak256( - ["uint160", "uint256", "bytes32"], + ["bytes32", "uint256", "bytes32"], [ pixKey, parseEther(String(amount)), @@ -65,11 +62,8 @@ const releaseLock = async ( const release = await p2pContract.release( BigNumber.from(lockId), - ethers.constants.AddressZero, ethers.utils.formatBytes32String(e2eId), - sig.r, - sig.s, - sig.v + flatSig ); await release.wait(); diff --git a/src/blockchain/events.ts b/src/blockchain/events.ts index 7eaa81d..bfa16cb 100644 --- a/src/blockchain/events.ts +++ b/src/blockchain/events.ts @@ -103,7 +103,7 @@ const getValidDeposits = async ( blockNumber: deposit.blockNumber, remaining: Number(formatEther(mappedBalance._hex)), seller: deposit.args?.seller, - pixKey: Number(mappedPixTarget._hex), + pixKey: mappedPixTarget, }; } @@ -127,7 +127,7 @@ const getUnreleasedLockById = async ( const pixTarget = lock.pixTarget; const amount = formatEther(lock?.amount); - pixData.pixKey = String(Number(pixTarget)); + pixData.pixKey = pixTarget; pixData.value = Number(amount); return { diff --git a/src/blockchain/sellerMethods.ts b/src/blockchain/sellerMethods.ts index aeea3c5..a6d34b7 100644 --- a/src/blockchain/sellerMethods.ts +++ b/src/blockchain/sellerMethods.ts @@ -32,11 +32,11 @@ const addDeposit = async (tokenQty: string, pixKey: string): Promise => { const etherStore = useEtherStore(); const deposit = await p2pContract.deposit( + pixKey, + ethers.utils.formatBytes32String(""), getTokenAddress(etherStore.selectedToken), parseEther(tokenQty), - pixKey, - true, - ethers.utils.formatBytes32String("") + true ); await deposit.wait(); diff --git a/src/blockchain/wallet.ts b/src/blockchain/wallet.ts index 0842525..12d8d17 100644 --- a/src/blockchain/wallet.ts +++ b/src/blockchain/wallet.ts @@ -201,7 +201,7 @@ const checkUnreleasedLock = async ( const pixTarget = lock.pixTarget; const amount = formatEther(lock?.amount); - pixData.pixKey = String(Number(pixTarget)); + pixData.pixKey = pixTarget; pixData.value = Number(amount); return { diff --git a/src/utils/smart_contract_files/P2PIX.json b/src/utils/smart_contract_files/P2PIX.json index 16419cd..857ed08 100644 --- a/src/utils/smart_contract_files/P2PIX.json +++ b/src/utils/smart_contract_files/P2PIX.json @@ -16,12 +16,12 @@ "type": "address[]" }, { - "internalType": "contract IReputation", + "internalType": "address", "name": "_reputation", "type": "address" }, { - "internalType": "address[]", + "internalType": "contract ERC20[]", "name": "tokens", "type": "address[]" }, @@ -54,11 +54,6 @@ "name": "DecOverflow", "type": "error" }, - { - "inputs": [], - "name": "DepositAlreadyExists", - "type": "error" - }, { "inputs": [], "name": "EmptyPixTarget", @@ -139,6 +134,11 @@ "name": "TxAlreadyUsed", "type": "error" }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -169,7 +169,7 @@ }, { "indexed": false, - "internalType": "address", + "internalType": "contract ERC20", "name": "token", "type": "address" }, @@ -194,7 +194,7 @@ }, { "indexed": false, - "internalType": "address", + "internalType": "contract ERC20", "name": "token", "type": "address" }, @@ -244,9 +244,9 @@ }, { "indexed": false, - "internalType": "uint256", + "internalType": "address", "name": "seller", - "type": "uint256" + "type": "address" }, { "indexed": false, @@ -351,13 +351,13 @@ "anonymous": false, "inputs": [ { - "indexed": false, + "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { - "indexed": false, + "indexed": true, "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" @@ -366,6 +366,25 @@ "name": "RootUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "forwarder", + "type": "address" + }, + { + "indexed": true, + "internalType": "bool", + "name": "state", + "type": "bool" + } + ], + "name": "TrustedForwarderUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -377,7 +396,7 @@ }, { "indexed": false, - "internalType": "address", + "internalType": "contract ERC20", "name": "token", "type": "address" }, @@ -404,19 +423,6 @@ "name": "ValidSignersUpdated", "type": "event" }, - { - "inputs": [], - "name": "WAD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -459,7 +465,7 @@ "inputs": [ { "internalType": "contract ERC20", - "name": "", + "name": "erc20", "type": "address" } ], @@ -467,7 +473,7 @@ "outputs": [ { "internalType": "bool", - "name": "", + "name": "state", "type": "bool" } ], @@ -490,29 +496,29 @@ { "inputs": [ { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint96", - "name": "_amount", - "type": "uint96" - }, - { - "internalType": "uint160", - "name": "_pixTarget", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "_valid", - "type": "bool" + "internalType": "string", + "name": "pixTarget", + "type": "string" }, { "internalType": "bytes32", "name": "allowlistRoot", "type": "bytes32" + }, + { + "internalType": "contract ERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "uint96", + "name": "amount", + "type": "uint96" + }, + { + "internalType": "bool", + "name": "valid", + "type": "bool" } ], "name": "deposit", @@ -608,14 +614,57 @@ "name": "getPixTarget", "outputs": [ { - "internalType": "uint160", + "internalType": "bytes32", "name": "pixTarget", - "type": "uint160" + "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "seller", + "type": "address" + }, + { + "internalType": "contract ERC20", + "name": "token", + "type": "address" + } + ], + "name": "getPixTargetString", + "outputs": [ + { + "internalType": "string", + "name": "pixTarget", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "str", + "type": "string" + } + ], + "name": "getStr", + "outputs": [ + { + "internalType": "bytes32", + "name": "strEnc", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [ { @@ -644,33 +693,37 @@ "inputs": [ { "internalType": "address", - "name": "_seller", + "name": "forwarder", "type": "address" - }, + } + ], + "name": "isTrustedForwarder", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ { "internalType": "address", - "name": "_token", + "name": "seller", "type": "address" }, { - "internalType": "address", - "name": "_buyerAddress", + "internalType": "contract ERC20", + "name": "token", "type": "address" }, { - "internalType": "address", - "name": "_relayerTarget", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_relayerPremium", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" + "internalType": "uint80", + "name": "amount", + "type": "uint80" }, { "internalType": "bytes32[]", @@ -687,7 +740,7 @@ "outputs": [ { "internalType": "uint256", - "name": "", + "name": "lockID", "type": "uint256" } ], @@ -717,35 +770,30 @@ ], "name": "mapLocks", "outputs": [ - { - "internalType": "uint256", - "name": "sellerKey", - "type": "uint256" - }, { "internalType": "uint256", "name": "counter", "type": "uint256" }, - { - "internalType": "uint256", - "name": "relayerPremium", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, { "internalType": "uint256", "name": "expirationBlock", "type": "uint256" }, { - "internalType": "uint160", + "internalType": "bytes32", "name": "pixTarget", - "type": "uint160" + "type": "bytes32" + }, + { + "internalType": "uint80", + "name": "amount", + "type": "uint80" + }, + { + "internalType": "contract ERC20", + "name": "token", + "type": "address" }, { "internalType": "address", @@ -754,17 +802,7 @@ }, { "internalType": "address", - "name": "relayerTarget", - "type": "address" - }, - { - "internalType": "address", - "name": "relayerAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "token", + "name": "seller", "type": "address" } ], @@ -791,30 +829,15 @@ "name": "lockID", "type": "uint256" }, - { - "internalType": "address", - "name": "_relayerTarget", - "type": "address" - }, { "internalType": "bytes32", "name": "pixTimestamp", "type": "bytes32" }, { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" + "internalType": "bytes", + "name": "signature", + "type": "bytes" } ], "name": "release", @@ -838,46 +861,22 @@ { "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "address", + "name": "sellerKey", + "type": "address" } ], "name": "sellerAllowList", "outputs": [ { "internalType": "bytes32", - "name": "", + "name": "root", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "contract ERC20", - "name": "", - "type": "address" - } - ], - "name": "sellerBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -935,6 +934,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "forwarders", + "type": "address[]" + }, + { + "internalType": "bool[]", + "name": "states", + "type": "bool[]" + } + ], + "name": "setTrustedFowarders", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -969,7 +986,7 @@ { "inputs": [ { - "internalType": "address[]", + "internalType": "contract ERC20[]", "name": "_tokens", "type": "address[]" }, @@ -984,6 +1001,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "trustedForwarders", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1001,7 +1037,7 @@ "inputs": [ { "internalType": "bytes32", - "name": "", + "name": "message", "type": "bytes32" } ], @@ -1009,7 +1045,7 @@ "outputs": [ { "internalType": "bool", - "name": "", + "name": "used", "type": "bool" } ], @@ -1039,7 +1075,7 @@ "inputs": [ { "internalType": "uint256", - "name": "", + "name": "signer", "type": "uint256" } ], @@ -1047,7 +1083,7 @@ "outputs": [ { "internalType": "bool", - "name": "", + "name": "valid", "type": "bool" } ], @@ -1089,8 +1125,8 @@ "type": "receive" } ], - "bytecode": "0x6080604052600180556040516200366e3803806200366e8339810160408190526200002a9162000493565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506200007685620000a3565b620000818362000133565b6200008c84620001bd565b620000988282620002a1565b505050505062000616565b6000546001600160a01b03163314620000f25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b806003557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516200012891815260200190565b60405180910390a150565b6000546001600160a01b031633146200017e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9060200162000128565b6000546001600160a01b03163314620002085760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b80516000905b808210156200026e57600062000246848481518110620002325762000232620005b1565b60200260200101516200038760201b60201c565b6000908152600860205260409020805460ff191660019081179091559290920191506200020e565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051620001289190620005c7565b6000546001600160a01b03163314620002ec5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b815180620003025763df9578836000526004601cfd5b81518114620003195763ff633a386000526004601cfd5b60208301602083018260051b82015b8083146200037f578251600052600a60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a360208301925060208201915062000328565b505050505050565b600c1b90565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003ce57620003ce6200038d565b604052919050565b60006001600160401b03821115620003f257620003f26200038d565b5060051b60200190565b6001600160a01b03811681146200041257600080fd5b50565b600082601f8301126200042757600080fd5b81516020620004406200043a83620003d6565b620003a3565b82815260059290921b840181019181810190868411156200046057600080fd5b8286015b84811015620004885780516200047a81620003fc565b835291830191830162000464565b509695505050505050565b600080600080600060a08688031215620004ac57600080fd5b8551602080880151919650906001600160401b0380821115620004ce57600080fd5b620004dc8a838b0162000415565b965060408901519150620004f082620003fc565b6060890151919550808211156200050657600080fd5b620005148a838b0162000415565b945060808901519150808211156200052b57600080fd5b508701601f810189136200053e57600080fd5b80516200054f6200043a82620003d6565b81815260059190911b8201830190838101908b8311156200056f57600080fd5b928401925b828410156200059f57835180151581146200058f5760008081fd5b8252928401929084019062000574565b80955050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156200060a5783516001600160a01b031683529284019291840191600101620005e3565b50909695505050505050565b61304880620006266000396000f3fe6080604052600436106101e75760003560e01c80637f94f65d11610102578063ad8f2eed11610095578063d4fac45d11610064578063d4fac45d1461074c578063d6e8b97314610797578063f7d0e04b146107b7578063fb8c5ef0146107d757600080fd5b8063ad8f2eed14610692578063b0983d39146106d2578063c52164c6146106f2578063d1c070281461071f57600080fd5b80638db564c2116100d15780638db564c2146105fe5780639872dbfe1461061457806398a268711461062a5780639eee8d4b1461065a57600080fd5b80637f94f65d1461052b57806380e1d3021461054b57806384ab1d281461058b5780638da5cb5b146105d157600080fd5b80634b2ae9801161017a5780636a146024116101495780636a146024146104a25780636d82d9e0146104be57806374ba03a0146104de57806377cd38a4146104fe57600080fd5b80634b2ae9801461041c578063574983c81461043d5780635fd8c7101461045d57806369cc6af41461047257600080fd5b8063328a7181116101b6578063328a718114610295578063367821f0146102b5578063461f3120146103ae57806349ef8448146103ee57600080fd5b806304937320146101f35780630a98b9bd146102335780630d2a2d441461025357806313af40351461027557600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061022061020e3660046126f1565b60076020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561023f57600080fd5b5061022061024e366004612778565b6107f7565b34801561025f57600080fd5b5061027361026e36600461295f565b610ba6565b005b34801561028157600080fd5b5061027361029036600461299c565b610ce0565b3480156102a157600080fd5b506102736102b03660046129d5565b610dd1565b3480156102c157600080fd5b506103426102d03660046126f1565b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460068601546007870154600888015460099098015496989597949693959473ffffffffffffffffffffffffffffffffffffffff93841694928416939182169290821691168a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925273ffffffffffffffffffffffffffffffffffffffff90811660a087015290811660c086015290811660e0850152908116610100840152166101208201526101400161022a565b3480156103ba57600080fd5b506103de6103c93660046126f1565b60096020526000908152604090205460ff1681565b604051901515815260200161022a565b3480156103fa57600080fd5b5061040e610409366004612a48565b611012565b60405161022a929190612b43565b34801561042857600080fd5b5061022061043736600461299c565b600c1b90565b34801561044957600080fd5b506102736104583660046126f1565b6112f5565b34801561046957600080fd5b506102736113ab565b34801561047e57600080fd5b506103de61048d36600461299c565b600a6020526000908152604090205460ff1681565b3480156104ae57600080fd5b50610220670de0b6b3a764000081565b3480156104ca57600080fd5b506102736104d9366004612bd2565b61146d565b3480156104ea57600080fd5b506102736104f9366004612c07565b611584565b34801561050a57600080fd5b506102206105193660046126f1565b60066020526000908152604090205481565b34801561053757600080fd5b50610273610546366004612c6b565b611a63565b34801561055757600080fd5b506103de610566366004612c97565b600c9190911b6000908152600b60209081526040808320938352929052205460ff1c90565b34801561059757600080fd5b506105ac6105a63660046126f1565b600c1c90565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022a565b3480156105dd57600080fd5b506000546105ac9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561060a57600080fd5b5061022060045481565b34801561062057600080fd5b5061022060035481565b34801561063657600080fd5b506103de6106453660046126f1565b60086020526000908152604090205460ff1681565b34801561066657600080fd5b50610220610675366004612cd0565b600b60209081526000928352604080842090915290825290205481565b34801561069e57600080fd5b506105ac6106ad366004612c97565b600c9190911b6000908152600b602090815260408083209383529290522054605f1c90565b3480156106de57600080fd5b506102736106ed366004612cf5565b611b29565b3480156106fe57600080fd5b506002546105ac9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561072b57600080fd5b5061073f61073a366004612d2b565b611d6c565b60405161022a9190612d72565b34801561075857600080fd5b50610220610767366004612c97565b600c9190911b6000908152600b6020908152604080832093835292905220546b3fffffffffffffffffffffff1690565b3480156107a357600080fd5b506102736107b2366004612d85565b611e46565b3480156107c357600080fd5b506102736107d236600461299c565b611f56565b3480156107e357600080fd5b506102736107f2366004612e47565b612022565b600061080161211e565b61080b8383611b29565b600c8b901b6000908152600b602090815260408083208d84529091529020548a9060ff1c610865576040517fb2e532de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c8c901b6000908152600b602090815260408083208484529091529020546b3fffffffffffffffffffffff16878110156108cc576040517f22bbb43c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108d88e600c1b90565b9050600060045460016108eb9190612ed2565b6000818152600560205260409020600401549091504311610938576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061014001604052808481526020018381526020018d81526020018c81526020016003544361096c9190612ed2565b8152602001605f600b600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c73ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815250905089899050600014610aa957600083815260066020526040902054610a79908b908b9033612162565b610a87848c848489886121ba565b60048054906000610a9783612eea565b91905055508195505050505050610b8f565b68056bc75e2d63100000816060015111610acb57610a87848c848489886121ba565b33600c1b60009081526007602052604081205490610af9610af4670de0b6b3a764000084612f23565b612315565b9050610b0d670de0b6b3a764000082612f5e565b83606001511180610b2b575069d3c21bcecceda10000008360600151115b15610b62576040517f1c18f84600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b70868e86868b8a6121ba565b60048054906000610b8083612eea565b90915550939750505050505050505b610b9860018055565b9a9950505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b80516000905b80821015610ca4576000610c5f848481518110610c5157610c51612f9b565b6020026020010151600c1b90565b600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155929092019150610c32565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051610cd59190612fca565b60405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b8433600c1b73ffffffffffffffffffffffffffffffffffffffff8516610e23576040517f6a3bc53e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205460ff16610e82576040517f1578328e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020546b3fffffffffffffffffffffff81166a52b7d2dcc80cd2e4000000610ee56bffffffffffffffffffffffff8a1683612ed2565b1115610f1d576040517ff3fb0eb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2561211e565b8415610f3557610f353386611a63565b87878760ff81901b605f83901b610f4c8587612ed2565b6000898152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e16845290915290209117919091179055610f9d8733306bffffffffffffffffffffffff8f166123d1565b610fa660018055565b6040805173ffffffffffffffffffffffffffffffffffffffff8e1681526bffffffffffffffffffffffff8d16602082015233917f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf910160405180910390a2505050505050505050505050565b60608082516000141561103d5750506040805160008082526020820190815281830190925292909150565b8251600090818167ffffffffffffffff81111561105c5761105c612849565b604051908082528060200260200182016040528015611085578160200160208202803683370190505b50905060008267ffffffffffffffff8111156110a3576110a3612849565b6040519080825280602002602001820160405280156110cc578160200160208202803683370190505b5090505b828410156112e957600560008886815181106110ee576110ee612f9b565b6020026020010151815260200190815260200160002060000154600014156111965786848151811061112257611122612f9b565b602002602001015182858151811061113c5761113c612f9b565b602002602001018181525050600081858151811061115c5761115c612f9b565b6020026020010190600381111561117557611175612b14565b9081600381111561118857611188612b14565b9052506001909301926110d0565b600560008886815181106111ac576111ac612f9b565b60200260200101518152602001908152602001600020600301546000141561121a578684815181106111e0576111e0612f9b565b60200260200101518285815181106111fa576111fa612f9b565b602002602001018181525050600381858151811061115c5761115c612f9b565b436005600089878151811061123157611231612f9b565b6020026020010151815260200190815260200160002060040154101561129d5786848151811061126357611263612f9b565b602002602001015182858151811061127d5761127d612f9b565b602002602001018181525050600281858151811061115c5761115c612f9b565b8684815181106112af576112af612f9b565b60200260200101518285815181106112c9576112c9612f9b565b602002602001018181525050600181858151811061115c5761115c612f9b565b90969095509350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b806003557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851181604051610cd591815260200190565b60005473ffffffffffffffffffffffffffffffffffffffff16331461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b47611437338261249b565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9101610cd5565b33600c1b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902054801561154c576000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816808552908352928190207f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490941660ff87901b1793849055805192835285151591830191909152849133917fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d49910160405180910390a25061157e565b6040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b61158c61211e565b600086815260056020526040902060038101546115d5576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4381600401541015611613576040517ff6fafba000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005810154600382015460405160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301526034820152605481018690526000906074016040516020818303038152906040528051906020012090506000816040516020016116b691907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000858152600990935291205490915060ff1615156001141561173b576040517ff490a6ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845284905260ff87169282019290925260608101889052608081018790526117a39060019060a0016020604051602081039080840390855afa158015611793573d6000803e3d6000fd5b50505060206040510351600c1b90565b60008181526008602052604090205490915060ff166117ee576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098401546003850154600286015473ffffffffffffffffffffffffffffffffffffffff909216916000906118239083613024565b6000600389018190556004890181905587815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560088801549091503373ffffffffffffffffffffffffffffffffffffffff9091161461190f57600287015433600c1b600090815260076020526040812080549091906118b5908490612ed2565b9091555050600887015482906007906000906118e79073ffffffffffffffffffffffffffffffffffffffff16600c1b90565b815260200190815260200160002060008282546119049190612ed2565b909155506119479050565b81876002015461191f9190612ed2565b33600c1b60009081526007602052604081208054909190611941908490612ed2565b90915550505b600687015461196e90849073ffffffffffffffffffffffffffffffffffffffff1683612515565b6002870154156119f457600787015473ffffffffffffffffffffffffffffffffffffffff8d81169116146119e557600787015460028801546119cd91859173ffffffffffffffffffffffffffffffffffffffff9091169060011c612515565b6119e0838d60018a60020154901c612515565b6119f4565b6119f4838d8960020154612515565b6006870154604080518f81526020810185905273ffffffffffffffffffffffffffffffffffffffff909216917f364537f14276f2a0ce9905588413f96454cbb8fb2e4f5308389307c1098bede8910160405180910390a250505050505050611a5b60018055565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216331415611af7578060066000611a9085600c1b90565b8152602080820192909252604090810160002092909255815173ffffffffffffffffffffffffffffffffffffffff851681529081018390527f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632910160405180910390a15050565b6040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815b80821015611d5657600060056000868686818110611b4d57611b4d612f9b565b9050602002013581526020019081526020016000209050611b6d816125d4565b80546000908152600b60209081526040808320600985015473ffffffffffffffffffffffffffffffffffffffff16845290915290205460038201546b3fffffffffffffffffffffff909116906a52b7d2dcc80cd2e400000090611bd09083612ed2565b1115611c08576040517ff3fb0eb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015482546000908152600b60209081526040808320600987015473ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190611c52908490612ed2565b90915550506000600383018190556008830154611c859073ffffffffffffffffffffffffffffffffffffffff16600c1b90565b60008181526007602052604090205490915060011c68056bc75e2d631000008111611cc957600082815260076020526040902068056bc75e2d631000009055611cdb565b60008281526007602052604090208190555b600684015473ffffffffffffffffffffffffffffffffffffffff167f830501e61b8b075e170b22a430e39454bdb12ed3e9620e586430b6ac00079da5898989818110611d2957611d29612f9b565b90506020020135604051611d3f91815260200190565b60405180910390a285600101955050505050611b2d565b8082101561157e5763dfb035c96000526004601cfd5b8151606090600090818167ffffffffffffffff811115611d8e57611d8e612849565b604051908082528060200260200182016040528015611db7578160200160208202803683370190505b5090505b81831015611e3d576000611e10878581518110611dda57611dda612f9b565b602090810291909101810151600c1b6000908152600b825260408082208a835290925220546b3fffffffffffffffffffffff1690565b905080828581518110611e2557611e25612f9b565b60200260200101818152505083600101935050611dbb565b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b815180611edc5763df9578836000526004601cfd5b81518114611ef25763ff633a386000526004601cfd5b60208301602083018260051b82015b808314611a5b578251600052600a60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a3602083019250602082019150611f01565b60005473ffffffffffffffffffffffffffffffffffffffff163314611fd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b600281905560405173ffffffffffffffffffffffffffffffffffffffff821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f90602001610cd5565b61202a61211e565b6120348282611b29565b33600c1b6000908152600b6020908152604080832087845290915290205460ff1c15156001141561206a5761206a84600061146d565b33600c1b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020546120b8906b3fffffffffffffffffffffff16858784612650565b6120c3853386612515565b6040805173ffffffffffffffffffffffffffffffffffffffff871681526020810186905233917f2cd6435b1b961c13f55202979edd0765a809f69a539d8a477436c94c1211e43e910160405180910390a25061157e60018055565b6001546002141561215b576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b61218484848473ffffffffffffffffffffffffffffffffffffffff85166126ad565b61157e576040517f3b8474be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526005602081815260409283902086518155908601516001820155918501516002830155606085015160038301556080850151600483015560a085015190820180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161790915560c0860151600684018054831691841691909117905560e08601516007840180548316918416919091179055610100860151600884018054831691841691909117905561012086015160099093018054909116929091169190911790556122a986868484612650565b60c083015183516060850151604051879373ffffffffffffffffffffffffffffffffffffffff16927f8fb3989f70bd172a37d15b41b015e48ea09d59329638377304a4198cd0c4ea659261230592918252602082015260400190565b60405180910390a3505050505050565b600080634d2b179160e01b8360405160240161233391815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d91506000519050809450826123c85763e10bf1cc6000526004601cfd5b50505050919050565b60006040517f23b872dd000000000000000000000000000000000000000000000000000000006000528460045283602452826044526020600060646000808a5af13d15601f3d1160016000511416171691506000606052806040525080612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610c23565b5050505050565b600080600080600085875af1905080612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610c23565b505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528360045282602452602060006044600080895af13d15601f3d116001600051141617169150600060605280604052508061157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610c23565b4381600401541115612612576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381015461264d576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b836126635763ce3a3d376000526004601cfd5b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812080548592906126a2908490613024565b909155505050505050565b600083156126e9578360051b8501855b803580851160051b948552602094851852604060002093018181106126e1576126e6565b6126bd565b50505b501492915050565b60006020828403121561270357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461264d57600080fd5b60008083601f84011261273e57600080fd5b50813567ffffffffffffffff81111561275657600080fd5b6020830191508360208260051b850101111561277157600080fd5b9250929050565b6000806000806000806000806000806101008b8d03121561279857600080fd5b8a356127a38161270a565b995060208b01356127b38161270a565b985060408b01356127c38161270a565b975060608b01356127d38161270a565b965060808b0135955060a08b0135945060c08b013567ffffffffffffffff808211156127fe57600080fd5b61280a8e838f0161272c565b909650945060e08d013591508082111561282357600080fd5b506128308d828e0161272c565b915080935050809150509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128bf576128bf612849565b604052919050565b600067ffffffffffffffff8211156128e1576128e1612849565b5060051b60200190565b600082601f8301126128fc57600080fd5b8135602061291161290c836128c7565b612878565b82815260059290921b8401810191818101908684111561293057600080fd5b8286015b848110156129545780356129478161270a565b8352918301918301612934565b509695505050505050565b60006020828403121561297157600080fd5b813567ffffffffffffffff81111561298857600080fd5b612994848285016128eb565b949350505050565b6000602082840312156129ae57600080fd5b81356129b98161270a565b9392505050565b803580151581146129d057600080fd5b919050565b600080600080600060a086880312156129ed57600080fd5b85356129f88161270a565b945060208601356bffffffffffffffffffffffff81168114612a1957600080fd5b93506040860135612a298161270a565b9250612a37606087016129c0565b949793965091946080013592915050565b60006020808385031215612a5b57600080fd5b823567ffffffffffffffff811115612a7257600080fd5b8301601f81018513612a8357600080fd5b8035612a9161290c826128c7565b81815260059190911b82018301908381019087831115612ab057600080fd5b928401925b82841015612ace57833582529284019290840190612ab5565b979650505050505050565b600081518084526020808501945080840160005b83811015612b0957815187529582019590820190600101612aed565b509495945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b604081526000612b566040830185612ad9565b8281036020848101919091528451808352858201928201906000805b82811015612bc45785516004808210612bb1577f4e487b7100000000000000000000000000000000000000000000000000000000845260218152602484fd5b5084529484019492840192600101612b72565b509198975050505050505050565b60008060408385031215612be557600080fd5b8235612bf08161270a565b9150612bfe602084016129c0565b90509250929050565b60008060008060008060c08789031215612c2057600080fd5b863595506020870135612c328161270a565b945060408701359350606087013592506080870135915060a087013560ff81168114612c5d57600080fd5b809150509295509295509295565b60008060408385031215612c7e57600080fd5b8235612c898161270a565b946020939093013593505050565b60008060408385031215612caa57600080fd5b8235612cb58161270a565b91506020830135612cc58161270a565b809150509250929050565b60008060408385031215612ce357600080fd5b823591506020830135612cc58161270a565b60008060208385031215612d0857600080fd5b823567ffffffffffffffff811115612d1f57600080fd5b6112e98582860161272c565b60008060408385031215612d3e57600080fd5b823567ffffffffffffffff811115612d5557600080fd5b612d61858286016128eb565b9250506020830135612cc58161270a565b6020815260006129b96020830184612ad9565b60008060408385031215612d9857600080fd5b823567ffffffffffffffff80821115612db057600080fd5b612dbc868387016128eb565b9350602091508185013581811115612dd357600080fd5b85019050601f81018613612de657600080fd5b8035612df461290c826128c7565b81815260059190911b82018301908381019088831115612e1357600080fd5b928401925b82841015612e3857612e29846129c0565b82529284019290840190612e18565b80955050505050509250929050565b60008060008060608587031215612e5d57600080fd5b8435612e688161270a565b935060208501359250604085013567ffffffffffffffff811115612e8b57600080fd5b612e978782880161272c565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612ee557612ee5612ea3565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f1c57612f1c612ea3565b5060010190565b600082612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f9657612f96612ea3565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561301857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612fe6565b50909695505050505050565b60008282101561303657613036612ea3565b50039056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101e75760003560e01c80637f94f65d11610102578063ad8f2eed11610095578063d4fac45d11610064578063d4fac45d1461074c578063d6e8b97314610797578063f7d0e04b146107b7578063fb8c5ef0146107d757600080fd5b8063ad8f2eed14610692578063b0983d39146106d2578063c52164c6146106f2578063d1c070281461071f57600080fd5b80638db564c2116100d15780638db564c2146105fe5780639872dbfe1461061457806398a268711461062a5780639eee8d4b1461065a57600080fd5b80637f94f65d1461052b57806380e1d3021461054b57806384ab1d281461058b5780638da5cb5b146105d157600080fd5b80634b2ae9801161017a5780636a146024116101495780636a146024146104a25780636d82d9e0146104be57806374ba03a0146104de57806377cd38a4146104fe57600080fd5b80634b2ae9801461041c578063574983c81461043d5780635fd8c7101461045d57806369cc6af41461047257600080fd5b8063328a7181116101b6578063328a718114610295578063367821f0146102b5578063461f3120146103ae57806349ef8448146103ee57600080fd5b806304937320146101f35780630a98b9bd146102335780630d2a2d441461025357806313af40351461027557600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b5061022061020e3660046126f1565b60076020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561023f57600080fd5b5061022061024e366004612778565b6107f7565b34801561025f57600080fd5b5061027361026e36600461295f565b610ba6565b005b34801561028157600080fd5b5061027361029036600461299c565b610ce0565b3480156102a157600080fd5b506102736102b03660046129d5565b610dd1565b3480156102c157600080fd5b506103426102d03660046126f1565b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460068601546007870154600888015460099098015496989597949693959473ffffffffffffffffffffffffffffffffffffffff93841694928416939182169290821691168a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925273ffffffffffffffffffffffffffffffffffffffff90811660a087015290811660c086015290811660e0850152908116610100840152166101208201526101400161022a565b3480156103ba57600080fd5b506103de6103c93660046126f1565b60096020526000908152604090205460ff1681565b604051901515815260200161022a565b3480156103fa57600080fd5b5061040e610409366004612a48565b611012565b60405161022a929190612b43565b34801561042857600080fd5b5061022061043736600461299c565b600c1b90565b34801561044957600080fd5b506102736104583660046126f1565b6112f5565b34801561046957600080fd5b506102736113ab565b34801561047e57600080fd5b506103de61048d36600461299c565b600a6020526000908152604090205460ff1681565b3480156104ae57600080fd5b50610220670de0b6b3a764000081565b3480156104ca57600080fd5b506102736104d9366004612bd2565b61146d565b3480156104ea57600080fd5b506102736104f9366004612c07565b611584565b34801561050a57600080fd5b506102206105193660046126f1565b60066020526000908152604090205481565b34801561053757600080fd5b50610273610546366004612c6b565b611a63565b34801561055757600080fd5b506103de610566366004612c97565b600c9190911b6000908152600b60209081526040808320938352929052205460ff1c90565b34801561059757600080fd5b506105ac6105a63660046126f1565b600c1c90565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022a565b3480156105dd57600080fd5b506000546105ac9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561060a57600080fd5b5061022060045481565b34801561062057600080fd5b5061022060035481565b34801561063657600080fd5b506103de6106453660046126f1565b60086020526000908152604090205460ff1681565b34801561066657600080fd5b50610220610675366004612cd0565b600b60209081526000928352604080842090915290825290205481565b34801561069e57600080fd5b506105ac6106ad366004612c97565b600c9190911b6000908152600b602090815260408083209383529290522054605f1c90565b3480156106de57600080fd5b506102736106ed366004612cf5565b611b29565b3480156106fe57600080fd5b506002546105ac9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561072b57600080fd5b5061073f61073a366004612d2b565b611d6c565b60405161022a9190612d72565b34801561075857600080fd5b50610220610767366004612c97565b600c9190911b6000908152600b6020908152604080832093835292905220546b3fffffffffffffffffffffff1690565b3480156107a357600080fd5b506102736107b2366004612d85565b611e46565b3480156107c357600080fd5b506102736107d236600461299c565b611f56565b3480156107e357600080fd5b506102736107f2366004612e47565b612022565b600061080161211e565b61080b8383611b29565b600c8b901b6000908152600b602090815260408083208d84529091529020548a9060ff1c610865576040517fb2e532de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c8c901b6000908152600b602090815260408083208484529091529020546b3fffffffffffffffffffffff16878110156108cc576040517f22bbb43c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108d88e600c1b90565b9050600060045460016108eb9190612ed2565b6000818152600560205260409020600401549091504311610938576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518061014001604052808481526020018381526020018d81526020018c81526020016003544361096c9190612ed2565b8152602001605f600b600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c73ffffffffffffffffffffffffffffffffffffffff1681526020018f73ffffffffffffffffffffffffffffffffffffffff1681526020018e73ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff16815250905089899050600014610aa957600083815260066020526040902054610a79908b908b9033612162565b610a87848c848489886121ba565b60048054906000610a9783612eea565b91905055508195505050505050610b8f565b68056bc75e2d63100000816060015111610acb57610a87848c848489886121ba565b33600c1b60009081526007602052604081205490610af9610af4670de0b6b3a764000084612f23565b612315565b9050610b0d670de0b6b3a764000082612f5e565b83606001511180610b2b575069d3c21bcecceda10000008360600151115b15610b62576040517f1c18f84600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b70868e86868b8a6121ba565b60048054906000610b8083612eea565b90915550939750505050505050505b610b9860018055565b9a9950505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b80516000905b80821015610ca4576000610c5f848481518110610c5157610c51612f9b565b6020026020010151600c1b90565b600090815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155929092019150610c32565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051610cd59190612fca565b60405180910390a150565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b8433600c1b73ffffffffffffffffffffffffffffffffffffffff8516610e23576040517f6a3bc53e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600a602052604090205460ff16610e82576040517f1578328e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020546b3fffffffffffffffffffffff81166a52b7d2dcc80cd2e4000000610ee56bffffffffffffffffffffffff8a1683612ed2565b1115610f1d576040517ff3fb0eb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f2561211e565b8415610f3557610f353386611a63565b87878760ff81901b605f83901b610f4c8587612ed2565b6000898152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e16845290915290209117919091179055610f9d8733306bffffffffffffffffffffffff8f166123d1565b610fa660018055565b6040805173ffffffffffffffffffffffffffffffffffffffff8e1681526bffffffffffffffffffffffff8d16602082015233917f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf910160405180910390a2505050505050505050505050565b60608082516000141561103d5750506040805160008082526020820190815281830190925292909150565b8251600090818167ffffffffffffffff81111561105c5761105c612849565b604051908082528060200260200182016040528015611085578160200160208202803683370190505b50905060008267ffffffffffffffff8111156110a3576110a3612849565b6040519080825280602002602001820160405280156110cc578160200160208202803683370190505b5090505b828410156112e957600560008886815181106110ee576110ee612f9b565b6020026020010151815260200190815260200160002060000154600014156111965786848151811061112257611122612f9b565b602002602001015182858151811061113c5761113c612f9b565b602002602001018181525050600081858151811061115c5761115c612f9b565b6020026020010190600381111561117557611175612b14565b9081600381111561118857611188612b14565b9052506001909301926110d0565b600560008886815181106111ac576111ac612f9b565b60200260200101518152602001908152602001600020600301546000141561121a578684815181106111e0576111e0612f9b565b60200260200101518285815181106111fa576111fa612f9b565b602002602001018181525050600381858151811061115c5761115c612f9b565b436005600089878151811061123157611231612f9b565b6020026020010151815260200190815260200160002060040154101561129d5786848151811061126357611263612f9b565b602002602001015182858151811061127d5761127d612f9b565b602002602001018181525050600281858151811061115c5761115c612f9b565b8684815181106112af576112af612f9b565b60200260200101518285815181106112c9576112c9612f9b565b602002602001018181525050600181858151811061115c5761115c612f9b565b90969095509350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b806003557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851181604051610cd591815260200190565b60005473ffffffffffffffffffffffffffffffffffffffff16331461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b47611437338261249b565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d9101610cd5565b33600c1b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902054801561154c576000828152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816808552908352928190207f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490941660ff87901b1793849055805192835285151591830191909152849133917fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d49910160405180910390a25061157e565b6040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b61158c61211e565b600086815260056020526040902060038101546115d5576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4381600401541015611613576040517ff6fafba000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005810154600382015460405160609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208301526034820152605481018690526000906074016040516020818303038152906040528051906020012090506000816040516020016116b691907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815281516020928301206000858152600990935291205490915060ff1615156001141561173b576040517ff490a6ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845284905260ff87169282019290925260608101889052608081018790526117a39060019060a0016020604051602081039080840390855afa158015611793573d6000803e3d6000fd5b50505060206040510351600c1b90565b60008181526008602052604090205490915060ff166117ee576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098401546003850154600286015473ffffffffffffffffffffffffffffffffffffffff909216916000906118239083613024565b6000600389018190556004890181905587815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560088801549091503373ffffffffffffffffffffffffffffffffffffffff9091161461190f57600287015433600c1b600090815260076020526040812080549091906118b5908490612ed2565b9091555050600887015482906007906000906118e79073ffffffffffffffffffffffffffffffffffffffff16600c1b90565b815260200190815260200160002060008282546119049190612ed2565b909155506119479050565b81876002015461191f9190612ed2565b33600c1b60009081526007602052604081208054909190611941908490612ed2565b90915550505b600687015461196e90849073ffffffffffffffffffffffffffffffffffffffff1683612515565b6002870154156119f457600787015473ffffffffffffffffffffffffffffffffffffffff8d81169116146119e557600787015460028801546119cd91859173ffffffffffffffffffffffffffffffffffffffff9091169060011c612515565b6119e0838d60018a60020154901c612515565b6119f4565b6119f4838d8960020154612515565b6006870154604080518f81526020810185905273ffffffffffffffffffffffffffffffffffffffff909216917f364537f14276f2a0ce9905588413f96454cbb8fb2e4f5308389307c1098bede8910160405180910390a250505050505050611a5b60018055565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216331415611af7578060066000611a9085600c1b90565b8152602080820192909252604090810160002092909255815173ffffffffffffffffffffffffffffffffffffffff851681529081018390527f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632910160405180910390a15050565b6040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000815b80821015611d5657600060056000868686818110611b4d57611b4d612f9b565b9050602002013581526020019081526020016000209050611b6d816125d4565b80546000908152600b60209081526040808320600985015473ffffffffffffffffffffffffffffffffffffffff16845290915290205460038201546b3fffffffffffffffffffffff909116906a52b7d2dcc80cd2e400000090611bd09083612ed2565b1115611c08576040517ff3fb0eb900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015482546000908152600b60209081526040808320600987015473ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190611c52908490612ed2565b90915550506000600383018190556008830154611c859073ffffffffffffffffffffffffffffffffffffffff16600c1b90565b60008181526007602052604090205490915060011c68056bc75e2d631000008111611cc957600082815260076020526040902068056bc75e2d631000009055611cdb565b60008281526007602052604090208190555b600684015473ffffffffffffffffffffffffffffffffffffffff167f830501e61b8b075e170b22a430e39454bdb12ed3e9620e586430b6ac00079da5898989818110611d2957611d29612f9b565b90506020020135604051611d3f91815260200190565b60405180910390a285600101955050505050611b2d565b8082101561157e5763dfb035c96000526004601cfd5b8151606090600090818167ffffffffffffffff811115611d8e57611d8e612849565b604051908082528060200260200182016040528015611db7578160200160208202803683370190505b5090505b81831015611e3d576000611e10878581518110611dda57611dda612f9b565b602090810291909101810151600c1b6000908152600b825260408082208a835290925220546b3fffffffffffffffffffffff1690565b905080828581518110611e2557611e25612f9b565b60200260200101818152505083600101935050611dbb565b95945050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b815180611edc5763df9578836000526004601cfd5b81518114611ef25763ff633a386000526004601cfd5b60208301602083018260051b82015b808314611a5b578251600052600a60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a3602083019250602082019150611f01565b60005473ffffffffffffffffffffffffffffffffffffffff163314611fd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610c23565b600281905560405173ffffffffffffffffffffffffffffffffffffffff821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f90602001610cd5565b61202a61211e565b6120348282611b29565b33600c1b6000908152600b6020908152604080832087845290915290205460ff1c15156001141561206a5761206a84600061146d565b33600c1b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020546120b8906b3fffffffffffffffffffffff16858784612650565b6120c3853386612515565b6040805173ffffffffffffffffffffffffffffffffffffffff871681526020810186905233917f2cd6435b1b961c13f55202979edd0765a809f69a539d8a477436c94c1211e43e910160405180910390a25061157e60018055565b6001546002141561215b576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b61218484848473ffffffffffffffffffffffffffffffffffffffff85166126ad565b61157e576040517f3b8474be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526005602081815260409283902086518155908601516001820155918501516002830155606085015160038301556080850151600483015560a085015190820180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9384161790915560c0860151600684018054831691841691909117905560e08601516007840180548316918416919091179055610100860151600884018054831691841691909117905561012086015160099093018054909116929091169190911790556122a986868484612650565b60c083015183516060850151604051879373ffffffffffffffffffffffffffffffffffffffff16927f8fb3989f70bd172a37d15b41b015e48ea09d59329638377304a4198cd0c4ea659261230592918252602082015260400190565b60405180910390a3505050505050565b600080634d2b179160e01b8360405160240161233391815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d91506000519050809450826123c85763e10bf1cc6000526004601cfd5b50505050919050565b60006040517f23b872dd000000000000000000000000000000000000000000000000000000006000528460045283602452826044526020600060646000808a5af13d15601f3d1160016000511416171691506000606052806040525080612494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610c23565b5050505050565b600080600080600085875af1905080612510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610c23565b505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528360045282602452602060006044600080895af13d15601f3d116001600051141617169150600060605280604052508061157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610c23565b4381600401541115612612576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600381015461264d576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b836126635763ce3a3d376000526004601cfd5b6000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812080548592906126a2908490613024565b909155505050505050565b600083156126e9578360051b8501855b803580851160051b948552602094851852604060002093018181106126e1576126e6565b6126bd565b50505b501492915050565b60006020828403121561270357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461264d57600080fd5b60008083601f84011261273e57600080fd5b50813567ffffffffffffffff81111561275657600080fd5b6020830191508360208260051b850101111561277157600080fd5b9250929050565b6000806000806000806000806000806101008b8d03121561279857600080fd5b8a356127a38161270a565b995060208b01356127b38161270a565b985060408b01356127c38161270a565b975060608b01356127d38161270a565b965060808b0135955060a08b0135945060c08b013567ffffffffffffffff808211156127fe57600080fd5b61280a8e838f0161272c565b909650945060e08d013591508082111561282357600080fd5b506128308d828e0161272c565b915080935050809150509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156128bf576128bf612849565b604052919050565b600067ffffffffffffffff8211156128e1576128e1612849565b5060051b60200190565b600082601f8301126128fc57600080fd5b8135602061291161290c836128c7565b612878565b82815260059290921b8401810191818101908684111561293057600080fd5b8286015b848110156129545780356129478161270a565b8352918301918301612934565b509695505050505050565b60006020828403121561297157600080fd5b813567ffffffffffffffff81111561298857600080fd5b612994848285016128eb565b949350505050565b6000602082840312156129ae57600080fd5b81356129b98161270a565b9392505050565b803580151581146129d057600080fd5b919050565b600080600080600060a086880312156129ed57600080fd5b85356129f88161270a565b945060208601356bffffffffffffffffffffffff81168114612a1957600080fd5b93506040860135612a298161270a565b9250612a37606087016129c0565b949793965091946080013592915050565b60006020808385031215612a5b57600080fd5b823567ffffffffffffffff811115612a7257600080fd5b8301601f81018513612a8357600080fd5b8035612a9161290c826128c7565b81815260059190911b82018301908381019087831115612ab057600080fd5b928401925b82841015612ace57833582529284019290840190612ab5565b979650505050505050565b600081518084526020808501945080840160005b83811015612b0957815187529582019590820190600101612aed565b509495945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b604081526000612b566040830185612ad9565b8281036020848101919091528451808352858201928201906000805b82811015612bc45785516004808210612bb1577f4e487b7100000000000000000000000000000000000000000000000000000000845260218152602484fd5b5084529484019492840192600101612b72565b509198975050505050505050565b60008060408385031215612be557600080fd5b8235612bf08161270a565b9150612bfe602084016129c0565b90509250929050565b60008060008060008060c08789031215612c2057600080fd5b863595506020870135612c328161270a565b945060408701359350606087013592506080870135915060a087013560ff81168114612c5d57600080fd5b809150509295509295509295565b60008060408385031215612c7e57600080fd5b8235612c898161270a565b946020939093013593505050565b60008060408385031215612caa57600080fd5b8235612cb58161270a565b91506020830135612cc58161270a565b809150509250929050565b60008060408385031215612ce357600080fd5b823591506020830135612cc58161270a565b60008060208385031215612d0857600080fd5b823567ffffffffffffffff811115612d1f57600080fd5b6112e98582860161272c565b60008060408385031215612d3e57600080fd5b823567ffffffffffffffff811115612d5557600080fd5b612d61858286016128eb565b9250506020830135612cc58161270a565b6020815260006129b96020830184612ad9565b60008060408385031215612d9857600080fd5b823567ffffffffffffffff80821115612db057600080fd5b612dbc868387016128eb565b9350602091508185013581811115612dd357600080fd5b85019050601f81018613612de657600080fd5b8035612df461290c826128c7565b81815260059190911b82018301908381019088831115612e1357600080fd5b928401925b82841015612e3857612e29846129c0565b82529284019290840190612e18565b80955050505050509250929050565b60008060008060608587031215612e5d57600080fd5b8435612e688161270a565b935060208501359250604085013567ffffffffffffffff811115612e8b57600080fd5b612e978782880161272c565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612ee557612ee5612ea3565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f1c57612f1c612ea3565b5060010190565b600082612f59577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f9657612f96612ea3565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561301857835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612fe6565b50909695505050505050565b60008282101561303657613036612ea3565b50039056fea164736f6c6343000809000a", + "bytecode": "0x60406080815262002875803803806200001881620003a7565b92833981019060a08183031262000366578051602080830151909391906001600160401b0390818111620003665784019383601f8601121562000366578451946200006d6200006787620003e3565b620003a7565b9087828881520188819860051b83010191878311620003665789809101915b8383106200038c5750505050620000a5888301620003fb565b906060830151848111620003665783019386601f860112156200036657845193620000d46200006786620003e3565b958a87878152018b819760051b830101918a831162000366578c01905b8282106200036b5750505060808101519182116200036657019686601f890112156200036657875196620001296200006789620003e3565b988a8a8a815201908b829a60051b82010192831162000366578b01905b8282106200034c575050600080546001600160a01b03191633908117825590977f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851192508b91897f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d768180a3806003558c51908152a1815160051b82018901893d1515835b81156200032a575b50505050895191898301908a8452518091528a83019190875b8b8282106200030c575050505090807f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7920390a183546001600160a01b0391821691163303620002fc5786817fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f926002558951908152a18151948515620002ef57518503620002e2579085919460051b0101925b8381036200029a57856001600455516124649081620004118239f35b84809181600c63cbc9d1c48152825186528651918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a8680a3019201916200027e565b63ff633a3883526004601cfd5b63df95788384526004601cfd5b87516282b42960e81b8152600490fd5b83516001600160a01b031685529384019390920191600101620001ea565b806001849251600c1b55019083821015620003465790620001c9565b620001d1565b8151801515810362000366578152908b01908b0162000146565b600080fd5b81516001600160a01b038116810362000366578152908c01908c01620000f1565b81906200039984620003fb565b81520191019089906200008c565b6040519190601f01601f191682016001600160401b03811183821017620003cd57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111620003cd5760051b60200190565b51906001600160a01b0382168203620003665756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c9081630493732014611ab8575080630d2a2d44146119b557806311fc7f9a1461166357806313af4035146115d6578063367821f0146115445780633c16f0c414611511578063461f312014610db957806349ef8448146113f75780634b2ae980146113d157806354776bb914611385578063572b6c0514611385578063574983c8146113215780635e918943146110e35780635fd8c7101461106457806369cc6af41461102f5780636d82d9e014610f6b5780637f94f65d14610f4657806380e1d30214610f1057806384ab1d2814610eda5780638da5cb5b14610ea65780638db564c214610e88578063918dff5714610df85780639872dbfe14610dda57806398a2687114610db9578063ad8f2eed14610d8d578063b0983d3914610d53578063c52164c614610d1f578063d1c0702814610c75578063d1ced2b014610b97578063d4fac45d14610b6b578063d6e8b97314610a17578063dc43221c14610451578063e449c52a146103fd578063f7d0e04b146103645763fb8c5ef0146101ab573861000f565b3461035f57606060031936011261035f576101c4611b55565b60243560443567ffffffffffffffff811161035f576101ea6101f8913690600401611ca7565b906101f3611de7565b611ef1565b61020282336121d4565b610299575b6102403383836b3fffffffffffffffffffffff61023a83339060205263739094b1600c5260005260016034600c20015490565b1661215e565b61024b813384611e69565b73ffffffffffffffffffffffffffffffffffffffff6040519216825260208201527f2cd6435b1b961c13f55202979edd0765a809f69a539d8a477436c94c1211e43e60403392a26001600455005b6102b982339060205263739094b1600c5260005260016034600c20015490565b8015610335576b3fffffffffffffffffffffff908360205263739094b1600c52336000521660016034600c20015560405173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d4960403392a2610207565b60046040517f87138d5c000000000000000000000000000000000000000000000000000000008152fd5b600080fd5b3461035f57602060031936011261035f5773ffffffffffffffffffffffffffffffffffffffff6004358181169182820361035f576000541633036103d3577fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f91602091600255604051908152a1005b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b3461035f57602060031936011261035f5760043567ffffffffffffffff811161035f573660238201121561035f576104496104446020923690602481600401359101611d3f565b611da4565b604051908152f35b3461035f5760a060031936011261035f5761046a611b55565b610472611c61565b9060443569ffffffffffffffffffff8116810361035f5760643567ffffffffffffffff811161035f576104a9903690600401611ca7565b93909260843567ffffffffffffffff811161035f576101ea6104cf913690600401611ca7565b6104d982826121d4565b156109ed576104e8828261219a565b9069ffffffffffffffffffff841682106109c35760016005540194856005558560005260066020526001604060002001544311156109995761052a8483612211565b9680156107ff576374dfee70600c5282600052602060002054918173ffffffffffffffffffffffffffffffffffffffff610562611e22565b16926107cc575b5050036107a2575b61057d60035443611dda565b90610586611e22565b94604051958660e081011067ffffffffffffffff60e0890111176107735773ffffffffffffffffffffffffffffffffffffffff6106ef9669ffffffffffffffffffff82969460209c849660e08d016040528d8d528e8d015260408c01521660608a01521660808801521660a08601521660c0840152836000526006855260406000209083518255858401516001830155604084015160028301556003820173ffffffffffffffffffffffffffffffffffffffff69ffffffffffffffffffff60608701511691805490608088015191847fffff0000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffff000000000000000000008560501b16921617179055600560048601958360a08a015116967fffffffffffffffffffffffff00000000000000000000000000000000000000009788825416179055018260c0890151168096825416179055169161215e565b73ffffffffffffffffffffffffffffffffffffffff60a0820151167fa8fb61052fec8ed6ed923dd5e14b7d6aaae41d44c8870fc4efebf871389a577d604083519369ffffffffffffffffffff606073ffffffffffffffffffffffffffffffffffffffff60c08401511692015116825191825287820152a36001600455604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60046040517f3b8474be000000000000000000000000000000000000000000000000000000008152fd5b60051b810190915b602083359182811160051b9081521852602060406000209201918183106107d4579150508880610569565b505068056bc75e2d6310000069ffffffffffffffffffff85161180610973575b156105715761082c611e22565b600c1b6000526007602052670de0b6b3a764000060406000205404604051907f4d2b179100000000000000000000000000000000000000000000000000000000602083015260248201526024815280606081011067ffffffffffffffff6060830111176107735760008160606020930160405282815191016002545afa600051901561096557670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109365769ffffffffffffffffffff8516118015610917575b156105715760046040517f1c18f846000000000000000000000000000000000000000000000000000000008152fd5b5069d3c21bcecceda100000069ffffffffffffffffffff8516116108e8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63e10bf1cc6000526004601cfd5b5073ffffffffffffffffffffffffffffffffffffffff610991611e22565b16331461081f565b60046040517fd0404f85000000000000000000000000000000000000000000000000000000008152fd5b60046040517f22bbb43c000000000000000000000000000000000000000000000000000000008152fd5b60046040517fb2e532de000000000000000000000000000000000000000000000000000000008152fd5b3461035f57604060031936011261035f5760043567ffffffffffffffff80821161035f573660238301121561035f578160040135610a5481611b3d565b91610a626040519384611afc565b8183526020938484019260051b8101602401908336831161035f576024879201905b838210610b54575050505060243590811161035f57610aa7903690600401611cd8565b9073ffffffffffffffffffffffffffffffffffffffff6000541633036103d3578251928315610b465782518403610b38578480929493019260051b0101915b828103610aef57005b83809181600c63cbc9d1c4815282516000528551918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a301910190610ae6565b63ff633a386000526004601cfd5b63df9578836000526004601cfd5b828091610b6084611b78565b815201910190610a84565b3461035f57604060031936011261035f576020610449610b89611b55565b610b91611c61565b9061219a565b3461035f57604060031936011261035f5767ffffffffffffffff60043581811161035f57610bc9903690600401611b99565b9060243590811161035f57610be2903690600401611cd8565b73ffffffffffffffffffffffffffffffffffffffff6000541633036103d3578151908115610c735780518203610b385790602083818080960194019260051b0101915b828103610c2e57005b83809160018252805160005283518060406000205581517fbee55516e29d3969d3cb8eb01351eb3c52d06f9e2435bd5a8bfe3647e185df92600080a301910190610c25565bfe5b3461035f57604060031936011261035f5760043567ffffffffffffffff811161035f57610ca6903690600401611b99565b610cae611c61565b90600091815191610cbe8361223a565b935b838110610ce15760405160208082528190610cdd90820188611c2d565b0390f35b80610d0e8473ffffffffffffffffffffffffffffffffffffffff610d0760019587612289565b511661219a565b610d188288612289565b5201610cc0565b3461035f57600060031936011261035f57602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b3461035f57602060031936011261035f5760043567ffffffffffffffff811161035f57610d8761001b913690600401611ca7565b90611ef1565b3461035f57604060031936011261035f576020610449610dab611b55565b610db3611c61565b90612211565b3461035f57602060031936011261035f576020600435546040519015158152f35b3461035f57600060031936011261035f576020600354604051908152f35b3461035f57604060031936011261035f57610e14610dab611b55565b604051906020820190815260208252604082019180831067ffffffffffffffff841117610773577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60409385855260208652610e7f845180928160608801526080870190611c84565b01168101030190f35b3461035f57600060031936011261035f576020600554604051908152f35b3461035f57600060031936011261035f57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461035f57602060031936011261035f57602060405173ffffffffffffffffffffffffffffffffffffffff600435600c1c168152f35b3461035f57604060031936011261035f576020610f3c610f2e611b55565b610f36611c61565b906121d4565b6040519015158152f35b3461035f57604060031936011261035f5761001b610f62611b55565b6024359061210f565b3461035f57604060031936011261035f57610f84611b55565b6024358015159081810361035f57610fb283339060205263739094b1600c5260005260016034600c20015490565b908115610335576b3fffffffffffffffffffffff908460205263739094b1600c5233600052605f1b91161760016034600c20015573ffffffffffffffffffffffffffffffffffffffff6040519216825260208201527fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d4960403392a2005b3461035f57602060031936011261035f57611048611b55565b63cbc9d1c4600c52600052602080600c20546040519015158152f35b3461035f57600060031936011261035f5773ffffffffffffffffffffffffffffffffffffffff6000541633036103d35747600080808084335af1156110d55760407feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d918151903382526020820152a1005b63b12d13eb6000526004601cfd5b3461035f5760a060031936011261035f5760043567ffffffffffffffff811161035f57611114903690600401611bff565b6024356044359273ffffffffffffffffffffffffffffffffffffffff84169182850361035f57606435936bffffffffffffffffffffffff851680950361035f5760843591821515830361035f57611169611de7565b81156112f75763cbc9d1c4600c52866000526020600c2054156112cd576111bd866b3fffffffffffffffffffffff6111b78a339060205263739094b1600c5260005260016034600c20015490565b16611dda565b936a52b7d2dcc80cd2e400000085116112a3576111e6928261044493611293575b503691611d3f565b918560205263739094b1600c52336000526034600c2091605f1b17600182015555602060006064601c826040519787606052306040523360601b602c526f23b872dd000000000000000000000000600c525af13d1560016000511417161561128557600060605282604052825260208201527f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf60403392a26001600455005b637939f4246000526004601cfd5b61129d903361210f565b896111de565b60046040517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b60046040517f1578328e000000000000000000000000000000000000000000000000000000008152fd5b60046040517f6a3bc53e000000000000000000000000000000000000000000000000000000008152fd5b3461035f57602060031936011261035f5760043573ffffffffffffffffffffffffffffffffffffffff6000541633036103d3576020817f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851192600355604051908152a1005b3461035f57602060031936011261035f5773ffffffffffffffffffffffffffffffffffffffff6113b3611b55565b166000526001602052602060ff604060002054166040519015158152f35b3461035f57602060031936011261035f5760206113ec611b55565b600c1b604051908152f35b3461035f5760208060031936011261035f576004359067ffffffffffffffff821161035f573660238301121561035f5781600401359161143683611b3d565b906114446040519283611afc565b8382528282016024809560051b8301019136831161035f5785859101915b8383106115015786826114748761229d565b909161148b60405193604085526040850190611c2d565b90838203818501528080845193848152019301946000905b8382106114b05785850386f35b90919293865160048110156114d3578152958301958301939291600101906114a3565b827f4e487b710000000000000000000000000000000000000000000000000000000060005260216004526000fd5b8235815291810191859101611462565b3461035f57602060031936011261035f5761152a611b55565b6374dfee70600c5260005260208060002054604051908152f35b3461035f57602060031936011261035f57600435600052600660205260e060406000208054906001810154906002810154600382015473ffffffffffffffffffffffffffffffffffffffff918260058160048701541695015416946040519687526020870152604086015269ffffffffffffffffffff8116606086015260501c16608084015260a083015260c0820152f35b3461035f57602060031936011261035f576115ef611b55565b60005473ffffffffffffffffffffffffffffffffffffffff80821633036103d3577fffffffffffffffffffffffff000000000000000000000000000000000000000092169182911617600055337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76600080a3005b3461035f57606060031936011261035f5767ffffffffffffffff60043560443582811161035f57611698903690600401611bff565b926116a1611de7565b8260005260209360068552604060002091600383019182549269ffffffffffffffffffff841695861561198b576001860192835443116119615760028701546040518b81019182527fffffffffffffffffffff000000000000000000000000000000000000000000008860b01b166040820152602435604a820152604a81526080810196818810908811176107735786604052519020948554611939575060006080818c938885527b19457468657265756d205369676e6564204d6573736167653a0a333282526040603c600420968151978282813784520135821a855260417f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1606051109114165afa506000513d1561192b57600060605281604052600c1b541561190357507f364537f14276f2a0ce9905588413f96454cbb8fb2e4f5308389307c1098bede8969492600085936001937fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000060409a98169055555561185c83600461182b611e22565b73ffffffffffffffffffffffffffffffffffffffff95908616331461186f575b019284808554169160501c16611e69565b5416948351928352820152a26001600455005b8a828201878154163314156000146118e757750ffffffffffffffffffffffffffffffffffffffff000906007697fffffffffffffffffff8960011c169333600c1b600052528b6000206118c3848254611dda565b905554600c1b1660005260078c526118e08a600020918254611dda565b905561184b565b505033600c1b60005260078b52886000206118e0848254611dda565b807f815e1d640000000000000000000000000000000000000000000000000000000060049252fd5b638baa579f6000526004601cfd5b807ff490a6ea0000000000000000000000000000000000000000000000000000000060049252fd5b60046040517ff6fafba0000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63b4904e000000000000000000000000000000000000000000000000000000008152fd5b3461035f5760208060031936011261035f5760043567ffffffffffffffff811161035f576119e7903690600401611b99565b9073ffffffffffffffffffffffffffffffffffffffff91826000541633036103d357805181830192849160051b830181013d1515855b8115611a84575b50505060405192818401908285525180915260408401949160005b828110611a6e577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101611a3f565b90838260018298969499979951600c1b55019083821015611aac579150959395949294611a1d565b50959395949294611a24565b3461035f57602060031936011261035f57602090600435600052600782526040600020548152f35b6020810190811067ffffffffffffffff82111761077357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761077357604052565b67ffffffffffffffff81116107735760051b60200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035f57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361035f57565b81601f8201121561035f57803591611bb083611b3d565b92611bbe6040519485611afc565b808452602092838086019260051b82010192831161035f578301905b828210611be8575050505090565b838091611bf484611b78565b815201910190611bda565b9181601f8401121561035f5782359167ffffffffffffffff831161035f576020838186019501011161035f57565b90815180825260208080930193019160005b828110611c4d575050505090565b835185529381019392810192600101611c3f565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035f57565b60005b838110611c975750506000910152565b8181015183820152602001611c87565b9181601f8401121561035f5782359167ffffffffffffffff831161035f576020808501948460051b01011161035f57565b81601f8201121561035f57803591611cef83611b3d565b92611cfd6040519485611afc565b808452602092838086019260051b82010192831161035f578301905b828210611d27575050505090565b8135801515810361035f578152908301908301611d19565b92919267ffffffffffffffff82116107735760405191611d8760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611afc565b82948184528183011161035f578281602093846000960137010152565b604051611dce60208281611dc18183019687815193849201611c84565b8101038084520182611afc565b51602010610c73575190565b9190820180921161093657565b600260045414611df8576002600455565b60046040517fab143c06000000000000000000000000000000000000000000000000000000008152fd5b33600052600160205260ff60406000205416600014611e65577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b3390565b60109260209260145260345260446000938480936fa9059cbb00000000000000000000000082525af13d156001835114171615611ea557603452565b6390b8ec1890526004601cfd5b9190811015611ec25760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000905b828210611f12575010611f0457565b63dfb035c96000526004601cfd5b90611f1e818484611eb2565b3560005260209060068252604080600020926001934385820154116120e657600381019081549069ffffffffffffffffffff82169283156120bd5773ffffffffffffffffffffffffffffffffffffffff9384806005850154169460501c166a52b7d2dcc80cd2e4000000611fb9836b3fffffffffffffffffffffff6111b7858a9060205263739094b1600c5260005260016034600c20015490565b116120945792750ffffffffffffffffffffffffffffffffffffffff00092600492889796957f830501e61b8b075e170b22a430e39454bdb12ed3e9620e586430b6ac00079da59952600c9563739094b187526000528b60348720019081540190557fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000815416905501918254901b1660005260078352846000208054881c9068056bc75e2d63100000918281111560001461208c5750555b54169261207e858989611eb2565b359051908152a20190611ef5565b915055612070565b600488517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b600486517f63b4904e000000000000000000000000000000000000000000000000000000008152fd5b600483517fd0404f85000000000000000000000000000000000000000000000000000000008152fd5b338103612150576374dfee70600c5280600052816020600020557f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632600080a3565b6385d1f7266000526004601cfd5b92919092808481031190151761218c5760205263739094b1600c5260005260016034600c2001908154039055565b63ce3a3d376000526004601cfd5b600092913d156121a8575050565b9091925060205263739094b1600c5260005260016034600c2001546b3fffffffffffffffffffffff1690565b600092913d156121e2575050565b9091925060205263739094b1600c5260005260016034600c200154605f1c6b3fffffffffffffffffffffff1690565b600092913d1561221f575050565b9091925060205263739094b1600c526000526034600c205490565b9061224482611b3d565b6122516040519182611afc565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061227f8294611b3d565b0190602036910137565b8051821015611ec25760209160051b010190565b908151156124025760009180516122b38161223a565b916122bd8261223a565b945b8281106122cd575050509190565b6122d78183612289565b51600052600690602082815260409273ffffffffffffffffffffffffffffffffffffffff6005856000200154161560001461233e5750506001915061231c8184612289565b516123278287612289565b5260006123348289612289565b5201915b916122bf565b6123488386612289565b5160005280825260039169ffffffffffffffffffff83866000200154161560001461239b5750506001925061237d8285612289565b516123888388612289565b526123938289612289565b520191612338565b9091506123a88386612289565b516000525260018092600020015443116000146123e1576123c98184612289565b516123d48287612289565b5260026123938289612289565b6123eb8184612289565b516123f68287612289565b52816123938289612289565b604051915061241082611ae0565b600082526040519161242183611ae0565b600083526000368137919056fea2646970667358221220fac53a1370caf574ede8ecd00820ccca998e6c97b36ea56d6ec4d70198c2f10764736f6c63430008130033", + "deployedBytecode": "0x608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c9081630493732014611ab8575080630d2a2d44146119b557806311fc7f9a1461166357806313af4035146115d6578063367821f0146115445780633c16f0c414611511578063461f312014610db957806349ef8448146113f75780634b2ae980146113d157806354776bb914611385578063572b6c0514611385578063574983c8146113215780635e918943146110e35780635fd8c7101461106457806369cc6af41461102f5780636d82d9e014610f6b5780637f94f65d14610f4657806380e1d30214610f1057806384ab1d2814610eda5780638da5cb5b14610ea65780638db564c214610e88578063918dff5714610df85780639872dbfe14610dda57806398a2687114610db9578063ad8f2eed14610d8d578063b0983d3914610d53578063c52164c614610d1f578063d1c0702814610c75578063d1ced2b014610b97578063d4fac45d14610b6b578063d6e8b97314610a17578063dc43221c14610451578063e449c52a146103fd578063f7d0e04b146103645763fb8c5ef0146101ab573861000f565b3461035f57606060031936011261035f576101c4611b55565b60243560443567ffffffffffffffff811161035f576101ea6101f8913690600401611ca7565b906101f3611de7565b611ef1565b61020282336121d4565b610299575b6102403383836b3fffffffffffffffffffffff61023a83339060205263739094b1600c5260005260016034600c20015490565b1661215e565b61024b813384611e69565b73ffffffffffffffffffffffffffffffffffffffff6040519216825260208201527f2cd6435b1b961c13f55202979edd0765a809f69a539d8a477436c94c1211e43e60403392a26001600455005b6102b982339060205263739094b1600c5260005260016034600c20015490565b8015610335576b3fffffffffffffffffffffff908360205263739094b1600c52336000521660016034600c20015560405173ffffffffffffffffffffffffffffffffffffffff83168152600060208201527fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d4960403392a2610207565b60046040517f87138d5c000000000000000000000000000000000000000000000000000000008152fd5b600080fd5b3461035f57602060031936011261035f5773ffffffffffffffffffffffffffffffffffffffff6004358181169182820361035f576000541633036103d3577fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f91602091600255604051908152a1005b60046040517f82b42900000000000000000000000000000000000000000000000000000000008152fd5b3461035f57602060031936011261035f5760043567ffffffffffffffff811161035f573660238201121561035f576104496104446020923690602481600401359101611d3f565b611da4565b604051908152f35b3461035f5760a060031936011261035f5761046a611b55565b610472611c61565b9060443569ffffffffffffffffffff8116810361035f5760643567ffffffffffffffff811161035f576104a9903690600401611ca7565b93909260843567ffffffffffffffff811161035f576101ea6104cf913690600401611ca7565b6104d982826121d4565b156109ed576104e8828261219a565b9069ffffffffffffffffffff841682106109c35760016005540194856005558560005260066020526001604060002001544311156109995761052a8483612211565b9680156107ff576374dfee70600c5282600052602060002054918173ffffffffffffffffffffffffffffffffffffffff610562611e22565b16926107cc575b5050036107a2575b61057d60035443611dda565b90610586611e22565b94604051958660e081011067ffffffffffffffff60e0890111176107735773ffffffffffffffffffffffffffffffffffffffff6106ef9669ffffffffffffffffffff82969460209c849660e08d016040528d8d528e8d015260408c01521660608a01521660808801521660a08601521660c0840152836000526006855260406000209083518255858401516001830155604084015160028301556003820173ffffffffffffffffffffffffffffffffffffffff69ffffffffffffffffffff60608701511691805490608088015191847fffff0000000000000000000000000000000000000000000000000000000000007dffffffffffffffffffffffffffffffffffffffff000000000000000000008560501b16921617179055600560048601958360a08a015116967fffffffffffffffffffffffff00000000000000000000000000000000000000009788825416179055018260c0890151168096825416179055169161215e565b73ffffffffffffffffffffffffffffffffffffffff60a0820151167fa8fb61052fec8ed6ed923dd5e14b7d6aaae41d44c8870fc4efebf871389a577d604083519369ffffffffffffffffffff606073ffffffffffffffffffffffffffffffffffffffff60c08401511692015116825191825287820152a36001600455604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60046040517f3b8474be000000000000000000000000000000000000000000000000000000008152fd5b60051b810190915b602083359182811160051b9081521852602060406000209201918183106107d4579150508880610569565b505068056bc75e2d6310000069ffffffffffffffffffff85161180610973575b156105715761082c611e22565b600c1b6000526007602052670de0b6b3a764000060406000205404604051907f4d2b179100000000000000000000000000000000000000000000000000000000602083015260248201526024815280606081011067ffffffffffffffff6060830111176107735760008160606020930160405282815191016002545afa600051901561096557670de0b6b3a7640000810290808204670de0b6b3a764000014901517156109365769ffffffffffffffffffff8516118015610917575b156105715760046040517f1c18f846000000000000000000000000000000000000000000000000000000008152fd5b5069d3c21bcecceda100000069ffffffffffffffffffff8516116108e8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63e10bf1cc6000526004601cfd5b5073ffffffffffffffffffffffffffffffffffffffff610991611e22565b16331461081f565b60046040517fd0404f85000000000000000000000000000000000000000000000000000000008152fd5b60046040517f22bbb43c000000000000000000000000000000000000000000000000000000008152fd5b60046040517fb2e532de000000000000000000000000000000000000000000000000000000008152fd5b3461035f57604060031936011261035f5760043567ffffffffffffffff80821161035f573660238301121561035f578160040135610a5481611b3d565b91610a626040519384611afc565b8183526020938484019260051b8101602401908336831161035f576024879201905b838210610b54575050505060243590811161035f57610aa7903690600401611cd8565b9073ffffffffffffffffffffffffffffffffffffffff6000541633036103d3578251928315610b465782518403610b38578480929493019260051b0101915b828103610aef57005b83809181600c63cbc9d1c4815282516000528551918291205581517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a301910190610ae6565b63ff633a386000526004601cfd5b63df9578836000526004601cfd5b828091610b6084611b78565b815201910190610a84565b3461035f57604060031936011261035f576020610449610b89611b55565b610b91611c61565b9061219a565b3461035f57604060031936011261035f5767ffffffffffffffff60043581811161035f57610bc9903690600401611b99565b9060243590811161035f57610be2903690600401611cd8565b73ffffffffffffffffffffffffffffffffffffffff6000541633036103d3578151908115610c735780518203610b385790602083818080960194019260051b0101915b828103610c2e57005b83809160018252805160005283518060406000205581517fbee55516e29d3969d3cb8eb01351eb3c52d06f9e2435bd5a8bfe3647e185df92600080a301910190610c25565bfe5b3461035f57604060031936011261035f5760043567ffffffffffffffff811161035f57610ca6903690600401611b99565b610cae611c61565b90600091815191610cbe8361223a565b935b838110610ce15760405160208082528190610cdd90820188611c2d565b0390f35b80610d0e8473ffffffffffffffffffffffffffffffffffffffff610d0760019587612289565b511661219a565b610d188288612289565b5201610cc0565b3461035f57600060031936011261035f57602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b3461035f57602060031936011261035f5760043567ffffffffffffffff811161035f57610d8761001b913690600401611ca7565b90611ef1565b3461035f57604060031936011261035f576020610449610dab611b55565b610db3611c61565b90612211565b3461035f57602060031936011261035f576020600435546040519015158152f35b3461035f57600060031936011261035f576020600354604051908152f35b3461035f57604060031936011261035f57610e14610dab611b55565b604051906020820190815260208252604082019180831067ffffffffffffffff841117610773577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60409385855260208652610e7f845180928160608801526080870190611c84565b01168101030190f35b3461035f57600060031936011261035f576020600554604051908152f35b3461035f57600060031936011261035f57602073ffffffffffffffffffffffffffffffffffffffff60005416604051908152f35b3461035f57602060031936011261035f57602060405173ffffffffffffffffffffffffffffffffffffffff600435600c1c168152f35b3461035f57604060031936011261035f576020610f3c610f2e611b55565b610f36611c61565b906121d4565b6040519015158152f35b3461035f57604060031936011261035f5761001b610f62611b55565b6024359061210f565b3461035f57604060031936011261035f57610f84611b55565b6024358015159081810361035f57610fb283339060205263739094b1600c5260005260016034600c20015490565b908115610335576b3fffffffffffffffffffffff908460205263739094b1600c5233600052605f1b91161760016034600c20015573ffffffffffffffffffffffffffffffffffffffff6040519216825260208201527fca585721b6b442dc9183932f7c84dc2880efb67c4da52cc06873e78971105d4960403392a2005b3461035f57602060031936011261035f57611048611b55565b63cbc9d1c4600c52600052602080600c20546040519015158152f35b3461035f57600060031936011261035f5773ffffffffffffffffffffffffffffffffffffffff6000541633036103d35747600080808084335af1156110d55760407feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d918151903382526020820152a1005b63b12d13eb6000526004601cfd5b3461035f5760a060031936011261035f5760043567ffffffffffffffff811161035f57611114903690600401611bff565b6024356044359273ffffffffffffffffffffffffffffffffffffffff84169182850361035f57606435936bffffffffffffffffffffffff851680950361035f5760843591821515830361035f57611169611de7565b81156112f75763cbc9d1c4600c52866000526020600c2054156112cd576111bd866b3fffffffffffffffffffffff6111b78a339060205263739094b1600c5260005260016034600c20015490565b16611dda565b936a52b7d2dcc80cd2e400000085116112a3576111e6928261044493611293575b503691611d3f565b918560205263739094b1600c52336000526034600c2091605f1b17600182015555602060006064601c826040519787606052306040523360601b602c526f23b872dd000000000000000000000000600c525af13d1560016000511417161561128557600060605282604052825260208201527f63d8d7d5e63e9840ec91a12a160d27b7cfab294f6ba070b7359692acfe6b03bf60403392a26001600455005b637939f4246000526004601cfd5b61129d903361210f565b896111de565b60046040517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b60046040517f1578328e000000000000000000000000000000000000000000000000000000008152fd5b60046040517f6a3bc53e000000000000000000000000000000000000000000000000000000008152fd5b3461035f57602060031936011261035f5760043573ffffffffffffffffffffffffffffffffffffffff6000541633036103d3576020817f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b851192600355604051908152a1005b3461035f57602060031936011261035f5773ffffffffffffffffffffffffffffffffffffffff6113b3611b55565b166000526001602052602060ff604060002054166040519015158152f35b3461035f57602060031936011261035f5760206113ec611b55565b600c1b604051908152f35b3461035f5760208060031936011261035f576004359067ffffffffffffffff821161035f573660238301121561035f5781600401359161143683611b3d565b906114446040519283611afc565b8382528282016024809560051b8301019136831161035f5785859101915b8383106115015786826114748761229d565b909161148b60405193604085526040850190611c2d565b90838203818501528080845193848152019301946000905b8382106114b05785850386f35b90919293865160048110156114d3578152958301958301939291600101906114a3565b827f4e487b710000000000000000000000000000000000000000000000000000000060005260216004526000fd5b8235815291810191859101611462565b3461035f57602060031936011261035f5761152a611b55565b6374dfee70600c5260005260208060002054604051908152f35b3461035f57602060031936011261035f57600435600052600660205260e060406000208054906001810154906002810154600382015473ffffffffffffffffffffffffffffffffffffffff918260058160048701541695015416946040519687526020870152604086015269ffffffffffffffffffff8116606086015260501c16608084015260a083015260c0820152f35b3461035f57602060031936011261035f576115ef611b55565b60005473ffffffffffffffffffffffffffffffffffffffff80821633036103d3577fffffffffffffffffffffffff000000000000000000000000000000000000000092169182911617600055337f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76600080a3005b3461035f57606060031936011261035f5767ffffffffffffffff60043560443582811161035f57611698903690600401611bff565b926116a1611de7565b8260005260209360068552604060002091600383019182549269ffffffffffffffffffff841695861561198b576001860192835443116119615760028701546040518b81019182527fffffffffffffffffffff000000000000000000000000000000000000000000008860b01b166040820152602435604a820152604a81526080810196818810908811176107735786604052519020948554611939575060006080818c938885527b19457468657265756d205369676e6564204d6573736167653a0a333282526040603c600420968151978282813784520135821a855260417f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1606051109114165afa506000513d1561192b57600060605281604052600c1b541561190357507f364537f14276f2a0ce9905588413f96454cbb8fb2e4f5308389307c1098bede8969492600085936001937fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000060409a98169055555561185c83600461182b611e22565b73ffffffffffffffffffffffffffffffffffffffff95908616331461186f575b019284808554169160501c16611e69565b5416948351928352820152a26001600455005b8a828201878154163314156000146118e757750ffffffffffffffffffffffffffffffffffffffff000906007697fffffffffffffffffff8960011c169333600c1b600052528b6000206118c3848254611dda565b905554600c1b1660005260078c526118e08a600020918254611dda565b905561184b565b505033600c1b60005260078b52886000206118e0848254611dda565b807f815e1d640000000000000000000000000000000000000000000000000000000060049252fd5b638baa579f6000526004601cfd5b807ff490a6ea0000000000000000000000000000000000000000000000000000000060049252fd5b60046040517ff6fafba0000000000000000000000000000000000000000000000000000000008152fd5b60046040517f63b4904e000000000000000000000000000000000000000000000000000000008152fd5b3461035f5760208060031936011261035f5760043567ffffffffffffffff811161035f576119e7903690600401611b99565b9073ffffffffffffffffffffffffffffffffffffffff91826000541633036103d357805181830192849160051b830181013d1515855b8115611a84575b50505060405192818401908285525180915260408401949160005b828110611a6e577f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d786880387a1005b8351851687529581019592810192600101611a3f565b90838260018298969499979951600c1b55019083821015611aac579150959395949294611a1d565b50959395949294611a24565b3461035f57602060031936011261035f57602090600435600052600782526040600020548152f35b6020810190811067ffffffffffffffff82111761077357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761077357604052565b67ffffffffffffffff81116107735760051b60200190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035f57565b359073ffffffffffffffffffffffffffffffffffffffff8216820361035f57565b81601f8201121561035f57803591611bb083611b3d565b92611bbe6040519485611afc565b808452602092838086019260051b82010192831161035f578301905b828210611be8575050505090565b838091611bf484611b78565b815201910190611bda565b9181601f8401121561035f5782359167ffffffffffffffff831161035f576020838186019501011161035f57565b90815180825260208080930193019160005b828110611c4d575050505090565b835185529381019392810192600101611c3f565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035f57565b60005b838110611c975750506000910152565b8181015183820152602001611c87565b9181601f8401121561035f5782359167ffffffffffffffff831161035f576020808501948460051b01011161035f57565b81601f8201121561035f57803591611cef83611b3d565b92611cfd6040519485611afc565b808452602092838086019260051b82010192831161035f578301905b828210611d27575050505090565b8135801515810361035f578152908301908301611d19565b92919267ffffffffffffffff82116107735760405191611d8760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611afc565b82948184528183011161035f578281602093846000960137010152565b604051611dce60208281611dc18183019687815193849201611c84565b8101038084520182611afc565b51602010610c73575190565b9190820180921161093657565b600260045414611df8576002600455565b60046040517fab143c06000000000000000000000000000000000000000000000000000000008152fd5b33600052600160205260ff60406000205416600014611e65577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b3390565b60109260209260145260345260446000938480936fa9059cbb00000000000000000000000082525af13d156001835114171615611ea557603452565b6390b8ec1890526004601cfd5b9190811015611ec25760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000905b828210611f12575010611f0457565b63dfb035c96000526004601cfd5b90611f1e818484611eb2565b3560005260209060068252604080600020926001934385820154116120e657600381019081549069ffffffffffffffffffff82169283156120bd5773ffffffffffffffffffffffffffffffffffffffff9384806005850154169460501c166a52b7d2dcc80cd2e4000000611fb9836b3fffffffffffffffffffffff6111b7858a9060205263739094b1600c5260005260016034600c20015490565b116120945792750ffffffffffffffffffffffffffffffffffffffff00092600492889796957f830501e61b8b075e170b22a430e39454bdb12ed3e9620e586430b6ac00079da59952600c9563739094b187526000528b60348720019081540190557fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000815416905501918254901b1660005260078352846000208054881c9068056bc75e2d63100000918281111560001461208c5750555b54169261207e858989611eb2565b359051908152a20190611ef5565b915055612070565b600488517ff3fb0eb9000000000000000000000000000000000000000000000000000000008152fd5b600486517f63b4904e000000000000000000000000000000000000000000000000000000008152fd5b600483517fd0404f85000000000000000000000000000000000000000000000000000000008152fd5b338103612150576374dfee70600c5280600052816020600020557f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632600080a3565b6385d1f7266000526004601cfd5b92919092808481031190151761218c5760205263739094b1600c5260005260016034600c2001908154039055565b63ce3a3d376000526004601cfd5b600092913d156121a8575050565b9091925060205263739094b1600c5260005260016034600c2001546b3fffffffffffffffffffffff1690565b600092913d156121e2575050565b9091925060205263739094b1600c5260005260016034600c200154605f1c6b3fffffffffffffffffffffff1690565b600092913d1561221f575050565b9091925060205263739094b1600c526000526034600c205490565b9061224482611b3d565b6122516040519182611afc565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061227f8294611b3d565b0190602036910137565b8051821015611ec25760209160051b010190565b908151156124025760009180516122b38161223a565b916122bd8261223a565b945b8281106122cd575050509190565b6122d78183612289565b51600052600690602082815260409273ffffffffffffffffffffffffffffffffffffffff6005856000200154161560001461233e5750506001915061231c8184612289565b516123278287612289565b5260006123348289612289565b5201915b916122bf565b6123488386612289565b5160005280825260039169ffffffffffffffffffff83866000200154161560001461239b5750506001925061237d8285612289565b516123888388612289565b526123938289612289565b520191612338565b9091506123a88386612289565b516000525260018092600020015443116000146123e1576123c98184612289565b516123d48287612289565b5260026123938289612289565b6123eb8184612289565b516123f68287612289565b52816123938289612289565b604051915061241082611ae0565b600082526040519161242183611ae0565b600083526000368137919056fea2646970667358221220fac53a1370caf574ede8ecd00820ccca998e6c97b36ea56d6ec4d70198c2f10764736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 4e4fbc2..b977edb 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -83,7 +83,7 @@ const checkForUnreleasedLocks = async (): Promise => { if (walletLocks) { lockID.value = walletLocks.lockID; tokenAmount.value = walletLocks.pix.value; - pixTarget.value = Number(walletLocks.pix.pixKey); + pixTarget.value = walletLocks.pix.pixKey; showModal.value = true; } else { flowStep.value = Step.Search; @@ -96,7 +96,7 @@ if (paramLockID) { if (lockToRedirect) { lockID.value = lockToRedirect.lockID; tokenAmount.value = lockToRedirect.pix.value; - pixTarget.value = Number(lockToRedirect.pix.pixKey); + pixTarget.value = lockToRedirect.pix.pixKey; flowStep.value = Step.Buy; } else { flowStep.value = Step.Search;